This commit is contained in:
lcw
2025-08-16 16:54:03 +08:00
parent 71487ac647
commit 42f5e37f65
69 changed files with 5913 additions and 978 deletions

View File

@ -7,153 +7,143 @@
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<div class="form_cnt">
<el-form :model="listQuery" :rules="rules" :disabled="disabled" ref="elform" inline :label-width="100"
label-position="left">
<div class="smallTitle">布控信息</div>
<el-form-item prop="bkBt" label="布控标题">
<div class="flex">
<div :class="dataOrge.gzlid?'ww80':'ww100'">
<div class="form_cnt">
<el-form :model="listQuery" :rules="rules" :disabled="disabled" ref="elform" inline :label-width="100"
label-position="left">
<div class="smallTitle">布控信息</div>
<!-- <el-form-item prop="bkBt" label="布控标题">
<MOSTY.Other v-model="listQuery.bkBt" placeholder="请输入布控标题" clearable />
</el-form-item>
<el-form-item prop="bkDx" label="布控对象">
<MOSTY.Select v-model="listQuery.bkDx" @change="shangeDx" :dictEnum="props.dic.D_GS_BK_DX"
placeholder="请选择布控对象" clearable />
</el-form-item>
<div class="ww100 mt10 mb10">
<el-button type="primary" @click="handleAddPeo" v-if="!disabled">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</div>
<div class="relative ww100">
<MyTable :tableData="listQuery.bkdxList" :tableColumn="tableDate.tableColumn"
:tableHeight="tableDate.tableHeight" :key="tableDate.keyCount" :tableConfiger="tableDate.tableConfiger"
:controlsWidth="tableDate.controlsWidth">
<template #fjZp="{ row }">
<el-image :src="row.fjZp"></el-image>
</template>
<template #ryXb="{ row }">
<DictTag :tag="false" :value="row.ryXb" :options="props.dic.D_BZ_XB" />
</template>
<template #bqList="{ row }">
<span v-if="row.bqList">
<span v-for="(it, idx) in row.bqList" :key="idx"> {{ it.bqMc }}</span>
</span>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary">查看档案</el-link>
<el-link type="danger" @click="deleteRow(row)">删除</el-link>
</template>
</MyTable>
</div>
</el-form-item> -->
<el-form-item prop="bkDx" label="布控对象">
<MOSTY.Select v-model="listQuery.bkDx" @change="shangeDx" :dictEnum="props.dic.D_GS_BK_DX"
placeholder="请选择布控对象" clearable />
</el-form-item>
<div class="ww100 mt10 mb10">
<el-button type="primary" @click="handleAddPeo" v-if="!disabled">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</div>
<div class="relative ww100">
<MyTable :tableData="listQuery.bkdxList" :tableColumn="tableDate.tableColumn"
:tableHeight="tableDate.tableHeight" :key="tableDate.keyCount" :tableConfiger="tableDate.tableConfiger"
:controlsWidth="tableDate.controlsWidth">
<template #fjZp="{ row }">
<el-image :src="row.fjZp"></el-image>
</template>
<template #yjdj="{ row }">
<DictTag :tag="false" :value="row.yjdj" :options="props.dic.D_GS_ZDR_YJDJ" />
</template>
<template #yjbq="{ row }">
<DictTag :tag="false" :value="row.yjbq" :options="props.dic.BD_BK_CLYJBQ" />
</template>
<template #ryXb="{ row }">
<DictTag :tag="false" :value="row.ryXb" :options="props.dic.D_BZ_XB" />
</template>
<template #bqList="{ row }">
<span v-if="row.bqList">
<span v-for="(it, idx) in row.bqList" :key="idx"> {{ it.bqMc }}</span>
</span>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary">查看档案</el-link>
<el-link type="danger" @click="deleteRow(row)">删除</el-link>
</template>
</MyTable>
</div>
<div class="smallTitle">布控范围</div>
<div class="ww100 relative mb10"
style="height: 250px;border: 1px solid #dcdfe6;border-radius: 4px;overflow: hidden;">
<div class="absolute mapSearch flex">
<MOSTY.Select v-model="listQuery.bkqyList" filterable multiple :dictEnum="bkqyArr" style="width:350px"
placeholder="请选择布控范围" clearable />
</div>
<GdMap></GdMap>
</div>
<el-form-item prop="bkBt" label="布控要素" style="width: 100%;">
<div class="smallTitle">布控范围</div>
<div class="ww100 relative mb10"
style="height: 250px;border: 1px solid #dcdfe6;border-radius: 4px;overflow: hidden;">
<div class="absolute mapSearch flex">
<MOSTY.Select v-model="listQuery.bkqyList" filterable multiple :dictEnum="bkqyArr" style="width:350px"
placeholder="请选择布控范围" clearable />
</div>
<GdMap></GdMap>
</div>
<!-- <el-form-item prop="bkBt" label="布控要素" style="width: 100%;">
<div class="flex align-center">
<el-button @click="listQuery.bkYz = it.dm" :type="listQuery.bkYz == it.dm ? 'primary' : ''"
v-for="it in props.dic.D_GS_BK_BKYS" :key="it">{{ it.zdmc }}</el-button>
</div>
</el-form-item>
<div style="width: 100%;" class="mt25">
<el-form-item prop="bkSjKs" label="布控开始时间" label-width="120px">
<MOSTY.Date v-model="listQuery.bkSjKs" type="datetime" format="YYYY-MM-DD HH:mm:ss" placeholder="请选择布控开始时间"
clearable />
</el-form-item>
<el-form-item prop="bkSjJs" label="布控结束时间" label-width="120px">
<MOSTY.Date v-model="listQuery.bkSjJs" type="datetime" format="YYYY-MM-DD HH:mm:ss" placeholder="请选择布控结束时间"
clearable />
</el-form-item>
</div>
<div style="width: 100%;" class="mt25">
<el-form-item prop="czYq" label="处置要求">
<MOSTY.Select v-model="listQuery.czYq" :dictEnum="props.dic.D_GS_BK_CZYQ" placeholder="请选择处置要求" clearable />
</el-form-item>
<el-form-item prop="bkDj" label="布控级别">
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_BK_DJ" placeholder="请选择布控级别" clearable />
</el-form-item>
</div>
<div style="width: 100%;" class="mt10">
<el-form-item prop="bkSy" label="布控事由" style="width: 100%;">
<MOSTY.Other v-model="listQuery.bkSy" placeholder="请输入布控事由" type="textarea" style="width: 100%;"
clearable />
</el-form-item>
</div>
<div style="width: 100%;" class="mt10">
<el-form-item prop="bkfj" label="上传附件" style="width: 100%;">
<div>
<MOSTY.Upload :showBtn="true" :limit="10" :isImg="false" :isAll="true" v-model="listQuery.bkfj" />
<div>支持pngjpgpdf文件上传</div>
</el-form-item> -->
<div style="width: 100%;" class="mt25">
<el-form-item prop="bkSjKs" label="布控开始时间" label-width="120px">
<MOSTY.Date v-model="listQuery.bkSjKs" type="datetime" format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择布控开始时间" clearable />
</el-form-item>
<el-form-item prop="bkSjJs" label="布控结束时间" label-width="120px">
<MOSTY.Date v-model="listQuery.bkSjJs" type="datetime" format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择布控结束时间" clearable />
</el-form-item>
</div>
</el-form-item>
</div>
<div class="smallTitle">审批信息</div>
<el-form-item prop="czJsdwdm" label="处置接收单位" label-width="120px" style="width: 100%;">
<div class="flex align-center ww100">
<MOSTY.Department v-model="listQuery.czJsdwdm" style="width:260px;margin-right: 10px;" placeholder="请选择处置要求"
clearable />
<el-radio-group v-model="listQuery.czJsdwlx" class="flex align-center">
<el-radio :label="it.dm" v-for="(it, idx) in props.dic.D_GS_BK_CZJSDWLX" :key="idx">{{ it.zdmc
}}</el-radio>
</el-radio-group>
</div>
</el-form-item>
<div class="ww100 mt10 mb20">
<el-form-item prop="bkTjfs" label="提醒方式">
<el-radio-group v-model="listQuery.bkTjfs" class="flex align-center">
<el-radio :label="it.dm" v-for="(it, idx) in props.dic.D_GS_BK_TJFS" :key="idx">{{ it.zdmc }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="bkSjQs" label="签收时间">
<MOSTY.Date v-model="listQuery.bkSjQs" type="datetime" format="YYYY-MM-DD HH:mm:ss" placeholder="请选择签收时间"
clearable />
</el-form-item>
<div style="width: 100%;" class="mt25">
<el-form-item prop="czYq" label="处置要求">
<MOSTY.Select v-model="listQuery.czYq" :dictEnum="props.dic.D_GS_BK_CZYQ" placeholder="请选择处置要求"
clearable />
</el-form-item>
<el-form-item prop="bkDj" label="布控等级">
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_BK_DJ" placeholder="请选择布控级别"
clearable />
</el-form-item>
</div>
<div style="width: 100%;" class="mt10">
<el-form-item prop="bkSy" label="布控事由" style="width: 100%;">
<MOSTY.Other v-model="listQuery.bkSy" placeholder="请输入布控事由" type="textarea" style="width: 100%;"
clearable />
</el-form-item>
</div>
<div style="width: 100%;" class="mt10">
<el-form-item prop="bkfj" label="上传附件" style="width: 100%;">
<div>
<MOSTY.Upload :showBtn="true" :limit="10" :isImg="false" :isAll="true" v-model="listQuery.bkfj" />
<div>支持pngjpgpdf文件上传</div>
</div>
</el-form-item>
</div>
</el-form>
</div>
</div>
<div class="ww20" v-if="dataOrge.gzlid">
<!-- <div class="smallTitle">审批信息</div>
<div class="ww100">
<el-steps direction="vertical" :active="listQuery.wccz" space="500" finish-status="success">
<el-step title="发起申请">
<el-steps :active="listQuery.wccz" space="500" finish-status="success" direction="vertical" status=''>
<el-step :title="item.eventType == '0' ? '发起申请' : item.eventType == '1' ? '审批结束' : item.nodeName"
v-for="(item, index) in workflow" :key="index">
<template #description>
<div class="flex align-center ww100 mt10 mb20">
<el-input v-model="listQuery.bkfqrXm" readonly class="ww20"></el-input>
<el-input v-model="listQuery.bkfqrSsbmmc" readonly class="ww20 ml10 mr10"></el-input>
<span class="f12" style="color: #333333;"> 备注发起人和部门根据登陆人自动填写</span>
</div>
</template>
</el-step>
<el-step title="审核确认">
<template #description>
<div class="ww100 mt10 mb20 depBox">
<el-form-item prop="bkshrSsbmdm" label="审核部门:" label-width="100" style="width: 100%;">
<MOSTY.Department :isAll="true" v-model="listQuery.bkshrSsbmdm" clearable
:placeholder="listQuery.bkshrSsbmmc ? listQuery.bkshrSsbmmc : ''" />
</el-form-item>
</div>
</template>
</el-step>
<el-step title="审批确认">
<template #description>
<div class="ww100 mt10 mb20 depBox">
<el-form-item prop="bkshrSsbmdm" label="审批部门:" label-width="100" style="width: 100%;">
<MOSTY.Department :isAll="true" v-model="listQuery.bksprSsbmdm" clearable
:placeholder="listQuery.bksprSsbmmc ? listQuery.bksprSsbmmc : ''" />
</el-form-item>
<div class="ww100 mt10 mb20 nodeBox" v-if="item.eventType == '0'||item.eventType == '1'">
<div class="nodeorgNameTg">{{ item.log.userData.orgname }}</div>
<div class="flex just-between nameTag">
<div>{{ item.log.userName }}</div>
<div class="fontColor">{{ item.eventType == '0' ? '发起' : '结束' }}</div>
</div>
<div>{{ item.log.xtLrsj }}</div>
</div>
<div v-else class="ww100 mt10 mb20 nodeBox">
<div :class="item.taskStatus=='2'?'nodeorgNameTg':'nodeorgNameDd'">{{ item.orgNameData.orgname }}</div>
<div v-for="(items, indexs) in item.log" :key="indexs">
<div class="flex just-between nameTag" >
<div>{{ items.userName }}</div>
<div :class="item.taskStatus=='2'?'fontColor':'fontColorDd'">审批中</div>
</div>
<div>{{ items.xtLrsj }}</div>
</div>
</div>
</template>
</el-step>
</el-steps>
</div>
</el-form>
</div> -->
<ApprovalEcho ref="approvalEcho"/>
</div>
</div>
</div>
<!-- 选择布控人员 -->
<BkryDialod :modelValue="chooseVisible_RY" @update:modelValue="chooseVisible_RY = $event" @choosed="choosed"
@ -164,6 +154,8 @@
<!-- 选择布控群体 -->
<BkqtDialod :modelValue="chooseVisible_QT" @update:modelValue="chooseVisible_QT = $event" @choosed="choosed"
:roleIds="roleIds" />
<BksfzDialod :modelValue="chooseVisible_SFZ" @update:modelValue="chooseVisible_SFZ = $event" @choosed="choosed"
:roleIds="roleIds" :bkDx="listQuery.bkDx" @choosedAdd="choosedAdd" />
</template>
<script setup>
@ -171,11 +163,16 @@ import { getItem } from "@/utils/storage";
import BkryDialod from '@/components/ChooseList/ChooseZdr/index.vue';
import BkqtDialod from '@/components/ChooseList/ChooseQt/index.vue';
import BkclDialod from '@/components/ChooseList/ChooseCl/index.vue';
import BksfzDialod from './dolog/sfzLog.vue';
import GdMap from "@/components/GdMap/index.vue";
import * as MOSTY from "@/components/MyComponents/index";
import MyTable from "@/components/aboutTable/MyTable.vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, nextTick } from "vue";
import { tableColumnList,Zd } from '@/views/backOfficeSystem/ApprovalInformation/tableRow.js'
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, nextTick, watch } from "vue";
import { queryProcessNode, queryProcessNodeLog, queryProcess } from '@/api/spl'
import ApprovalEcho from "@/components/flowPath/ApprovalEcho.vue";
const emit = defineEmits(["change"]);
const props = defineProps({
dic: Object
@ -226,49 +223,11 @@ let tableDate = reactive({
{ label: "手机号", prop: "rySjhm" },
{ label: "虚拟身份", prop: "qtXnsf" },
{ label: "车牌号", prop: "clCph" },
{ label: "车架号", prop: "clCjh" },
{ label: "车辆识别代码", prop: "clCjh" },
{ label: "特征描述", prop: "qtTzms" },
{ label: "人员标签", prop: "bqList", showSolt: true, showOverflowTooltip: true }
{ label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: true }
]
});
const tableColumnList = {
'01': [
{ label: "照片", prop: "fjZp", showSolt: true },
{ label: "姓名", prop: "ryXm" },
{ label: "性别", prop: "ryXb", showSolt: true },
{ label: "身份证号", prop: "rySfzh" },
{ label: "户籍地", prop: "ryHjd" },
{ label: "现居住地址", prop: "ryXjd" },
{ label: "手机号", prop: "rySjhm" },
{ label: "虚拟身份", prop: "qtXnsf" },
{ label: "车牌号", prop: "clCph" },
{ label: "车架号", prop: "clCjh" },
{ label: "特征描述", prop: "qtTzms" },
{ label: "人员标签", prop: "bqList", showSolt: true, showOverflowTooltip: true }
],
'02': [
{ label: "照片", prop: "fjZp", showSolt: true },
{ label: "姓名", prop: "ryXm" },
{ label: "性别", prop: "ryXb", showSolt: true },
{ label: "身份证号", prop: "rySfzh" },
{ label: "户籍地", prop: "ryHjd" },
{ label: "现居住地址", prop: "ryXjd" },
{ label: "手机号", prop: "rySjhm" },
{ label: "虚拟身份", prop: "qtXnsf" },
{ label: "车牌号", prop: "clCph" },
{ label: "车架号", prop: "clCjh" },
{ label: "特征描述", prop: "qtTzms" },
{ label: "人员标签", prop: "bqList", showSolt: true, showOverflowTooltip: true }
],
'03': [
{ label: "车牌号", prop: "clCph" },
{ label: "车架号", prop: "clCjh" },
{ label: "车辆颜色", prop: "clYs" },
// { label: "车辆所有人", prop: "clSyr" },
// { label: "管辖单位", prop: "gxSsbmmc" },
// { label: "管控民警", prop: "gkMjXm" },
]
}
const title = ref('')
const disabled = ref(false)
// 初始化数据
@ -286,6 +245,8 @@ const init = (type, row) => {
disabled.value = type == 'detail' ? true : false;
dialogForm.value = true;
if (row) tableDate.tableConfiger.haveControls = false;
Zd({D_GS_BK_DJ:props.dic.D_GS_BK_DJ,BD_BK_CLYJBQ:props.dic.BD_BK_CLYJBQ})
get_bkqy_list(row)
};
@ -299,6 +260,14 @@ const get_bkqy_list = (row) => {
if (row) getDataById(row.id);
})
}
const dataOrge=ref({})
const approvalEcho = ref()
watch(() => approvalEcho.value, (val) => {
if (val) {
approvalEcho.value.getWorkflow(dataOrge.value.gzlid)
}
},{deep:true})
// 根据id获取详情
const getDataById = (id) => {
@ -306,13 +275,21 @@ const getDataById = (id) => {
res.bkfj = res.ossList || [];
res.bkqyList = res.qyList ? res.qyList.map(v => v.id) : [];
listQuery.value = res || {}
tableDate.tableColumn =tableColumnList[res.bkDx?res.bkDx:'01']
dataOrge.value=res
tableDate.tableColumn = tableColumnList[res.bkDx ? res.bkDx : '01']
})
}
watch(() => approvalEcho.value, (val) => {
if (val) {
console.log(approvalEcho.value);
approvalEcho.value.getWorkflow(dataOrge.value.gzlid)
}
},{deep:true})
const shangeDx = () => {
tableDate.tableColumn =tableColumnList[listQuery.value.bkDx]
tableDate.tableColumn = tableColumnList[listQuery.value.bkDx]
listQuery.value.bkDxxx = '';
listQuery.value.bkdxList = [];
roleIds.value = [];
@ -326,31 +303,30 @@ const deleteRow = (row) => {
}
// 单独新增的数据
const choosedAdd = (item) => {
console.log(item);
let obj = {}
if (listQuery.value.bkDx!=='03') {
obj={ id: item.id, fjZp: item.fjZp, ryXm: item.ryXm, ryXb: item.ryXb, rySfzh: item.rySfzh, ryHjd: item.hjdXz, ryXjd: item.xzdXz, rySjhm: item.ryLxdh, qtXnsf: item.qtXnsf, clCjh: item.clCjh, clCph: item.clCph, qtTzms: item.qtTzms, bqList: item.bqList }
if (listQuery.value.bkDx !== '02') {
obj = { id: item.id, fjZp: item.fjZp, ryXm: item.ryXm, ryXb: item.ryXb, rySfzh: item.rySfzh, ryHjd: item.hjdXz, ryXjd: item.xzdXz, rySjhm: item.ryLxdh, qtXnsf: item.qtXnsf, clCjh: item.clCjh, clCph: item.clCph, qtTzms: item.qtTzms, bqList: item.bqList }
} else {
obj={
obj = {
clCph: item.hphm, clCjh: item.clCjh, clSyr: item.clSyr, clSyrsfzh: item.clSyrsfzh,
clYs: item.clYs, gxSsbmmc: item.gxSsbmmc
}
clYs: item.clYs, gxSsbmmc: item.gxSsbmmc, bqList: item.bqList
}
}
switch (listQuery.value.bkDx) {
default:
obj = { ...item }
break;
}
addPerson.value.push(obj);//缓存的数据
if (!listQuery.value.bkdxList) listQuery.value.bkdxList = [];
listQuery.value.bkdxList.unshift(obj);
console.log(listQuery.value.bkdxList);
}
// 选择重点人
const choosed = (val) => {
console.log(val);
tableDate.tableColumn =tableColumnList[listQuery.value.bkDx]
console.log(tableDate.tableColumn);
tableDate.tableColumn = tableColumnList[listQuery.value.bkDx]
if (listQuery.value.bkDx == '01') {// 人员
roleIds.value = val.map(it => it.id);
let arr = val.map(item => {
@ -358,23 +334,21 @@ console.log(tableDate.tableColumn);
let bqs = bqArr.map(v => {
return { bqZl: v.bqZl, bqId: v.bqId, bqLx: v.bqLx, bqLb: v.bqLb, bqMc: v.bqMc, bqDm: v.bqDm }
})
return { id: item.id, fjZp: item.fjZp, ryXm: item.ryXm, ryXb: item.ryXb, rySfzh: item.rySfzh, ryHjd: item.hjdXz, ryXjd: item.xzdXz, rySjhm: item.ryLxdh, qtXnsf: item.qtXnsf, clCjh: item.clCjh, clCph: item.clCph, qtTzms: item.qtTzms, bqList: bqs }
return {
id: item.id, fjZp: item.fjZp, ryXm: item.ryXm, ryXb: item.ryXb,
rySfzh: item.rySfzh, ryHjd: item.hjdXz, ryXjd: item.xzdXz,
rySjhm: item.ryLxdh, qtXnsf: item.qtXnsf, clCjh: item.clCjh,
clCph: item.clCph, qtTzms: item.qtTzms, bqList: bqs, yjdj: item.zdrYjdj,ssbmdm:item.zrSsbmdm
}
})
listQuery.value.bkdxList = [...addPerson.value, ...arr];
} else if (listQuery.value.bkDx == '03') {
roleIds.value = val.map(it => it.id);
roleIds.value = val.map(it => it.id);
let arr = val.map(item => {
let bqArr = item.bqList || [];
let bqs = bqArr.map(v => {
return {
clCph: v.hphm, clCjh: v.clCjh, clSyr: v.clSyr, clSyrsfzh: v.clSyrsfzh,
clYs: v.clYs, gxSsbmmc: v.gxSsbmmc
}
})
return {
clCph: item.hphm, clCjh: item.clCjh, clSyr: item.clSyr, clSyrsfzh: item.clSyrsfzh,
clYs: item.clYs, gxSsbmmc: item.gxSsbmmc, bqList: bqs
clYs: item.clYs, gxSsbmmc: item.gxSsbmmc,yjbq: item.yjbq, yjdj: item.yjdj,ssbmdm:item.zrSsbmdm
}
})
listQuery.value.bkdxList = [...addPerson.value, ...arr];
@ -395,10 +369,10 @@ console.log(tableDate.tableColumn);
id: item.id, fjZp: item.fjZp, ryXm: item.ryXm, ryXb: item.ryXb,
rySfzh: item.rySfzh, ryHjd: item.hjdXz, ryXjd: item.xzdXz,
rySjhm: item.ryLxdh, qtXnsf: item.qtXnsf, clCjh: item.clCjh,
clCph: item.clCph, qtTzms: item.qtTzms, bqList: bqs
clCph: item.clCph, qtTzms: item.qtTzms, bqList: bqs,
yjdj: item.zdrYjdj,ssbmdm:item.zrSsbmdm
}
})
listQuery.value.bkdxList = brrPeo;
}
};
@ -410,12 +384,21 @@ const handleAddPeo = () => {
case '01':
chooseVisible_RY.value = true
break;
case '02':
chooseVisible_QT.value = true
case '04':
case '05':
case '06':
case '07':
case '08':
case '09':
case '10':
chooseVisible_SFZ.value = true
break;
case '03':
chooseVisible_CL.value = true
break;
case '02':
chooseVisible_QT.value = true
break;
}
}
@ -448,6 +431,42 @@ const close = () => {
loading.value = false;
addPerson.value = [];
roleIds.value = []
dataOrge.value={}
};
// 选择身份证
const chooseVisible_SFZ = ref(false)
// 获取布控信息的工作流
const workflow = ref()
const getWorkflow = async (id) => {
const promes = {
processId: id
}
const proNode = await queryProcessNode(promes)
const proNodeLog = await queryProcessNodeLog(promes)
const process = await queryProcess(promes)
workflow.value = proNode.rows.map(item => {
const log = proNodeLog.rows.filter(items => item.nodeId == items.nodeId)
if (item.eventType == '0') {
return {
...item,
log: {
userData: item.userData ? JSON.parse(item.userData) : JSON.parse(process.rows[0].processData).orgNameData,
userName: process.rows[0].userName,
xtLrsj: process.rows[0].xtLrsj,
processStatus: process.rows[0].processStatus,
}
}
} else {
return {
...item,
orgNameData: JSON.parse(log[0].userData),
log: log
}
}
})
};
defineExpose({ init });
@ -509,4 +528,60 @@ defineExpose({ init });
}
}
/* 使用深度选择器覆盖子组件样式 */
::v-deep .el-step.is-vertical .el-step__title {
color: #000000 !important;
border-color: #000000 !important;
}
::v-deep .el-step__description{
padding: 0 !important;
}
::v-deep .el-step__description.is-wait {
color: #000000 !important;
border-color: #000000 !important;
}
.el-step__title.is-wait {
color: #000000 !important;
border-color: #000000 !important;
}
::v-deep .el-step__head.is-wait {
color: #000000 !important;
border-color: #000000 !important;
}
::v-deep .el-step__line {
background-color: #000000 !important;
}
.nodeBox {
width: 80%;
text-align: center;
line-height: 30px;
border-radius: 10px;
overflow: hidden;
background-color: aliceblue;
.nodeorgNameTg {
background-color: #1abe20;
}
.nameTag {
line-height: 30px;
padding: 0 10px;
}
.nodeorgNameDd {
background-color: #18a2dd;
}
.fontColor {
color: #1abe20;
} .fontColorDd {
color: #18a2dd;
}
}
</style>

View File

@ -0,0 +1,185 @@
<template>
<el-dialog v-model="modelValue" :destroy-on-close="true" title="新增布控" @close="close" :close-on-click-modal="false">
<FormMessage v-model="listQuery" :formList="formData" labelWidth="120px" ref="elform" :rules="rules">
<template #bqList>
<div class="marks pointer" @click="chooseMarksVisible = true">
<span style="color: rgb(175 178 184);padding-left: 10px;"
v-if="!listQuery.bqList || listQuery.bqList.length == 0">请选择标签</span>
<span v-else>
<el-tag @close.stop="closeTag(idx)" type="success" closable v-for="(it, idx) in listQuery.bqList"
:key="idx">{{ it.bqMc }}</el-tag>
</span>
</div>
</template>
</FormMessage>
<template #footer>
<div class="flex just-center">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="submitForm">确认</el-button>
</div>
</template>
</el-dialog>
<ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" />
</template>
<script setup>
import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { reactive, ref, getCurrentInstance, watch } from 'vue';
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
bkDx: {
type: String,
default: '01'
}
})
const emits = defineEmits(["update:modelValue", "choosed", "choosedAdd"]);
const { proxy } = getCurrentInstance();
const { D_BZ_XB, D_GS_ZDR_YJDJ } = proxy.$dict("D_BZ_XB", "D_GS_ZDR_YJDJ"); // 获取字典数据
const elform = ref()
const roleIds = ref([])
const chooseMarksVisible = ref(false)
const listQuery = ref({})
const formData = ref()
const rules = ref()
const tableColumnList = {
'04': [
{ label: "身份证号", prop: "rySfzh", type: "input" },
{ label: "姓名", prop: "ryXm", type: "input", },
{ label: "性别", prop: "ryXb", type: "select", options: D_BZ_XB },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
],
'05': [
{ label: "车辆识别代码", prop: "clCjh", type: "input" },
{ label: "车牌号", prop: "clCph", type: "input", },
{ label: "姓名", prop: "ryXm", type: "input", },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
],
'06': [
{ label: "Mac地址", prop: "mac", type: "input" },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
],
'07': [
{ label: "IMEI", prop: "imei", type: "input" },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
],
'08': [
{ label: "IMSI", prop: "imsi", type: "input" },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
],
'09': [
{ label: "电话", prop: "rySjhm", type: "input" },
{ label: "姓名", prop: "ryXm", type: "input", },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "性别", prop: "ryXb", type: "select", options: D_BZ_XB },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
],
'10': [{ label: "姓名", prop: "ryXm", type: "input", },
{ label: "身份证号", prop: "rySfzh", type: "input" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "性别", prop: "ryXb", type: "select", options: D_BZ_XB },
{ label: "标签", prop: "bqList", type: "slot", width: '100%' },
{ label: "责任部门", prop: "ssbmdm", type: "department" },
{ label: "人员照片", prop: "fjZp", type: "upload", width: '100%' },
],
}
const rulesList = {
'04': {
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
},
'03': {
fjZp: [{ required: true, message: "请选择附件", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
},
'05': {
clCjh: [{ required: true, message: "请输入车辆识别代码", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
},
'06': {
mac: [{ required: true, message: "请输入Mac地址", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
},
'07': {
imei: [{ required: true, message: "请输入IMEI", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
},
'08': {
imsi: [{ required: true, message: "请输入IMSI", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
},
'09': {
dh: [{ required: true, message: "请输入电话号码", trigger: "blur" }],
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
}
}
watch(() => props.bkDx, (val, oldval) => {
formData.value = tableColumnList[val]
rules.value = rulesList[val]
}, { immediate: true })
// 选择标签
const choosed = (val) => {
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 }
});
roleIds.value = val.map(v => v.id)
}
// 删除数据
const closeTag = (idx) => {
listQuery.value.bqList.splice(idx, 1)
roleIds.value.splice(idx, 1)
}
const submitForm = () => {
elform.value.submit((val) => {
val.id = new Date().getTime()
emits('choosedAdd', val)
close()
})
}
const close = async () => {
roleIds.value = []
listQuery.value = {}
listQuery.value.fjZp = []
await emits("update:modelValue", false);
}
</script>
<style lang="scss" scoped>
.marks {
width: 100%;
min-height: 32px;
border: 1px solid #e9e9e9;
border-radius: 4px;
}
</style>

View File

@ -2,7 +2,7 @@
<div>
<div class="titleBox">
<PageTitle title="我的布控">
<el-button type="primary" @click="handleAdd('add',null)">发起布控</el-button>
<el-button type="primary" @click="handleAdd('add', null)">发起布控</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
@ -13,43 +13,49 @@
<div class="content">
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
>
<template #bkZt="{ row }">
<DictTag :tag="false" :value="row.bkZt" :options="D_GS_BK_ZT" />
</template>
<template #bkDj="{ row }">
<DictTag :tag="false" :value="row.bkDj" :options="D_GS_BK_DJ" />
</template>
<template #bkDx="{ row }">
<DictTag :tag="false" :value="row.bkDx" :options="D_GS_BK_DX" />
</template>
<template #bkdxList="{ row }">
<span v-if="row.bkdxList"><span class="nowrap" v-for="(it,idx) in row.bkdxList" :key="idx"> {{ it.ryXm }} <span v-if="idx < row.bkdxList.length-1"></span></span></span>
<span v-else>暂无</span>
</template>
<template #sjrs="{ row }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #bkZt="{ row }">
<DictTag :tag="false" :value="row.bkZt" :options="D_GS_BK_ZT" />
</template>
<template #bkDj="{ row }">
<DictTag :tag="false" :value="row.bkDj" :options="D_GS_BK_DJ" />
</template>
<template #bkDx="{ row }">
<DictTag :tag="false" :value="row.bkDx" :options="D_GS_BK_DX" />
</template>
<template #bkdxList="{ row }">
<span v-if="row.bkdxList"><span class="nowrap" v-for="(it, idx) in row.bkdxList" :key="idx">
{{ it.ryXm ? it.ryXm : it.imei ? it.imei : it.imsi ? it.imsi : '' }}
<!-- :it.ryXm?it.mac:it.imsi?it.imsi:'xxxx' -->
<span v-if="idx < row.bkdxList.length - 1"></span></span></span>
<span v-else>暂无</span>
</template>
<!-- <template #sjrs="{ row }">
<span v-if="row.bkdxList"> {{ row.bkdxList.length }} </span>
<span v-else>0</span>
</template>
<template #qyList="{ row }">
</template> -->
<!-- <template #qyList="{ row }">
<span v-for="(it,idx) in row.qyList" :key="idx"> {{ it.qymc }} <span v-if="idx < row.qyList.length-1"></span></span>
</template>
<template #yjcs="{row}">
</template> -->
<!-- <template #yjcs="{row}">
<span @click="openWarning(row)" style="color: #00ffff;" class="mr5 pointer">{{ row.yjcs || 0}}</span>
</template>
</template> -->
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary" v-if="['01','03','06'].includes(row.bkZt)" size="small" @click="handleSend(row.id)">送审</el-link>
<el-link type="primary" v-if="['01','03','06'].includes(row.bkZt)" size="small" @click="handleAdd('edit',row)">编辑</el-link>
<el-link type="primary" size="small" @click="handleAdd('detail',row)">详情</el-link>
<el-link type="danger" size="small" @click="handleRow(row.id)">删除</el-link>
<template v-if="!row.gzlid">
<el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small"
@click="createProcess(row)">送审</el-link>
<el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small"
@click="handleAdd('edit', row)">编辑</el-link>
</template>
<!-- 审核通过后才有轨迹 -->
<el-link type="primary" size="small" @click="handleAdd('detail', row)">轨迹</el-link>
<el-link type="primary" size="small" @click="handleAdd('detail', row)">详情</el-link>
<el-link type="danger" size="small" @click="handleRow(row.id)"
v-if="['01', '03', '06'].includes(row.bkZt)">删除</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -59,10 +65,16 @@
</div>
</div>
</div>
<!-- 布控对象 -->
<AddBkdx ref="addBkdxForm" @change="getList" :dic="{D_GS_BK_DX,D_GS_BK_BKYS,D_BZ_XB,D_GS_BK_CZYQ,D_GS_BK_DJ,D_GS_BK_CZJSDWLX,D_GS_BK_TJFS}" />
<!-- 布控类型 -->
<AddBkdx ref="addBkdxForm" @change="getList"
:dic="{
D_GS_BK_DX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ,
D_GS_BK_DJ, BD_BK_CLYJBQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS,D_GS_ZDR_YJDJ
}" />
<!-- 预警弹窗 -->
<YjDialog ref="warningkdxForm"></YjDialog>
<SubmissionProcess v-model="showSp" :data="rowData" :userData="{ ajmc: '布控审批', flowType: 'BKSP',modelName:'布控' }"
:path="fixedValue" @getList="getList" />
</template>
<script setup>
@ -73,24 +85,26 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const { D_GS_BK_BKYS,D_BZ_XB,D_GS_BK_SJLX,D_GS_BK_DJ, D_GS_BK_DX, D_GS_BK_ZT,D_GS_BK_CZYQ,D_GS_BK_CZJSDWLX,D_GS_BK_TJFS } = proxy.$dict("D_GS_BK_BKYS","D_BZ_XB","D_GS_BK_SJLX","D_GS_BK_DJ","D_GS_BK_DX","D_GS_BK_ZT","D_GS_BK_CZYQ","D_GS_BK_CZJSDWLX","D_GS_BK_TJFS"); //获取字典数据
const { D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_SJLX, D_GS_BK_DJ, BD_BK_CLYJBQ,D_GS_ZDR_YJDJ,
D_GS_BK_DX, D_GS_BK_ZT, D_GS_BK_CZYQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS } = proxy.$dict("D_GS_ZDR_YJDJ","D_GS_BK_BKYS", "D_BZ_XB", "D_GS_BK_SJLX", "D_GS_BK_DJ", "D_GS_BK_DX", "D_GS_BK_ZT", "D_GS_BK_CZYQ", "D_GS_BK_CZJSDWLX", "D_GS_BK_TJFS", 'BD_BK_CLYJBQ'); //获取字典数据
const addBkdxForm = ref(null); //布控对象组件
const warningkdxForm = ref(); //布控对象组件
const searchBox = ref(); //搜索框
const searchConfiger = ref([
{
label: "布控级",
label: "布控级",
prop: "bkDj",
placeholder: "请选择布控级",
placeholder: "请选择布控级",
showType: "select",
options: D_GS_BK_DJ
},
{
label: "布控对象",
label: "布控类型",
prop: "bkDx",
placeholder: "请选择布控对象",
placeholder: "请选择布控类型",
showType: "select",
options: D_GS_BK_DX
},
@ -116,23 +130,32 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 150, //操作栏宽度
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "布控级别", prop: "bkDj", showSolt: true },
{ label: "布控标题", prop: "bkBt" },
{ label: "布控对象", prop: "bkDx",showSolt: true ,showOverflowTooltip:true},
{ label: "布控对象信息", prop: "bkdxList",showSolt: true,showOverflowTooltip:true },
{ label: "布控范围", prop: "qyList", showSolt: true,showOverflowTooltip:true },
{ label: "涉及人数", prop: "sjrs",showSolt: true },
{ label: "预警次数", prop: "yjcs",showSolt: true },
{ label: "开始时间", prop: "bkSjKs",showOverflowTooltip:true},
{ label: "结束时间", prop: "bkSjJs",showOverflowTooltip:true},
{ label: "布控发起人", prop: "bkfqrXm"},
{ label: "布控状态", prop: "bkZt",showSolt: true},
{ label: "布控对象", prop: "bkdxList", showSolt: true, showOverflowTooltip: true },
{ label: "布控类型", prop: "bkDx", showSolt: true, showOverflowTooltip: true },
{ label: "布控等级", prop: "bkDj", showSolt: true },
{ label: "开始时间", prop: "bkSjKs", showOverflowTooltip: true },
{ label: "结束时间", prop: "bkSjJs", showOverflowTooltip: true },
{ label: "申请人", prop: "bkfqrXm" },
{ label: "布控状态", prop: "bkZt", showSolt: true },
]
});
// 固定值
const fixedValue = {
clueVerification:'deploymentApproval',
byMeansOf: 'tbGsxtBk/gsbkCallback',
nobyMeansOf: 'tbGsxtBk/gsbkCallback',
recycle:'tbGsxtBk/gsbkCallback',
}
const showSp = ref(false);
const rowData = ref()
const createProcess = (row) => {
showSp.value = true;
rowData.value = row
}
onMounted(() => {
getList();
tabHeightFn();
@ -160,7 +183,7 @@ const getList = () => {
let data = {
...pageData.pageConfiger,
...queryFrom.value,
bkcxlx:'01'
bkcxlx: '01'
};
qcckGet(data, "/mosty-gsxt/tbGsxtBk/selectPage").then((res) => {
pageData.tableData = res.records || [];
@ -172,18 +195,18 @@ const getList = () => {
};
// 打开预警
const openWarning = (val) =>{
const openWarning = (val) => {
warningkdxForm.value.init(val)
}
const handleAdd = (type,row) => {
addBkdxForm.value.init(type,row);
const handleAdd = (type, row) => {
addBkdxForm.value.init(type, row);
};
// 送审
const handleSend = (id) =>{
const handleSend = (id) => {
proxy.$confirm("确定要送审?", "警告", { type: "warning" }).then(() => {
qcckPost({}, "/mosty-gsxt/tbGsxtBk/subExamine/"+id).then(() => {
qcckPost({}, "/mosty-gsxt/tbGsxtBk/subExamine/" + id).then(() => {
proxy.$message({ type: "success", message: "送审成功" });
getList();
});
@ -193,7 +216,7 @@ const handleSend = (id) =>{
// 删除
const handleRow = (id) => {
proxy.$confirm("确定要删除?", "警告", { type: "warning" }).then(() => {
qcckDelete({}, "/mosty-gsxt/tbGsxtBk/"+id).then(() => {
qcckDelete({}, "/mosty-gsxt/tbGsxtBk/" + id).then(() => {
proxy.$message({ type: "success", message: "删除成功" });
getList();
});
@ -212,5 +235,4 @@ const tabHeightFn = () => {
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -0,0 +1,4 @@
export const ZL_LX_BM = [{ label: 'ZLLX10', value: 'ZLLX10' }, { label: 'ZLLX11', value: 'ZLLX11' }, { label: 'ZLLX12', value: 'ZLLX12' }, { label: 'ZLLX13', value: 'ZLLX13' }, { label: 'ZLLX14', value: 'ZLLX14' }]
export const ZL_LX_MC = [{ label: '普通预警', value: '普通预警' }, { label: '疲劳预警', value: '疲劳预警' }, { label: '超速预警', value: '超速预警' }, { label: '疲劳预警', value: '疲劳预警' }, { label: '疲劳预警', value: '疲劳预警' }]
export const ZL_JB_BM = [{ label: 'XTDJ10', value: 'XTDJ10' }, { label: 'XTDJ11', value: 'XTDJ11' }, { label: 'XTDJ12', value: 'XTDJ12' }, { label: 'XTDJ13', value: 'XTDJ13' }, { label: 'XTDJ14', value: 'XTDJ14' }]
export const ZL_JB_MC = [{ label: '一级', value: '一级' }, { label: '二级', value: '二级' }, { label: '三级', value: '三级' }, { label: '四级', value: '四级' }]

View File

@ -0,0 +1,122 @@
<template>
<FormMessage v-model="listQuery" :formList="formData" labelWidth="100px" ref="elform" :rules="rules">
<template #zrSsbmdm>
<MOSTY.Department filterable v-model="listQuery.receivingUnitCode" width="100%" @getDepValue="getDepValue"
clearable placeholder="请选择所属部门" :multiple="true" />
</template>
<template #ry>
<el-input readonly v-model="ryStr" @click="chooseUserVisible = true" placeholder="请选择民警"></el-input>
</template>
</FormMessage>
<ChooseUser v-model="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds" :Single="false" />
</template>
<script setup>
import { reactive, ref, onMounted, watch } from "vue";
import { sendFqzl } from '@/api/commit'
import { getItem } from '@/utils/storage'
import * as MOSTY from "@/components/MyComponents/index";
import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue"
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { ElMessage } from "element-plus";
const props = defineProps({
itemData: {
type: Object,
default: () => { }
}
})
const emit = defineEmits(['handleClose'])
// 表单数据
const listQuery = ref({}); //表单
// 选择人员
const ryStr = ref('')
const elform = ref()
const personnelEntity = ref()
const formData = ref([
{ label: "标题", prop: "title", type: "input", width: "40%" },
{ label: "接收单位", prop: "zrSsbmdm", type: "slot", width: "40%" },
{ label: "指令状态", prop: "status", type: "input", width: "40%" },
{ label: "人员选择", prop: "ry", type: "slot", width: "40%" },
{ label: "附件", prop: "attachmentPath", type: "upload" },
{ label: "指令内容", prop: "instructionContent", type: "textarea", width: "100%" },
])
const rules = reactive({
title: [{ required: true, message: "请输入指令标题", trigger: "blur" }],
zrSsbmdm: [{ required: true, message: "请选择接收单位", trigger: "blur" }],
instructionContent: [{ required: true, message: "请输入指令内容", trigger: "blur" }],
ry: [{ required: true, message: "请选择人员", trigger: "blur" }]
});
const deptId = getItem('deptId')
const getsendFqzl = () => {
elform.value.submit((val)=>{
elform.value.validate().then(res => {
if (res) {
const data = { ...listQuery.value }
delete data.ry
const promes = {
instructionsEntity: {
unitCode: deptId[0].deptCode,
unitName: deptId[0].deptName,
...data,
receivingUnitCode: listQuery.value.receivingUnitCode.toString(),
receivingUnit: listQuery.value.receivingUnit.toString(),
attachmentPath: JSON.stringify(listQuery.value.attachmentPath)
}, id: props.itemData.id,
personnelEntity: personnelEntity.value
}
sendFqzl(promes).then((result) => {
const res = JSON.parse(result)
if (res.code == 200) {
ElMessage.success('发送成功')
emit('handleClose')
} else {
ElMessage.error(res.msg)
}
}).catch((err) => {
console.log(err);
});
}
})
})
}
const itemData=ref(props.itemData)
watch(() =>itemData.value, (val) => {
listQuery.value.title = val.yjBt
listQuery.value.instructionContent = val.yjNr
}, { deep: true, immediate: true })
const chooseUserVisible = ref(false)
const roleIds = ref([])
// 选取角色
const handleUserSelected = (val) => {
personnelEntity.value = val.map((item, index) => {
return {
name: item.userName,
idNumber: item.idEntityCard,
phoneNumber: item.mobile,
personTypeId: "",
personTypeName: "",
domicilePlace: "",
orderId: index + 1
}
})
ryStr.value = personnelEntity.value.map(item => item.name)
}
// 选取部门
const getDepValue = (e) => {
listQuery.value.receivingUnit = e.map(item => item.orgName)
}
defineExpose({
getsendFqzl
})
</script>
<style scoped lang="scss"></style>

View File

@ -1,7 +1,7 @@
<template>
<div class="personCard relative flex mb10 pointer">
<div class="personCard relative flex mb10 pointer" >
<div class="cxbq f14 lh50 tc absolute" v-if="props.item.czzt == '03'">已完成</div>
<el-button color="#0072ff" size="small" @click="handleQs(props.item)" v-if="props.item.czzt == '01'" class="btn_qs f14 tc absolute">签收</el-button>
<el-button color="#0072ff" size="small" @click.stop="handleQs(props.item)" v-if="props.item.czzt == '01'" class="btn_qs f14 tc absolute">签收</el-button>
<el-button color="#0072ff" size="small" v-if="props.item.czzt == '02'" ref="buttonRef" @click.stop="isShowVisble = !isShowVisble;" class="btn_qs f14 tc absolute">反馈</el-button>
<div class="avatarBox relative">
<div class="marks f12 absolute" :class="changeBg(props.item.yjJb)">
@ -10,7 +10,7 @@
<div>
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="props.item.yjTp" :preview-src-list="[props.item.yjTp]"/>
</div>
<span class="smallbtn">全息档案</span>
<div> <span class="smallbtn" @click.stop="()=>{}">全息档案</span></div>
</div>
<div class="infoBox">
<div class="items">
@ -32,7 +32,7 @@
</div>
</div>
</div>
<!-- 虚拟触发 -->
<el-popover ref="popoverRef" :visible="isShowVisble" :width="400" :virtual-ref="buttonRef" trigger="click" title="反馈" virtual-triggering >
<el-form :model="chooseRow" ref="elRowForm" :inline="true" label-width="100px" :rules="rules">
@ -81,7 +81,7 @@ const rules = reactive({
// 处理签收
const handleQs = (val) =>{
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
qcckPost({id:val.id}, "/mosty-jmxf/tbYjxx/yjqs").then(() => {
qcckPost({id:val.id}, "/mosty-gsxt/tbYjxx/yjqs").then(() => {
val.czzt = '02'
proxy.$message({ type: "success", message: "签收成功" });
});
@ -93,7 +93,7 @@ const handleSendSp = (val) =>{
elRowForm.value.validate((valid) => {
if(!valid) return;
let data = { id:val.id,...chooseRow.value }
qcckPost(data, "/mosty-jmxf/tbYjxx/yjfk").then(() => {
qcckPost(data, "/mosty-gsxt/tbYjxx/yjfk").then(() => {
val.czzt = '03';
proxy.$message({ type: "success", message: "反馈成功" });
cancelRowSp()
@ -134,6 +134,9 @@ const changetText = (type) => {
return "不关注";
}
};
const showDetail = () => {
emit('showDetail',props.item)
}
</script>
@ -244,4 +247,4 @@ const changetText = (type) => {
.num{
color: #00ffff;
}
</style>
</style>

View File

@ -24,7 +24,7 @@
</el-input>
</div>
<ul class="listContent noScollLine mt10" v-infinite-scroll="loadList" style="overflow: auto" v-loading="loading">
<li v-for="(item, index) in personList" :key="index">
<li v-for="(item, index) in personList" :key="index" @click.stop="showDetail(item)">
<YjItem :item="item" type="yj" :dic="{D_BZ_YJCZZT}"></YjItem>
</li>
<MOSTY.Empty :show="!loading && personList.length <= 0"></MOSTY.Empty>
@ -63,6 +63,9 @@
</div>
</div>
</div>
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='close'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj" :tacitly="tacitly"/>
</Information>
</template>
<script setup>
@ -74,6 +77,8 @@ import WarningCount from "./components/WarningCount.vue";
import BarHatEcharts from "@/views/home/echarts/barHatEcharts.vue";
import { onMounted, reactive, ref,getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
const { proxy } = getCurrentInstance();
const { D_BZ_YJCZZT } = proxy.$dict('D_BZ_YJCZZT')
const router = useRouter()
@ -129,7 +134,7 @@ onMounted(()=>{
})
// 触底加载
const loadList = () =>{
const loadList = () => {
if( personList.value.length == total.value) return;
pageNum.value++;
getList()
@ -138,7 +143,7 @@ const loadList = () =>{
const getList = () =>{
let params = { pageSize:10, pageNum:pageNum.value };
loading.value = true;
qcckPost({params},'/mosty-jmxf/tbYjxx/getPageList').then(res=>{
qcckPost(params,'/mosty-gsxt/tbYjxx/getPageList').then(res=>{
loading.value = false;
let arr = res.records || [];
personList.value = pageNum.value == 1 ? arr : personList.value.concat(arr);
@ -151,13 +156,13 @@ const getList = () =>{
const init = () =>{
// 预警处置统计
list.YjczDate.loading = true;
qcckGet({},'/mosty-jmxf/tbYjxx/getYjCzztTj').then(res=>{
qcckGet({},'/mosty-gsxt/tbYjxx/getYjCzztTj').then(res=>{
list.YjczDate.loading = false;
list.YjczDate.xDate = res.map(item=>item.zdmc);
list.YjczDate.list = [{
list.YjczDate.list = [{
value: res.map(item=>item.count),
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
}]
})
// 布控区域统计
@ -165,28 +170,28 @@ const init = () =>{
qcckGet({},'/mosty-gsxt/tbGsxtBkQy/getBkQytj').then(res=>{
list.RylxDate.loading = false;
list.RylxDate.xDate = res.map(item=>item.qymc);
list.RylxDate.list = [{
list.RylxDate.list = [{
value: res.map(item=>item.num),
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
}]
})
// 感知元统计
list.GzyDate.loading= true;
qcckGet({},'/mosty-jmxf/tbYjxx/getGzyTj').then(res=>{
qcckGet({},'/mosty-gsxt/tbYjxx/getGzyTj').then(res=>{
list.GzyDate.loading = false;
list.GzyDate.xDate = res.map(item=>item.yj_gzymc);
list.GzyDate.list = [{
list.GzyDate.list = [{
value: res.map(item=>item.num),
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
color: ['rgba(0,244,255,1)', 'rgba(0,77,167,1)'],
hatColor: '#087df9'
}]
})
// 预警级别
loadingyj.value = true;
qcckGet({},'/mosty-jmxf/tbYjxx/getYjxxTj').then(res=>{
qcckGet({},'/mosty-gsxt/tbYjxx/getYjxxTj').then(res=>{
loadingyj.value = false;
yjjbRef.value.initCharts(res)
})
@ -195,6 +200,26 @@ const init = () =>{
const seeMoreFn = () => {
router.push('/ControlApproval')
}
const showDialog = ref(false)
const itemData=ref()
const showDetail = (item) => {
showDialog.value = true;
itemData.value=item
}
const handleClose = () => {
showDialog.value = false;
}
const semdFqzlRef = ref()
const tacitly = {
title:'yjBt',
instructionContent:'yjNr'
}
const submit=()=>{
semdFqzlRef.value.getsendFqzl()
}
const close = () => {
semdFqzlRef.value.close()
}
</script>
<style lang="scss" scoped>