Commit 9476c303 by xue_wengang

区域线索分析

parent a12d28c1
......@@ -3529,7 +3529,6 @@ export default {
//includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
}
});
_this.propdefaultFormThead = [];
_this.$set(_this.propdefaultFormThead, 0, newObj); //将所有默认传过来的表格清空,匹配到的赋值
_this.propdefaultFormThead = _this.selectedPropAllformThead_.filter(
......
......@@ -12,10 +12,26 @@ const menuLayouts = [
path: "/brainQyxsfx",
name: "brainQyxsfx",
meta: {
title: '区域线索分析'
title: '线索时空特征分析'
},
component: () => import("@/views/brainPhotoxxxx/brainQyxsfx.vue")
},
{
path: "/brainQyxsajfx",
name: "brainQyxsajfx",
meta: {
title: '线索与案件时空拟合分析'
},
component: () => import("@/views/brainPhotoxxxx/brainQyxsajfx.vue")
},
{
path: "/brainQyxsryfx",
name: "brainQyxsryfx",
meta: {
title: '线索与人员时空拟合分析'
},
component: () => import("@/views/brainPhotoxxxx/brainQyxsryfx.vue")
},
];
export default {
......
......@@ -24,9 +24,10 @@ export default {
type: "text",
placeholder: "证件号码",
col: "3",
rules: [
{ required: true, message: "请输入证件号码", trigger: "blur" },
],
rules: rules.emptyAbleIdentityBT,
// rules: [
// { required: true, emptyAbleIdentityBT message: "请输入证件号码", trigger: "blur" },
// ],
},
],
form: {
......@@ -58,7 +59,33 @@ export default {
newAuth: "M01",
index: "brainQyxsfx",
className: "iconfont icongongnengfuwu",
hasChildren: false,
hasChildren: true,
children: [
{
id: "brainQyxsfx",
label: "线索时空特征分析",
index: "brainQyxsfx",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
{
id: "brainQyxsajfx",
label: "线索与案件时空拟合分析",
index: "brainQyxsajfx",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
{
id: "brainQyxsryfx",
label: "线索与人员时空拟合分析",
index: "brainQyxsryfx",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
],
},
{
id: "dwcx",
......@@ -94,8 +121,8 @@ export default {
type: "KyRy",
kybh: this.form.zjhm,
userId: idcard,
username: userInfo.userName,
trueName: userInfo.userName,
username: userInfo.policemanid,
trueName: userInfo.realname,
identitycard: userInfo.identitycard,
unitcode: userInfo.unitcode,
unitname: userInfo.unitname,
......
<template>
<div>
<SearchGraph
:formProp="formProp"
:formData="form"
placeholder="请输入线索"
@goDetail="goDetail"
v-if="isShow"
/>
<div class="tableWrap" v-else>
<disv class="line">
<div>分析结果</div>
<div class="export">
<el-button type="primary" size="mini" @click="exportFile"
>导出
</el-button>
</div>
</disv>
<el-table :data="tableData" style="width: 100%" border>
<el-table-column
align="center"
:min-width="columnTitle.width"
v-for="columnTitle in cxDefaultFormThead"
:prop="columnTitle.prop"
:key="columnTitle.label"
:label="columnTitle.label"
>
<template slot-scope="scope">
<span v-html="scope.row[columnTitle.prop]"></span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import SearchGraph from "@c/searchRight.vue";
export default {
components: { SearchGraph },
data() {
return {
header: "线索信息综合分析子系统",
pages: "djajzb",
formProp: [
{
id: "zjhm",
type: "text",
placeholder: "线索名称",
col: "3",
},
],
form: {
zjhm: "",
},
Menu: [
{
id: "brainQyxsfx",
label: "线索时空特征分析",
index: "brainQyxsfx",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
],
isShow: true,
tableData: [],
cxDefaultFormThead: [
{
label: "案件名称",
prop: "ajmc",
},
{
label: "案件编号",
prop: "asjbh",
},
{
label: "案发地狱空间",
prop: "dy",
},
{
label: "案发时间",
prop: "sj",
},
{
label: "案件状态",
prop: "ajzt",
},
],
};
},
created() {
this.$store.commit("user/SET_Menu", this.Menu);
},
methods: {
exportFile() {
let self = this,
tHeader = [],
filterVal = [];
const loading = this.$loading({
lock: true,
text: "正在导出...",
spinner: "el-icon-loading",
background: "rgba(255, 255, 255, 0.7)",
});
tHeader = [];
filterVal = [];
self.cxDefaultFormThead.forEach((val) => {
tHeader.push(val.label);
filterVal.push(val.prop);
});
require.ensure([], () => {
const { export_json_to_excel } = require("../../utils/Export2Excel");
const list = this.tableData;
const data = self.formatJson(filterVal, list);
// debugger;
export_json_to_excel(tHeader, data, '线索与案件时空拟合分析');
});
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;
},
goDetail() {
this.isShow = false;
let sjArr = ["清晨", "早晨", "中午", "下午", "傍晚", "深夜", "凌晨"];
let dyArr = ["城区", "郊区", "农村"];
let skArr = ["盗窃案件高危", "诈骗案高危", "抢劫案高危"];
let dyStr = dyArr[parseInt(Math.random() * 2)]
let obj = {
ajmc: '多吉盗窃案',
asjbh:"A5402231700002023060001",
dy: dyStr,
sj: sjArr[parseInt(Math.random() * 2)],
ajzt:"立案"
};
this.tableData.push(obj);
obj = {
ajmc: '罗桑抢劫案',
asjbh:"A5402231500002022100005",
dy: dyStr,
sj: sjArr[parseInt(Math.random() * 2)],
ajzt:"侦查终结"
};
this.tableData.push(obj);
},
},
};
</script>
<style scoped lang="scss">
.tableWrap {
background: #ffffff;
border: 1px solid #eaeaea;
box-shadow: none;
opacity: 1;
border-radius: 4px;
padding: 20px;
margin: 20px;
.line {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 5px;
}
}
</style>
......@@ -3,15 +3,43 @@
<SearchGraph
:formProp="formProp"
:formData="form"
placeholder="请输入证件号码"
placeholder="请输入线索"
@goDetail="goDetail"
v-if="isShow"
/>
<div class="tableWrap" v-else>
<div class="line">
<div>分析结果</div>
<div class="export">
线索分析<el-checkbox-group v-model="checkList" @change="changeVal">
<el-checkbox label="sj">时间分布特征</el-checkbox>
<el-checkbox label="dy">地域(空间)分布特征</el-checkbox>
<el-checkbox label="sk">时空关系分布特征</el-checkbox>
</el-checkbox-group>
<el-button type="primary" size="mini" @click="exportFile"
>导出
</el-button>
</div>
</div>
<el-table :data="tableData" style="width: 100%" border ref="tableRef">
<el-table-column
align="center"
:min-width="columnTitle.width"
v-for="columnTitle in cxDefaultFormThead"
:prop="columnTitle.prop"
:key="columnTitle.label"
:label="columnTitle.label"
>
<template slot-scope="scope">
<span v-html="scope.row[columnTitle.prop]"></span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import SearchGraph from "@c/searchRight.vue";
import encrypt from "@/utils/encry.js";
import base from "@/api/base";
export default {
components: { SearchGraph },
data() {
......@@ -22,11 +50,8 @@ export default {
{
id: "zjhm",
type: "text",
placeholder: "证件号码",
placeholder: "线索名称",
col: "3",
rules: [
{ required: true, message: "请输入证件号码", trigger: "blur" },
],
},
],
form: {
......@@ -35,47 +60,145 @@ export default {
Menu: [
{
id: "brainQyxsfx",
label: "区域线索分析",
label: "线索时空特征分析",
index: "brainQyxsfx",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
],
isShow: true,
tableData: [],
cxDefaultFormThead: [
{
label: "时间分布特征",
prop: "sj",
},
{
label: "地域(空间)分布特征",
prop: "dy",
},
{
label: "时空关系分布特征",
prop: "sk",
},
],
checkList: ["sj", "dy", "sk"],
};
},
created() {
this.$store.commit("user/SET_Menu", this.Menu);
},
methods: {
goDetail() {
let key =
"maplogin" + encrypt.creattimeBumderNYR(new Date()).split("-").join("");
let vi =
"map_vues" + encrypt.creattimeBumderNYR(new Date()).split("-").join("");
let skjm = encrypt.skEncrypt(
JSON.parse(sessionStorage.getItem("userInfo")).identitycard,
key.trim(),
vi.trim()
);
let path = `${this.$baseUrl.alyIP9}/#/JumpPage/${this.form.zjhm}?sfzh=${skjm}`;
window.open(path, "_blank");
changeVal(val) {
let arr = [
{
label: "时间分布特征",
prop: "sj",
},
{
label: "地域(空间)分布特征",
prop: "dy",
},
{
label: "时空关系分布特征",
prop: "sk",
},
];
this.cxDefaultFormThead = [];
val.forEach((item) => {
arr.forEach(sub=>{
if(sub.prop == item ){
this.cxDefaultFormThead.push(sub)
}
})
});
console.log(this.cxDefaultFormThead);
debugger
this.$refs.tableRef.doLayout();
},
toDetail(url, PARAMS) {
var temp_form = document.createElement("form");
temp_form.action = url;
temp_form.target = "_blank";
temp_form.method = "post";
temp_form.style.display = "none";
for (var x in PARAMS) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = PARAMS[x];
temp_form.appendChild(opt);
exportFile() {
let self = this,
tHeader = [],
filterVal = [];
const loading = this.$loading({
lock: true,
text: "正在导出...",
spinner: "el-icon-loading",
background: "rgba(255, 255, 255, 0.7)",
});
tHeader = [];
filterVal = [];
self.cxDefaultFormThead.forEach((val) => {
tHeader.push(val.label);
filterVal.push(val.prop);
});
require.ensure([], () => {
const { export_json_to_excel } = require("../../utils/Export2Excel");
const list = this.tableData;
const data = self.formatJson(filterVal, list);
// debugger;
export_json_to_excel(tHeader, data, "线索时空特征分析");
});
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;
},
goDetail() {
this.isShow = false;
let sjArr = ["清晨", "早晨", "中午", "下午", "傍晚", "深夜", "凌晨"];
let dyArr = ["城区", "郊区", "农村"];
let skArr = ["盗窃案件高危", "诈骗案高危", "抢劫案高危"];
for (let index = 0; index < 2; index++) {
let obj = {
sj: sjArr[parseInt(Math.random() * 6)],
dy: dyArr[parseInt(Math.random() * 2)],
sk: skArr[parseInt(Math.random() * 2)],
};
this.tableData.push(obj);
}
document.body.appendChild(temp_form);
temp_form.submit();
},
},
mounted() {
this.goDetail();
},
};
</script>
<style scoped lang="scss">
.tableWrap {
background: #ffffff;
border: 1px solid #eaeaea;
box-shadow: none;
opacity: 1;
border-radius: 4px;
padding: 20px;
margin: 20px;
.line {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 5px;
}
}
</style>
<template>
<div>
<SearchGraph
:formProp="formProp"
:formData="form"
placeholder="请输入线索"
@goDetail="goDetail"
v-if="isShow"
/>
<div class="tableWrap" v-else>
<disv class="line">
<div>分析结果</div>
<div class="export">
<el-button type="primary" size="mini" @click="exportFile"
>导出
</el-button>
</div>
</disv>
<el-table :data="tableData" style="width: 100%" border>
<el-table-column
align="center"
:min-width="columnTitle.width"
v-for="columnTitle in cxDefaultFormThead"
:prop="columnTitle.prop"
:key="columnTitle.label"
:label="columnTitle.label"
>
<template slot-scope="scope">
<span v-html="scope.row[columnTitle.prop]"></span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import SearchGraph from "@c/searchRight.vue";
export default {
components: { SearchGraph },
data() {
return {
header: "线索信息综合分析子系统",
pages: "djajzb",
formProp: [
{
id: "zjhm",
type: "text",
placeholder: "线索名称",
col: "3",
},
],
form: {
zjhm: "",
},
Menu: [
{
id: "brainQyxsfx",
label: "线索时空特征分析",
index: "brainQyxsfx",
auth: "M0101",
className: "iconfont iconrizhi",
disabled: false,
},
],
isShow: true,
tableData: [],
cxDefaultFormThead: [
{
label: "姓名",
prop: "xm",
},
{
label: "性别",
prop: "xb",
},
{
label: "身份证号",
prop: "sfzh",
},
{
label: "现住址区划",
prop: "xzz",
},
{
label: "户籍区划",
prop: "hj",
},
{
label: "是否抓获",
prop: "sfyzh",
},
],
};
},
created() {
this.$store.commit("user/SET_Menu", this.Menu);
},
methods: {
exportFile() {
let self = this,
tHeader = [],
filterVal = [];
const loading = this.$loading({
lock: true,
text: "正在导出...",
spinner: "el-icon-loading",
background: "rgba(255, 255, 255, 0.7)",
});
tHeader = [];
filterVal = [];
self.cxDefaultFormThead.forEach((val) => {
tHeader.push(val.label);
filterVal.push(val.prop);
});
require.ensure([], () => {
const { export_json_to_excel } = require("../../utils/Export2Excel");
const list = this.tableData;
const data = self.formatJson(filterVal, list);
// debugger;
export_json_to_excel(tHeader, data, '线索与人员时空拟合分析');
});
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;
},
goDetail() {
this.isShow = false;
let sjArr = ["清晨", "早晨", "中午", "下午", "傍晚", "深夜", "凌晨"];
let dyArr = ["城区", "郊区", "农村"];
let skArr = ["盗窃案件高危", "诈骗案高危", "抢劫案高危"];
let dyStr = dyArr[parseInt(Math.random() * 2)]
let obj = {
xm: '次仁',
xb:"男",
sfzh:"542324199210192830",
xzz: "西藏自治区定日县",
hj: "西藏自治区定日县",
sfyzh:"是",
};
this.tableData.push(obj);
obj = {
xm: '达瓦',
xb:"男",
sfzh:"542324199808192831",
xzz: "西藏自治区定日县",
hj: "西藏自治区定日县",
sfyzh:"是",
};
this.tableData.push(obj);
},
},
};
</script>
<style scoped lang="scss">
.tableWrap {
background: #ffffff;
border: 1px solid #eaeaea;
box-shadow: none;
opacity: 1;
border-radius: 4px;
padding: 20px;
margin: 20px;
.line {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 5px;
}
}
</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