Commit 43f29682 by gao_yingdong

团伙关系分析可视化

parent 30cae916
......@@ -94,6 +94,30 @@
</div>
<div
class="zdyInputW zdyInputCol2"
v-else-if="item.type == 'zdyDateTh'"
>
<el-date-picker
v-model="formData[item.id]"
type="date"
align="right"
:picker-options="item.pickerOptions"
unlink-panels
value-format="yyyy-MM-dd"
>
</el-date-picker>
<el-date-picker
v-model="formData[item.id2]"
type="date"
align="right"
:picker-options="item.pickerOptions2"
unlink-panels
value-format="yyyy-MM-dd"
>
</el-date-picker>
</div>
<div
class="zdyInputW zdyInputCol2"
v-else-if="item.type == 'zdyDates'"
>
<el-date-picker
......@@ -541,6 +565,7 @@
pageBs != 'queryXslb' &&
pageBs != 'queryWysp' &&
pageBs != 'queryQtypfx' &&
pageBs != 'queryShseTh' &&
pageBs != 'queryRole'
"
>
......@@ -571,6 +596,14 @@
>
<i class="el-icon-plus"></i> 新增
</div>
<div
class="btsz"
@click="centerDialogVisible = true"
v-if="pageBs == 'queryDwxnpg'"
>
<i class="el-icon-setting pzhIcon" title="可配置化列表"></i
>表头设置
</div>
<!-- <div
class="flTtitle Add"
@click="InviteUsers"
......@@ -1616,6 +1649,7 @@
pageBs == 'queryRole' ||
pageBs == 'queryQtypfx' ||
pageBs == 'queryMbxx' ||
pageBs == 'queryShseTh' ||
pageBs == 'queryRole'
)
"
......@@ -1828,6 +1862,7 @@
pageBs != 'queryQtypfx' &&
pageBs != 'queryWysp' &&
pageBs != 'queryRole' &&
pageBs != 'queryShseTh' &&
pageBs != 'queryMbxx'
"
>删除</span
......@@ -2250,6 +2285,37 @@
>
</el-pagination>
</div>
<!-- 表头设置 界面 -->
<el-dialog
title="配置表格表头字段"
:visible.sync="centerDialogVisible"
width="480px"
custom-class="zdyTheadDialog"
center
>
<span>
<!--可配置项-->
<div class="filter-container">
<el-checkbox-group v-model="selectedPropdefaultCheckedThead_">
<el-checkbox
v-for="item in selectedPropAllformThead_"
:key="item.label"
:label="item.label"
>
{{ item.label }}
</el-checkbox>
</el-checkbox-group>
</div>
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false" size="mini"
>取 消</el-button
>
<el-button type="primary" size="mini" @click="handleCheckedChange"
>确 定</el-button
>
</span>
</el-dialog>
<el-dialog title="详情信息" :visible.sync="dialogTableVisible" width="70%">
<div class="bqdetail" v-for="(item, index) in bqShuju" :key="index">
<div
......@@ -2373,6 +2439,16 @@ export default {
type: Array,
default: () => [],
},
//所有表头
selectedPropAllformThead: {
type: Array,
default: () => [],
},
//表头设置里的默认项
selectedPropdefaultCheckedThead: {
type: Array,
default: () => [],
},
listOperation: {
type: Array,
default: () => [],
......@@ -2389,6 +2465,11 @@ export default {
},
data() {
return {
selectedPropdefaultCheckedThead_: [],
selectedPropAllformThead_: [],
// selectedPropdefaultFormThead_: [],
addBtszList: [],
centerDialogVisible: false,
yqyhz: {},
sfkjs: "",
toggleZd: false,
......@@ -2486,6 +2567,29 @@ export default {
};
},
methods: {
handleCheckedChange() {
this.handleList();
},
handleList() {
let _this = this,
newObj = [];
_this.centerDialogVisible = false;
//遍历表头里的所有数据
_this.selectedPropAllformThead_.forEach((val) => {
if (_this.selectedPropdefaultCheckedThead_.includes(val.label)) {
_this.$set(newObj, newObj.length, val);
//includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
}
});
debugger;
_this.propdefaultFormThead = [];
_this.$set(_this.propdefaultFormThead, 0, newObj); //将所有默认传过来的表格清空,匹配到的赋值
_this.propdefaultFormThead = _this.selectedPropAllformThead_.filter(
(i) => _this.selectedPropdefaultCheckedThead_.indexOf(i.label) >= 0
//方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
//indexOf() 方法可返回数组中某个指定的元素位置。
);
},
getSplit(dt) {
return dt.split(",");
},
......@@ -3710,6 +3814,30 @@ export default {
},
computed: {},
watch: {
cxDefaultFormThead: {
handler(newfaultFormThead, oldName) {
this.propdefaultFormThead = JSON.parse(
JSON.stringify(newfaultFormThead)
);
},
immediate: true,
},
selectedPropdefaultCheckedThead: {
handler(newfaultCheckedThead, oldName) {
this.selectedPropdefaultCheckedThead_ = JSON.parse(
JSON.stringify(newfaultCheckedThead)
);
},
immediate: true,
},
selectedPropAllformThead: {
handler(newAllformThead, oldName) {
this.selectedPropAllformThead_ = JSON.parse(
JSON.stringify(newAllformThead)
);
},
immediate: true,
},
"cxFormData.asjbzzt"(val, old) {
if (val != old) {
this.doQuery("yes");
......@@ -3827,6 +3955,9 @@ export default {
}
</style>
<style scoped lang="scss">
.btsz {
color: #0061f7;
}
.el-input-number {
position: relative;
display: inline-block;
......
import menuLayout from "@/layout/menuLayout.vue";
const menuLayouts = [
// 旧的单位效能评估
// {
// path: "/queryDwxnpg",
// name: "queryDwxnpg",
// meta: {
// title: '单位效能评估',
// auth: '5'
// },
// component: () => import("@/views/sf/queryDwxnpg.vue")
// },
{
path: "/queryDwxnpg",
name: "queryDwxnpg",
......@@ -7,7 +17,16 @@ const menuLayouts = [
title: '单位效能评估',
auth: '5'
},
component: () => import("@/views/sf/queryDwxnpg.vue")
component: () => import("@/views/xnpgbg/dwxnpg.vue")
},
{
path: "/queryGrxnpg",
name: "queryGrxnpg",
meta: {
title: '个人效能评估',
auth: '5'
},
component: () => import("@/views/xnpgbg/grxnpg.vue")
},
];
......
......@@ -32,6 +32,14 @@ const menuLayouts = [
},
component: () => import("@/views/shse/shsexs/queryXsxx.vue")
},
{
path: "/queryShseTh",
name: "queryShseTh",
meta: {
title: '涉黑涉恶线索信息管理'
},
component: () => import("@/views/shse/shseTh/queryShseTh.vue")
},
];
......
......@@ -462,6 +462,14 @@ export default {
hasChildren: false,
},
{
id: "queryShseTh",
label: "团伙关系分析",
newAuth: "M0105",
index: "queryShseTh",
className: "iconfont icongongnengfuwu",
hasChildren: false,
},
{
id: "queryXsxx",
label: "线索信息管理",
newAuth: "M0104",
......@@ -751,7 +759,7 @@ export default {
} else {
ajfl = "AjXx";
}
debugger
debugger;
var userInfo = JSON.parse(sessionStorage.getItem("userInfo"));
var idcard = userInfo.identitycard;
var params = {
......
<template>
<div class="Content">
<right-content
:pageBs="pageBs"
:header="header"
:cxFormData="cxFormData"
:cxQueryField="cxQueryField"
:cxDefaultFormThead="cxDefaultFormThead"
:cxUrl="cxUrl"
ref="rightContent"
>
<template #listOperation="scope">
<span class="hbyps" @click="thDc(scope.scope)">
<i class="el-icon-download"></i>导出</span
>
</template>
<template #btnGroup="scope">
<span class="hbyp" @click="toThfxKsh(scope.scope)">可视化分析</span>
</template>
</right-content>
</div>
</template>
<script>
import rightContent from "@c/ptCxForm_components.vue";
import { get, post, postform } from "@/utils/http.js";
export default {
name: "queryShseTh",
components: {
rightContent,
},
data() {
return {
header: "侦查",
pageBs: "queryShseTh",
cxFormData: {
rows: 10,
page: 1,
ajmc: "",
zjhm: "",
ryxm: "",
ladwdm: "",
ajlbdm: "",
hjd: "",
startDate: this.$moment().subtract(1, "year").format("YYYY-MM-DD"),
endDate: this.$moment().format("YYYY-MM-DD"),
ajlx: "00",
},
cxQueryField: [
{
name: "案件名称",
id: "ajmc",
type: "text",
value: "",
placeholder: "请输入",
col: "3",
},
{
name: "身份证号",
id: "zjhm",
type: "text",
value: "",
placeholder: "请输入",
col: "3",
},
{
name: "人员姓名",
id: "ryxm",
type: "text",
value: "",
placeholder: "请输入",
col: "3",
},
{
name: "立案单位",
id: "ladwdm",
type: "codeTreeDialog",
props: [], //字典弹框需要的字段
value: "",
col: "3",
codeOptions: [],
codeTree: "CODE_UNIT",
},
{
name: "案件类别",
id: "ajlbdm",
type: "codeTreeDialog",
props: [], //字典弹框需要的字段
value: "",
col: "3",
codeOptions: [],
codeTree: "CODE_AJLB",
},
{
name: "户籍地",
id: "hjd",
type: "codeTreeDialog",
props: [], //字典弹框需要的字段
value: "",
col: "3",
codeOptions: [],
codeTree: "CODE_XZQH",
},
{
name: "立案日期",
id: "startDate",
id2: "endDate",
type: "zdyDateTh",
value: "",
col: "3",
},
{
name: "类型",
id: "ajlx",
type: "radio",
value: "00",
placeholder: "",
col: "4",
radioData: [
{ label: "三人三案", val: "00" },
{ label: "三人两案", val: "01" },
{ label: "两人两案", val: "11" },
{ label: "两人三案", val: "10" },
],
},
],
cxDefaultFormThead: [
{
label: "案件数量",
prop: "ajCount",
},
{
label: "九类案件数量",
prop: "jlajCount",
},
{
label: "嫌疑人数量",
prop: "xyrCount",
},
{
label: "重点关注人员量",
prop: "zdgzyrCount",
},
],
cxUrl: "/getThByParam",
Url: "/apialy/getThByParam",
Menu: [
{
id: "queryShseTh",
label: "团伙关系分析",
index: "queryShseTh",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
],
};
},
created() {
this.$store.commit("user/SET_Menu", this.Menu);
},
methods: {
// 可视化分析
toThfxKsh(scope) {
debugger;
let params = {
id: scope.row.zjhm,
type: "person",
};
let obj = {
childrenXhrStr: "/apiXzxtGaw/getAccompliceById",
photoXhrStr: null,
params: params,
nodedata: {
type: "person",
id: 0,
name: scope.row.zjhm,
children: true,
},
nodeClickBoo: true,
unfoldParams: {
startDate: "startDate",
endDate: "endDate",
id: "name",
// pid: "parentId",
type: 'type',
isXsAj: 'isXsAj',
},
};
sessionStorage.setItem("key", JSON.stringify(obj));
this.$router.pushToTab({
path: "/ypEcharts",
query: {
title: "群体发现分析",
type: "thfxfx",
types: "tonat",
},
});
},
thDc(scope) {
var self = this;
let tHeader = [];
let filterVal = [];
let header = "团伙关系分析";
let params = new FormData();
params.append("rows", "5000");
params.append("page", this.cxFormData.page);
params.append("ajmc", this.cxFormData.ajmc);
params.append("zjhm", this.cxFormData.zjhm);
params.append("ryxm", this.cxFormData.ryxm);
params.append("ladwdm", this.cxFormData.ladwdm);
params.append("ajlbdm", this.cxFormData.ajlbdm);
params.append("hjd", this.cxFormData.hjd);
params.append("startDate", this.cxFormData.startDate);
params.append("endDate", this.cxFormData.endDate);
params.append("ajlx", this.cxFormData.ajlx);
self.cxDefaultFormThead.forEach((val) => {
tHeader.push(val.label);
filterVal.push(val.prop);
});
let loading = this.$loading({
lock: true,
text: "正在导出...",
spinner: "el-icon-loading",
background: "rgba(255, 255, 255, 0.7)",
});
post(this.Url, params).then((res) => {
debugger;
if (res.code === 200) {
require.ensure([], () => {
const { export_json_to_excel } = require("@/utils/Export2Excel");
const list = res.data.rows || res.data;
const data = self.formatJson(filterVal, list);
export_json_to_excel(tHeader, data, header);
});
loading.close();
}
});
},
formatJson(filterVal, jsonData) {
let arr = [];
jsonData.map((v) => {
let arr1 = [];
filterVal.map((j) => {
if (j.indexOf(",") != -1) {
let arr = j.split(",");
let data = "";
for (let i = 0; i <= arr.length - 1; i++) {
data += arr[i].split(":")[0] + ":" + v[arr[i].split(":")[1]];
}
arr1.push(data);
} else {
arr1.push(v[j]);
}
});
arr.push(arr1);
});
return arr;
},
},
watch: {},
};
</script>
<style>
.el-dialog__body {
padding: 10px 15px !important;
}
.rightContent .el-input__inner,
#formCommonPage .el-input__inner {
height: 32px;
line-height: 32px;
font-family: inherit;
}
.el-table__header-wrapper th,
.el-table__header-wrapper tr {
background: #f4f6f7;
}
.rightContent .el-input__icon,
#formCommonPage .el-input__icon,
.el-input__suffix-inner {
line-height: 36px;
}
.rightContent .el-range-separator {
position: relative;
top: -4px;
}
.rightContent .el-textarea__inner,
#formCommonPage .el-textarea__inner {
width: 100%;
font-family: inherit;
}
.rightContent .el-range-input,
#formCommonPage .el-range-input {
vertical-align: top;
}
.rightContent .el-date-editor .el-range__close-icon {
margin-top: -4px;
}
.rightContent .el-form-item__error {
left: calc(66% - 27px);
top: 12px;
}
.success-row {
background-color: #fbf9f4 !important;
}
.Content .el-input,
.Content .el-date-editor--daterange.el-input__inner {
width: 100% !important;
}
</style>
<style scoped lang="scss">
.hbyps {
width: 82px;
height: 24px;
margin-left: 10px;
background: #ffffff;
border: 1px solid #007aff;
opacity: 1;
border-radius: 4px;
text-align: center;
align-items: center;
display: inline-block;
font-size: 12px !important;
font-weight: 400 !important;
color: #007aff !important;
cursor: pointer;
}
.el-form-item {
margin: 15px 0 20px 0;
}
.red {
color: red;
}
.black {
color: black;
}
@import "@/assets/styles/rightContent.scss";
.hbyp {
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: 400;
line-height: 22px;
color: #007aff;
margin-right: 16px;
cursor: pointer;
}
</style>
<template>
<div class="Content">
<right-content
:pageBs="pageBs"
:header="header"
:cxFormData="cxFormData"
:cxQueryField="cxQueryField"
:selectedPropAllformThead="AllformThead"
:selectedPropdefaultCheckedThead="defaultCheckedThead"
:cxDefaultFormThead="cxDefaultFormThead"
:cxUrl="cxUrl"
@toInfor="toInfor"
ref="rightContent"
>
</right-content>
</div>
</template>
<script>
import rightContent from "@c/ptCxForm_components.vue";
export default {
name: "queryGrxnpg",
components: {
rightContent,
},
data() {
return {
header: "单位效能评估",
pageBs: "queryDwxnpg",
cxFormData: {
limit: 10,
page: 1,
},
cxQueryField: [
{
name: "研判任务分类",
id: "yprwfldm",
type: "codeTreeDialog",
props: [], //字典弹框需要的字段
value: "",
col: "3",
codeOptions: [],
codeTree: "CODE_YPRWFLDM",
},
{
name: "截止日期",
id: "jzrqStart",
id2: "jzrqEnd",
type: "zdyDate",
value: "",
col: "3",
},
{
name: "是否分配",
id: "sffpPdbz",
type: "radio",
value: "1",
placeholder: "",
col: "3",
radioData: [
{ label: "否", val: "0" },
{ label: "是", val: "1" },
],
},
],
cxDefaultFormThead: [
{
label: "单位代码",
toInfor: true,
prop: "code",
},
{
label: "单位名称",
prop: "name",
},
],
AllformThead: [
{
label: "单位代码",
toInfor: true,
prop: "code",
},
{
label: "单位名称",
prop: "name",
},
],
defaultCheckedThead: ["单位代码", "单位名称"],
cxUrl: "/ywgz/pageDwxnpglb",
Menu: [
{
id: "queryDwxnpg",
label: "单位效能评估列表",
index: "queryDwxnpg",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
],
leftMenus: [
//左侧导航(模块第一个页面需要)
{
id: "queryDwxnpg",
label: "单位效能评估列表",
newAuth: "M01",
index: "queryDwxnpg",
className: "iconfont icongongnengfuwu",
hasChildren: false,
children: [],
},
],
};
},
created() {
this.$store.commit("user/SET_Menu", this.Menu);
this.$store.commit("user/SET_LeftMenu", this.leftMenus);
this.$store.commit("user/SET_Header", this.header);
},
methods: {
toInfor(scope) {
this.$router.pushToTab({
path: "/dwxnpgbg",
query: {
unitcode: scope.code,
},
});
},
},
watch: {},
};
</script>
<style>
.el-dialog__body {
padding: 10px 15px !important;
}
.rightContent .el-input__inner,
#formCommonPage .el-input__inner {
height: 32px;
line-height: 32px;
font-family: inherit;
}
.el-table__header-wrapper th,
.el-table__header-wrapper tr {
background: #f4f6f7;
}
.rightContent .el-input__icon,
#formCommonPage .el-input__icon,
.el-input__suffix-inner {
line-height: 36px;
}
.rightContent .el-range-separator {
position: relative;
top: -4px;
}
.rightContent .el-textarea__inner,
#formCommonPage .el-textarea__inner {
width: 100%;
font-family: inherit;
}
.rightContent .el-range-input,
#formCommonPage .el-range-input {
vertical-align: top;
}
.rightContent .el-date-editor .el-range__close-icon {
margin-top: -4px;
}
.rightContent .el-form-item__error {
left: calc(66% - 27px);
top: 12px;
}
.success-row {
background-color: #fbf9f4 !important;
}
.Content .el-input,
.Content .el-date-editor--daterange.el-input__inner {
width: 100% !important;
}
</style>
<style scoped lang="scss">
.el-form-item {
margin: 15px 0 20px 0;
}
.red {
color: red;
}
.black {
color: black;
}
@import "@/assets/styles/rightContent.scss";
.hbyp {
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: 400;
line-height: 22px;
color: #007aff;
margin-right: 16px;
cursor: pointer;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment