解决冲突
This commit is contained in:
@ -47,3 +47,57 @@ export const xsasjxsajqxajqk = (params) => {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// /asj/xzaj/ztgs 治安案件区域分析
|
||||||
|
export const xsasjxsajztgs = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/ztgs`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// /asj/xzaj/ccajlbfx 治安案件类别分析
|
||||||
|
export const xsasjxsajccajlbfx = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/ccajlbfx`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// /asj/xzaj/ajxsfx 治安案件线索分析
|
||||||
|
export const xsasjxsajajxsfx = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/ajxsfx`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export const xsasjxsajxsfx = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/xsfx`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export const xsasjxsajnldtj = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/nldtj`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const xsasjxsajajfsqy = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/ajfsqy`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// /asj/xzaj/ajdyfx 治安案件发生区域分析
|
||||||
|
export const xsasjxsajajdyfx = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/asj/xzaj/ajdyfx`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -33,9 +33,9 @@ const chooseMarksVisible = ref(false)
|
|||||||
const emit = defineEmits(['change'])
|
const emit = defineEmits(['change'])
|
||||||
const listQuery = ref({})
|
const listQuery = ref({})
|
||||||
const formData = ref([
|
const formData = ref([
|
||||||
|
{ label: "身份证号", prop: "rySfzh", type: "input" ,width:'45%'},
|
||||||
{ label: "人员姓名", prop: "ryXm", type: "input" ,width:'45%'},
|
{ label: "人员姓名", prop: "ryXm", type: "input" ,width:'45%'},
|
||||||
{ label: "性别", prop: "ryXb", type: "select" ,width:'45%',options:D_BZ_XB},
|
{ label: "性别", prop: "ryXb", type: "select" ,width:'45%',options:D_BZ_XB},
|
||||||
{ label: "身份证号", prop: "rySfzh", type: "input" ,width:'45%'},
|
|
||||||
{ label: "手机号码", prop: "ryLxdh", type: "input",width:'45%' },
|
{ label: "手机号码", prop: "ryLxdh", type: "input",width:'45%' },
|
||||||
{ label: "户籍地址", prop: "hjdXz", type: "input", width: '100%' },
|
{ label: "户籍地址", prop: "hjdXz", type: "input", width: '100%' },
|
||||||
{ label: "户籍地派出所", prop: "hjdpcsdm", depMc: 'hjdpcs', type: "department", width: '48%' },
|
{ label: "户籍地派出所", prop: "hjdpcsdm", depMc: 'hjdpcs', type: "department", width: '48%' },
|
||||||
@ -49,11 +49,13 @@ const formData = ref([
|
|||||||
])
|
])
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
// fjZp: [{ required: true, message: "请上传人员照片", trigger: "blur" }],
|
// fjZp: [{ required: true, message: "请上传人员照片", trigger: "blur" }],
|
||||||
ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
|
||||||
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
|
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
|
||||||
ryXb: [{ required: true, message: "请选择性别", trigger: "change" }],
|
fjZp: [{ required: true, message: "人员照片", trigger: "blur" }],
|
||||||
yjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
|
// ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
||||||
ssbmdm:[{ required: true, message: "请选择所属部门", trigger: "change" }]
|
|
||||||
|
// ryXb: [{ required: true, message: "请选择性别", trigger: "change" }],
|
||||||
|
// yjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
|
||||||
|
// ssbmdm:[{ required: true, message: "请选择所属部门", trigger: "change" }]
|
||||||
// ryLxdh: [{ required: true, message: "请输入手机号码", trigger: "blur" }],
|
// ryLxdh: [{ required: true, message: "请输入手机号码", trigger: "blur" }],
|
||||||
// hjdXz: [{ required: true, message: "请输入户籍地", trigger: "blur" }],
|
// hjdXz: [{ required: true, message: "请输入户籍地", trigger: "blur" }],
|
||||||
// xzdXz: [{ required: true, message: "请输入现居住地址", trigger: "blur" }],
|
// xzdXz: [{ required: true, message: "请输入现居住地址", trigger: "blur" }],
|
||||||
|
|||||||
@ -1,75 +1,37 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading="loadingPage" class="pageSearch searchBox" :style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`">
|
<div style="padding: 0" v-loading="loadingPage" class="pageSearch searchBox"
|
||||||
|
:style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`">
|
||||||
|
<div class="filter-title">
|
||||||
|
<span class="filter-label"><el-icon><Filter /></el-icon>筛选条件</span>
|
||||||
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div v-for="(item, index) in getArr" :key="index" class="item">
|
<div v-for="(item, index) in getArr" :key="index" class="item">
|
||||||
<div class="label" v-if="item.label">{{ item.label }}</div>
|
<div class="label" v-if="item.label">{{ item.label }}</div>
|
||||||
<!-- select -->
|
<!-- select -->
|
||||||
<el-select
|
<el-select v-if="item.showType === 'select'" v-model="searchObj[item.prop]" :multiple="item.multiple"
|
||||||
v-if="item.showType === 'select'"
|
:clearable="item.clearable" :filterable="item.filterable" :placeholder="item.placeholder" collapse-tags
|
||||||
v-model="searchObj[item.prop]"
|
collapse-tags-tooltip>
|
||||||
:multiple="item.multiple"
|
<el-option v-for="obj in getOptions[item.prop]" :key="obj.value" :label="obj.label || obj.lable"
|
||||||
:clearable="item.clearable"
|
:value="obj.value" />
|
||||||
:filterable="item.filterable"
|
|
||||||
:placeholder="item.placeholder"
|
|
||||||
collapse-tags
|
|
||||||
collapse-tags-tooltip
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="obj in getOptions[item.prop]"
|
|
||||||
:key="obj.value"
|
|
||||||
:label="obj.label || obj.lable"
|
|
||||||
:value="obj.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- input -->
|
<!-- input -->
|
||||||
<el-input
|
<el-input v-else-if="item.showType === 'input'" class="input" v-model="searchObj[item.prop]"
|
||||||
v-else-if="item.showType === 'input'"
|
:clearable="item.clearable" :placeholder="item.placeholder" />
|
||||||
class="input"
|
|
||||||
v-model="searchObj[item.prop]"
|
|
||||||
:clearable="item.clearable"
|
|
||||||
:placeholder="item.placeholder"
|
|
||||||
/>
|
|
||||||
<!-- 日期段选择器 -->
|
<!-- 日期段选择器 -->
|
||||||
<el-date-picker
|
<el-date-picker v-else-if="item.showType === 'daterange'" v-model="searchObj[item.prop]" type="daterange"
|
||||||
v-else-if="item.showType === 'daterange'"
|
unlink-panels :range-separator="item.rangeSeparator" :start-placeholder="item.startPlaceholder"
|
||||||
v-model="searchObj[item.prop]"
|
:end-placeholder="item.endPlaceholder" :shortcuts="item.shortcuts" :disabledDate="disabledDate"
|
||||||
type="daterange"
|
value-format="YYYY-MM-DD" />
|
||||||
unlink-panels
|
<el-date-picker v-else-if="item.showType === 'datetimerange'" v-model="searchObj[item.prop]"
|
||||||
:range-separator="item.rangeSeparator"
|
type="datetimerange" unlink-panels :range-separator="item.rangeSeparator || '至'"
|
||||||
:start-placeholder="item.startPlaceholder"
|
:start-placeholder="item.startPlaceholder || '开始日期'" :end-placeholder="item.endPlaceholder || '结束日期'"
|
||||||
:end-placeholder="item.endPlaceholder"
|
:shortcuts="item.shortcuts" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||||
:shortcuts="item.shortcuts"
|
<el-date-picker v-else-if="item.showType === 'date'" v-model="searchObj[item.prop]" type="date"
|
||||||
:disabledDate="disabledDate"
|
:placeholder="item.placeholder" :disabled-date="disabledDate" :shortcuts="item.shortcuts"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD">
|
||||||
/>
|
|
||||||
<el-date-picker
|
|
||||||
v-else-if="item.showType === 'datetimerange'"
|
|
||||||
v-model="searchObj[item.prop]"
|
|
||||||
type="datetimerange"
|
|
||||||
unlink-panels
|
|
||||||
:range-separator="item.rangeSeparator || '至'"
|
|
||||||
:start-placeholder="item.startPlaceholder || '开始日期'"
|
|
||||||
:end-placeholder="item.endPlaceholder || '结束日期'"
|
|
||||||
:shortcuts="item.shortcuts"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
/>
|
|
||||||
<el-date-picker
|
|
||||||
v-else-if="item.showType === 'date'"
|
|
||||||
v-model="searchObj[item.prop]"
|
|
||||||
type="date"
|
|
||||||
:placeholder="item.placeholder"
|
|
||||||
:disabled-date="disabledDate"
|
|
||||||
:shortcuts="item.shortcuts"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
>
|
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
<el-date-picker
|
<el-date-picker v-else-if="item.showType === 'datetime'" v-model="searchObj[item.prop]" type="datetime"
|
||||||
v-else-if="item.showType === 'datetime'"
|
:placeholder="item.placeholder" value-format="YYYY-MM-DD HH:mm:ss">
|
||||||
v-model="searchObj[item.prop]"
|
|
||||||
type="datetime"
|
|
||||||
:placeholder="item.placeholder"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
>
|
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
|
|
||||||
<!-- checkbox -->
|
<!-- checkbox -->
|
||||||
@ -78,60 +40,31 @@
|
|||||||
</template>
|
</template>
|
||||||
<!-- checkbox -->
|
<!-- checkbox -->
|
||||||
<template v-else-if="item.showType === 'checkbox'">
|
<template v-else-if="item.showType === 'checkbox'">
|
||||||
<el-checkbox
|
<el-checkbox v-if="item.showSelectAll" v-model="item.checkAll" :indeterminate="item.isIndeterminate" @change="
|
||||||
v-if="item.showSelectAll"
|
|
||||||
v-model="item.checkAll"
|
|
||||||
:indeterminate="item.isIndeterminate"
|
|
||||||
@change="
|
|
||||||
(val) => {
|
(val) => {
|
||||||
handleCheckAllChange(val, item);
|
handleCheckAllChange(val, item);
|
||||||
}
|
}
|
||||||
"
|
">全选</el-checkbox>
|
||||||
>全选</el-checkbox
|
<el-checkbox-group v-model="searchObj[item.prop]" @change="
|
||||||
>
|
|
||||||
<el-checkbox-group
|
|
||||||
v-model="searchObj[item.prop]"
|
|
||||||
@change="
|
|
||||||
(val) => {
|
(val) => {
|
||||||
handleCheckedCitiesChange(val, item);
|
handleCheckedCitiesChange(val, item);
|
||||||
}
|
}
|
||||||
"
|
">
|
||||||
>
|
<el-checkbox v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-checkbox>
|
||||||
<el-checkbox
|
|
||||||
v-for="obj in item.options"
|
|
||||||
:key="obj.value"
|
|
||||||
:label="obj.value"
|
|
||||||
>{{ obj.label }}</el-checkbox
|
|
||||||
>
|
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</template>
|
</template>
|
||||||
<!-- radio -->
|
<!-- radio -->
|
||||||
<el-radio-group
|
<el-radio-group v-else-if="item.showType === 'radio'" v-model="searchObj[item.prop]" @change="
|
||||||
v-else-if="item.showType === 'radio'"
|
|
||||||
v-model="searchObj[item.prop]"
|
|
||||||
@change="
|
|
||||||
(val) => {
|
(val) => {
|
||||||
handleRadioChange(val, item);
|
handleRadioChange(val, item);
|
||||||
}
|
}
|
||||||
"
|
">
|
||||||
>
|
<el-radio v-for="obj in item.options" :key="obj.value" :label="obj.value">{{ obj.label }}</el-radio>
|
||||||
<el-radio
|
|
||||||
v-for="obj in item.options"
|
|
||||||
:key="obj.value"
|
|
||||||
:label="obj.value"
|
|
||||||
>{{ obj.label }}</el-radio
|
|
||||||
>
|
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- 级联选择 -->
|
<!-- 级联选择 -->
|
||||||
<el-cascader
|
<el-cascader v-else-if="item.showType === 'cascader'" v-model="searchObj[item.prop]" :props="item.props"
|
||||||
v-else-if="item.showType === 'cascader'"
|
:show-all-levels="item.showAllLevels" :clearable="item.clearable" :options="getOptions[item.prop]"
|
||||||
v-model="searchObj[item.prop]"
|
:placeholder="item.placeholder" />
|
||||||
:props="item.props"
|
|
||||||
:show-all-levels="item.showAllLevels"
|
|
||||||
:clearable="item.clearable"
|
|
||||||
:options="getOptions[item.prop]"
|
|
||||||
:placeholder="item.placeholder"
|
|
||||||
/>
|
|
||||||
<div v-if="item.showType === 'Slot'">
|
<div v-if="item.showType === 'Slot'">
|
||||||
<slot :name="item.prop"></slot>
|
<slot :name="item.prop"></slot>
|
||||||
</div>
|
</div>
|
||||||
@ -242,6 +175,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: "rgb(255, 255, 255, 1)"
|
default: "rgb(255, 255, 255, 1)"
|
||||||
},
|
},
|
||||||
|
bool: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
});
|
});
|
||||||
let loadingPage = ref(false);
|
let loadingPage = ref(false);
|
||||||
const emit = defineEmits(["submit", "reset"]);
|
const emit = defineEmits(["submit", "reset"]);
|
||||||
@ -532,14 +469,41 @@ watchEffect(() => {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.pageSearch {
|
.pageSearch {
|
||||||
|
|
||||||
|
.filter-title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
width: 100%;
|
||||||
|
background: linear-gradient(to right, #9ed7ff, #e6f0f8);
|
||||||
|
padding: 5px 15px;
|
||||||
|
.filter-label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #000;
|
||||||
|
margin-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-line {
|
||||||
|
flex: 1;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
|
padding: 0 15px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label {
|
.label {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
@ -549,7 +513,7 @@ watchEffect(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-date-editor .el-range-separator{
|
::v-deep .el-date-editor .el-range-separator {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -590,6 +590,11 @@ const sendMessage = (gzlid) => {
|
|||||||
qcckPost(promes, '/mosty-gsxt/ypbg/sjzl/updateBkgzl').then(res => {
|
qcckPost(promes, '/mosty-gsxt/ypbg/sjzl/updateBkgzl').then(res => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
})
|
})
|
||||||
|
break;
|
||||||
|
case 'BQBK':
|
||||||
|
qcckPost(promes, '/mosty-gsxt/gsxt/bqbk/sendFqzl ').then(res => {
|
||||||
|
console.log(res);
|
||||||
|
})
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,6 +54,12 @@ export const publicRoutes = [
|
|||||||
name: "deploymentApproval",
|
name: "deploymentApproval",
|
||||||
component: () => import("@/views/backOfficeSystem/ApprovalInformation/deploycontrol/deploymentApproval.vue"),
|
component: () => import("@/views/backOfficeSystem/ApprovalInformation/deploycontrol/deploymentApproval.vue"),
|
||||||
},
|
},
|
||||||
|
// 标签布控审核
|
||||||
|
{
|
||||||
|
path: "/shym",
|
||||||
|
name: "shym",
|
||||||
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/marksControl/components/shym.vue"),
|
||||||
|
},
|
||||||
// 布控审核信息
|
// 布控审核信息
|
||||||
{
|
{
|
||||||
path: "/information",
|
path: "/information",
|
||||||
@ -79,26 +85,26 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "布控预警",
|
title: "布控预警",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path: "/behaviorWarnings",
|
path: "/behaviorWarnings",
|
||||||
name: "behaviorWarnings",
|
name: "behaviorWarnings",
|
||||||
meta: { title: "行为预警", icon: "article" },
|
meta: { title: "行为预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/identityWarnings",
|
path: "/identityWarnings",
|
||||||
name: "identityWarnings",
|
name: "identityWarnings",
|
||||||
meta: { title: "身份预警", icon: "article" },
|
meta: { title: "身份预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/combinedWarnings",
|
path: "/combinedWarnings",
|
||||||
name: "combinedWarnings",
|
name: "combinedWarnings",
|
||||||
meta: { title: "组合预警", icon: "article" },
|
meta: { title: "组合预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -107,7 +113,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeo/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeo/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点人管理",
|
title: "重点人管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
path: "/myControls",
|
path: "/myControls",
|
||||||
@ -115,7 +121,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/IntelligentControl/myControl/index"),
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/myControl/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "我的布控",
|
title: "我的布控",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
path: "/DeploymentAreas",
|
path: "/DeploymentAreas",
|
||||||
@ -123,7 +129,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/IntelligentControl/DeploymentArea/index"),
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/DeploymentArea/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "布控区域",
|
title: "布控区域",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -134,44 +140,44 @@ export const publicRoutes = [
|
|||||||
{
|
{
|
||||||
path: "/FourColorWarning",
|
path: "/FourColorWarning",
|
||||||
name: "FourColorWarning",
|
name: "FourColorWarning",
|
||||||
meta: { title: "预警中心", icon: "article" },
|
meta: { title: "预警中心", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
// {
|
// {
|
||||||
// path: "/centerHome",
|
// path: "/centerHome",
|
||||||
// name: "centerHome",
|
// name: "centerHome",
|
||||||
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/index"),
|
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/index"),
|
||||||
// meta: { title: "预警中心大屏", icon: "article" },
|
// meta: { title: "预警中心大屏", icon: "article-create" },
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// path: "/warningBk",
|
// path: "/warningBk",
|
||||||
// name: "warningBk",
|
// name: "warningBk",
|
||||||
// meta: { title: "布控预警", icon: "article" },
|
// meta: { title: "布控预警", icon: "article-create" },
|
||||||
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/warningBk/index"),
|
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/warningBk/index"),
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
path: "/fouColorWarning",
|
path: "/fouColorWarning",
|
||||||
name: "fouColorWarning",
|
name: "fouColorWarning",
|
||||||
meta: { title: "预警数据整合", icon: "article" },
|
meta: { title: "预警数据整合", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path: "/identityWarning",
|
path: "/identityWarning",
|
||||||
name: "identityWarning",
|
name: "identityWarning",
|
||||||
meta: { title: "身份预警", icon: "article" },
|
meta: { title: "身份预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
path: "/behaviorWarning",
|
path: "/behaviorWarning",
|
||||||
name: "behaviorWarning",
|
name: "behaviorWarning",
|
||||||
meta: { title: "行为预警", icon: "article" },
|
meta: { title: "行为预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/combinedWarning",
|
path: "/combinedWarning",
|
||||||
name: "combinedWarning",
|
name: "combinedWarning",
|
||||||
meta: { title: "组合预警", icon: "article" },
|
meta: { title: "组合预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index"),
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@ -180,7 +186,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/index"),
|
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "布控预警",
|
// title: "布控预警",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
@ -189,7 +195,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "人像预警",
|
title: "人像预警",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -199,25 +205,31 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "车辆预警",
|
title: "车辆预警",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/controlWarning",
|
path: "/controlWarning",
|
||||||
name: "controlWarning",
|
name: "controlWarning",
|
||||||
meta: { title: "布控预警", icon: "article" },
|
meta: { title: "布控预警", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/regionalControl",
|
||||||
|
name: "regionalControl",
|
||||||
|
meta: { title: "区域布控预警", icon: "article-create" },
|
||||||
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/regionalControl/index"),
|
||||||
|
},
|
||||||
// {
|
// {
|
||||||
// path: "/fouColorWarning",
|
// path: "/fouColorWarning",
|
||||||
// name: "fouColorWarning",
|
// name: "fouColorWarning",
|
||||||
// meta: { title: "四色预警", icon: "article" },
|
// meta: { title: "四色预警", icon: "article-create" },
|
||||||
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"),
|
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"),
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
path: "/scoreRanking",
|
path: "/scoreRanking",
|
||||||
name: "scoreRanking",
|
name: "scoreRanking",
|
||||||
meta: { title: "积分排名", icon: "article" },
|
meta: { title: "积分排名", icon: "article-create" },
|
||||||
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/scoreRanking/index"),
|
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/scoreRanking/index"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -235,7 +247,7 @@ export const publicRoutes = [
|
|||||||
// {
|
// {
|
||||||
// path: "/modelWarning",
|
// path: "/modelWarning",
|
||||||
// name: "modelWarning",
|
// name: "modelWarning",
|
||||||
// meta: { title: "模型预警", icon: "article" },
|
// meta: { title: "模型预警", icon: "article-create" },
|
||||||
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/modelWarning/index"),
|
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/modelWarning/index"),
|
||||||
// },
|
// },
|
||||||
|
|
||||||
@ -246,7 +258,7 @@ export const publicRoutes = [
|
|||||||
{
|
{
|
||||||
path: "/IntelligentControl",
|
path: "/IntelligentControl",
|
||||||
name: "IntelligentControl",
|
name: "IntelligentControl",
|
||||||
meta: { title: "智能布控", icon: "article" },
|
meta: { title: "智能布控", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "/DeploymentArea",
|
path: "/DeploymentArea",
|
||||||
@ -254,7 +266,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/IntelligentControl/DeploymentArea/index"),
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/DeploymentArea/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "布控区域",
|
title: "布控区域",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -263,7 +275,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/IntelligentControl/myControl/index"),
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/myControl/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "常态布控",
|
title: "常态布控",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -272,7 +284,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/IntelligentControl/myControl/index"),
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/myControl/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "临时布控",
|
title: "临时布控",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -281,7 +293,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/IntelligentControl/marksControl/index"),
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/marksControl/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "标签布控",
|
title: "标签布控",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@ -290,7 +302,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/IntelligentControl/DeploymentAudit/index"),
|
// component: () => import("@/views/backOfficeSystem/IntelligentControl/DeploymentAudit/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "我的审核",
|
// title: "我的审核",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
@ -299,7 +311,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/IntelligentControl/ControlApproval/index"),
|
// component: () => import("@/views/backOfficeSystem/IntelligentControl/ControlApproval/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "我的审批",
|
// title: "我的审批",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
]
|
]
|
||||||
@ -307,31 +319,36 @@ export const publicRoutes = [
|
|||||||
{
|
{
|
||||||
path: "/HumanIntelligence",
|
path: "/HumanIntelligence",
|
||||||
name: "HumanIntelligence",
|
name: "HumanIntelligence",
|
||||||
meta: { title: "信息汇聚支撑", icon: "article" },
|
meta: { title: "信息汇聚支撑", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "/InfoCollection",
|
path: "/InfoCollection",
|
||||||
name: "InfoCollection",
|
name: "InfoCollection",
|
||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/infoCollection/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/infoCollection/index"),
|
||||||
meta: { title: "信息采集", icon: "article" },
|
meta: { title: "信息采集", icon: "article-create" },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/InternalList",
|
path: "/InternalList",
|
||||||
name: "InternalList",
|
name: "InternalList",
|
||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
|
||||||
meta: { title: "内部列表", icon: "article", qbjbList: '02' },
|
meta: { title: "内部列表", icon: "article-create", qbjbList: '02' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/openSourceList",
|
path: "/openSourceList",
|
||||||
name: "openSourceList",
|
name: "openSourceList",
|
||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
|
||||||
meta: { title: "共享列表", icon: "article", qbjbList: '01' },
|
meta: { title: "共享列表", icon: "article-create", qbjbList: '01' },
|
||||||
|
}, {
|
||||||
|
path: "/socialInformationCrculated",
|
||||||
|
name: "changeTheClue",
|
||||||
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"),
|
||||||
|
meta: { title: "转线索列表", icon: "article-create" },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/socialInformationCrculatec",
|
path: "/socialInformationCrculatec",
|
||||||
name: "recombinantSynthesis",
|
name: "recombinantSynthesis",
|
||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/ConversionSynthesis/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/ConversionSynthesis/index"),
|
||||||
meta: { title: "转合成列表", icon: "article" },
|
meta: { title: "转合成列表", icon: "article-create" },
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// path: "/CollectPoints",
|
// path: "/CollectPoints",
|
||||||
@ -339,7 +356,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/CollectPoints/index"),
|
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/CollectPoints/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "采集积分",
|
// title: "采集积分",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
@ -348,7 +365,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/transferConsultationList/index.vue"),
|
component: () => import("@/views/backOfficeSystem/transferConsultationList/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "转会商列表",
|
title: "转会商列表",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -357,7 +374,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/supplementReportList/index.vue"),
|
component: () => import("@/views/backOfficeSystem/supplementReportList/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "补充/续报列表",
|
title: "补充/续报列表",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -366,7 +383,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/integralList/index.vue"),
|
component: () => import("@/views/backOfficeSystem/integralList/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "积分列表",
|
title: "积分列表",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -375,7 +392,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/InformationReporting/index.vue"),
|
component: () => import("@/views/backOfficeSystem/InformationReporting/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "蜂群信息上报",
|
title: "蜂群信息上报",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@ -384,7 +401,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/MakeAcomment/index"),
|
// component: () => import("@/views/backOfficeSystem/MakeAcomment/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "情报评一评",
|
// title: "情报评一评",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
]
|
]
|
||||||
@ -392,7 +409,7 @@ export const publicRoutes = [
|
|||||||
{
|
{
|
||||||
path: "/ResearchJudgment",
|
path: "/ResearchJudgment",
|
||||||
name: "ResearchJudgment",
|
name: "ResearchJudgment",
|
||||||
meta: { title: "线索落核盯办", icon: "article" },
|
meta: { title: "线索落核盯办", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "/socialInformationCrculated",
|
path: "/socialInformationCrculated",
|
||||||
@ -415,7 +432,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/ResearchJudgment/MoralAnalysis/index"),
|
// component: () => import("@/views/backOfficeSystem/ResearchJudgment/MoralAnalysis/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "情报语义分析",
|
// title: "情报语义分析",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
|
|
||||||
@ -431,7 +448,7 @@ export const publicRoutes = [
|
|||||||
// {
|
// {
|
||||||
// path: "/InformationFlows",
|
// path: "/InformationFlows",
|
||||||
// name: "InformationFlows",
|
// name: "InformationFlows",
|
||||||
// meta: { title: "情报流转", icon: "article" },
|
// meta: { title: "情报流转", icon: "article-create" },
|
||||||
// // redirect: "/InformationFlow",
|
// // redirect: "/InformationFlow",
|
||||||
// // children: [
|
// // children: [
|
||||||
|
|
||||||
@ -445,7 +462,7 @@ export const publicRoutes = [
|
|||||||
{
|
{
|
||||||
path: "/ExcavationResearch",
|
path: "/ExcavationResearch",
|
||||||
name: "ExcavationResearch",
|
name: "ExcavationResearch",
|
||||||
meta: { title: "重点人发掘", icon: "article" },
|
meta: { title: "重点人发掘", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -457,7 +474,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点人员初步发掘",
|
title: "重点人员初步发掘",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -469,7 +486,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点人员深度发掘",
|
title: "重点人员深度发掘",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -481,7 +498,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点人员落地审核",
|
title: "重点人员落地审核",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -492,7 +509,7 @@ export const publicRoutes = [
|
|||||||
redirect: "/ResearchHome",
|
redirect: "/ResearchHome",
|
||||||
meta: {
|
meta: {
|
||||||
title: "会商研判",
|
title: "会商研判",
|
||||||
icon: "article"
|
icon: "article-ranking"
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
@ -501,7 +518,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/policeReport/index.vue"),
|
component: () => import("@/views/backOfficeSystem/policeReport/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "警情管理",
|
title: "警情管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -510,7 +527,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/ResearchHome/index"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/ResearchHome/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "智能研判",
|
title: "智能研判",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -519,7 +536,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/dataReduction/index"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/dataReduction/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "数据整理",
|
title: "数据整理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@ -528,7 +545,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/JudgmentHome/situationHome/index"),
|
// component: () => import("@/views/backOfficeSystem/JudgmentHome/situationHome/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "战略研判",
|
// title: "战略研判",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// 后面写的研判
|
// 后面写的研判
|
||||||
@ -538,7 +555,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/tacticalResearch/index.vue"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/tacticalResearch/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "战术研判",
|
title: "战术研判",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -547,7 +564,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/strategicResearch/index.vue"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/strategicResearch/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "战略研判",
|
title: "战略研判",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -556,7 +573,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/judgmentCommand/index.vue"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/judgmentCommand/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "研判指令",
|
title: "研判指令",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -565,7 +582,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/internalAuditor/index.vue"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/internalAuditor/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "内部审核人员",
|
title: "内部审核人员",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@ -574,7 +591,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/AnalysisReport/index"),
|
// component: () => import("@/views/backOfficeSystem/AnalysisReport/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "研判报告",
|
// title: "研判报告",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
@ -583,7 +600,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/MeetingRoom/index"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/MeetingRoom/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "网上会商室",
|
title: "网上会商室",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -594,7 +611,7 @@ export const publicRoutes = [
|
|||||||
redirect: "/ResearchHome",
|
redirect: "/ResearchHome",
|
||||||
meta: {
|
meta: {
|
||||||
title: "全域管控",
|
title: "全域管控",
|
||||||
icon: "article"
|
icon: "article-ranking"
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
@ -603,7 +620,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/BaseLibrary/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/BaseLibrary/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "基础库",
|
title: "基础库",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -612,7 +629,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeo/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeo/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点人管理",
|
title: "重点人管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -621,7 +638,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeoSh/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeoSh/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点人审批",
|
title: "重点人审批",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -630,7 +647,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvGroup/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvGroup/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点群体管理",
|
title: "重点群体管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -639,7 +656,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvGroupSh/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvGroupSh/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点群体审核",
|
title: "重点群体审核",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -648,7 +665,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvCar/index"),
|
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvCar/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "重点车辆管理",
|
title: "重点车辆管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -656,7 +673,7 @@ export const publicRoutes = [
|
|||||||
{
|
{
|
||||||
path: "/dataApplication",
|
path: "/dataApplication",
|
||||||
name: "dataApplication",
|
name: "dataApplication",
|
||||||
meta: { title: "数据应用", icon: "article" },
|
meta: { title: "数据应用", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "/IntegralCoefficient",
|
path: "/IntegralCoefficient",
|
||||||
@ -667,7 +684,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "积分系数配置",
|
title: "积分系数配置",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -680,7 +697,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "身份标签管理",
|
title: "身份标签管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -692,7 +709,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "行为标签管理",
|
title: "行为标签管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -704,7 +721,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "标签组合管理",
|
title: "标签组合管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
path: "/tsypHome",
|
path: "/tsypHome",
|
||||||
@ -712,7 +729,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/JudgmentHome/tsypHome/index"),
|
component: () => import("@/views/backOfficeSystem/JudgmentHome/tsypHome/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "模型管理",
|
title: "模型管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -722,7 +739,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/JobAppraisal/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/JobAppraisal/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "工作考核",
|
title: "工作考核",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -731,7 +748,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "文件中转",
|
title: "文件中转",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -740,7 +757,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "文件定向传输",
|
title: "文件定向传输",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -749,7 +766,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/SemanticAnalysis/index.vue"),
|
component: () => import("@/views/backOfficeSystem/SemanticAnalysis/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "语义分析",
|
title: "语义分析",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -758,7 +775,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/ResearchJudgment/InformationFlows/ReportStatisticalAnalysis/index"),
|
component: () => import("@/views/backOfficeSystem/ResearchJudgment/InformationFlows/ReportStatisticalAnalysis/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "情报统计分析",
|
title: "情报统计分析",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -767,7 +784,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/ResearchJudgment/RecordsOperations/index"),
|
component: () => import("@/views/backOfficeSystem/ResearchJudgment/RecordsOperations/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "操作记录",
|
title: "操作记录",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -777,7 +794,7 @@ export const publicRoutes = [
|
|||||||
// name: "BasicManagement",
|
// name: "BasicManagement",
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "基础管理",
|
// title: "基础管理",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// },
|
// },
|
||||||
// children: [
|
// children: [
|
||||||
|
|
||||||
@ -790,7 +807,7 @@ export const publicRoutes = [
|
|||||||
// // ),
|
// // ),
|
||||||
// // meta: {
|
// // meta: {
|
||||||
// // title: "布控监视",
|
// // title: "布控监视",
|
||||||
// // icon: "article"
|
// // icon: "article-create"
|
||||||
// // }
|
// // }
|
||||||
// // },
|
// // },
|
||||||
// // {
|
// // {
|
||||||
@ -800,7 +817,7 @@ export const publicRoutes = [
|
|||||||
// // import("@/views/backOfficeSystem/BasicManagement/experienceShare/index"),
|
// // import("@/views/backOfficeSystem/BasicManagement/experienceShare/index"),
|
||||||
// // meta: {
|
// // meta: {
|
||||||
// // title: "经验分享",
|
// // title: "经验分享",
|
||||||
// // icon: "article"
|
// // icon: "article-create"
|
||||||
// // }
|
// // }
|
||||||
// // },
|
// // },
|
||||||
|
|
||||||
@ -814,13 +831,13 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/forumPost/index.vue"),
|
component: () => import("@/views/forumPost/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "情报论坛",
|
title: "情报论坛",
|
||||||
icon: "article"
|
icon: "article-ranking"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/dataMonitor",
|
path: "/dataMonitor",
|
||||||
name: "dataMonitor",
|
name: "dataMonitor",
|
||||||
meta: { title: "数据监控", icon: "article" },
|
meta: { title: "数据监控", icon: "article-ranking" },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "/resourceMonitoring",
|
path: "/resourceMonitoring",
|
||||||
@ -828,7 +845,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/dataMonitor/resourceMonitoring/index.vue"),
|
component: () => import("@/views/backOfficeSystem/dataMonitor/resourceMonitoring/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "数据资源检测",
|
title: "数据资源检测",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -837,7 +854,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/dataMonitor/onlineUserMonitoring/index.vue"),
|
component: () => import("@/views/backOfficeSystem/dataMonitor/onlineUserMonitoring/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "在线用户监控",
|
title: "在线用户监控",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -849,7 +866,7 @@ export const publicRoutes = [
|
|||||||
// redirect: "/dict/index",
|
// redirect: "/dict/index",
|
||||||
meta: {
|
meta: {
|
||||||
title: "系统管理",
|
title: "系统管理",
|
||||||
icon: "article"
|
icon: "article-ranking"
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
@ -858,7 +875,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/systemConfig/department-list/index"),
|
component: () => import("@/views/backOfficeSystem/systemConfig/department-list/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "部门管理",
|
title: "部门管理",
|
||||||
icon: "article-ranking"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -869,7 +886,7 @@ export const publicRoutes = [
|
|||||||
import("@/views/backOfficeSystem/systemConfig/user-list/index"),
|
import("@/views/backOfficeSystem/systemConfig/user-list/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "用户管理",
|
title: "用户管理",
|
||||||
icon: "article-ranking"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -879,7 +896,7 @@ export const publicRoutes = [
|
|||||||
import("@/views/backOfficeSystem/systemConfig/role-list/index"),
|
import("@/views/backOfficeSystem/systemConfig/role-list/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "角色列表",
|
title: "角色列表",
|
||||||
icon: "article-ranking"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -889,7 +906,7 @@ export const publicRoutes = [
|
|||||||
import("@/views/backOfficeSystem/systemConfig/menu-list/index"),
|
import("@/views/backOfficeSystem/systemConfig/menu-list/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "菜单管理",
|
title: "菜单管理",
|
||||||
icon: "article-ranking"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -909,7 +926,7 @@ export const publicRoutes = [
|
|||||||
import("@/views/backOfficeSystem/systemConfig/dict/index"),
|
import("@/views/backOfficeSystem/systemConfig/dict/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "字典列表",
|
title: "字典列表",
|
||||||
icon: "article-ranking"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -945,7 +962,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "系统配置",
|
title: "系统配置",
|
||||||
icon: "article-ranking"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
path: "/calendar",
|
path: "/calendar",
|
||||||
@ -953,7 +970,7 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/calendar/index.vue"),
|
component: () => import("@/views/backOfficeSystem/calendar/index.vue"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "敏感节点",
|
title: "敏感节点",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -963,7 +980,7 @@ export const publicRoutes = [
|
|||||||
name: "rests",
|
name: "rests",
|
||||||
meta: {
|
meta: {
|
||||||
title: "其他",
|
title: "其他",
|
||||||
icon: "article"
|
icon: "article-ranking"
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
@ -988,7 +1005,7 @@ export const publicRoutes = [
|
|||||||
path: "/CollectCrculate",
|
path: "/CollectCrculate",
|
||||||
name: "CollectCrculate",
|
name: "CollectCrculate",
|
||||||
component: () => import("@/views/backOfficeSystem/HumanIntelligence/CollectCrculate/index"),
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/CollectCrculate/index"),
|
||||||
meta: { title: "情报采集", icon: "article" },
|
meta: { title: "情报采集", icon: "article-create" },
|
||||||
}, {
|
}, {
|
||||||
path: "/RlStatisticalAnalysis",
|
path: "/RlStatisticalAnalysis",
|
||||||
name: "RlStatisticalAnalysis",
|
name: "RlStatisticalAnalysis",
|
||||||
@ -998,7 +1015,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "上报统计分析",
|
title: "上报统计分析",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1011,7 +1028,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "上报任务调度",
|
title: "上报任务调度",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1023,7 +1040,7 @@ export const publicRoutes = [
|
|||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "力量建设管理",
|
title: "力量建设管理",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1032,7 +1049,34 @@ export const publicRoutes = [
|
|||||||
component: () => import("@/views/backOfficeSystem/ResearchJudgment/InformationFlows/StatisticalAnalysis/index"),
|
component: () => import("@/views/backOfficeSystem/ResearchJudgment/InformationFlows/StatisticalAnalysis/index"),
|
||||||
meta: {
|
meta: {
|
||||||
title: "情报统计分析",
|
title: "情报统计分析",
|
||||||
icon: "article"
|
icon: "article-create"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/ysMyControl",
|
||||||
|
name: "ysMyControl",
|
||||||
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/ysMyControl/index"),
|
||||||
|
meta: {
|
||||||
|
title: "常态布控",
|
||||||
|
icon: "article-create"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/ysPrivateSurveillance",
|
||||||
|
name: "ysPrivateSurveillance",
|
||||||
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/ysMyControl/index"),
|
||||||
|
meta: {
|
||||||
|
title: "临时布控",
|
||||||
|
icon: "article-create"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/ysmarksControl",
|
||||||
|
name: "ysmarksControl",
|
||||||
|
component: () => import("@/views/backOfficeSystem/IntelligentControl/ysMarksControl/index"),
|
||||||
|
meta: {
|
||||||
|
title: "标签布控",
|
||||||
|
icon: "article-create"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@ -1041,7 +1085,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/JudgmentHome/ResearchHome/index"),
|
// component: () => import("@/views/backOfficeSystem/JudgmentHome/ResearchHome/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "战术研判",
|
// title: "战术研判",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
@ -1050,7 +1094,7 @@ export const publicRoutes = [
|
|||||||
// component: () => import("@/views/backOfficeSystem/JudgmentHome/situationHome/index"),
|
// component: () => import("@/views/backOfficeSystem/JudgmentHome/situationHome/index"),
|
||||||
// meta: {
|
// meta: {
|
||||||
// title: "战略研判",
|
// title: "战略研判",
|
||||||
// icon: "article"
|
// icon: "article-create"
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
]
|
]
|
||||||
|
|||||||
@ -8,83 +8,61 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form_cnt">
|
<div class="form_cnt">
|
||||||
<FormMessage
|
<FormMessage ref="elform" :disabled="disabled" v-model="listQuery" :formList="formData" labelWidth="100px"
|
||||||
ref="elform"
|
|
||||||
:disabled="disabled"
|
|
||||||
v-model="listQuery"
|
|
||||||
:formList="formData"
|
|
||||||
labelWidth="100px"
|
|
||||||
:rules="rules">
|
:rules="rules">
|
||||||
<template #yjgz>
|
<template #bqdlList>
|
||||||
<div class="zdy-taf"></div>
|
<div @click="openBqdl" class="depBox" style="cursor: pointer;">
|
||||||
|
<el-tag class="ml4 mr4" v-for="(it, idx) in listQuery.bqdlList" :key="idx" closable
|
||||||
|
@close="deleDlbq(idx)">{{ it.bqMc }}</el-tag>
|
||||||
|
<span class="coolor" v-if="!listQuery.bqdlList || listQuery.bqdlList.length == 0">请选择标签大类</span>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #tjqy>
|
<template #bqxlList>
|
||||||
<div class="ww100">
|
<div @click="openBqxl" class="depBox" style="cursor: pointer;">
|
||||||
<div class="ww100 flex align-center">
|
<el-tag class="ml4 mr4" v-for="(it, idx) in listQuery.bqxlList" :key="idx" closable
|
||||||
<div class="zdy-taf"></div>
|
@close="deleXlbq(idx)">{{ it.bqMc }}</el-tag>
|
||||||
<el-button type="primary">选择</el-button>
|
<span class="coolor" v-if="!listQuery.bqxlList || listQuery.bqxlList.length == 0">请选择标签小类</span>
|
||||||
</div>
|
|
||||||
<div class="map relative">
|
|
||||||
<GdMap></GdMap>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</FormMessage>
|
</FormMessage>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" />
|
<BqLb v-model="chooseBqdl" @choosed="choosedDlbq" :roleIds="dlIds" />
|
||||||
|
<MinBq v-model="chooseBqxl" @choosed="choosedXlbq" :roleIds="xlIds" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import GdMap from "@/components/GdMap/index.vue";
|
|
||||||
import * as rule from "@/utils/rules.js";
|
import * as rule from "@/utils/rules.js";
|
||||||
import * as MOSTY from "@/components/MyComponents/index";
|
|
||||||
import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.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, watch } from "vue";
|
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, watch } from "vue";
|
||||||
|
import BqLb from "./index.vue"
|
||||||
|
import MinBq from "./minBq.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 { D_GS_BQ_LB } = proxy.$dict("D_GS_BQ_LB");
|
||||||
const chooseMarksVisible = ref(false);
|
|
||||||
|
|
||||||
const dialogForm = ref(false); //弹窗
|
const dialogForm = ref(false); //弹窗
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
||||||
...rule.identityCardRule({ validator: true },'rySfzh'), //身份证校验
|
...rule.identityCardRule({ validator: true }, 'rySfzh'), //身份证校验
|
||||||
...rule.phoneRule({ validator: true }, "ryLxdh"), // 是否必填 是否进行校验,
|
...rule.phoneRule({ validator: true }, "ryLxdh"), // 是否必填 是否进行校验,
|
||||||
});
|
});
|
||||||
const obj = {
|
const listQuery = ref({
|
||||||
bqlist:[
|
bqdlList: [],
|
||||||
{ label: "布控标签", value: "01" },
|
bqxlList: [],
|
||||||
{ label: "历史标签", value: "02" },
|
}); //表单
|
||||||
{ label: "数据源", value: "03" },
|
|
||||||
],
|
|
||||||
sjy:[
|
|
||||||
{ label: "网吧", value: "01" },
|
|
||||||
{ label: "卡口", value: "02" },
|
|
||||||
{ label: "市综平台", value: "03" },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
const listQuery = ref({}); //表单
|
|
||||||
const formData = ref([
|
const formData = ref([
|
||||||
{ label: "任务名称", prop: "rwmc", type: "input" },
|
{ label: "标签大类", prop: "bqdlList", type: "slot", width: '100%' }, //选择多个标签
|
||||||
{ label: "布控人电话", prop: "bkysDh", type: "input" },
|
{ label: "标签小类", prop: "bqxlList", type: "slot", width: '100%' },
|
||||||
{ label: "人员等级", prop: "ryJb", type: "input" },
|
{ label: "执法依据", prop: "zfyj", type: "textarea", width: '100%' }
|
||||||
{ label: "人员类型", prop: "ryJl", type: "input" },
|
|
||||||
{ label: "处置措施", prop: "czcs", type: "input" },
|
|
||||||
{ label: "布控事由", prop: "bksy", type: "input" },
|
|
||||||
{ label: "报警方式", prop: "bjfs", type: "input" },
|
|
||||||
{ label: "报警接收人", prop: "bjjsr", type: "input" },
|
|
||||||
{ label: "任务布控时限", prop: "rwBkzs", type: "datetimerange" },
|
|
||||||
{ label: "布控标签", prop: "bkbq", type: "select",options: obj.bqlist ,multiple:true},
|
|
||||||
{ label: "数据源", prop: "sjy", type: "select",options: obj.sjy },
|
|
||||||
{ label: "数据源", prop: "sjy", type: "select",options: obj.sjy },
|
|
||||||
{ label: "预警规则", prop: "yjgz", type: "slot" ,width:'100%'}, //选择多个标签
|
|
||||||
{ label: "添加区域", prop: "tjqy", type: "slot" ,width:'100%'}, //选择多个标签
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const elform = ref();
|
const elform = ref();
|
||||||
const title = ref("");
|
const title = ref("");
|
||||||
@ -93,9 +71,6 @@ const disabled = ref(false);
|
|||||||
// 初始化数据
|
// 初始化数据
|
||||||
const init = (type, row) => {
|
const init = (type, row) => {
|
||||||
dialogForm.value = true;
|
dialogForm.value = true;
|
||||||
title.value = type == "add" ? "新增" : type == "detail" ? "详情" : "编辑";
|
|
||||||
disabled.value = type == "detail" ? true : false;
|
|
||||||
if (row) getDataById(row.id);
|
|
||||||
};
|
};
|
||||||
// 根据id查询详情
|
// 根据id查询详情
|
||||||
const getDataById = (id) => {
|
const getDataById = (id) => {
|
||||||
@ -108,22 +83,59 @@ const getDataById = (id) => {
|
|||||||
// 提交
|
// 提交
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
elform.value.submit((data) => {
|
elform.value.submit((data) => {
|
||||||
|
const a = listQuery.value.bqdlList.map(item => {
|
||||||
|
return { bqdl: item.id, bqdm: item.bqDm, bqmc: item.bqMc, bqsm: item.bqSm, bqys: item.bqYs }
|
||||||
|
})
|
||||||
|
const b = listQuery.value.bqxlList.map(item => {
|
||||||
|
return { bqdl: listQuery.value.dlid, bqdm: item.bqDm, bqmc: item.bqMc, bqsm: item.bqSm, bqys: item.bqYs }
|
||||||
|
})
|
||||||
|
const promes = [...a, ...b]
|
||||||
|
|
||||||
|
|
||||||
// data.fjdz = data.fjdz?.join(",");
|
// data.fjdz = data.fjdz?.join(",");
|
||||||
// let url = title.value == "新增" ? "/mosty-gsxt/tbGsxtZdcl/add" : "/mosty-gsxt/tbGsxtZdcl/update";
|
let url = title.value == "新增" ? "/mosty-gsxt/gsxt/bqbk/saveList" : "/mosty-gsxt/tbGsxtZdcl/update";
|
||||||
// let params = { ...data };
|
|
||||||
// loading.value = true;
|
loading.value = true;
|
||||||
// qcckPost(params, url).then(() => {
|
qcckPost({list:promes}, 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(() => {
|
}).catch(() => {
|
||||||
// loading.value = false;
|
loading.value = false;
|
||||||
// });
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//打卡大类弹窗
|
||||||
|
const chooseBqdl = ref(false)
|
||||||
|
const dlIds = ref()
|
||||||
|
const openBqdl = () => {
|
||||||
|
chooseBqdl.value = true
|
||||||
|
}
|
||||||
|
const choosedDlbq = (val) => {
|
||||||
|
listQuery.value.bqdlList = val
|
||||||
|
dlIds.value = val.map(item => item.id)
|
||||||
|
}
|
||||||
|
const deleDlbq = (val) => {
|
||||||
|
listQuery.value.bqdlList.splice(val, 1);
|
||||||
|
dlIds.value = listQuery.value.bqdlList.map(item => item.id);
|
||||||
|
}
|
||||||
|
// 打卡小类弹窗
|
||||||
|
const chooseBqxl = ref(false)
|
||||||
|
const xlIds = ref()
|
||||||
|
const openBqxl = () => {
|
||||||
|
chooseBqxl.value = true
|
||||||
|
}
|
||||||
|
const choosedXlbq = (val) => {
|
||||||
|
listQuery.value.dlid = val.bqDlid
|
||||||
|
listQuery.value.bqxlList = val.list
|
||||||
|
xlIds.value = val.list.map(item => item.id)
|
||||||
|
}
|
||||||
|
const deleXlbq = (val) => {
|
||||||
|
listQuery.value.bqxlList.splice(val, 1);
|
||||||
|
xlIds.value = listQuery.value.bqxlList.map(item => item.id);
|
||||||
|
}
|
||||||
// 关闭
|
// 关闭
|
||||||
const close = () => {
|
const close = () => {
|
||||||
listQuery.value = {};
|
listQuery.value = {};
|
||||||
@ -151,27 +163,17 @@ defineExpose({ init });
|
|||||||
|
|
||||||
.depBox {
|
.depBox {
|
||||||
border: 1px solid #e9e9e9;
|
border: 1px solid #e9e9e9;
|
||||||
width: 305px;
|
|
||||||
padding: 0 0 0 4px;
|
padding: 0 0 0 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
::v-deep .el-input__inner {
|
.coolor {
|
||||||
border: none;
|
color: #d3d3d3;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-cascader .el-input.is-focus .el-input__inner {
|
|
||||||
border-color: transparent !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .el-input__inner:focus {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .el-input.is-disabled .el-input__inner {
|
|
||||||
border-color: transparent !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.zdy-taf{
|
|
||||||
|
.zdy-taf {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 32px;
|
min-height: 32px;
|
||||||
@ -180,7 +182,8 @@ defineExpose({ init });
|
|||||||
padding: 0px 5px;
|
padding: 0px 5px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.map{
|
|
||||||
|
.map {
|
||||||
height: 520px;
|
height: 520px;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,259 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="titleValue"
|
||||||
|
width="1400px"
|
||||||
|
:model-value="modelValue"
|
||||||
|
append-to-body
|
||||||
|
@close="closed"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<el-form :model="listQuery" class="mosty-from-wrap" :inline="true">
|
||||||
|
<el-form-item label="标签名称">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入标签名称"
|
||||||
|
v-model="listQuery.bqMc"
|
||||||
|
clearable
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="success" @click="handleFilter">查询</el-button>
|
||||||
|
<el-button type="info" @click="reset"> 重置 </el-button>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div
|
||||||
|
class="tabBox"
|
||||||
|
:class="props.Single ? 'tabBoxRadio' : ''"
|
||||||
|
:key="keyVal"
|
||||||
|
style="margin-top: 0px"
|
||||||
|
>
|
||||||
|
<el-table
|
||||||
|
ref="multipleUserRef"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
:data="tableData"
|
||||||
|
v-loading="loading"
|
||||||
|
border
|
||||||
|
:row-key="keyid"
|
||||||
|
style="width: 100%"
|
||||||
|
height="450"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55"
|
||||||
|
:reserve-selection="true"
|
||||||
|
/>
|
||||||
|
<el-table-column prop="bqMc" align="center" label="标签名称" />
|
||||||
|
<el-table-column prop="bqDm" align="center" label="标签代码" />
|
||||||
|
<el-table-column prop="bqDj" align="center" label="标签等级">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.bqDj" :options="D_GS_BQ_DJ" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="bqYs" align="center" label="标签颜色">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<DictTag :value="row.bqYs" :tag="false" :options="D_GS_SSYJ" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="fenye" :style="{ top: tableHeight + 'px' }">
|
||||||
|
<el-pagination
|
||||||
|
class="pagination"
|
||||||
|
@pageSize-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page="listQuery.pageCurrent"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-pageSize="listQuery.pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total"
|
||||||
|
></el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="closed">取消</el-button>
|
||||||
|
<el-button type="primary" @click="onComfirm">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import { defineProps, ref, getCurrentInstance, watch } from "vue";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_GS_BQ_DJ, D_GS_SSYJ,D_GS_BQ_LB,D_GS_BQ_LX } = proxy.$dict("D_GS_BQ_DJ", "D_GS_SSYJ","D_GS_BQ_LB","D_GS_BQ_LX"); //获取字典数据
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
titleValue: {
|
||||||
|
type: String,
|
||||||
|
default: "身份标签"
|
||||||
|
},
|
||||||
|
LeaderType: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
//是否单选
|
||||||
|
Single: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
roleIds: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const loading = ref(false);
|
||||||
|
const total = ref(0);
|
||||||
|
const listQuery = ref({
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20
|
||||||
|
});
|
||||||
|
|
||||||
|
const keyVal = ref(0);
|
||||||
|
const multipleUserRef = ref(null);
|
||||||
|
const multipleSelectionUser = ref([]);
|
||||||
|
const tableData = ref([]);
|
||||||
|
const emits = defineEmits(["update:modelValue", "choosed"]);
|
||||||
|
const keyid = (row) => {
|
||||||
|
return row.id;
|
||||||
|
};
|
||||||
|
|
||||||
|
const closed = () => {
|
||||||
|
emits("update:modelValue", false);
|
||||||
|
};
|
||||||
|
const reset = () => {
|
||||||
|
listQuery.value = { pageCurrent: 1, pageSize: 20 };
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 为用户分配角色
|
||||||
|
const onComfirm = () => {
|
||||||
|
const userList = multipleSelectionUser.value;
|
||||||
|
let list = [];
|
||||||
|
let listId = [];
|
||||||
|
userList.forEach((val) => {
|
||||||
|
if (listId.indexOf(val.id) == -1) {
|
||||||
|
list.push(val);
|
||||||
|
listId.push(val.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
emits("choosed", list);
|
||||||
|
closed();
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* pageSize 改变触发
|
||||||
|
*/
|
||||||
|
const handleSizeChange = (currentSize) => {
|
||||||
|
listQuery.value.pageSize = currentSize;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 页码改变触发
|
||||||
|
*/
|
||||||
|
const handleCurrentChange = (currentPage) => {
|
||||||
|
listQuery.value.pageCurrent = currentPage;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
const bqLb=ref('01')
|
||||||
|
const getListData = () => {
|
||||||
|
keyVal.value++;
|
||||||
|
loading.value = true;
|
||||||
|
const params = { ...listQuery.value, bqLb:bqLb.value,bqLx: "01" };
|
||||||
|
qcckGet(params, "/mosty-gsxt/tbGsxtBqgl/selectPage")
|
||||||
|
.then((res) => {
|
||||||
|
loading.value = false;
|
||||||
|
tableData.value = res.records || [];
|
||||||
|
total.value = res.total;
|
||||||
|
// 直接调用,multipleUser 内部已处理延迟
|
||||||
|
multipleUser();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
//列表回显 - 优化版,确保已选择数据正确回显
|
||||||
|
function multipleUser() {
|
||||||
|
// 确保表格引用和数据都存在
|
||||||
|
if (!multipleUserRef.value || !tableData.value || tableData.value.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 等待下一帧确保DOM更新完成
|
||||||
|
setTimeout(() => {
|
||||||
|
// 再次检查表格引用是否存在
|
||||||
|
if (!multipleUserRef.value) return;
|
||||||
|
|
||||||
|
// 先清除所有选中状态
|
||||||
|
multipleUserRef.value.clearSelection();
|
||||||
|
|
||||||
|
// 再根据roleIds重新设置选中状态
|
||||||
|
if (props.roleIds && Array.isArray(props.roleIds) && props.roleIds.length > 0) {
|
||||||
|
tableData.value.forEach((item) => {
|
||||||
|
// 使用严格比较,确保ID类型匹配
|
||||||
|
if (props.roleIds.some((id) => String(id) === String(item.id))) {
|
||||||
|
multipleUserRef.value.toggleRowSelection(item, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleFilter = () => {
|
||||||
|
listQuery.value.pageCurrent = 1;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSelectionChange = (val) => {
|
||||||
|
if (props.Single) {
|
||||||
|
if (val.length > 1) {
|
||||||
|
let del_row = val.shift();
|
||||||
|
multipleUserRef.value.toggleRowSelection(del_row, false);
|
||||||
|
}
|
||||||
|
multipleSelectionUser.value = val;
|
||||||
|
} else {
|
||||||
|
multipleSelectionUser.value = val;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 监听弹窗打开状态,打开时重新加载数据
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(val) => {
|
||||||
|
if (val) {
|
||||||
|
handleFilter();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
// 监听roleIds变化,确保数据回显正确
|
||||||
|
watch(
|
||||||
|
() => props.roleIds,
|
||||||
|
(newRoleIds) => {
|
||||||
|
// 使用setTimeout确保在表格数据加载完成后再进行选择
|
||||||
|
setTimeout(() => {
|
||||||
|
multipleUser();
|
||||||
|
}, 100);
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "@/assets/css/layout.scss";
|
||||||
|
@import "@/assets/css/element-plus.scss";
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.tabBoxRadio .el-checkbox__inner {
|
||||||
|
border-radius: 50% !important;
|
||||||
|
}
|
||||||
|
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,235 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :title="titleValue" width="1400px" :model-value="modelValue" append-to-body @close="closed">
|
||||||
|
<div>
|
||||||
|
<el-form :model="listQuery" class="mosty-from-wrap" :inline="true">
|
||||||
|
<el-form-item label="标签大类">
|
||||||
|
<el-select v-model="listQuery.bqDlId" placeholder="请选择标签大类" clearable>
|
||||||
|
<el-option v-for="item in DlList" :key="item.id" :label="item.bqMc" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="标签名称">
|
||||||
|
<el-input placeholder="请输入标签名称" v-model="listQuery.bqMc" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="success" @click="handleFilter">查询</el-button>
|
||||||
|
<el-button type="info" @click="reset"> 重置 </el-button>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div class="tabBox" :class="props.Single ? 'tabBoxRadio' : ''" :key="keyVal" style="margin-top: 0px">
|
||||||
|
<el-table ref="multipleUserRef" @selection-change="handleSelectionChange" :data="tableData" v-loading="loading"
|
||||||
|
border :row-key="keyid" style="width: 100%" height="450">
|
||||||
|
<el-table-column type="selection" width="55" :reserve-selection="true" />
|
||||||
|
<el-table-column prop="bqMc" align="center" label="标签名称" />
|
||||||
|
<el-table-column prop="bqDm" align="center" label="标签代码" />
|
||||||
|
<el-table-column prop="bqDj" align="center" label="标签等级">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.bqDj" :options="D_GS_BQ_DJ" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="bqYs" align="center" label="标签颜色">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<DictTag :value="row.bqYs" :tag="false" :options="D_GS_SSYJ" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="fenye" :style="{ top: tableHeight + 'px' }">
|
||||||
|
<el-pagination class="pagination" @pageSize-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||||
|
:current-page="listQuery.pageCurrent" :page-sizes="[10, 20, 50, 100]" :page-pageSize="listQuery.pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="closed">取消</el-button>
|
||||||
|
<el-button type="primary" @click="onComfirm">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import { defineProps, ref, getCurrentInstance, watch } from "vue";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_GS_BQ_DJ, D_GS_SSYJ, D_GS_BQ_LB, D_GS_BQ_LX } = proxy.$dict("D_GS_BQ_DJ", "D_GS_SSYJ", "D_GS_BQ_LB", "D_GS_BQ_LX"); //获取字典数据
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
titleValue: {
|
||||||
|
type: String,
|
||||||
|
default: "身份标签"
|
||||||
|
},
|
||||||
|
LeaderType: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
//是否单选
|
||||||
|
Single: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
roleIds: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const loading = ref(false);
|
||||||
|
const total = ref(0);
|
||||||
|
const listQuery = ref({
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20
|
||||||
|
});
|
||||||
|
|
||||||
|
const keyVal = ref();
|
||||||
|
const multipleUserRef = ref(null);
|
||||||
|
const multipleSelectionUser = ref([]);
|
||||||
|
const tableData = ref([]);
|
||||||
|
const emits = defineEmits(["update:modelValue", "choosed"]);
|
||||||
|
const keyid = (row) => {
|
||||||
|
return row.id;
|
||||||
|
};
|
||||||
|
|
||||||
|
const closed = () => {
|
||||||
|
emits("update:modelValue", false);
|
||||||
|
};
|
||||||
|
const reset = () => {
|
||||||
|
listQuery.value = { pageCurrent: 1, pageSize: 20 };
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 为用户分配角色
|
||||||
|
const onComfirm = () => {
|
||||||
|
const userList = multipleSelectionUser.value;
|
||||||
|
let list = [];
|
||||||
|
let listId = [];
|
||||||
|
userList.forEach((val) => {
|
||||||
|
if (listId.indexOf(val.id) == -1) {
|
||||||
|
list.push(val);
|
||||||
|
listId.push(val.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
emits("choosed", { list, bqDlid: listQuery.value.bqDlId });
|
||||||
|
closed();
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* pageSize 改变触发
|
||||||
|
*/
|
||||||
|
const handleSizeChange = (currentSize) => {
|
||||||
|
listQuery.value.pageSize = currentSize;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 页码改变触发
|
||||||
|
*/
|
||||||
|
const handleCurrentChange = (currentPage) => {
|
||||||
|
listQuery.value.pageCurrent = currentPage;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
const getListData = () => {
|
||||||
|
keyVal.value++;
|
||||||
|
loading.value = true;
|
||||||
|
const params = { ...listQuery.value, bqLb: '02', bqLx: "01" };
|
||||||
|
qcckGet(params, "/mosty-gsxt/tbGsxtBqgl/selectPage")
|
||||||
|
.then((res) => {
|
||||||
|
loading.value = false;
|
||||||
|
tableData.value = res.records || [];
|
||||||
|
total.value = res.total;
|
||||||
|
multipleUser();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const DlList = ref()
|
||||||
|
// 获取大类
|
||||||
|
const getDlBq = () => {
|
||||||
|
const params = { pageCurrent: 1, pageSize: 200, bqLb: '01', bqLx: "01" };
|
||||||
|
qcckGet(params, "/mosty-gsxt/tbGsxtBqgl/selectPage")
|
||||||
|
.then((res) => {
|
||||||
|
DlList.value = res.records || [];
|
||||||
|
listQuery.value.bqDlId = DlList.value[0].id
|
||||||
|
getListData()
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
//列表回显 - 优化版,确保已选择数据正确回显
|
||||||
|
function multipleUser() {
|
||||||
|
if (!multipleUserRef.value || !tableData.value || tableData.value.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 先清除所有选中状态
|
||||||
|
tableData.value.forEach((item) => {
|
||||||
|
multipleUserRef.value.toggleRowSelection(item, false);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 再根据roleIds重新设置选中状态
|
||||||
|
if (props.roleIds && Array.isArray(props.roleIds) && props.roleIds.length > 0) {
|
||||||
|
tableData.value.forEach((item) => {
|
||||||
|
if (props.roleIds.some((id) => id == item.id)) {
|
||||||
|
multipleUserRef.value.toggleRowSelection(item, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleFilter = () => {
|
||||||
|
listQuery.value.pageCurrent = 1;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSelectionChange = (val) => {
|
||||||
|
if (props.Single) {
|
||||||
|
if (val.length > 1) {
|
||||||
|
let del_row = val.shift();
|
||||||
|
multipleUserRef.value.toggleRowSelection(del_row, false);
|
||||||
|
}
|
||||||
|
multipleSelectionUser.value = val;
|
||||||
|
} else {
|
||||||
|
multipleSelectionUser.value = val;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 监听弹窗打开状态,打开时重新加载数据
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(val) => {
|
||||||
|
if (val) {
|
||||||
|
getDlBq()
|
||||||
|
// handleFilter();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
// 监听roleIds变化,确保数据回显正确
|
||||||
|
watch(
|
||||||
|
() => props.roleIds,
|
||||||
|
(newRoleIds) => {
|
||||||
|
// 使用setTimeout确保在表格数据加载完成后再进行选择
|
||||||
|
setTimeout(() => {
|
||||||
|
multipleUser();
|
||||||
|
}, 100);
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "@/assets/css/layout.scss";
|
||||||
|
@import "@/assets/css/element-plus.scss";
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.tabBoxRadio .el-checkbox__inner {
|
||||||
|
border-radius: 50% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,119 @@
|
|||||||
|
<template>
|
||||||
|
<div class="information-container">
|
||||||
|
<h2 class="page-title">研判详情</h2>
|
||||||
|
<div class="info-section">
|
||||||
|
<div class="info-row">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="label">标签名称:</span>
|
||||||
|
<span class="value">{{ detail.bqmc || '暂无' }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="label">标签代码:</span>
|
||||||
|
<span class="value">
|
||||||
|
<span class="value">{{ detail.bqdm || '暂无' }}</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-row">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="label">标签颜色:</span>
|
||||||
|
<span class="value">
|
||||||
|
<DictTag v-if="detail.bqys && D_GS_SSYJ" :tag="false" :value="detail.bqys" :options="D_GS_SSYJ" />
|
||||||
|
<span v-else>暂无</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="label">标签描述:</span>
|
||||||
|
<span class="value">{{ detail.bqsm || '暂无' }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
|
import { onMounted ,ref,getCurrentInstance} from 'vue';
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const {D_GS_SSYJ}=proxy.$dict("D_GS_SSYJ");
|
||||||
|
const detail=ref({});
|
||||||
|
// 新增:存储用户提供的研判部门详情数据
|
||||||
|
onMounted(() => {
|
||||||
|
qcckGet({},`/mosty-gsxt/gsxt/bqbk/selectById/${route.query.id}`).then(res => {
|
||||||
|
detail.value=res;
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.information-container {
|
||||||
|
width: 100%;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-title {
|
||||||
|
color: #303133;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #e8e8e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 300px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #606266;
|
||||||
|
margin-right: 12px;
|
||||||
|
width: 100px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
color: #303133;
|
||||||
|
flex: 1;
|
||||||
|
line-height: 32px;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 新增:数据展示模块样式 */
|
||||||
|
.data-section {
|
||||||
|
margin-top: 30px;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid #e8e8e8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
color: #303133;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="titleBox">
|
<div class="titleBox">
|
||||||
<PageTitle title="标签布控" >
|
<PageTitle title="标签布控" >
|
||||||
<el-button type="primary" size="small" @click="handleItem('add', '')">
|
<el-button type="primary" size="small" @click="AddFrom('add', '')">
|
||||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
<span style="vertical-align: middle">新增</span>
|
<span style="vertical-align: middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -21,13 +21,14 @@
|
|||||||
:key="pageData.keyCount"
|
:key="pageData.keyCount"
|
||||||
:tableConfiger="pageData.tableConfiger"
|
:tableConfiger="pageData.tableConfiger"
|
||||||
:controlsWidth="pageData.controlsWidth"
|
:controlsWidth="pageData.controlsWidth"
|
||||||
@chooseData="chooseData"
|
|
||||||
>
|
>
|
||||||
|
<template #bqys="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.bqys" :options="D_GS_SSYJ" />
|
||||||
|
</template>
|
||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
<template #controls="{ row }">
|
<template #controls="{ row }">
|
||||||
<el-link type="primary" size="small" @click="handleItem('edit',row)">编辑</el-link>
|
<el-link type="primary" size="small" @click="createProcess(row)" v-if="row.shzt!= '03'">发起审批</el-link>
|
||||||
<el-link type="primary" size="small" @click="handleItem('detail',row)">详情</el-link>
|
<el-link type="danger" size="small" @click="handleItem('deleite',row)" v-if="row.shzt == '03'">撤控</el-link>
|
||||||
<el-link type="danger" size="small" @click="handleItem('deleite',row)">删除</el-link>
|
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages
|
<Pages
|
||||||
@ -43,6 +44,8 @@
|
|||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
<AddForm ref="addForm" @updateDate="getList"></AddForm>
|
<AddForm ref="addForm" @updateDate="getList"></AddForm>
|
||||||
</div>
|
</div>
|
||||||
|
<SubmissionProcess v-model="showSp" :data="rowData" :userData="{ ajmc: '布控审批', flowType: 'BQBK', modelName: '布控' }"
|
||||||
|
:path="fixedValue" @getList="getList" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -51,19 +54,26 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
|
|||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import AddForm from './components/addForm.vue'
|
import AddForm from './components/addForm.vue'
|
||||||
|
import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_BZ_SF } = proxy.$dict("D_BZ_SF"); //获取字典数据
|
const {D_GS_SSYJ} = proxy.$dict("D_GS_SSYJ"); //获取字典数据
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
const addForm = ref()
|
const addForm = ref()
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{
|
{
|
||||||
label: "任务名称",
|
label: "标签名称",
|
||||||
prop: "rwmc",
|
prop: "bqmc",
|
||||||
placeholder: "请输入任务名称",
|
placeholder: "请输入标签名称",
|
||||||
showType: "input",
|
showType: "input",
|
||||||
|
}, {
|
||||||
|
label: "时间",
|
||||||
|
prop: "startTime",
|
||||||
|
placeholder: "请输入时间",
|
||||||
|
showType: "datetimerange",
|
||||||
},
|
},
|
||||||
|
|
||||||
]);
|
]);
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
@ -79,14 +89,13 @@ const pageData = reactive({
|
|||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 120, //操作栏宽度
|
controlsWidth: 240, //操作栏宽度
|
||||||
|
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "任务名称", prop: "rwmc" },
|
{ label: "布控标签", prop: "bqmc" },
|
||||||
{ label: "布控人电话", prop: "bkysDh" },
|
{ label: "标签代码", prop: "bqdm" },
|
||||||
{ label: "人员等级", prop: "bkysDj" },
|
{ label: "标签颜色", prop: "bqys", showSolt: true },
|
||||||
{ label: "处置措施", prop: "czcs" },
|
{ label: "标签描述", prop: "bqsm" },
|
||||||
{ label: "布控事由", prop: "bksy" },
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@ -96,7 +105,11 @@ onMounted(() => {
|
|||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = { ...val };
|
queryFrom.value = {
|
||||||
|
...val,
|
||||||
|
startTime: val.startTime ? val.startTime[0] : '',
|
||||||
|
endTime: val.startTime ? val.startTime[1] : ''
|
||||||
|
};
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
@ -112,28 +125,53 @@ const changeSize = (val) => {
|
|||||||
|
|
||||||
// 获取列表
|
// 获取列表
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
// pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
// let data = {
|
let data = {
|
||||||
// ...pageData.pageConfiger,
|
...pageData.pageConfiger,
|
||||||
// ...queryFrom.value,
|
...queryFrom.value,
|
||||||
// };
|
};
|
||||||
// qcckGet(data, "/mosty-gsxt/tbGsxtBk/selectPage").then((res) => {
|
qcckGet(data, "/mosty-gsxt/gsxt/bqbk/getPageList").then((res) => {
|
||||||
// pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
// pageData.total = res.total;
|
pageData.total = res.total;
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// }).catch(() => {
|
}).catch(() => {
|
||||||
// pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
// });
|
});
|
||||||
};
|
};
|
||||||
|
const AddFrom = () => {
|
||||||
|
addForm.value.init()
|
||||||
|
}
|
||||||
const handleItem = (type,row) => {
|
const handleItem = (type,row) => {
|
||||||
if(type == 'delete'){
|
proxy.$confirm('确认撤控吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
qcckPost({ ids: [row.id] }, "/mosty-gsxt/gsxt/bqbk/bqck").then((res) => {
|
||||||
|
proxy.$message({
|
||||||
|
message: '撤控成功',
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
getList();
|
||||||
|
|
||||||
}else{
|
}).catch(() => {
|
||||||
addForm.value.init(type,row);
|
pageData.tableConfiger.loading = false;
|
||||||
}
|
});
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
// 固定值
|
||||||
|
const fixedValue = {
|
||||||
|
clueVerification: 'shym',
|
||||||
|
byMeansOf: 'gsxt/bqbk/callback ',
|
||||||
|
nobyMeansOf: 'gsxt/bqbk/callback ',
|
||||||
|
recycle: 'gsxt/bqbk/callback ',
|
||||||
|
}
|
||||||
|
const showSp = ref(false);
|
||||||
|
const rowData = ref()
|
||||||
|
const createProcess = (row) => {
|
||||||
|
showSp.value = true;
|
||||||
|
rowData.value = row
|
||||||
|
}
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 300;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 300;
|
||||||
@ -164,9 +202,9 @@ const tabHeightFn = () => {
|
|||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-table--fit) {
|
// :deep(.el-table--fit) {
|
||||||
top: 52px !important;
|
// top: 52px !important;
|
||||||
}
|
// }
|
||||||
.btns {
|
.btns {
|
||||||
height: 52px;
|
height: 52px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
label-position="left">
|
label-position="left">
|
||||||
<div style="display: flex; align-items: center;margin-bottom: 10px;">
|
<div style="display: flex; align-items: center;margin-bottom: 10px;">
|
||||||
<el-radio-group v-model="listQuery.bkDx" size="large" fill="#6cf" @change="shangeDx">
|
<el-radio-group v-model="listQuery.bkDx" size="large" fill="#6cf" @change="shangeDx">
|
||||||
<el-radio-button :label="item.dm" v-for="(item, index) in props.dic.D_GS_BK_DX" :key="index">{{
|
<el-radio-button :label="item.dm" v-for="(item, index) in props.dic.D_GS_BK_NEWDX" :key="index">{{
|
||||||
item.zdmc }}</el-radio-button>
|
item.zdmc }}</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<el-button type="primary" @click="handleAddPeo" v-if="!disabled" style="margin-left: 10px;">
|
<el-button type="primary" @click="handleAddPeo" v-if="!disabled" style="margin-left: 10px;">
|
||||||
@ -53,20 +53,37 @@
|
|||||||
</MyTable>
|
</MyTable>
|
||||||
</div>
|
</div>
|
||||||
<div style="width: 100%;" class="mt25">
|
<div style="width: 100%;" class="mt25">
|
||||||
<el-form-item prop="bkSjKs" label="布控开始时间" label-width="120px">
|
<el-form-item prop="bkSjKs" label="布控开始时间">
|
||||||
<MOSTY.Date v-model="listQuery.bkSjKs" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
<MOSTY.Date v-model="listQuery.bkSjKs" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
placeholder="请选择布控开始时间" clearable />
|
placeholder="请选择布控开始时间" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="bkSjJs" label="布控结束时间" label-width="120px">
|
<el-form-item prop="bkSjJs" label="布控结束时间">
|
||||||
<MOSTY.Date v-model="listQuery.bkSjJs" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
<MOSTY.Date v-model="listQuery.bkSjJs" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
placeholder="请选择布控结束时间" clearable />
|
placeholder="请选择布控结束时间" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="czYq" label="处置要求" label-width="60px" style="width:18% ;">
|
<el-form-item prop="czYq" label="处置要求">
|
||||||
<MOSTY.Select v-model="listQuery.czYq" :dictEnum="props.dic.D_GS_BK_CZYQ" placeholder="请选择处置要求"
|
<MOSTY.Select v-model="listQuery.czYq" :dictEnum="props.dic.D_GS_BK_CZYQ" placeholder="请选择处置要求"
|
||||||
clearable />
|
clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="bkDj" label="布控等级" label-width="60px" style="width:18% ;">
|
|
||||||
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_BK_DJ" placeholder="请选择布控级别"
|
</div>
|
||||||
|
<div style="width: 100%;" class="mt10">
|
||||||
|
<el-form-item prop="bkDj" label="布控部门" v-if="props.name == 'myControl'">
|
||||||
|
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_SSYJ" placeholder="请选择布控级别"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="bkDj" label="布控等级" v-else>
|
||||||
|
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_BZ_JQDJ" placeholder="请选择布控级别"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="bklylx" label="布控来源">
|
||||||
|
<MOSTY.Select v-model="listQuery.bklylx" :dictEnum="props.dic.D_BZ_BKLYS" placeholder="请选择布控来源"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
<div style="width: 100%;" class="mt10">
|
||||||
|
<el-form-item prop="zfyj" label="执法依据" style="width: 100%;">
|
||||||
|
<MOSTY.Other v-model="listQuery.zfyj" placeholder="请输入执法依据" type="textarea" style="width: 100%;"
|
||||||
clearable />
|
clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@ -88,7 +105,7 @@
|
|||||||
<div class=" mapSearch flex">
|
<div class=" mapSearch flex">
|
||||||
<el-select v-model="hzfs" placeholder="请选择布控范围" clearable @change="qhhzfs">
|
<el-select v-model="hzfs" placeholder="请选择布控范围" clearable @change="qhhzfs">
|
||||||
<el-option label="区域选择" value="1"></el-option>
|
<el-option label="区域选择" value="1"></el-option>
|
||||||
<el-option label="自定义范围" value="2"></el-option>
|
<!-- <el-option label="自定义范围" value="2"></el-option> -->
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select multiple style="margin-left: 10px;" v-model="bkqyList" placeholder="请选择布控范围" clearable
|
<el-select multiple style="margin-left: 10px;" v-model="bkqyList" placeholder="请选择布控范围" clearable
|
||||||
@change="hzfsChage" v-if="hzfs == '1'">
|
@change="hzfsChage" v-if="hzfs == '1'">
|
||||||
@ -97,17 +114,17 @@
|
|||||||
}}</el-option>
|
}}</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
||||||
<el-button type="primary" @click="drawQy" style="margin-left: 10px;" v-else>
|
<!-- <el-button type="primary" @click="drawQy" style="margin-left: 10px;" v-else>
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span style="vertical-align: middle">自定义区域</span>
|
<span style="vertical-align: middle">自定义区域</span>
|
||||||
</el-button>
|
</el-button> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="ww100 relative mb10"
|
<!-- <div class="ww100 relative mb10"
|
||||||
style="height: 60vh;border: 1px solid #dcdfe6;border-radius: 4px;overflow: hidden;">
|
style="height: 60vh;border: 1px solid #dcdfe6;border-radius: 4px;overflow: hidden;">
|
||||||
<GdMap></GdMap>
|
<GdMap></GdMap>
|
||||||
</div>
|
</div> -->
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -143,14 +160,14 @@ import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
|||||||
import { tableColumnList, Zd } from '@/views/backOfficeSystem/ApprovalInformation/tableRow.js'
|
import { tableColumnList, Zd } from '@/views/backOfficeSystem/ApprovalInformation/tableRow.js'
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, nextTick, watch, onMounted } from "vue";
|
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, nextTick, watch, onMounted } from "vue";
|
||||||
import { queryProcessNode, queryProcessNodeLog, queryProcess } from '@/api/spl'
|
|
||||||
import ApprovalEcho from "@/components/flowPath/ApprovalEcho.vue";
|
import ApprovalEcho from "@/components/flowPath/ApprovalEcho.vue";
|
||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { setAddress } from '@/utils/tools.js'
|
import { setAddress } from '@/utils/tools.js'
|
||||||
import { tbGsxtBkId } from "@/api/commit.js";
|
import { tbGsxtBkId } from "@/api/commit.js";
|
||||||
const emit = defineEmits(["change"]);
|
const emit = defineEmits(["change"]);
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
dic: Object
|
dic: Object,
|
||||||
|
name: String
|
||||||
});
|
});
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const elform = ref()
|
const elform = ref()
|
||||||
@ -222,7 +239,7 @@ const init = (type, row) => {
|
|||||||
disabled.value = type == 'detail' ? true : false;
|
disabled.value = type == 'detail' ? true : false;
|
||||||
dialogForm.value = true;
|
dialogForm.value = true;
|
||||||
if (row) tableDate.tableConfiger.haveControls = false;
|
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 })
|
Zd({ D_GS_SSYJ: props.dic.D_GS_SSYJ, BD_BK_CLYJBQ: props.dic.BD_BK_CLYJBQ })
|
||||||
|
|
||||||
get_bkqy_list(row)
|
get_bkqy_list(row)
|
||||||
};
|
};
|
||||||
@ -426,44 +443,44 @@ const close = () => {
|
|||||||
// 选择身份证
|
// 选择身份证
|
||||||
const chooseVisible_SFZ = ref(false)
|
const chooseVisible_SFZ = ref(false)
|
||||||
// 获取布控信息的工作流
|
// 获取布控信息的工作流
|
||||||
const workflow = ref()
|
// const workflow = ref()
|
||||||
const getWorkflow = async (id) => {
|
// const getWorkflow = async (id) => {
|
||||||
const promes = {
|
// const promes = {
|
||||||
processId: id
|
// processId: id
|
||||||
}
|
// }
|
||||||
const proNode = await queryProcessNode(promes)
|
// const proNode = await queryProcessNode(promes)
|
||||||
const proNodeLog = await queryProcessNodeLog(promes)
|
// const proNodeLog = await queryProcessNodeLog(promes)
|
||||||
const process = await queryProcess(promes)
|
// const process = await queryProcess(promes)
|
||||||
workflow.value = proNode.rows.map(item => {
|
// workflow.value = proNode.rows.map(item => {
|
||||||
const log = proNodeLog.rows.filter(items => item.nodeId == items.nodeId)
|
// const log = proNodeLog.rows.filter(items => item.nodeId == items.nodeId)
|
||||||
|
|
||||||
if (item.eventType == '0') {
|
// if (item.eventType == '0') {
|
||||||
return {
|
// return {
|
||||||
...item,
|
// ...item,
|
||||||
log: {
|
// log: {
|
||||||
userData: item.userData ? JSON.parse(item.userData) : JSON.parse(process.rows[0].processData).orgNameData,
|
// userData: item.userData ? JSON.parse(item.userData) : JSON.parse(process.rows[0].processData).orgNameData,
|
||||||
userName: process.rows[0].userName,
|
// userName: process.rows[0].userName,
|
||||||
xtLrsj: process.rows[0].xtLrsj,
|
// xtLrsj: process.rows[0].xtLrsj,
|
||||||
processStatus: process.rows[0].processStatus,
|
// processStatus: process.rows[0].processStatus,
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
return {
|
// return {
|
||||||
...item,
|
// ...item,
|
||||||
orgNameData: JSON.parse(log[0].userData),
|
// orgNameData: JSON.parse(log[0].userData),
|
||||||
log: log
|
// log: log
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
|
|
||||||
};
|
// };
|
||||||
const drawQy = () => {
|
// const drawQy = () => {
|
||||||
emitter.emit("drawShape", {
|
// emitter.emit("drawShape", {
|
||||||
flag: "select_point",
|
// flag: "select_point",
|
||||||
type: "polygon",
|
// type: "polygon",
|
||||||
isclear: true
|
// isclear: true
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
const hzfs = ref('1')
|
const hzfs = ref('1')
|
||||||
const bkqyList = ref()
|
const bkqyList = ref()
|
||||||
const qhhzfs = () => {
|
const qhhzfs = () => {
|
||||||
|
|||||||
@ -135,6 +135,9 @@ const rulesList = {
|
|||||||
dh: [{ required: true, message: "请输入电话号码", trigger: "blur" }],
|
dh: [{ required: true, message: "请输入电话号码", trigger: "blur" }],
|
||||||
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
|
ssbmdm: [{ required: true, message: "请选择责任部门", trigger: "blur" }],
|
||||||
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
|
yjdj: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
fjZp: [{ required: true, message: "请传人员照片", trigger: "blur" }],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
watch(() => props.bkDx, (val, oldval) => {
|
watch(() => props.bkDx, (val, oldval) => {
|
||||||
|
|||||||
@ -20,10 +20,11 @@
|
|||||||
<DictTag :tag="false" :value="row.bkZt" :options="D_GS_BK_ZT" />
|
<DictTag :tag="false" :value="row.bkZt" :options="D_GS_BK_ZT" />
|
||||||
</template>
|
</template>
|
||||||
<template #bkDj="{ row }">
|
<template #bkDj="{ row }">
|
||||||
<DictTag :tag="false" :value="row.bkDj" :options="D_GS_BK_DJ" />
|
<DictTag :tag="false" :value="row.bkDj" :options="D_GS_SSYJ" v-if="route.name=='myControl'" />
|
||||||
|
<DictTag :tag="false" :value="row.bkDj" :options="D_BZ_JQDJ" v-else/>
|
||||||
</template>
|
</template>
|
||||||
<template #bkDx="{ row }">
|
<template #bkDx="{ row }">
|
||||||
<DictTag :tag="false" :value="row.bkDx" :options="D_GS_BK_DX" />
|
<DictTag :tag="false" :value="row.bkDx" :options="D_GS_BK_NEWDX" />
|
||||||
</template>
|
</template>
|
||||||
<template #bkdxList="{ row }">
|
<template #bkdxList="{ row }">
|
||||||
<span v-if="row.bkdxList"><span class="nowrap" v-for="(it, idx) in row.bkdxList" :key="idx">
|
<span v-if="row.bkdxList"><span class="nowrap" v-for="(it, idx) in row.bkdxList" :key="idx">
|
||||||
@ -67,9 +68,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 布控类型 -->
|
<!-- 布控类型 -->
|
||||||
<AddBkdx ref="addBkdxForm" @change="getList" :dic="{
|
<AddBkdx ref="addBkdxForm" @change="getList" :name="route.name" :dic="{
|
||||||
D_GS_BK_DX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ,
|
D_GS_BK_NEWDX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ,D_BZ_JQDJ,D_BZ_BKLYS,
|
||||||
D_GS_BK_DJ, BD_BK_CLYJBQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS, D_GS_ZDR_YJDJ
|
D_GS_SSYJ, BD_BK_CLYJBQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS, D_GS_ZDR_YJDJ,
|
||||||
}" />
|
}" />
|
||||||
<!-- 预警弹窗 -->
|
<!-- 预警弹窗 -->
|
||||||
<YjDialog ref="warningkdxForm"></YjDialog>
|
<YjDialog ref="warningkdxForm"></YjDialog>
|
||||||
@ -89,11 +90,15 @@ import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
|
|||||||
import {tbGsxtBkQuash} from '@/api/zdr.js'
|
import {tbGsxtBkQuash} from '@/api/zdr.js'
|
||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
|
import { rotate } from "ol/transform";
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_SJLX, D_GS_BK_DJ, BD_BK_CLYJBQ, D_GS_ZDR_YJDJ,
|
const { D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_SJLX, D_GS_SSYJ, 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'); //获取字典数据
|
D_GS_BK_NEWDX, D_GS_BK_ZT, D_GS_BK_CZYQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS,D_BZ_BKLYS,
|
||||||
|
D_BZ_JQDJ } = proxy.$dict("D_GS_ZDR_YJDJ", "D_GS_BK_BKYS", "D_BZ_XB", "D_GS_BK_SJLX",
|
||||||
|
"D_GS_SSYJ", "D_GS_BK_NEWDX", "D_GS_BK_ZT", "D_GS_BK_CZYQ", "D_GS_BK_CZJSDWLX", "D_GS_BK_TJFS",
|
||||||
|
'BD_BK_CLYJBQ', 'D_BZ_JQDJ',"D_BZ_BKLYS"); //获取字典数据
|
||||||
const addBkdxForm = ref(null); //布控对象组件
|
const addBkdxForm = ref(null); //布控对象组件
|
||||||
const warningkdxForm = ref(); //布控对象组件
|
const warningkdxForm = ref(); //布控对象组件
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
@ -103,14 +108,14 @@ const searchConfiger = ref([
|
|||||||
prop: "bkDj",
|
prop: "bkDj",
|
||||||
placeholder: "请选择布控等级",
|
placeholder: "请选择布控等级",
|
||||||
showType: "select",
|
showType: "select",
|
||||||
options: D_GS_BK_DJ
|
options: route.name == 'myControl' ? D_GS_SSYJ : D_BZ_JQDJ
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "布控类型",
|
label: "布控类型",
|
||||||
prop: "bkDx",
|
prop: "bkDx",
|
||||||
placeholder: "请选择布控类型",
|
placeholder: "请选择布控类型",
|
||||||
showType: "select",
|
showType: "select",
|
||||||
options: D_GS_BK_DX
|
options: D_GS_BK_NEWDX
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "布控状态",
|
label: "布控状态",
|
||||||
@ -119,6 +124,12 @@ const searchConfiger = ref([
|
|||||||
showType: "select",
|
showType: "select",
|
||||||
options: D_GS_BK_ZT
|
options: D_GS_BK_ZT
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "布控时间",
|
||||||
|
prop: "startTime",
|
||||||
|
placeholder: "请选择布控时间",
|
||||||
|
showType: "datetimerange",
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
@ -166,7 +177,11 @@ onMounted(() => {
|
|||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = { ...val };
|
queryFrom.value = {
|
||||||
|
...val,
|
||||||
|
startTime: val.startTime? val.startTime[0]: '',
|
||||||
|
endTime: val.startTime? val.startTime[1]: ''
|
||||||
|
};
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -0,0 +1,187 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog" v-if="dialogForm">
|
||||||
|
<div class="head_box">
|
||||||
|
<span class="title">{{ title }}标签布控</span>
|
||||||
|
<div>
|
||||||
|
<el-button type="primary" size="small" v-if="!disabled" :loading="loading" @click="submit">保存</el-button>
|
||||||
|
<el-button size="small" @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form_cnt">
|
||||||
|
<FormMessage
|
||||||
|
ref="elform"
|
||||||
|
:disabled="disabled"
|
||||||
|
v-model="listQuery"
|
||||||
|
:formList="formData"
|
||||||
|
labelWidth="100px"
|
||||||
|
:rules="rules">
|
||||||
|
<template #yjgz>
|
||||||
|
<div class="zdy-taf"></div>
|
||||||
|
</template>
|
||||||
|
<template #tjqy>
|
||||||
|
<div class="ww100">
|
||||||
|
<div class="ww100 flex align-center">
|
||||||
|
<div class="zdy-taf"></div>
|
||||||
|
<el-button type="primary">选择</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="map relative">
|
||||||
|
<GdMap></GdMap>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</FormMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import GdMap from "@/components/GdMap/index.vue";
|
||||||
|
import * as rule from "@/utils/rules.js";
|
||||||
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
|
import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
|
||||||
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
|
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||||
|
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, watch } from "vue";
|
||||||
|
const emit = defineEmits(["updateDate"]);
|
||||||
|
const props = defineProps({
|
||||||
|
dic: Object
|
||||||
|
});
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const roleIds = ref([]);
|
||||||
|
const chooseMarksVisible = ref(false);
|
||||||
|
const dialogForm = ref(false); //弹窗
|
||||||
|
const rules = reactive({
|
||||||
|
ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
||||||
|
...rule.identityCardRule({ validator: true },'rySfzh'), //身份证校验
|
||||||
|
...rule.phoneRule({ validator: true }, "ryLxdh"), // 是否必填 是否进行校验,
|
||||||
|
});
|
||||||
|
const obj = {
|
||||||
|
bqlist:[
|
||||||
|
{ label: "布控标签", value: "01" },
|
||||||
|
{ label: "历史标签", value: "02" },
|
||||||
|
{ label: "数据源", value: "03" },
|
||||||
|
],
|
||||||
|
sjy:[
|
||||||
|
{ label: "网吧", value: "01" },
|
||||||
|
{ label: "卡口", value: "02" },
|
||||||
|
{ label: "市综平台", value: "03" },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
const listQuery = ref({}); //表单
|
||||||
|
const formData = ref([
|
||||||
|
{ label: "任务名称", prop: "rwmc", type: "input" },
|
||||||
|
{ label: "布控人电话", prop: "bkysDh", type: "input" },
|
||||||
|
{ label: "人员等级", prop: "ryJb", type: "input" },
|
||||||
|
{ label: "人员类型", prop: "ryJl", type: "input" },
|
||||||
|
{ label: "处置措施", prop: "czcs", type: "input" },
|
||||||
|
{ label: "布控事由", prop: "bksy", type: "input" },
|
||||||
|
{ label: "报警方式", prop: "bjfs", type: "input" },
|
||||||
|
{ label: "报警接收人", prop: "bjjsr", type: "input" },
|
||||||
|
{ label: "任务布控时限", prop: "rwBkzs", type: "datetimerange" },
|
||||||
|
{ label: "布控标签", prop: "bkbq", type: "select",options: obj.bqlist ,multiple:true},
|
||||||
|
{ label: "数据源", prop: "sjy", type: "select",options: obj.sjy },
|
||||||
|
{ label: "数据源", prop: "sjy", type: "select",options: obj.sjy },
|
||||||
|
{ label: "预警规则", prop: "yjgz", type: "slot" ,width:'100%'}, //选择多个标签
|
||||||
|
{ label: "添加区域", prop: "tjqy", type: "slot" ,width:'100%'}, //选择多个标签
|
||||||
|
]);
|
||||||
|
const loading = ref(false);
|
||||||
|
const elform = ref();
|
||||||
|
const title = ref("");
|
||||||
|
const disabled = ref(false);
|
||||||
|
|
||||||
|
// 初始化数据
|
||||||
|
const init = (type, row) => {
|
||||||
|
dialogForm.value = true;
|
||||||
|
title.value = type == "add" ? "新增" : type == "detail" ? "详情" : "编辑";
|
||||||
|
disabled.value = type == "detail" ? true : false;
|
||||||
|
if (row) getDataById(row.id);
|
||||||
|
};
|
||||||
|
// 根据id查询详情
|
||||||
|
const getDataById = (id) => {
|
||||||
|
// qcckGet({id}, "/mosty-gsxt/tbGsxtZdcl/selectByid").then((res) => {
|
||||||
|
// listQuery.value = res;
|
||||||
|
// listQuery.value.fjdz = listQuery.value.fjdz?.split(",");
|
||||||
|
// });
|
||||||
|
};
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const submit = () => {
|
||||||
|
elform.value.submit((data) => {
|
||||||
|
// data.fjdz = data.fjdz?.join(",");
|
||||||
|
// let url = title.value == "新增" ? "/mosty-gsxt/tbGsxtZdcl/add" : "/mosty-gsxt/tbGsxtZdcl/update";
|
||||||
|
// let params = { ...data };
|
||||||
|
// loading.value = true;
|
||||||
|
// qcckPost(params, url).then(() => {
|
||||||
|
// loading.value = false;
|
||||||
|
// proxy.$message({ type: "success", message: title.value + "成功" });
|
||||||
|
// emit("updateDate");
|
||||||
|
// close();
|
||||||
|
// }).catch(() => {
|
||||||
|
// loading.value = false;
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 关闭
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxlist {
|
||||||
|
width: calc(99% - 50px);
|
||||||
|
margin-top: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.depBox {
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
width: 305px;
|
||||||
|
padding: 0 0 0 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
::v-deep .el-input__inner {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-cascader .el-input.is-focus .el-input__inner {
|
||||||
|
border-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-input__inner:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-input.is-disabled .el-input__inner {
|
||||||
|
border-color: transparent !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.zdy-taf{
|
||||||
|
width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 32px;
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 0px 5px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.map{
|
||||||
|
height: 520px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,176 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="titleBox">
|
||||||
|
<PageTitle title="标签布控" >
|
||||||
|
<el-button type="primary" size="small" @click="handleItem('add', '')">
|
||||||
|
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||||
|
<span style="vertical-align: middle">新增</span>
|
||||||
|
</el-button>
|
||||||
|
</PageTitle>
|
||||||
|
</div>
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox">
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch"></Search>
|
||||||
|
</div>
|
||||||
|
<!-- 表格 -->
|
||||||
|
<div class="tabBox">
|
||||||
|
<MyTable
|
||||||
|
:tableData="pageData.tableData"
|
||||||
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
:controlsWidth="pageData.controlsWidth"
|
||||||
|
@chooseData="chooseData"
|
||||||
|
>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="primary" size="small" @click="handleItem('edit',row)">编辑</el-link>
|
||||||
|
<el-link type="primary" size="small" @click="handleItem('detail',row)">详情</el-link>
|
||||||
|
<el-link type="danger" size="small" @click="handleItem('deleite',row)">删除</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
<Pages
|
||||||
|
@changeNo="changeNo"
|
||||||
|
@changeSize="changeSize"
|
||||||
|
:tableHeight="pageData.tableHeight + 42"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
|
</div>
|
||||||
|
<!-- 新增 -->
|
||||||
|
<AddForm ref="addForm" @updateDate="getList"></AddForm>
|
||||||
|
</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 AddForm from './components/addForm.vue'
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_SF } = proxy.$dict("D_BZ_SF"); //获取字典数据
|
||||||
|
const searchBox = ref();
|
||||||
|
const addForm = ref()
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{
|
||||||
|
label: "任务名称",
|
||||||
|
prop: "rwmc",
|
||||||
|
placeholder: "请输入任务名称",
|
||||||
|
showType: "input",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const queryFrom = ref({});
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "null",
|
||||||
|
loading: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
controlsWidth: 120, //操作栏宽度
|
||||||
|
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "任务名称", prop: "rwmc" },
|
||||||
|
{ label: "布控人电话", prop: "bkysDh" },
|
||||||
|
{ label: "人员等级", prop: "bkysDj" },
|
||||||
|
{ label: "处置措施", prop: "czcs" },
|
||||||
|
{ label: "布控事由", prop: "bksy" },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
onMounted(() => {
|
||||||
|
tabHeightFn();
|
||||||
|
getList()
|
||||||
|
});
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = { ...val };
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const changeNo = (val) => {
|
||||||
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const changeSize = (val) => {
|
||||||
|
pageData.pageConfiger.pageSize = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
const getList = () => {
|
||||||
|
// pageData.tableConfiger.loading = true;
|
||||||
|
// let data = {
|
||||||
|
// ...pageData.pageConfiger,
|
||||||
|
// ...queryFrom.value,
|
||||||
|
// };
|
||||||
|
// qcckGet(data, "/mosty-gsxt/tbGsxtBk/selectPage").then((res) => {
|
||||||
|
// pageData.tableData = res.records || [];
|
||||||
|
// pageData.total = res.total;
|
||||||
|
// pageData.tableConfiger.loading = false;
|
||||||
|
// }).catch(() => {
|
||||||
|
// pageData.tableConfiger.loading = false;
|
||||||
|
// });
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleItem = (type,row) => {
|
||||||
|
if(type == 'delete'){
|
||||||
|
|
||||||
|
}else{
|
||||||
|
addForm.value.init(type,row);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 300;
|
||||||
|
window.onresize = function () {
|
||||||
|
tabHeightFn();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.main-nav {
|
||||||
|
padding: 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.sub-nav {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tabs__header) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-tabs__nav-wrap::after) {
|
||||||
|
height: 1px;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-table--fit) {
|
||||||
|
top: 52px !important;
|
||||||
|
}
|
||||||
|
.btns {
|
||||||
|
height: 52px;
|
||||||
|
padding: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,682 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog" v-if="dialogForm">
|
||||||
|
<div class="head_box">
|
||||||
|
<span class="title">布控对象</span>
|
||||||
|
<div>
|
||||||
|
<el-button size="small" type="primary" v-if="!disabled" :loading="loading" @click="submit">保存</el-button>
|
||||||
|
<el-button size="small" @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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 style="display: flex; align-items: center;margin-bottom: 10px;">
|
||||||
|
<el-radio-group v-model="listQuery.bkDx" size="large" fill="#6cf" @change="shangeDx">
|
||||||
|
<el-radio-button :label="item.dm" v-for="(item, index) in props.dic.D_GS_BK_DX" :key="index">{{
|
||||||
|
item.zdmc }}</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
<el-button type="primary" @click="handleAddPeo" v-if="!disabled" style="margin-left: 10px;">
|
||||||
|
<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="setAddress(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 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>
|
||||||
|
<el-form-item prop="czYq" label="处置要求" label-width="60px" style="width:18% ;">
|
||||||
|
<MOSTY.Select v-model="listQuery.czYq" :dictEnum="props.dic.D_GS_BK_CZYQ" placeholder="请选择处置要求"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="bkDj" label="布控等级" label-width="60px" style="width:18% ;">
|
||||||
|
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_SSYJ" 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>支持png、jpg、pdf文件上传</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
<div class="smallTitle">布控范围</div>
|
||||||
|
<div class=" mapSearch flex">
|
||||||
|
<el-select v-model="hzfs" placeholder="请选择布控范围" clearable @change="qhhzfs">
|
||||||
|
<el-option label="区域选择" value="1"></el-option>
|
||||||
|
<el-option label="自定义范围" value="2"></el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-select multiple style="margin-left: 10px;" v-model="bkqyList" placeholder="请选择布控范围" clearable
|
||||||
|
@change="hzfsChage" v-if="hzfs == '1'">
|
||||||
|
<el-option :label="item.label" :value="item.value" v-for="(item, index) in bkqyArr" :key="index">{{
|
||||||
|
item.label
|
||||||
|
}}</el-option>
|
||||||
|
</el-select>
|
||||||
|
|
||||||
|
<el-button type="primary" @click="drawQy" style="margin-left: 10px;" v-else>
|
||||||
|
<el-icon style="vertical-align: middle">
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
|
<span style="vertical-align: middle">自定义区域</span>
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="ww100 relative mb10"
|
||||||
|
style="height: 60vh;border: 1px solid #dcdfe6;border-radius: 4px;overflow: hidden;">
|
||||||
|
<GdMap></GdMap>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ww20" v-if="dataOrge.gzlid">
|
||||||
|
<ApprovalEcho ref="approvalEcho" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 选择布控人员 -->
|
||||||
|
<BkryDialod :modelValue="chooseVisible_RY" @update:modelValue="chooseVisible_RY = $event" @choosed="choosed"
|
||||||
|
@choosedAdd="choosedAdd" :roleIds="roleIds" />
|
||||||
|
<!-- 选择车辆布控 -->
|
||||||
|
<BkclDialod :modelValue="chooseVisible_CL" @update:modelValue="chooseVisible_CL = $event" @choosed="choosed"
|
||||||
|
@choosedAdd="choosedAdd" :roleIds="roleIds" />
|
||||||
|
<!-- 选择布控群体 -->
|
||||||
|
<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>
|
||||||
|
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 { tableColumnList, Zd } from '@/views/backOfficeSystem/ApprovalInformation/tableRow.js'
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, nextTick, watch, onMounted } from "vue";
|
||||||
|
import { queryProcessNode, queryProcessNodeLog, queryProcess } from '@/api/spl'
|
||||||
|
import ApprovalEcho from "@/components/flowPath/ApprovalEcho.vue";
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
import { setAddress } from '@/utils/tools.js'
|
||||||
|
import { tbGsxtBkId } from "@/api/commit.js";
|
||||||
|
const emit = defineEmits(["change"]);
|
||||||
|
const props = defineProps({
|
||||||
|
dic: Object
|
||||||
|
});
|
||||||
|
const route = useRoute()
|
||||||
|
const elform = ref()
|
||||||
|
const roleIds = ref([]); //角色ID
|
||||||
|
const chooseVisible_RY = ref(false); //选择布控人员弹窗
|
||||||
|
const chooseVisible_QT = ref(false); //选择布控群体弹窗
|
||||||
|
const chooseVisible_CL = ref(false)
|
||||||
|
const bkqyArr = ref([]); //布控区域
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const dialogForm = ref(false); //弹窗
|
||||||
|
const loading = ref(false)
|
||||||
|
const addPerson = ref([]) //单独新增的数据
|
||||||
|
const listQuery = ref({
|
||||||
|
bkYz: '01',
|
||||||
|
bkdxList: [],
|
||||||
|
}); //表单数据
|
||||||
|
const rules = reactive({
|
||||||
|
bkBt: [{ required: true, message: "请输入布控标题", trigger: "blur" }],
|
||||||
|
bkDx: [{ required: true, message: "请选择布控对象", trigger: "change" }],
|
||||||
|
bkSjKs: [{ required: true, message: "请选择布控开始时间", trigger: "change" }],
|
||||||
|
bkSjJs: [{ required: true, message: "请选择布控结束时间", trigger: "change" }],
|
||||||
|
czJsdwdm: [{ required: true, message: "请选择处置接收单位", trigger: "change" }],
|
||||||
|
bkshrSsbmdm: [{ required: true, message: "请选择审核部门", trigger: "change" }],
|
||||||
|
bksprSsbmdm: [{ required: true, message: "请选择审批部门", trigger: "change" }],
|
||||||
|
})
|
||||||
|
let tableDate = reactive({
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "null",
|
||||||
|
loading: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
controlsWidth: 200, //操作栏宽度
|
||||||
|
tableColumn: [
|
||||||
|
{ 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 }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
const title = ref('')
|
||||||
|
const disabled = ref(false)
|
||||||
|
// 初始化数据
|
||||||
|
const init = (type, row) => {
|
||||||
|
listQuery.value.bkfj = [];
|
||||||
|
if (type == 'add') {
|
||||||
|
tableDate.tableConfiger.haveControls = true;
|
||||||
|
disabled.value = false;
|
||||||
|
listQuery.value.bkfqrXm = getItem("USERNAME");
|
||||||
|
listQuery.value.bkfqrSfzh = getItem("idEntityCard");
|
||||||
|
listQuery.value.bkfqrSsbmmc = getItem("deptId")[0].deptName;;
|
||||||
|
listQuery.value.bkfqrSsbmdm = getItem("deptId")[0].deptCode;;
|
||||||
|
}
|
||||||
|
title.value = type == 'add' ? '新增' : type == 'detail' ? '详情' : '编辑';
|
||||||
|
disabled.value = type == 'detail' ? true : false;
|
||||||
|
dialogForm.value = true;
|
||||||
|
if (row) tableDate.tableConfiger.haveControls = false;
|
||||||
|
Zd({ D_GS_SSYJ: props.dic.D_GS_SSYJ, BD_BK_CLYJBQ: props.dic.BD_BK_CLYJBQ })
|
||||||
|
|
||||||
|
get_bkqy_list(row)
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取布控区域
|
||||||
|
const get_bkqy_list = (row) => {
|
||||||
|
qcckGet({}, '/mosty-gsxt/tbGsxtBkQy/selectList').then(res => {
|
||||||
|
let arr = res || [];
|
||||||
|
bkqyArr.value = arr.map(item => {
|
||||||
|
return { ...item, label: item.qymc, value: item.id }
|
||||||
|
})
|
||||||
|
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 })
|
||||||
|
|
||||||
|
|
||||||
|
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]
|
||||||
|
listQuery.value.bkDxxx = '';
|
||||||
|
listQuery.value.bkdxList = [];
|
||||||
|
roleIds.value = [];
|
||||||
|
addPerson.value = []
|
||||||
|
}
|
||||||
|
// 删除数据
|
||||||
|
const deleteRow = (row) => {
|
||||||
|
roleIds.value = roleIds.value.filter(id => id != row.id);
|
||||||
|
addPerson.value = addPerson.value.filter(it => it.id != row.id);
|
||||||
|
listQuery.value.bkdxList = listQuery.value.bkdxList.filter(it => it.id != row.id);
|
||||||
|
}
|
||||||
|
// 单独新增的数据
|
||||||
|
const choosedAdd = (item) => {
|
||||||
|
let obj = {}
|
||||||
|
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 = {
|
||||||
|
clCph: item.hphm, clCjh: item.clCjh, clSyr: item.clSyr, clSyrsfzh: item.clSyrsfzh,
|
||||||
|
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) => {
|
||||||
|
tableDate.tableColumn = tableColumnList[listQuery.value.bkDx]
|
||||||
|
if (listQuery.value.bkDx == '01') {// 人员
|
||||||
|
roleIds.value = val.map(it => it.id);
|
||||||
|
let arr = val.map(item => {
|
||||||
|
let bqArr = item.bqList || [];
|
||||||
|
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, 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);
|
||||||
|
let arr = val.map(item => {
|
||||||
|
|
||||||
|
return {
|
||||||
|
clCph: item.hphm, clCjh: item.clCjh, clSyr: item.clSyr, clSyrsfzh: item.clSyrsfzh,
|
||||||
|
clYs: item.clYs, gxSsbmmc: item.gxSsbmmc, yjbq: item.yjbq, yjdj: item.yjdj, ssbmdm: item.zrSsbmdm
|
||||||
|
}
|
||||||
|
})
|
||||||
|
listQuery.value.bkdxList = [...addPerson.value, ...arr];
|
||||||
|
|
||||||
|
}
|
||||||
|
else {// 群体
|
||||||
|
listQuery.value.bkDxxx = (val.map(it => it.id)).join(',');
|
||||||
|
let peolist = []
|
||||||
|
val.forEach(item => {
|
||||||
|
if (item.zdryList) peolist = peolist.concat(item.zdryList)
|
||||||
|
})
|
||||||
|
let brrPeo = peolist.map(item => {
|
||||||
|
let bqArr = item.bqList || [];
|
||||||
|
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,
|
||||||
|
yjdj: item.zdrYjdj, ssbmdm: item.zrSsbmdm
|
||||||
|
}
|
||||||
|
})
|
||||||
|
listQuery.value.bkdxList = brrPeo;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 选择人员
|
||||||
|
const handleAddPeo = () => {
|
||||||
|
|
||||||
|
if (!listQuery.value.bkDx) return proxy.$message({ type: "warning", message: '请选择布控对象' });
|
||||||
|
switch (listQuery.value.bkDx) {
|
||||||
|
case '01':
|
||||||
|
chooseVisible_RY.value = true
|
||||||
|
break;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const submit = () => {
|
||||||
|
elform.value.validate((validate) => {
|
||||||
|
if (!validate) return;
|
||||||
|
let bklx = ''
|
||||||
|
if (route.name == 'myControl') {
|
||||||
|
bklx = '01'
|
||||||
|
} else {
|
||||||
|
bklx = '02'
|
||||||
|
}
|
||||||
|
let params = { ...listQuery.value, bklx: bklx };
|
||||||
|
params.bkfj = params.bkfj ? params.bkfj.join(',') : '';
|
||||||
|
params.bkdxList = params.bkdxList ? params.bkdxList : [];
|
||||||
|
params.bkdxList.forEach(item => {
|
||||||
|
if (Array.isArray(item.fjZp)) {
|
||||||
|
item.fjZp = item.fjZp ? item.fjZp.join(',') : ''
|
||||||
|
} else {
|
||||||
|
item.fjZp = item.fjZp
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
loading.value = true;
|
||||||
|
let url = title.value == '新增' ? "/mosty-gsxt/tbGsxtBk/save" : "/mosty-gsxt/tbGsxtBk/update";
|
||||||
|
qcckPost(params, url).then((res) => {
|
||||||
|
proxy.$message({ type: "success", message: "布控成功" });
|
||||||
|
emit("change");
|
||||||
|
loading.value = false;
|
||||||
|
close();
|
||||||
|
}).catch(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
emitter.on("coordString", (res) => {
|
||||||
|
listQuery.value.bkqyList = [{
|
||||||
|
pgis: res.coord[0],
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// 关闭
|
||||||
|
const close = () => {
|
||||||
|
listQuery.value = {};
|
||||||
|
dialogForm.value = false;
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
};
|
||||||
|
const drawQy = () => {
|
||||||
|
emitter.emit("drawShape", {
|
||||||
|
flag: "select_point",
|
||||||
|
type: "polygon",
|
||||||
|
isclear: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const hzfs = ref('1')
|
||||||
|
const bkqyList = ref()
|
||||||
|
const qhhzfs = () => {
|
||||||
|
listQuery.value.bkqyList = []
|
||||||
|
bkqyList.value = []
|
||||||
|
emitter.emit('removeBj')
|
||||||
|
emitter.emit('removeEara', "select_point")
|
||||||
|
}
|
||||||
|
|
||||||
|
const hzfsChage = (val) => {
|
||||||
|
const qyList = []
|
||||||
|
console.log(val);
|
||||||
|
|
||||||
|
listQuery.value.bkqyList = val.map((item, index) => {
|
||||||
|
const data = bkqyArr.value.filter(items => items.id == item)[0]
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
qyList.push(data.pgis)
|
||||||
|
}
|
||||||
|
console.log(item);
|
||||||
|
return {
|
||||||
|
bkQyid: data.id,
|
||||||
|
pgis: data.pgis
|
||||||
|
}
|
||||||
|
})
|
||||||
|
setTimeout(() => {
|
||||||
|
changeXzqh(qyList)
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
|
const changeXzqh = (val) => {
|
||||||
|
// 先移除已有的边界
|
||||||
|
emitter.emit('removeBj')
|
||||||
|
// 如果传入的是多个区域数据(二维数组)
|
||||||
|
const features = val.map((area, index) => ({
|
||||||
|
geometry: {
|
||||||
|
type: "Polygon",
|
||||||
|
coordinates: [area] // 确保格式正确
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
},
|
||||||
|
type: "Feature"
|
||||||
|
}))
|
||||||
|
// 循环为每个区域创建单独的多边形,这样可以设置不同的样式
|
||||||
|
features.forEach((feature, index) => {
|
||||||
|
emitter.emit('setBoundarys', {
|
||||||
|
data: {
|
||||||
|
type: "FeatureCollection",
|
||||||
|
features: [feature]
|
||||||
|
},
|
||||||
|
color: '#cf1010',
|
||||||
|
fillColor: 'rgba(255, 255, 255,0)',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 根据id获取详情
|
||||||
|
const getDataById = (id) => {
|
||||||
|
qcckGet({}, '/mosty-gsxt/tbGsxtBk/selectVoById/' + id).then(res => {
|
||||||
|
res.bkfj = res.ossList || [];
|
||||||
|
listQuery.value = res || {}
|
||||||
|
dataOrge.value = res
|
||||||
|
if (res.bkqyList) {
|
||||||
|
bkqyList.value = res.bkqyList ? res.bkqyList.map(v => {
|
||||||
|
{
|
||||||
|
if (v.bkQyid) {
|
||||||
|
hzfs.value = '1'
|
||||||
|
} else {
|
||||||
|
hzfs.value = '2'
|
||||||
|
}
|
||||||
|
return v.bkQyid
|
||||||
|
}
|
||||||
|
|
||||||
|
}) : [];
|
||||||
|
const data = res.bkqyList.map(item => {
|
||||||
|
return item.pgis
|
||||||
|
})
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log(data);
|
||||||
|
changeXzqh(data)
|
||||||
|
// listQuery.value.bkDxxx = data.join(',')
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tableDate.tableColumn = tableColumnList[res.bkDx ? res.bkDx : '01']
|
||||||
|
})
|
||||||
|
}
|
||||||
|
defineExpose({ init });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.smallTitle {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 50px;
|
||||||
|
font-weight: 550;
|
||||||
|
color: #606266;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mapSearch {
|
||||||
|
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog {
|
||||||
|
::v-deep .el-form-item--default {
|
||||||
|
margin: 0 1% 0 0 !important;
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .avatar-uploader {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-upload--picture-card i {
|
||||||
|
width: 156px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.depBox {
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
width: 305px;
|
||||||
|
padding: 0 0 0 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
::v-deep .el-input__inner {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-cascader .el-input.is-focus .el-input__inner {
|
||||||
|
border-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-input__inner:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-input.is-disabled .el-input__inner {
|
||||||
|
border-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 使用深度选择器覆盖子组件样式 */
|
||||||
|
::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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__label {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-radio-button__inner {
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,185 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :model-value="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>
|
||||||
@ -0,0 +1,120 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog" v-if="dialogForm">
|
||||||
|
<div class="head_box">
|
||||||
|
<span class="title">预警详情</span>
|
||||||
|
<div>
|
||||||
|
<el-button @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form_cnt">
|
||||||
|
<div class="left">
|
||||||
|
<div class="lh30">轨迹信息</div>
|
||||||
|
<div class="flex item mr15">
|
||||||
|
<img :src="person" alt="">
|
||||||
|
<div class="ml10">
|
||||||
|
<div>姓名:张三(51018319954544454)</div>
|
||||||
|
<div>预警次数:<span>6</span>次</div>
|
||||||
|
<div>预警来源:布控预警</div>
|
||||||
|
<div>预警标签:社区戒毒</div>
|
||||||
|
<div><span class="marks">轨迹上图</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul class="cntBox">
|
||||||
|
<li class="li-item" v-for="idx in 10" :key="idx">
|
||||||
|
<div class="mb10">预警时间:2024-05-21 10:10:05</div>
|
||||||
|
<div class="item flex info">
|
||||||
|
<img :src="person" alt="" style="width:99px;height: 92px;">
|
||||||
|
<div class="ml10">预警内容;预警内容:5月21日20.41.14人像抓拍数据测到 马志强(510502199506168718)出现在024000050迎库路大世界石梯人行道2L4-SPL</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<GdMap></GdMap>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import GdMap from "@/components/GdMap/index.vue";
|
||||||
|
import { ref, defineExpose,defineEmits } from "vue";
|
||||||
|
const emit = defineEmits(["change"]);
|
||||||
|
const props = defineProps({
|
||||||
|
dic: Object
|
||||||
|
});
|
||||||
|
const person = require('@/assets/images/person.png')
|
||||||
|
const dialogForm = ref(false); //弹窗
|
||||||
|
|
||||||
|
// 初始化数据
|
||||||
|
const init = (row) => {
|
||||||
|
dialogForm.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 关闭
|
||||||
|
const close = () => {
|
||||||
|
dialogForm.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
defineExpose({ init });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.form_cnt{
|
||||||
|
display: flex;
|
||||||
|
.left{
|
||||||
|
width: 400px;
|
||||||
|
height: 100%;
|
||||||
|
margin-right: 10px;
|
||||||
|
.item{
|
||||||
|
background: rgb(248, 248, 248);
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
.info{
|
||||||
|
padding: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.marks{
|
||||||
|
font-size: 12px;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 2px 6px;
|
||||||
|
background: #0072ff;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.cntBox{
|
||||||
|
margin-top: 6px;
|
||||||
|
height: calc(100% - 140px);
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
.li-item{
|
||||||
|
border-left:1px solid #0072ff ;
|
||||||
|
padding-left:10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
&::before{
|
||||||
|
position: absolute;
|
||||||
|
content: '';
|
||||||
|
top: 0;
|
||||||
|
left: -5px;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background: #0072ff;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right{
|
||||||
|
position: relative;
|
||||||
|
width: calc(100% - 410px);
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,252 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="titleBox">
|
||||||
|
<PageTitle :title=" route.meta.title ">
|
||||||
|
<el-button type="primary" @click="handleAdd('add', null)">发起布控</el-button>
|
||||||
|
</PageTitle>
|
||||||
|
</div>
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox">
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||||
|
</div>
|
||||||
|
<!-- 按钮组 -->
|
||||||
|
<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_SSYJ" />
|
||||||
|
</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 }">
|
||||||
|
<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}">
|
||||||
|
<span @click="openWarning(row)" style="color: #00ffff;" class="mr5 pointer">{{ row.yjcs || 0}}</span>次
|
||||||
|
</template> -->
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<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" size="small" @click="tbGsxtBkQuashList( row)" v-else>撤控</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="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="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"></Pages>
|
||||||
|
</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_SSYJ, 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>
|
||||||
|
import AddBkdx from "./components/addBkdx.vue";
|
||||||
|
import YjDialog from "./components/yjDialog.vue";
|
||||||
|
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 { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
|
||||||
|
import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
|
||||||
|
import {tbGsxtBkQuash} from '@/api/zdr.js'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
|
const router = useRouter()
|
||||||
|
const route = useRoute()
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_SJLX, D_GS_SSYJ, 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_SSYJ", "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: "布控等级",
|
||||||
|
prop: "bkDj",
|
||||||
|
placeholder: "请选择布控等级",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_SSYJ
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控类型",
|
||||||
|
prop: "bkDx",
|
||||||
|
placeholder: "请选择布控类型",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_BK_DX
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控状态",
|
||||||
|
prop: "bkZt",
|
||||||
|
placeholder: "请选择布控状态",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_BK_ZT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控时间",
|
||||||
|
prop: "startTime",
|
||||||
|
placeholder: "请选择布控时间",
|
||||||
|
showType: "datetimerange",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const queryFrom = ref({});
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "null", //选择类型
|
||||||
|
loading: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
controlsWidth: 250, //操作栏宽度
|
||||||
|
|
||||||
|
tableColumn: [
|
||||||
|
{ 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();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = {
|
||||||
|
...val,
|
||||||
|
startTime: val.startTime? val.startTime[0]: '',
|
||||||
|
endTime: val.startTime? val.startTime[1]: ''
|
||||||
|
};
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const changeNo = (val) => {
|
||||||
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const changeSize = (val) => {
|
||||||
|
pageData.pageConfiger.pageSize = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
const getList = () => {
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
let bklx = ''
|
||||||
|
console.log();
|
||||||
|
|
||||||
|
if (route.name == 'myControl') {
|
||||||
|
bklx = '01'
|
||||||
|
} else {
|
||||||
|
bklx = '02'
|
||||||
|
}
|
||||||
|
let data = {
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
...queryFrom.value,
|
||||||
|
bkcxlx: '01',
|
||||||
|
bklx: bklx
|
||||||
|
};
|
||||||
|
qcckGet(data, "/mosty-gsxt/tbGsxtBk/selectPage").then((res) => {
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
pageData.total = res.total;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleAdd = (type, row) => {
|
||||||
|
addBkdxForm.value.init(type, row);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const handleRow = (id) => {
|
||||||
|
proxy.$confirm("确定要删除?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckDelete({}, "/mosty-gsxt/tbGsxtBk/" + id).then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "删除成功" });
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
|
||||||
|
window.onresize = function () {
|
||||||
|
tabHeightFn();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const tbGsxtBkQuashList = (item) => {
|
||||||
|
tbGsxtBkQuash({id:item.id}).then(res=>{
|
||||||
|
proxy.$message({ type: "success", message: "操作成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-loading-mask {
|
||||||
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,185 @@
|
|||||||
|
<template>
|
||||||
|
<div style="height:100%;width:100%" :id="echartsId"></div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import * as echarts from "echarts";
|
||||||
|
import { onMounted, ref, reactive, defineProps, onUnmounted, watch, nextTick } from "vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
echartsId:{
|
||||||
|
type:String,
|
||||||
|
default:'barId'
|
||||||
|
},
|
||||||
|
data:{
|
||||||
|
type:Object,
|
||||||
|
default:{
|
||||||
|
title:'', // 图表标题
|
||||||
|
color:[], //['#EB00FF','#F57100']
|
||||||
|
list:[], //[{label:'总数',val:[80,70,60,50]}, {label:'已处置',val:[70,40,30,80]}, ]
|
||||||
|
xData:[] ,//['09-01','09-02','09-03','09-04']
|
||||||
|
labelColor:'#000', //横坐标颜色 - 纵坐标颜色 - 标题颜色
|
||||||
|
rotate:0, //横坐标旋转角度
|
||||||
|
interval:0, //横坐标间隔
|
||||||
|
isVertical:false,//是否竖排垂直展示
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataZoom:{
|
||||||
|
type:Boolean,
|
||||||
|
default:false
|
||||||
|
},
|
||||||
|
rotate:{
|
||||||
|
type:Number,
|
||||||
|
default:0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
watch(()=>props.data,val=>{
|
||||||
|
nextTick(()=>{
|
||||||
|
init(val)
|
||||||
|
})
|
||||||
|
},{immediate:true,deep:true})
|
||||||
|
|
||||||
|
|
||||||
|
// 初始化
|
||||||
|
function init (val) {
|
||||||
|
let color = val.color;
|
||||||
|
let list = val.list
|
||||||
|
let series = list.map((item ,idx)=>{
|
||||||
|
return {
|
||||||
|
type: "bar",
|
||||||
|
name:item.label,
|
||||||
|
data:item.val,
|
||||||
|
itemStyle:{normal: { color: color[idx] }},
|
||||||
|
showSymbol:false,
|
||||||
|
barWidth: '30%', // 柱状图宽度
|
||||||
|
}
|
||||||
|
})
|
||||||
|
chartFn(series)
|
||||||
|
}
|
||||||
|
|
||||||
|
function chartFn(series) {
|
||||||
|
var myChart = echarts.init(document.getElementById(props.echartsId));
|
||||||
|
var option = {
|
||||||
|
title: {
|
||||||
|
text: props.data.title || '',
|
||||||
|
left: 'center',
|
||||||
|
textStyle: {
|
||||||
|
color: props.data.color[0] || "#000",
|
||||||
|
fontSize: 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: "25%",
|
||||||
|
right: "0%",
|
||||||
|
left: "0%",
|
||||||
|
bottom: "0%", // 增加底部空间,为两行X轴标签留出空间
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: props.data.list.map(v => { return v.label }),
|
||||||
|
textStyle: {
|
||||||
|
color: props.data.color[0] || "#409EFF",
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
right: "5%",
|
||||||
|
top: "10%"
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: "axis",
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow'
|
||||||
|
},
|
||||||
|
backgroundColor: "rgba(255,255,255,1)",
|
||||||
|
padding: [5, 10],
|
||||||
|
textStyle: { color: "#7588E4" },
|
||||||
|
extraCssText: "box-shadow: 0 0 5px rgba(0,0,0,0.3)"
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: "category",
|
||||||
|
data: props.data.xData,
|
||||||
|
axisTick: { alignWithLabel: true },
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: props.data.color[0] || "#409EFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
rotate: props.rotate, // 设置标签旋转角度
|
||||||
|
show: true,
|
||||||
|
color: props.data.color[0] || "#409EFF",
|
||||||
|
fontSize: 10,
|
||||||
|
interval: props.data.interval || 0, // 强制显示所有标签
|
||||||
|
formatter: function(value, index) {
|
||||||
|
// 组合显示数量和年龄范围,数量在上,范围在下
|
||||||
|
const bottomValues = props.data.bottomValues || [];
|
||||||
|
const bottomValue = bottomValues[index] || '';
|
||||||
|
return `${bottomValue}\n${value}`;
|
||||||
|
},
|
||||||
|
margin: 10 // 调整边距
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: "value",
|
||||||
|
axisLabel: {
|
||||||
|
color: props.data.color[0] || "#409EFF",
|
||||||
|
fontSize: 10,
|
||||||
|
formatter: '{value}%' // 显示百分比
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
type: 'solid',
|
||||||
|
color: props.data.color[0] || "#409EFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: { show: false },
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: props.data.color[0] || "#409EFF"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: series.map((item, index) => ({
|
||||||
|
...item,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'top',
|
||||||
|
formatter: function(params) {
|
||||||
|
// 显示顶部百分比标签
|
||||||
|
return `占比 ${params.value}%`;
|
||||||
|
},
|
||||||
|
color: props.data.color[0] || "#409EFF",
|
||||||
|
fontSize: 10
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: item.itemStyle.normal.color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})),
|
||||||
|
// // 底部数值标签
|
||||||
|
// graphic: props.data.bottomValues ? props.data.bottomValues.map((value, idx) => {
|
||||||
|
// const percent = (idx + 0.5) / props.data.xData.length * 100;
|
||||||
|
// return {
|
||||||
|
// type: 'text',
|
||||||
|
// left: `${percent}%`,
|
||||||
|
// bottom: '5%', // 调整到底部,显示在x轴标签下方
|
||||||
|
// style: {
|
||||||
|
// text: value,
|
||||||
|
// fill: '#000',
|
||||||
|
// fontSize: 12
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// }) : []
|
||||||
|
};
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
window.addEventListener('resize', function() {
|
||||||
|
myChart.resize();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
<template>
|
||||||
|
<div class="table-data">
|
||||||
|
<table border="1" cellspacing="0" cellpadding="0" width="100%">
|
||||||
|
<tr style="text-align: center;font-size: 12pt;">
|
||||||
|
<th colspan="6">{{ title }}</th>
|
||||||
|
</tr>
|
||||||
|
<tr style="text-align: center;font-size: 12pt;font-weight: normal;">
|
||||||
|
<th v-if="lx == '0' || lx == '1'"></th>
|
||||||
|
<th v-for="item in titleList" :key="item">{{ item }}</th>
|
||||||
|
</tr>
|
||||||
|
<tr style="text-align: center;font-size: 12pt;font-family: 'Times New Roman';" v-for="value in condition"
|
||||||
|
:key="value">
|
||||||
|
<template v-if="lx == '0'">
|
||||||
|
<td>{{ value.tjlx }}</td>
|
||||||
|
<td>{{ value.ajsls }}</td>
|
||||||
|
<td>{{ value.ccs }}</td>
|
||||||
|
<td>{{ value.wfry }}</td>
|
||||||
|
</template>
|
||||||
|
<template v-if="lx == '1'">
|
||||||
|
<td>{{ value.tjlx }}</td>
|
||||||
|
<td>{{ value.rlggcx }}</td>
|
||||||
|
<td>{{ value.qhrsaq }}</td>
|
||||||
|
<td>{{ value.fhshglcx }}</td>
|
||||||
|
<td>{{ value.fhggaq }}</td>
|
||||||
|
</template>
|
||||||
|
<template v-if="lx == '2'">
|
||||||
|
<td>{{ value.ajlx }}</td>
|
||||||
|
<td>{{ value.sl }}</td>
|
||||||
|
<td>{{ value.zb }}</td>
|
||||||
|
</template>
|
||||||
|
<template v-if="lx == '3'">
|
||||||
|
<td>{{ value.afqy }}</td>
|
||||||
|
<td>{{ value.sl }}</td>
|
||||||
|
</template>
|
||||||
|
<template v-if="lx == '4'">
|
||||||
|
<td>{{ value.ssbm }}</td>
|
||||||
|
<td>{{ value.las }}</td>
|
||||||
|
<td>{{ value.pas }}</td>
|
||||||
|
<td>{{ value.ccl }}</td>
|
||||||
|
<td>{{ value.xyrs }}</td>
|
||||||
|
<td>{{ value.bz }}</td>
|
||||||
|
</template>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed } from 'vue'
|
||||||
|
const props = defineProps({
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
listData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
titleList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
}, lx: {
|
||||||
|
type: String,
|
||||||
|
default: '0'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const condition = computed(() => {
|
||||||
|
const data = props.listData.map(item => item)
|
||||||
|
return data
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -0,0 +1,464 @@
|
|||||||
|
<template>
|
||||||
|
<div class="report-container" ref="tableBox">
|
||||||
|
|
||||||
|
<div ref="ajReport">
|
||||||
|
<div class="main-title">{{ wdValue.date }}份全市治安案件形势分析</div>
|
||||||
|
<div class="section-title">一、治安案件总体概述</div>
|
||||||
|
<div class="body-text" v-if="wdValue.zaajZtgsList">
|
||||||
|
{{ wdValue.ym }}月份,全市各级公安机关治安部门受理行政案件{{ wdValue.zaajZtgsList.ajsls }}起、查处案件{{ wdValue.zaajZtgsList.ccs }}起、查处率{{
|
||||||
|
wdValue.zaajZtgsList.ccl }}%、查处违法人员{{ wdValue.zaajZtgsList.wfry }}人。
|
||||||
|
<TableData title="全市治安案件总体情况表" :listData="wdValue.zaajZtgsList.ztqk" :titleList="['受理治安案件数', '查处数', '查处违法人员数']"
|
||||||
|
lx="0" />
|
||||||
|
</div>
|
||||||
|
<div class="section-title">二、治安案件形势分析</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div class="body-text" v-if="wdValue.zaajList.length > 0">
|
||||||
|
(一)受理案件类别分析。{{ wdValue.ym }}月受理的{{ wdValue.zaajZtgsList.ajsls }}起行政案件中,<span
|
||||||
|
v-for="(item, index) in wdValue.zaajList" :key="index">{{ item.label }}{{ item.sy }}起环比{{ item.sySj }}{{
|
||||||
|
item.hb }}、同比{{ item.bySj }}{{ item.tb }}<span v-if="index == wdValue.zaajList.length - 1">;</span> <span
|
||||||
|
v-else>。</span></span>
|
||||||
|
<TableData title="全市治安案件总体情况表" :listData="wdValue.ajxsfxList"
|
||||||
|
:titleList="['扰乱公共秩序', '侵害人身安全和财产权利', '妨害社会管理秩序', '妨害公共安全']" lx="1" />
|
||||||
|
</div>
|
||||||
|
<div class="body-text">
|
||||||
|
(二)查处案件类别分析。{{ wdValue.ym }}月份的查处63起行政案件中,<span v-for="(item, index) in wdValue.zaajFbqktj" :key="index">
|
||||||
|
{{ item.ajlx }}{{ item.sl }}起、占查处案件总数的{{ item.zb }}<span
|
||||||
|
v-if="index == wdValue.zaajFbqktj.length - 1">,</span>
|
||||||
|
<span v-else>。</span></span>
|
||||||
|
<TableData title="全市查处主要治安案件情况" :listData="wdValue.zaajFbqktj" :titleList="['案件类型', '查处数', '占查处总数的百分比']"
|
||||||
|
lx="2" />
|
||||||
|
</div>
|
||||||
|
<div class="body-text">
|
||||||
|
(三)查处违法犯罪人员年龄分析。{{ wdValue.ym }}月份共查处违法人员{{ wdValue.nldtjOnj.ccxyr }}人,其中<span
|
||||||
|
v-for="value in wdValue.nldtjOnj.nldtj.data" :key="value.agegroup">
|
||||||
|
{{ value.agegroup }} {{ value.count }}人、占查处违法人员总数的{{ value.zb }}<span
|
||||||
|
v-if="index == wdValue.nldtjOnj.nldtj.data.length - 1">。</span><span v-else>、</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div style="height:250px; width:280px;margin: 0 auto;">
|
||||||
|
<bar v-if="wdValue.nldtjOnj.nldtj" :echartsId="'myBarChart'" :data="{
|
||||||
|
title: '图一',
|
||||||
|
color: ['#FF6B6B'],
|
||||||
|
...wdValue.nldtjOnj.nldtj
|
||||||
|
}" />
|
||||||
|
</div>
|
||||||
|
<div class="body-text">
|
||||||
|
(四)案件发生区域分析。{{wdValue.sajajfsqy.qyfx }}
|
||||||
|
<TableData title="受理治安案件发生区域" :listData="wdValue.sajajfsqy.xxsj" :titleList="['案件发生区域', '案件数量']" lx="3" />
|
||||||
|
</div>
|
||||||
|
<div class="body-text">
|
||||||
|
(五)治安案件地域分析。{{ wdValue.ym }}月份全市治安案件平均查处率为{{ wdValue.zaajZtgsList.ccl }}%<span v-if="parseFloat(wdValue.zaajZtgsList.ccl) > 0"> ,<span v-for="value in wdValue.jxsajajdyfx.greaterThan" :key="value.ssbm">{{ value.ssbm }}、</span>查处率高,分别为<span v-for="value in wdValue.jxsajajdyfx.lessThan" :key="value.ssbm">{{ value.ccl }}</span>,<span v-for="value in wdValue.jxsajajdyfx.lessThan" :key="value.ssbm">{{ value.ccl }}</span></span><span>。</span>
|
||||||
|
<TableData title="各县(市)公安(分)局治安案件统计表" :listData="wdValue.jxsajajdyfx.res"
|
||||||
|
:titleList="['部门、(市)公安(分)局', '受理数', '查处数','查处率','查处违法人员数','备注']" lx="4" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section-title">三、对策建议</div>
|
||||||
|
<div class="body-text">
|
||||||
|
{{ wdValue.xzjyL }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;justify-content: center;align-items: center;">
|
||||||
|
<el-button type="primary" @click="downloadWithStyles">导出WORD</el-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import * as echarts from "echarts";
|
||||||
|
import { xsasjxsajztgs, xsasjxsajccajlbfx, xsasjxsajajxsfx, xsasjxsajnldtj, xsasjxsajajfsqy, xsasjxsajajdyfx, xsasjxsajaltdtj, xsasjxsajfbqktj, xsasjxsajFatdtj, xsasjxsajxyrQkfx, xsasjxsajypbgZttj, xsasjxsajqxajqk } from '@/api/fileapi'
|
||||||
|
import { ref, onMounted, watch } from 'vue'
|
||||||
|
import { connectSSEWithPost } from '@/utils/sse'
|
||||||
|
import { timeValidate } from '@/utils/tools'
|
||||||
|
import { downloadDocWithStyle, downloadPDF } from "@/utils/export.js"
|
||||||
|
import TableData from './tableData.vue'
|
||||||
|
import Bar from './bar.vue'
|
||||||
|
import Docxtemplater from 'docxtemplater';
|
||||||
|
import PizZip from 'pizzip';
|
||||||
|
import { saveAs } from 'file-saver';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
search: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { }
|
||||||
|
},
|
||||||
|
xzlx: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const params = ref({ ...props.search })
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
getxsasjxsajztgs()
|
||||||
|
getxsasjxsajccajlbfx()
|
||||||
|
getxsasjxsajajxsfx()
|
||||||
|
getxsasjxsajnldtj()
|
||||||
|
getxsasjxsajajfsqy()
|
||||||
|
getxsasjxsajajdyfx()
|
||||||
|
getconnectSSEWithPost()
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 值
|
||||||
|
const wdValue = ref({
|
||||||
|
date: timeValidate(new Date(), 'ny'),
|
||||||
|
ym: timeValidate((() => { const d = new Date(); d.setMonth(d.getMonth() - 1); return d; })(), 'ym'),
|
||||||
|
td: timeValidate(new Date(), 'td'),
|
||||||
|
zaajZtgsList: {},
|
||||||
|
ajxsfxList: [],
|
||||||
|
zaajList: [],
|
||||||
|
zaajFbqktj: [],
|
||||||
|
zaajFbqktjList: {},
|
||||||
|
nldtjOnj: {
|
||||||
|
ccxyr: 0,
|
||||||
|
nldtj: { list: [] }
|
||||||
|
},
|
||||||
|
jxsajajdyfx: {},
|
||||||
|
sajajfsqy: {},
|
||||||
|
xzjyL:""
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const ajReport = ref(null)
|
||||||
|
// 获取报告所有文字内容
|
||||||
|
const getReportTextContent = () => {
|
||||||
|
if (!ajReport.value) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
// 提取元素内的所有文本内容
|
||||||
|
const textContent = ajReport.value.textContent || ''
|
||||||
|
// 处理空白字符,去除多余的换行和空格
|
||||||
|
return textContent
|
||||||
|
.replace(/\s+/g, ' ') // 将多个空白字符替换为单个空格
|
||||||
|
.trim() // 去除首尾空白
|
||||||
|
}
|
||||||
|
|
||||||
|
// 侦防建议
|
||||||
|
const getconnectSSEWithPost = () => {
|
||||||
|
const params = getReportTextContent()
|
||||||
|
connectSSEWithPost({ prompt: params }, {
|
||||||
|
onChunk: (content) => {
|
||||||
|
wdValue.value.xzjyL += content;
|
||||||
|
},
|
||||||
|
onComplete: () => {
|
||||||
|
console.log('SSE连接完成');
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
console.error('SSE连接错误:', error);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 区域分析
|
||||||
|
const getxsasjxsajztgs = () => {
|
||||||
|
// ...params.value
|
||||||
|
xsasjxsajztgs({ ...params.value }).then(res => {
|
||||||
|
wdValue.value.zaajZtgsList = res
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('请求失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 治安案件类别分析
|
||||||
|
const getxsasjxsajccajlbfx = () => {
|
||||||
|
xsasjxsajccajlbfx({ ...params.value }).then(res => {
|
||||||
|
wdValue.value.zaajFbqktj = res
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('请求失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const xzlx = [
|
||||||
|
{
|
||||||
|
key: 'rlggcx',
|
||||||
|
label: '扰乱公共秩序类',
|
||||||
|
value: ''
|
||||||
|
}, {
|
||||||
|
key: 'qhrsaq',
|
||||||
|
label: '侵害人身安全和财产权利类',
|
||||||
|
value: ''
|
||||||
|
}, {
|
||||||
|
key: 'fhshglcx',
|
||||||
|
label: '妨害社会管理秩序类',
|
||||||
|
value: ''
|
||||||
|
}, {
|
||||||
|
key: 'fhggaq',
|
||||||
|
label: '妨害公共安全类',
|
||||||
|
value: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
const strFun = (str) => {
|
||||||
|
const newStr = parseInt(str.slice(0, str.length - 1))
|
||||||
|
return newStr == 0 ? '持平' : newStr > 0 ? `上升${newStr}%` : `下降${Math.abs(newStr)}%`
|
||||||
|
}
|
||||||
|
// 治安案件线索分析
|
||||||
|
const getxsasjxsajajxsfx = () => {
|
||||||
|
xsasjxsajajxsfx({ ...params.value }).then(res => {
|
||||||
|
wdValue.value.ajxsfxList = res
|
||||||
|
const list = res.map(item => item.tjlx)
|
||||||
|
wdValue.value.zaajList = xzlx.map(item => {
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
sySj: list[0],
|
||||||
|
bySj: list[2],
|
||||||
|
sy: res[1][item.key],
|
||||||
|
by: res[2][item.key],
|
||||||
|
hb: strFun(res[3][item.key]),
|
||||||
|
tb: strFun(res[4][item.key]),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(wdValue.value.zaajList);
|
||||||
|
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('请求失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getxsasjxsajnldtj = () => {
|
||||||
|
xsasjxsajnldtj({ ...params.value }).then(res => {
|
||||||
|
wdValue.value.nldtjOnj.ccxyr = res.ccxyr ? res.ccxyr : '0'
|
||||||
|
wdValue.value.nldtjOnj.nldtj.list = [
|
||||||
|
{ label: '占比', val: res.nldtj.map(item => (item.count / res.ccxyr * 100).toFixed(2)) },
|
||||||
|
]
|
||||||
|
wdValue.value.nldtjOnj.nldtj.xData = res.nldtj.map(item => item.agegroup)
|
||||||
|
wdValue.value.nldtjOnj.nldtj.bottomValues = res.nldtj.map(item => item.count)
|
||||||
|
wdValue.value.nldtjOnj.nldtj.data = res.nldtj
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('请求失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getxsasjxsajajfsqy = () => {
|
||||||
|
xsasjxsajajfsqy({ ...params.value }).then(res => {
|
||||||
|
wdValue.value.sajajfsqy = res
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('请求失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const getxsasjxsajajdyfx = () => {
|
||||||
|
xsasjxsajajdyfx({ ...params.value }).then(res => {
|
||||||
|
const { greaterThan, lessThan } = compareCclValues(res);
|
||||||
|
wdValue.value.jxsajajdyfx = {
|
||||||
|
greaterThan, lessThan,
|
||||||
|
res
|
||||||
|
}
|
||||||
|
console.log(wdValue.value.jxsajajdyfx);
|
||||||
|
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('请求失败:', error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 比较ccl值的方法
|
||||||
|
const compareCclValues = (data) => {
|
||||||
|
// 获取基准ccl值
|
||||||
|
const baseCcl = wdValue.value.zaajZtgsList.ccl || '0%';
|
||||||
|
const baseCclValue = parseFloat(baseCcl);
|
||||||
|
|
||||||
|
// 初始化结果数组
|
||||||
|
const greaterThan = [];
|
||||||
|
const lessThan = [];
|
||||||
|
|
||||||
|
// 遍历数据进行比较
|
||||||
|
data.forEach(item => {
|
||||||
|
const itemCcl = item.ccl || '0%';
|
||||||
|
const itemCclValue = parseFloat(itemCcl);
|
||||||
|
|
||||||
|
if (itemCclValue > baseCclValue) {
|
||||||
|
greaterThan.push(item);
|
||||||
|
} else if (itemCclValue < baseCclValue) {
|
||||||
|
lessThan.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return { greaterThan, lessThan };
|
||||||
|
}
|
||||||
|
// 导出word
|
||||||
|
const tableBox = ref(null);
|
||||||
|
const downloadWithStyles = async () => {
|
||||||
|
if (!tableBox.value?.innerHTML) return;
|
||||||
|
try {
|
||||||
|
// 将类样式转换为行内样式的函数
|
||||||
|
const convertClassesToInlineStyles = (html) => {
|
||||||
|
// 创建临时DOM元素
|
||||||
|
const tempDiv = document.createElement('div');
|
||||||
|
tempDiv.innerHTML = html;
|
||||||
|
|
||||||
|
// 定义样式映射
|
||||||
|
const styleMap = {
|
||||||
|
'.report-container': {
|
||||||
|
'padding': '20px',
|
||||||
|
'color': '#000'
|
||||||
|
},
|
||||||
|
'.main-title': {
|
||||||
|
'font-size': '22pt',
|
||||||
|
'font-family': '黑体, SimHei, Microsoft YaHei',
|
||||||
|
'text-align': 'center',
|
||||||
|
'font-weight': 'bold',
|
||||||
|
'line-height': '30pt'
|
||||||
|
},
|
||||||
|
'.section-title': {
|
||||||
|
'font-size': '16pt',
|
||||||
|
'font-family': '黑体, SimHei, Microsoft YaHei',
|
||||||
|
'line-height': '30pt',
|
||||||
|
'text-indent': '2em',
|
||||||
|
'font-weight': 'bold'
|
||||||
|
},
|
||||||
|
'.body-text': {
|
||||||
|
'font-size': '16pt',
|
||||||
|
'font-family': '仿宋_GB2312',
|
||||||
|
'line-height': '30pt',
|
||||||
|
'text-indent': '2em'
|
||||||
|
},
|
||||||
|
'.font-bold': {
|
||||||
|
'font-weight': '600'
|
||||||
|
},
|
||||||
|
'.right-align': {
|
||||||
|
'text-align': 'right',
|
||||||
|
'margin-left': 'auto',
|
||||||
|
'width': 'fit-content'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 遍历所有元素,应用行内样式
|
||||||
|
const elements = tempDiv.querySelectorAll('*');
|
||||||
|
elements.forEach(element => {
|
||||||
|
// 获取元素的所有类名
|
||||||
|
const classes = element.className.split(' ').filter(c => c);
|
||||||
|
|
||||||
|
// 为每个类名应用对应的样式
|
||||||
|
classes.forEach(className => {
|
||||||
|
const styles = styleMap[`.${className}`];
|
||||||
|
if (styles) {
|
||||||
|
Object.entries(styles).forEach(([property, value]) => {
|
||||||
|
element.style[property] = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 返回转换后的HTML
|
||||||
|
return tempDiv.innerHTML;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 转换样式并构建导出内容
|
||||||
|
let inlineStyledContent = convertClassesToInlineStyles(tableBox.value.innerHTML);
|
||||||
|
|
||||||
|
// 处理图表转换为图片
|
||||||
|
const tempExportDiv = document.createElement('div');
|
||||||
|
tempExportDiv.innerHTML = inlineStyledContent;
|
||||||
|
|
||||||
|
// 直接在原始DOM中查找所有图表容器
|
||||||
|
const originalChartContainers = tableBox.value.querySelectorAll('div[id]');
|
||||||
|
for (const originalContainer of originalChartContainers) {
|
||||||
|
try {
|
||||||
|
// 获取图表实例
|
||||||
|
const chart = echarts.getInstanceByDom(originalContainer);
|
||||||
|
if (chart) {
|
||||||
|
// 确保图表已渲染并获取完整大小
|
||||||
|
const containerWidth = originalContainer.offsetWidth;
|
||||||
|
const containerHeight = originalContainer.offsetHeight;
|
||||||
|
|
||||||
|
// 调整图表大小以确保完整渲染
|
||||||
|
chart.resize({
|
||||||
|
width: containerWidth,
|
||||||
|
height: containerHeight
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待一小段时间确保图表渲染完成
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 100));
|
||||||
|
|
||||||
|
// 获取图表的base64图片,设置合适的尺寸
|
||||||
|
const imgSrc = chart.getDataURL({
|
||||||
|
pixelRatio: 2, // 提高图片清晰度
|
||||||
|
backgroundColor: '#fff',
|
||||||
|
width: containerWidth,
|
||||||
|
height: containerHeight
|
||||||
|
});
|
||||||
|
|
||||||
|
// 在临时DOM中查找对应的容器并替换
|
||||||
|
const tempContainer = tempExportDiv.querySelector(`div[id="${originalContainer.id}"]`);
|
||||||
|
if (tempContainer) {
|
||||||
|
// 创建图片元素替换图表容器
|
||||||
|
const img = document.createElement('img');
|
||||||
|
img.src = imgSrc;
|
||||||
|
// 使用内联样式确保在Word中占满宽度
|
||||||
|
img.setAttribute('style', 'width: 100%; height: auto; margin: 20px 0;');
|
||||||
|
// 替换容器
|
||||||
|
tempContainer.style.textIndent = '0em';
|
||||||
|
tempContainer.parentNode.replaceChild(img, tempContainer);
|
||||||
|
tempContainer.style.textIndent = '0em';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('转换图表为图片失败:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取处理后的HTML
|
||||||
|
const processedContent = tempExportDiv.innerHTML;
|
||||||
|
|
||||||
|
const styledContent = `
|
||||||
|
<div style="padding: 20px; color: #000;">
|
||||||
|
${processedContent}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
downloadDocWithStyle(styledContent, `刑事案件分析报告_${timeValidate(new Date(), 'ny')}`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('导出Word失败:', error);
|
||||||
|
alert('导出Word失败,请检查控制台错误信息');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.report-container {
|
||||||
|
padding: 20px;
|
||||||
|
height: 90%;
|
||||||
|
overflow: auto;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-title {
|
||||||
|
font-size: 22pt;
|
||||||
|
font-family: '黑体, SimHei, Microsoft YaHei';
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 30pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-size: 16pt;
|
||||||
|
font-family: '黑体, SimHei, Microsoft YaHei';
|
||||||
|
line-height: 30pt;
|
||||||
|
text-indent: 2em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
font-size: 16pt;
|
||||||
|
// font-family: ', FangSong, Microsoft YaHei';
|
||||||
|
font-family: '仿宋_GB2312';
|
||||||
|
line-height: 30pt;
|
||||||
|
text-indent: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.font-bold {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-align {
|
||||||
|
text-align: right;
|
||||||
|
margin-left: auto;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss"></style>
|
||||||
@ -4,6 +4,7 @@
|
|||||||
<div class="xsaj">
|
<div class="xsaj">
|
||||||
<JudgmentReport :search="search" v-if="xzlx === '02'" />
|
<JudgmentReport :search="search" v-if="xzlx === '02'" />
|
||||||
<Xsaj :search="search" v-if="xzlx === '03'" />
|
<Xsaj :search="search" v-if="xzlx === '03'" />
|
||||||
|
<Zaaj :search="search" v-if="xzlx === '04'" />
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -13,6 +14,8 @@
|
|||||||
import { ref, reactive, watch } from 'vue'
|
import { ref, reactive, watch } from 'vue'
|
||||||
import JudgmentReport from './AnalysisReport/index.vue'
|
import JudgmentReport from './AnalysisReport/index.vue'
|
||||||
import Xsaj from './caseFile/xsaj.vue'
|
import Xsaj from './caseFile/xsaj.vue'
|
||||||
|
import Zaaj from './caseFile/zaaj.vue'
|
||||||
|
|
||||||
const title = ref('详情')
|
const title = ref('详情')
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
|
|||||||
@ -318,6 +318,7 @@ const onSearch = () => {
|
|||||||
|
|
||||||
let len = []
|
let len = []
|
||||||
xzlx.value = Array.isArray(searchList.value.lx) ? searchList.value.lx[0][0] : ''
|
xzlx.value = Array.isArray(searchList.value.lx) ? searchList.value.lx[0][0] : ''
|
||||||
|
console.log(xzlx.value);
|
||||||
const bjlbs = Array.isArray(searchList.value.lx) ? searchList.value.lx.map(item => {
|
const bjlbs = Array.isArray(searchList.value.lx) ? searchList.value.lx.map(item => {
|
||||||
len.push(item[0])
|
len.push(item[0])
|
||||||
return item[item.length - 1]
|
return item[item.length - 1]
|
||||||
@ -512,7 +513,6 @@ const visible = ref(false)
|
|||||||
const search = ref({})
|
const search = ref({})
|
||||||
const handleYP = () => {
|
const handleYP = () => {
|
||||||
visible.value = true
|
visible.value = true
|
||||||
console.log(searchList.value.lx);
|
|
||||||
|
|
||||||
if (searchList.value.lx.length == 0) {
|
if (searchList.value.lx.length == 0) {
|
||||||
xzlx.value = '02'
|
xzlx.value = '02'
|
||||||
@ -541,6 +541,10 @@ const handleYP = () => {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '04':
|
case '04':
|
||||||
|
search.value = {
|
||||||
|
startTime: searchList.value.datetimes ? searchList.value.datetimes[0] : '',
|
||||||
|
endTime: searchList.value.datetimes ? searchList.value.datetimes[1] : '',
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -0,0 +1,117 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog" v-if="dialogForm">
|
||||||
|
<div class="head_box">
|
||||||
|
<span class="title">区域布控预警{{ title }} </span>
|
||||||
|
<div>
|
||||||
|
<el-button size="small" @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form_cnt">
|
||||||
|
<FormMessage :formList="formData" v-model="listQuery" ref="elform">
|
||||||
|
</FormMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { qcckPost, qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
|
import { IdCard } from '@/utils/validate.js'
|
||||||
|
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, watch } from "vue";
|
||||||
|
import AddFrom from "../components/addFrom.vue";
|
||||||
|
const emit = defineEmits(["updateDate"]);
|
||||||
|
const props = defineProps({
|
||||||
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const dialogForm = ref(false); //弹窗
|
||||||
|
const formData = ref([])
|
||||||
|
watch(() => props.dict, (res) => {
|
||||||
|
if (res) {
|
||||||
|
formData.value = [
|
||||||
|
{ label: "预警人姓名", prop: "yjRyxm", type: "input" },
|
||||||
|
{ label: "身份证号", prop: "yjRysfzh", type: "input" },
|
||||||
|
{ label: "电话", prop: "yjRysjh", type: "input" },
|
||||||
|
{ label: "年龄", prop: "nl", type: "input" },
|
||||||
|
{ label: "性别", prop: "xb", type: "input" },
|
||||||
|
{ label: "相似度", prop: "xsd", type: "input" },
|
||||||
|
{ label: "预警时间", prop: "yjSj", type: "input" },
|
||||||
|
{ label: "籍贯", prop: "yjRyhjjg", type: "input" },
|
||||||
|
{ label: "预警次数", prop: "yjJrcs", type: "input" },
|
||||||
|
{ label: "预警标签", prop: "yjbqmc", type: "input" },
|
||||||
|
{ label: "所属部门", prop: "ssbm", type: "input" },
|
||||||
|
{ label: "所属县局", prop: "ssxgaj", type: "input" },
|
||||||
|
{ label: "所属市局", prop: "sssgaj", type: "input" },
|
||||||
|
{ label: "预警来源", prop: "yjLylx", type: "select", options: props.dict.D_BZ_YJLY },
|
||||||
|
{ label: "预警级别", prop: "yjJb", type: "select", options: props.dict.D_BZ_YJJB },
|
||||||
|
{ label: "预警类型", prop: "yjLx", type: "select", options: props.dict.D_BZ_YJLX },
|
||||||
|
{ label: "预警地址", prop: "yjDz", type: "input", type: "textarea" },
|
||||||
|
{ label: "预警内容", prop: "yjNr", type: "input", type: "textarea" },
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// { label: "组合大类", prop: "sfdlmc", type: "input" },
|
||||||
|
// { label: "组合小类", prop: "sfzlmc", type: "input" },
|
||||||
|
// { label: "组合预警次数", prop: "sfcs", type: "input", lx: "number" },
|
||||||
|
|
||||||
|
// { label: "预警分值", prop: "sffz", type: "input", lx: "number" },
|
||||||
|
// { label: "处置状态", prop: "czzt", type: "select", options: props.dict.D_GSXT_YJXX_CZZT },
|
||||||
|
|
||||||
|
// { label: "接警员姓名", prop: "jjyxm", type: "input" },
|
||||||
|
// { label: "预警内容", prop: "yjNr", type: "textarea", width: "100%" },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}, { deep: true, immediate: true })
|
||||||
|
const listQuery = ref({}); //表单
|
||||||
|
const loading = ref(false);
|
||||||
|
const elform = ref();
|
||||||
|
const title = ref("详情");
|
||||||
|
|
||||||
|
const init = (row) => {
|
||||||
|
dialogForm.value = true;
|
||||||
|
qcckGet({}, `/mosty-gsxt/tbYjxx/getInfo/${row.id}`).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
|
||||||
|
listQuery.value = {
|
||||||
|
...res,
|
||||||
|
nl: IdCard(res.yjRysfzh, 3) || "",
|
||||||
|
xb: IdCard(res.yjRysfzh, 2) || "",
|
||||||
|
xsd: res.xsd + '%'
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
// yjzxZhyjSelectList(row.id).then(res => {
|
||||||
|
// listQuery.value = {
|
||||||
|
// ...res,
|
||||||
|
// // nl: IdCard(res.yjRysfzh, 3) || "",
|
||||||
|
// // xb: IdCard(res.yjRysfzh, 2) || "",
|
||||||
|
// xsd: res.xsd + '%'
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
};
|
||||||
|
// 关闭
|
||||||
|
const close = () => {
|
||||||
|
listQuery.value = {};
|
||||||
|
loading.value = false;
|
||||||
|
dialogForm.value = false;
|
||||||
|
listQuery.value = {}
|
||||||
|
};
|
||||||
|
|
||||||
|
defineExpose({ init });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.el-form-item__content {
|
||||||
|
align-items: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog title="处置建议" v-model="visible" width="50%" v-if="visible" @close="closeHndle">
|
||||||
|
<el-form :model="form" ref="formRef" :rules="rules" label-width="120px" >
|
||||||
|
<el-form-item label="处置建议" prop="jynr">
|
||||||
|
<el-input v-model="form.jynr" placeholder="请输入处置建议" type="textarea"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="flex just-center">
|
||||||
|
<el-button type="primary" @click="okSubmit">确定</el-button>
|
||||||
|
<el-button @click="closeHndle">返回</el-button>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import { ref , defineExpose} from 'vue'
|
||||||
|
const emit = defineEmits(['okSubmit'])
|
||||||
|
const visible = ref(false)
|
||||||
|
const formRef = ref()
|
||||||
|
const form = ref({})
|
||||||
|
const rules = ref({
|
||||||
|
jynr: [
|
||||||
|
{ required: true, message: '请输入处置建议', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
const init = (row) => {
|
||||||
|
visible.value = true;
|
||||||
|
form.value.yjid = row.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
const closeHndle = () => {
|
||||||
|
visible.value = false;
|
||||||
|
form.value = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
const okSubmit = async () => {
|
||||||
|
await formRef.value.validate((valid) => {
|
||||||
|
if (!valid) return;
|
||||||
|
let params = {...form.value , lylx:'04'}
|
||||||
|
qcckPost(params,'/mosty-gsxt/yjxx/czjy/insert').then((res) => {
|
||||||
|
emit('okSubmit', {...form.value})
|
||||||
|
closeHndle()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :title="`组合预警次数详情(${pageData.tableData.length})`" v-model="dialogVisible" width="60%">
|
||||||
|
<MyTable
|
||||||
|
:tableData="pageData.tableData"
|
||||||
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
>
|
||||||
|
</MyTable>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import { ref , reactive , defineExpose} from 'vue'
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [{jqbh:'JQBH-43',bjr:'张三',bjrdh:'15665255545',bjrsfzh:'510156565656525565',yjnr:'xxxxxxxxx',jsj:'2023-08-24 15:00:00'}], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
loading: false,
|
||||||
|
haveControls: false,
|
||||||
|
},
|
||||||
|
tableHeight:600,
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "警情编号", prop: "jjdbh"},
|
||||||
|
{ label: "报警人", prop: "bjrmc" },
|
||||||
|
{ label: "报警人电话", prop: "bjdh" },
|
||||||
|
{ label: "报警人身份证", prop: "bjrzjhm"},
|
||||||
|
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "报警时间", prop: "bjsj", showOverflowTooltip: true },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
const init = (row) => {
|
||||||
|
dialogVisible.value = true;
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
pageData.tableData = []
|
||||||
|
qcckGet({yjid:row.id},'/mosty-gsxt/yjzxZhyjxq/getPageList').then((res)=>{
|
||||||
|
pageData.tableData = res || [];
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(()=>{
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
init
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -0,0 +1,376 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="titleBox">
|
||||||
|
<PageTitle title="区域布控预警">
|
||||||
|
<!-- <el-button>
|
||||||
|
<span style="vertical-align: middle">导出</span>
|
||||||
|
</el-button> -->
|
||||||
|
<el-button type="success" @click="openSearch">
|
||||||
|
<Search style="width: 1em; height: 1em; margin-right: 8px" />
|
||||||
|
<span style="vertical-align: middle" v-if="!search">搜索</span>
|
||||||
|
<span style="vertical-align: middle" v-else>关闭搜索</span>
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" @click="exportExl">导出</el-button>
|
||||||
|
</PageTitle>
|
||||||
|
</div>
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox" v-if="search">
|
||||||
|
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
|
||||||
|
<template #jfd>
|
||||||
|
<div>
|
||||||
|
<el-input v-model="queryFrom.ksfz" type="number" placeholder="开始身份分值" style="width: 130px"></el-input>
|
||||||
|
<span style="color: #333;margin: 0 4px;">至</span>
|
||||||
|
<el-input v-model="queryFrom.jsfz" type="number" placeholder="结束身份分值" style="width: 130px"></el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Searchs>
|
||||||
|
</div>
|
||||||
|
<!-- 表格 -->
|
||||||
|
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||||
|
:expand="true" @chooseData="handleChooseData">
|
||||||
|
<template #xsd="{ row }">
|
||||||
|
{{ `${row.xsd}%` }}
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<DictTag :value="row.yjJb" :tag="false" :color="bqYs(row.yjJb)" :options="D_BZ_YJJB" />
|
||||||
|
</template>
|
||||||
|
<template #yjLylx="{ row }">
|
||||||
|
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
|
||||||
|
</template>
|
||||||
|
<template #expand="{ props }">
|
||||||
|
<div class="expand-content" style="max-width: 100%; max-height: 400px; overflow-y: auto; padding: 10px;">
|
||||||
|
<Items :row="props || {}" :dict="dict" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link>
|
||||||
|
<el-link type="success" @click="handleQsFk(row, '反馈')"
|
||||||
|
v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link>
|
||||||
|
<el-link type="primary" @click="openAddModel(row)">详情</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"></Pages>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Detail ref="detailRef" />
|
||||||
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||||
|
<FkDialog @change="getList" lx="04" />
|
||||||
|
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
||||||
|
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
||||||
|
:tacitly="tacitly" />
|
||||||
|
</Information>
|
||||||
|
<AddFrom ref="addModelRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }" />
|
||||||
|
<!-- 处置建议 -->
|
||||||
|
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
|
||||||
|
|
||||||
|
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz"
|
||||||
|
:roleIds="roleIds" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import Czjy from './components/czjy.vue'
|
||||||
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
|
import Searchs from "@/components/aboutTable/Search.vue";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import Items from "./item/items.vue";
|
||||||
|
import ChooseJf from '@/components/ChooseList/ChooseJf/index.vue'
|
||||||
|
import { tbYjxxGetZbtj, tbGsxtBqzhSelectList, yjzxZhyjSelectList } from '@/api/yj.js'
|
||||||
|
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
||||||
|
import Information from "@/views/home/model/information.vue";
|
||||||
|
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||||
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
|
import AddFrom from "./components/addFrom.vue";
|
||||||
|
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import Detail from './components/detail.vue'
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
const permission_sfqs = ref(false)
|
||||||
|
const roleCode = ref(false)
|
||||||
|
const searchBox = ref();
|
||||||
|
const czjyRef = ref()
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_GSXT_YJXX_CZZT, D_GS_SSYJ, D_BZ_YJJB, D_BZ_YJLY, D_BZ_YJLX } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_GS_SSYJ", "D_BZ_YJJB", "D_BZ_YJLY", "D_BZ_YJLX");
|
||||||
|
|
||||||
|
// 字典数据集合
|
||||||
|
const dict = ref({
|
||||||
|
D_GS_SSYJ,
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_BZ_YJLY,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_BZ_YJLX
|
||||||
|
})
|
||||||
|
import { holographicProfileJump } from "@/utils/tools.js"
|
||||||
|
|
||||||
|
// 搜索配置
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input" },
|
||||||
|
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
|
||||||
|
{ label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" },
|
||||||
|
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
|
||||||
|
{ label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
|
||||||
|
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const queryFrom = ref({});
|
||||||
|
|
||||||
|
// 页面数据
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [{ sfcs: 1 }],
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "checkBox",
|
||||||
|
loading: false,
|
||||||
|
haveControls: true,
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
},
|
||||||
|
controlsWidth: 200,
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "预警人姓名", prop: "yjRyxm" },
|
||||||
|
{ label: "相似度", prop: "xsd", showSolt: true },
|
||||||
|
{ label: "预警时间", prop: "yjSj", width: 200 },
|
||||||
|
{ label: "预警标签", prop: "yjbqmc" },
|
||||||
|
{ label: "身份证号", prop: "yjRysfzh", width: 200 },
|
||||||
|
{ label: "预警来源", prop: "yjLylx", showSolt: true },
|
||||||
|
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
|
{ label: "车牌号", prop: "yjClcph" },
|
||||||
|
{ label: "布控区域名称", prop: "bkqymc" },
|
||||||
|
{ label: "所属部门", prop: "ssbm" },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : ''
|
||||||
|
// permission_sfqs.value = str.startsWith('2'||'3') ? false : true;
|
||||||
|
|
||||||
|
// let rols = getItem('roleList') ? getItem('roleList'):[]
|
||||||
|
// let obj = rols.find(item => {
|
||||||
|
// return ['JS_666666','JS_777777','JS_888888'].includes(item.roleCode)
|
||||||
|
// })
|
||||||
|
// roleCode.value = obj ? true : false;
|
||||||
|
tabHeightFn();
|
||||||
|
getList();
|
||||||
|
gettbGsxtBqglSelectList()
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const handleCzjy = (row) => {
|
||||||
|
czjyRef.value.init(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = { ...queryFrom.value, ...val };
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const reset = () => {
|
||||||
|
delete queryFrom.value.ksfz
|
||||||
|
delete queryFrom.value.jsfz
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeNo = (val) => {
|
||||||
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const changeSize = (val) => {
|
||||||
|
pageData.pageConfiger.pageSize = val;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const getList = () => {
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
// TODO: 替换为实际的组合预警API接口
|
||||||
|
const promes = {
|
||||||
|
...queryFrom.value,
|
||||||
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
|
pageSize: pageData.pageConfiger.pageSize
|
||||||
|
}
|
||||||
|
qcckPost({ promes }, "/mosty-gsxt/tbYjxx/getQybkPageList").then((res) => {
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
pageData.total = res.total || 0;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const bqYs = (val) => {
|
||||||
|
if (val == '01') {
|
||||||
|
return '#ff0202'
|
||||||
|
} else if (val == '02') {
|
||||||
|
return '#ff8c00'
|
||||||
|
} else if (val == '03') {
|
||||||
|
return '#e6a23c'
|
||||||
|
} else if (val == '04') {
|
||||||
|
return '#0000ff'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const bqLbData = ref({
|
||||||
|
bqXl: []
|
||||||
|
})
|
||||||
|
const gettbGsxtBqglSelectList = (val) => {
|
||||||
|
tbGsxtBqzhSelectList({}).then((res) => {
|
||||||
|
bqLbData.value.bqXl = res.map(item => {
|
||||||
|
return {
|
||||||
|
label: item.bqMc,
|
||||||
|
value: item.bqDm
|
||||||
|
}
|
||||||
|
}) || []
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 查看详情
|
||||||
|
const detailRef = ref()
|
||||||
|
const handleClick = (row) => {
|
||||||
|
detailRef.value.init(row)
|
||||||
|
}
|
||||||
|
const assessShow = ref(false)
|
||||||
|
/** 选中项 */
|
||||||
|
const selectRows = ref([])
|
||||||
|
const dataList = ref()
|
||||||
|
const pushAssess = (val) => {
|
||||||
|
return holographicProfileJump(val.yjlx, val) // 全息档案跳转
|
||||||
|
// assessShow.value = true;
|
||||||
|
// dataList.value = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 发送指令
|
||||||
|
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 closeFszl = () => {
|
||||||
|
semdFqzlRef.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理签收
|
||||||
|
const handleQsFk = (val, type) => {
|
||||||
|
switch (type) {
|
||||||
|
case '签收':
|
||||||
|
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||||
|
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxZhyj/yjqs").then(() => {
|
||||||
|
val.czzt = '02'
|
||||||
|
getList()
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case '反馈':
|
||||||
|
case '查看反馈':
|
||||||
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
const addModelRef = ref(null)
|
||||||
|
const openAddModel = (row) => {
|
||||||
|
console.log(row);
|
||||||
|
|
||||||
|
addModelRef.value.init(row)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 选择系数
|
||||||
|
const chooseJfShow = ref(false)
|
||||||
|
const chooseJfBh = ref()
|
||||||
|
const roleIds = ref()
|
||||||
|
const chooseJfFun = (val) => {
|
||||||
|
chooseJfBh.value = val.id
|
||||||
|
yjzxZhyjSelectList(val.id).then(res => {
|
||||||
|
roleIds.value = res.sjxspzList.map(item => item.xsid)
|
||||||
|
chooseJfShow.value = true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 搜索栏
|
||||||
|
const search = ref(false)
|
||||||
|
const openSearch = () => {
|
||||||
|
search.value = !search.value
|
||||||
|
nextTick(() => {
|
||||||
|
tabHeightFn()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
if (search.value) {
|
||||||
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
||||||
|
} else {
|
||||||
|
pageData.tableHeight = window.innerHeight - 250;
|
||||||
|
}
|
||||||
|
window.onresize = function () {
|
||||||
|
tabHeightFn();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const handleChooseData = (val) => {
|
||||||
|
selectRows.value = val
|
||||||
|
}
|
||||||
|
const exportExl = () => {
|
||||||
|
|
||||||
|
const titleObj = {
|
||||||
|
yjRyxm: "姓名",
|
||||||
|
yjRysfzh: "身份证号",
|
||||||
|
yjRysjh: "电话",
|
||||||
|
xsd: "相似度",
|
||||||
|
yjJrcs: "预警次数",
|
||||||
|
yjLx: "预警类型",
|
||||||
|
yjLylx: "预警来源",
|
||||||
|
yjJb: " 预警级别",
|
||||||
|
yjbqmc: "预警标签",
|
||||||
|
yjSj: "预警时间",
|
||||||
|
czzt_cname: "处置状态",
|
||||||
|
ssbm: "所属部门",
|
||||||
|
}
|
||||||
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
|
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
||||||
|
const data = needArr.map(item => {
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
bqys_cname: getMultiDictVal(item.yjLx, D_BZ_YJLX),
|
||||||
|
czzt_cname: getMultiDictVal(item.yjLylx, D_BZ_YJLY),
|
||||||
|
bqys_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||||
|
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
exportExlByObj(titleObj, data, '组合预警')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.el-loading-mask {
|
||||||
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
<template>
|
||||||
|
<div class="warning-item">
|
||||||
|
<div class="second-row">
|
||||||
|
<div class="info-item">姓名:<span>{{ row.xm }}</span></div>
|
||||||
|
<div class="info-item">身份证号:<span>{{ row.sfzh }}</span></div>
|
||||||
|
<div class="info-item">电话:<span>{{ row.dh }}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="second-row">
|
||||||
|
<div class="info-item">组合大类:<span>{{ row.sfdlmc }}</span></div>
|
||||||
|
<div class="info-item">组合小类:<span>{{ row.sfzlmc }}</span></div>
|
||||||
|
<div class="info-item">组合次数:<span>{{ row.sfcs }}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="second-row">
|
||||||
|
<div class="info-item">
|
||||||
|
标签颜色:<DictTag v-model:value="row.bqys" :options="props.dict.D_GS_SSYJ" />
|
||||||
|
</div>
|
||||||
|
<div class="info-item">预警时间:<span>{{ row.yjsj }}</span></div>
|
||||||
|
<div class="info-item">预警分值:<span>{{ row.sffz }}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="second-row">
|
||||||
|
<div class="info-item">
|
||||||
|
处置状态:<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
|
||||||
|
</div>
|
||||||
|
<div class="info-item">所属县局:<span>{{ row.ssbm }}</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
/** 表格行数据 */
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({
|
||||||
|
D_GS_SSYJ: [],
|
||||||
|
D_GSXT_YJXX_CZZT: []
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.warning-item {
|
||||||
|
width: 100%;
|
||||||
|
padding: 15px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.second-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item {
|
||||||
|
flex: 0 0 calc(33.33% - 20px);
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
padding: 5px 0;
|
||||||
|
color: #333;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-weight: 500;
|
||||||
|
color: #606266;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,124 @@
|
|||||||
|
<template>
|
||||||
|
<div class="warning-item">
|
||||||
|
|
||||||
|
<el-divider content-position="left">处置建议</el-divider>
|
||||||
|
<div class="item-row">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="text">预警人姓名:{{ list.yjRyxm }}</span>
|
||||||
|
<span class="text"> 预警人员手机号:{{ list.yjRysjh }}</span>
|
||||||
|
<span class="text"> 身份证号码:{{ list.yjRysfzh }}</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="text">相似度:{{ list.xsd }}%</span>
|
||||||
|
<span class="text">预警时间:{{ list.yjSj }}</span>
|
||||||
|
<span class="text">籍贯:{{ list.yjRyhjjg }}</span>
|
||||||
|
<span class="text">预警次数:{{ list.yjJrcs }}</span>
|
||||||
|
<span class="text">预警标签:{{ list.yjbqmc }}</span>
|
||||||
|
<span class="text">所属部门:{{ list.ssbm }}</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="info-item flex">
|
||||||
|
<span class="text flex">预警类型:
|
||||||
|
<DictTag :value="list.yjLx" :options="dict.D_BZ_YJLX" />
|
||||||
|
</span>
|
||||||
|
<span class="text flex">预警来源:
|
||||||
|
<DictTag :value="list.yjLylx" :options="dict.D_BZ_YJLY" />
|
||||||
|
</span>
|
||||||
|
<span class="text flex"> 预警级别:
|
||||||
|
<DictTag :value="list.yjJb" :options="dict.D_BZ_YJJB" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="text"> 预警地址:{{ list.yjDz }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">预警内容:<span>{{ list.yjNr || '暂无' }}</span></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-divider content-position="left">反馈内容</el-divider>
|
||||||
|
<div class="item-row" v-for="(it, idx) in Fklist" :key="idx">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="text">处置地址:{{ it.czdz }}</span>
|
||||||
|
<span class="text">处置时间:{{ it.czsj }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="text">常控不尿检理由:<span>{{ it.ckbnjly || '暂无' }}</span></span>
|
||||||
|
<span class="text">常控处置反馈补充信息:<span>{{ it.ckczbcxx || '暂无' }}</span></span>
|
||||||
|
<span class="text">常控立线侦察评估:<span>{{ it.cklxzcpg || '暂无' }}</span></span>
|
||||||
|
<span class="text">常控立线侦察评估依据:<span>{{ it.cklxzcpgyj || '暂无' }}</span></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-empty v-if="Fklist.length === 0" description="暂无数据" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed, onMounted } from 'vue'
|
||||||
|
import { qcckPost, qcckGet } from "@/api/qcckApi.js";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
/** 表格行数据 */
|
||||||
|
row: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({
|
||||||
|
D_GS_SSYJ: [],
|
||||||
|
D_GSXT_YJXX_CZZT: []
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const list = ref({})
|
||||||
|
const Fklist = ref([])
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
if (!props.row.id) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
qcckGet({}, `/mosty-gsxt/tbYjxx/getInfo/${props.row.id}`).then((res) => {
|
||||||
|
list.value = res || {}
|
||||||
|
console.log('list: ', list.value);
|
||||||
|
|
||||||
|
})
|
||||||
|
qcckGet({}, '/mosty-gsxt/yjzxZhyj/' + props.row.id).then((res) => {
|
||||||
|
Fklist.value = res.fkList || []
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// console.log('row😃: ', props.row);
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.warning-item {
|
||||||
|
width: 100%;
|
||||||
|
padding: 15px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-row {
|
||||||
|
border-bottom: 1px dashed #e8e8e8;
|
||||||
|
line-height: 36px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item {
|
||||||
|
line-height: 36px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
display: inline-block;
|
||||||
|
width: 25%;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -33,6 +33,9 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #xsd="{ row }">
|
<template #xsd="{ row }">
|
||||||
{{ row.xsd }}%
|
{{ row.xsd }}%
|
||||||
|
</template>
|
||||||
|
<template #yjLylx="{ row }">
|
||||||
|
<DictTag v-model:value="row.yjLylx" :options="props.dict.D_BZ_YJLY" />
|
||||||
</template>
|
</template>
|
||||||
<template #czzt="{ row }">
|
<template #czzt="{ row }">
|
||||||
<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
|
<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
|
||||||
@ -140,7 +143,7 @@ const pageData = reactive({
|
|||||||
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true, width: 200 },
|
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true, width: 200 },
|
||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true, width: 80 },
|
{ label: "年龄", prop: "nl", showSolt: true, width: 80 },
|
||||||
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true },
|
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: true },
|
||||||
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
|
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
|
||||||
// { label: "预警级别", prop: "yjJb", showSolt: true },
|
// { label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
{ label: "相似度", prop: "xsd", showSolt: true },
|
{ label: "相似度", prop: "xsd", showSolt: true },
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }">
|
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }">
|
||||||
<!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
|
<!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
|
||||||
<LocalWarning :maxHeight="search ? (pageData.tableHeight - 160) : (pageData.tableHeight - 110)"
|
<LocalWarning :maxHeight="search ? (pageData.tableHeight - 160) : (pageData.tableHeight - 110)"
|
||||||
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT }" :search="search" excelTitle="人像预警" />
|
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT,D_BZ_YJLY }" :search="search" excelTitle="人像预警" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="showDc" title="导出预警" width="80%">
|
<el-dialog v-model="showDc" title="导出预警" width="80%">
|
||||||
@ -70,7 +70,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #sxd="{ row }"> {{ row.sxd }}% </template>
|
<template #sxd="{ row }"> {{ row.sxd }}% </template>
|
||||||
<template #yjLylx="{ row }">
|
<template #yjLylx="{ row }">
|
||||||
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLYXT" />
|
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" />
|
||||||
</template>
|
</template>
|
||||||
<template #xb="{ row }">
|
<template #xb="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 2) }}
|
{{ IdCard(row.yjRysfzh, 2) }}
|
||||||
@ -112,7 +112,7 @@ import * as XLSX from "xlsx";
|
|||||||
|
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLYXT")
|
const { D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT,D_BZ_YJLY } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLYXT","D_BZ_YJLY")
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const shortcuts = [
|
const shortcuts = [
|
||||||
{
|
{
|
||||||
@ -170,13 +170,13 @@ const pageData = reactive({
|
|||||||
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true },
|
{ label: "年龄", prop: "nl", showSolt: true },
|
||||||
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true },
|
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true,showSolt:D_BZ_YJLY },
|
||||||
{ label: "性别", prop: "xb", showSolt: true },
|
{ label: "性别", prop: "xb", showSolt: true },
|
||||||
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
|
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
|
||||||
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
|
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
|
||||||
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
|
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
|
||||||
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
|
// { label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
|
||||||
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
|
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|||||||
@ -34,6 +34,9 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #xsd="{ row }">
|
<template #xsd="{ row }">
|
||||||
{{ row.xsd }}%
|
{{ row.xsd }}%
|
||||||
|
</template>
|
||||||
|
<template #yjLylx="{ row }">
|
||||||
|
<DictTag v-model:value="row.yjLylx" :options="props.dict.D_BZ_YJLY" />
|
||||||
</template>
|
</template>
|
||||||
<template #czzt="{ row }">
|
<template #czzt="{ row }">
|
||||||
<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
|
<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
|
||||||
|
|||||||
@ -40,7 +40,7 @@
|
|||||||
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }">
|
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }">
|
||||||
<!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
|
<!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
|
||||||
<LocalWarning :maxHeight="search ? (pageData.tableHeight - 160) : (pageData.tableHeight - 110)"
|
<LocalWarning :maxHeight="search ? (pageData.tableHeight - 160) : (pageData.tableHeight - 110)"
|
||||||
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT }" :search="search" excelTitle="车辆预警" />
|
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT ,D_BZ_YJLY}" :search="search" excelTitle="车辆预警" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="showDc" title="导出预警" width="80%">
|
<el-dialog v-model="showDc" title="导出预警" width="80%">
|
||||||
@ -64,7 +64,7 @@
|
|||||||
{{ IdCard(row.yjRysfzh, 3) }}
|
{{ IdCard(row.yjRysfzh, 3) }}
|
||||||
</template>
|
</template>
|
||||||
<template #yjLylx="{ row }">
|
<template #yjLylx="{ row }">
|
||||||
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLYXT" />
|
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" />
|
||||||
</template>
|
</template>
|
||||||
<template #xb="{ row }">
|
<template #xb="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 2) }}
|
{{ IdCard(row.yjRysfzh, 2) }}
|
||||||
@ -107,7 +107,7 @@ import FileSaver from "file-saver";
|
|||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import * as XLSX from "xlsx";
|
import * as XLSX from "xlsx";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLYXT")
|
const { D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLY } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLY")
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const shortcuts = [
|
const shortcuts = [
|
||||||
{
|
{
|
||||||
@ -162,7 +162,7 @@ const pageData = reactive({
|
|||||||
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
|
||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true },
|
{ label: "年龄", prop: "nl", showSolt: true },
|
||||||
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true },
|
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true , showSolt: true },
|
||||||
{ label: "性别", prop: "xb", showSolt: true },
|
{ label: "性别", prop: "xb", showSolt: true },
|
||||||
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
{ label: "相似度", prop: "xsd", showSolt: true },
|
{ label: "相似度", prop: "xsd", showSolt: true },
|
||||||
|
|||||||
Reference in New Issue
Block a user