lcw
This commit is contained in:
@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
import ImageCompressor from "image-compressor.js";
|
import ImageCompressor from "image-compressor.js";
|
||||||
|
|
||||||
// 生成10位数的随机数
|
// 生成10位数的随机数
|
||||||
@ -13,23 +11,34 @@ export function generateRandom10Digits() {
|
|||||||
// 随机颜色 - 把16进制的颜色换成rgba格式
|
// 随机颜色 - 把16进制的颜色换成rgba格式
|
||||||
export function choseRbgb(color, opcity) {
|
export function choseRbgb(color, opcity) {
|
||||||
if (color) {
|
if (color) {
|
||||||
return 'rgba(' + parseInt('0x' + color.slice(1, 3)) + ',' + parseInt('0x' + color.slice(3, 5)) + ',' + parseInt('0x' + color.slice(5, 7)) + ',' + opcity + ')'
|
return (
|
||||||
|
"rgba(" +
|
||||||
|
parseInt("0x" + color.slice(1, 3)) +
|
||||||
|
"," +
|
||||||
|
parseInt("0x" + color.slice(3, 5)) +
|
||||||
|
"," +
|
||||||
|
parseInt("0x" + color.slice(5, 7)) +
|
||||||
|
"," +
|
||||||
|
opcity +
|
||||||
|
")"
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
let r = Math.floor(Math.random() * 256)
|
let r = Math.floor(Math.random() * 256);
|
||||||
let g = Math.floor(Math.random() * 256)
|
let g = Math.floor(Math.random() * 256);
|
||||||
let b = Math.floor(Math.random() * 256)
|
let b = Math.floor(Math.random() * 256);
|
||||||
let a = opcity ? opcity : 1
|
let a = opcity ? opcity : 1;
|
||||||
return `rgba(${r},${g},${b},${a})`
|
return `rgba(${r},${g},${b},${a})`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 随机十六进制颜色
|
// 随机十六进制颜色
|
||||||
export function randomHexColor() { // 随机生成十六进制颜色
|
export function randomHexColor() {
|
||||||
|
// 随机生成十六进制颜色
|
||||||
var hex = Math.floor(Math.random() * 16777216).toString(16);
|
var hex = Math.floor(Math.random() * 16777216).toString(16);
|
||||||
while (hex.length < 6) {
|
while (hex.length < 6) {
|
||||||
hex = '0' + hex;
|
hex = "0" + hex;
|
||||||
}
|
}
|
||||||
return '#' + hex;
|
return "#" + hex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,23 +56,30 @@ export function compressImage(file, quality = 0.6) {
|
|||||||
},
|
},
|
||||||
error(e) {
|
error(e) {
|
||||||
reject("图片压缩失败,请稍后再试");
|
reject("图片压缩失败,请稍后再试");
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
// 今天周几
|
// 今天周几
|
||||||
export function weekValidate() {
|
export function weekValidate() {
|
||||||
let week = new Date().getDay()
|
let week = new Date().getDay();
|
||||||
let weekenday = ''
|
let weekenday = "";
|
||||||
switch (week) {
|
switch (week) {
|
||||||
case 0: return weekenday = '星期日'
|
case 0:
|
||||||
case 1: return weekenday = '星期一'
|
return (weekenday = "星期日");
|
||||||
case 2: return weekenday = '星期二'
|
case 1:
|
||||||
case 3: return weekenday = '星期三'
|
return (weekenday = "星期一");
|
||||||
case 4: return weekenday = '星期四'
|
case 2:
|
||||||
case 5: return weekenday = '星期五'
|
return (weekenday = "星期二");
|
||||||
case 6: return weekenday = '星期六'
|
case 3:
|
||||||
|
return (weekenday = "星期三");
|
||||||
|
case 4:
|
||||||
|
return (weekenday = "星期四");
|
||||||
|
case 5:
|
||||||
|
return (weekenday = "星期五");
|
||||||
|
case 6:
|
||||||
|
return (weekenday = "星期六");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,45 +102,44 @@ export function formatDuring(mss) {
|
|||||||
|
|
||||||
// 转换时间格式
|
// 转换时间格式
|
||||||
export function timeValidate(date, type) {
|
export function timeValidate(date, type) {
|
||||||
const time = date ? new Date(date) : new Date()
|
const time = date ? new Date(date) : new Date();
|
||||||
const yyyy = time.getFullYear()
|
const yyyy = time.getFullYear();
|
||||||
const MM = (time.getMonth() + 1).toString().padStart(2, 0)
|
const MM = (time.getMonth() + 1).toString().padStart(2, 0);
|
||||||
const dd = time.getDate().toString().padStart(2, '0')
|
const dd = time.getDate().toString().padStart(2, "0");
|
||||||
const hh = time.getHours().toString().padStart(2, '0')
|
const hh = time.getHours().toString().padStart(2, "0");
|
||||||
const mm = time.getMinutes().toString().padStart(2, '0')
|
const mm = time.getMinutes().toString().padStart(2, "0");
|
||||||
const ss = time.getSeconds().toString().padStart(2, '0')
|
const ss = time.getSeconds().toString().padStart(2, "0");
|
||||||
|
|
||||||
if (type == 'ymd') {
|
if (type == "ymd") {
|
||||||
return `${yyyy}-${MM}-${dd}`;
|
return `${yyyy}-${MM}-${dd}`;
|
||||||
}
|
}
|
||||||
if (type == 'md') {
|
if (type == "md") {
|
||||||
return `${MM}.${dd}`
|
return `${MM}.${dd}`;
|
||||||
}
|
}
|
||||||
if (type == 'td') {
|
if (type == "td") {
|
||||||
return `${yyyy}年${MM}月${dd}日`
|
return `${yyyy}年${MM}月${dd}日`;
|
||||||
}
|
}
|
||||||
if (type == 'ny') {
|
if (type == "ny") {
|
||||||
return `${yyyy}年${MM}月`
|
return `${yyyy}年${MM}月`;
|
||||||
}
|
}
|
||||||
if (type == 'yd') {
|
if (type == "yd") {
|
||||||
return `${yyyy}`
|
return `${yyyy}`;
|
||||||
}
|
}
|
||||||
if (type == 'ym') {
|
if (type == "ym") {
|
||||||
return MM
|
return MM;
|
||||||
}
|
}
|
||||||
if (type == 'rm') {
|
if (type == "rm") {
|
||||||
return dd
|
return dd;
|
||||||
}
|
}
|
||||||
if (type == 'mm') {
|
if (type == "mm") {
|
||||||
return `${yyyy}${MM}${dd}${hh}${mm}${ss}`
|
return `${yyyy}${MM}${dd}${hh}${mm}${ss}`;
|
||||||
}
|
}
|
||||||
if (type == 'ydm') {
|
if (type == "ydm") {
|
||||||
return `${yyyy}年${MM}月${dd}日${hh}时${mm}分${ss}秒`
|
return `${yyyy}年${MM}月${dd}日${hh}时${mm}分${ss}秒`;
|
||||||
}
|
}
|
||||||
return `${yyyy}-${MM}-${dd} ${hh}:${mm}:${ss}`
|
return `${yyyy}-${MM}-${dd} ${hh}:${mm}:${ss}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function timeSlotChange(val) {
|
export function timeSlotChange(val) {
|
||||||
let startTime, endTime;
|
let startTime, endTime;
|
||||||
let now = new Date(); //当前日期
|
let now = new Date(); //当前日期
|
||||||
@ -132,89 +147,93 @@ export function timeSlotChange(val) {
|
|||||||
let nowDay = now.getDate(); //当前日
|
let nowDay = now.getDate(); //当前日
|
||||||
let nowMonth = now.getMonth(); //当前月
|
let nowMonth = now.getMonth(); //当前月
|
||||||
let nowYear = now.getFullYear(); //当前年
|
let nowYear = now.getFullYear(); //当前年
|
||||||
let jd = Math.ceil((nowMonth + 1) / 3)
|
let jd = Math.ceil((nowMonth + 1) / 3);
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case '天':
|
case "天":
|
||||||
case '日':
|
case "日":
|
||||||
// 设置当天的开始时间(00:00:00)
|
// 设置当天的开始时间(00:00:00)
|
||||||
const startDate = new Date();
|
const startDate = new Date();
|
||||||
startDate.setHours(0, 0, 0, 0);
|
startDate.setHours(0, 0, 0, 0);
|
||||||
startTime = timeValidate(startDate, 'ymd');
|
startTime = timeValidate(startDate, "ymd");
|
||||||
|
|
||||||
// 设置当天的结束时间(23:59:59)
|
// 设置当天的结束时间(23:59:59)
|
||||||
const endDate = new Date();
|
const endDate = new Date();
|
||||||
endDate.setHours(23, 59, 59, 999);
|
endDate.setHours(23, 59, 59, 999);
|
||||||
endTime = timeValidate(endDate, 'ymd');
|
endTime = timeValidate(endDate, "ymd");
|
||||||
console.log(startTime, endTime);
|
console.log(startTime, endTime);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "本周":
|
case "本周":
|
||||||
case "周":
|
case "周":
|
||||||
startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)
|
startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
|
||||||
endTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek)
|
endTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "本月":
|
case "本月":
|
||||||
case "月":
|
case "月":
|
||||||
startTime = new Date(nowYear, nowMonth, 1)
|
startTime = new Date(nowYear, nowMonth, 1);
|
||||||
endTime = new Date(nowYear, nowMonth + 1, 0)
|
endTime = new Date(nowYear, nowMonth + 1, 0);
|
||||||
console.log(startTime, endTime);
|
console.log(startTime, endTime);
|
||||||
break;
|
break;
|
||||||
case "本季度":
|
case "本季度":
|
||||||
case "季度":
|
case "季度":
|
||||||
startTime = new Date(nowYear, (jd - 1) * 3, 1)
|
startTime = new Date(nowYear, (jd - 1) * 3, 1);
|
||||||
endTime = new Date(nowYear, jd * 3, 0)
|
endTime = new Date(nowYear, jd * 3, 0);
|
||||||
break
|
break;
|
||||||
case "本年":
|
case "本年":
|
||||||
case "年":
|
case "年":
|
||||||
startTime = new Date(nowYear, 0, 1)
|
startTime = new Date(nowYear, 0, 1);
|
||||||
endTime = new Date(nowYear, 11, 31)
|
endTime = new Date(nowYear, 11, 31);
|
||||||
break
|
break;
|
||||||
}
|
}
|
||||||
return [timeValidate(startTime, 'ymd'), timeValidate(endTime, 'ymd')]
|
return [timeValidate(startTime, "ymd"), timeValidate(endTime, "ymd")];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 获取当前近多少天 7后7天 -7 前五天
|
// 获取当前近多少天 7后7天 -7 前五天
|
||||||
export function getRecentDay(n) {
|
export function getRecentDay(n) {
|
||||||
var currentDate = new Date();
|
var currentDate = new Date();
|
||||||
var preDate = new Date(currentDate.getTime() + n * 24 * 3600 * 1000)
|
var preDate = new Date(currentDate.getTime() + n * 24 * 3600 * 1000);
|
||||||
let year = preDate.getFullYear()
|
let year = preDate.getFullYear();
|
||||||
let mon = preDate.getMonth() + 1
|
let mon = preDate.getMonth() + 1;
|
||||||
let day = preDate.getDate()
|
let day = preDate.getDate();
|
||||||
let s = year + '-' + (mon < 10 ? ('0' + mon) : mon) + '-' + (day < 10 ? ('0' + day) : day)
|
let s =
|
||||||
return s
|
year +
|
||||||
|
"-" +
|
||||||
|
(mon < 10 ? "0" + mon : mon) +
|
||||||
|
"-" +
|
||||||
|
(day < 10 ? "0" + day : day);
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取n近7月 7后7 -7 前
|
// 获取n近7月 7后7 -7 前
|
||||||
export function getnRencebtMonth(n) {
|
export function getnRencebtMonth(n) {
|
||||||
let date = new Date();
|
let date = new Date();
|
||||||
date.setMonth(date.getMonth() - n)
|
date.setMonth(date.getMonth() - n);
|
||||||
date.toLocaleDateString()
|
date.toLocaleDateString();
|
||||||
let y = date.getFullYear()
|
let y = date.getFullYear();
|
||||||
let m = date.getMonth() + 1
|
let m = date.getMonth() + 1;
|
||||||
m = m < 10 ? ('0' + m) : m + ''
|
m = m < 10 ? "0" + m : m + "";
|
||||||
return y + m
|
return y + m;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 数据去重 相同数据值累加
|
* 数据去重 相同数据值累加
|
||||||
* @param {Object} array 数据
|
* @param {Object} array 数据
|
||||||
*/
|
*/
|
||||||
export function setArray(array) {
|
export function setArray(array) {
|
||||||
let newArr = []
|
let newArr = [];
|
||||||
array.forEach(item => {
|
array.forEach((item) => {
|
||||||
const res = newArr.findIndex(ol => {
|
const res = newArr.findIndex((ol) => {
|
||||||
//组织机构代码相同 并且报警类别相同
|
//组织机构代码相同 并且报警类别相同
|
||||||
return item.ssbmdm == ol.ssbmdm && item.bjlb == ol.bjlb
|
return item.ssbmdm == ol.ssbmdm && item.bjlb == ol.bjlb;
|
||||||
})
|
});
|
||||||
if (res !== -1) {
|
if (res !== -1) {
|
||||||
newArr[res].sl = newArr[res].sl + item.sl
|
newArr[res].sl = newArr[res].sl + item.sl;
|
||||||
} else {
|
} else {
|
||||||
newArr.push(item)
|
newArr.push(item);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
return newArr
|
return newArr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -222,44 +241,49 @@ export function setArray(array) {
|
|||||||
* @param {Object} array 数据
|
* @param {Object} array 数据
|
||||||
*/
|
*/
|
||||||
export function hbArray(array, item1, item2, item3) {
|
export function hbArray(array, item1, item2, item3) {
|
||||||
let newArr = []
|
let newArr = [];
|
||||||
array.forEach(item => {
|
array.forEach((item) => {
|
||||||
const res = newArr.findIndex(ol => {
|
const res = newArr.findIndex((ol) => {
|
||||||
//组织机构代码相同 并且报警类别相同
|
//组织机构代码相同 并且报警类别相同
|
||||||
return item.product == ol.product
|
return item.product == ol.product;
|
||||||
})
|
});
|
||||||
if (res !== -1) {
|
if (res !== -1) {
|
||||||
newArr[res][item1] = newArr[res][item1] + item[item1]
|
newArr[res][item1] = newArr[res][item1] + item[item1];
|
||||||
newArr[res][item2] = newArr[res][item2] + item[item2]
|
newArr[res][item2] = newArr[res][item2] + item[item2];
|
||||||
newArr[res][item3] = newArr[res][item3] + item[item3]
|
newArr[res][item3] = newArr[res][item3] + item[item3];
|
||||||
} else {
|
} else {
|
||||||
newArr.push(item)
|
newArr.push(item);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
return newArr
|
return newArr;
|
||||||
}
|
}
|
||||||
//时间格式
|
//时间格式
|
||||||
export function dateFormat(type, time) {
|
export function dateFormat(type, time) {
|
||||||
let date
|
let date;
|
||||||
if (time) {
|
if (time) {
|
||||||
date = new Date(time);
|
date = new Date(time);
|
||||||
} else {
|
} else {
|
||||||
date = new Date();
|
date = new Date();
|
||||||
}
|
}
|
||||||
let year = date.getFullYear();
|
let year = date.getFullYear();
|
||||||
let month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
|
let month =
|
||||||
|
date.getMonth() + 1 < 10
|
||||||
|
? "0" + (date.getMonth() + 1)
|
||||||
|
: date.getMonth() + 1;
|
||||||
let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
|
let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
|
||||||
let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
|
let minutes =
|
||||||
let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
|
date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
|
||||||
let day
|
let seconds =
|
||||||
|
date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
|
||||||
|
let day;
|
||||||
|
|
||||||
if (type == 'z') {
|
if (type == "z") {
|
||||||
//前一天日期
|
//前一天日期
|
||||||
day = date.getDate() - 1;
|
day = date.getDate() - 1;
|
||||||
day = day < 10 ? "0" + day : day;
|
day = day < 10 ? "0" + day : day;
|
||||||
return `${year}-${month}-${day}`;
|
return `${year}-${month}-${day}`;
|
||||||
} else if (type == 'all') {
|
} else if (type == "all") {
|
||||||
//格式化日期时间
|
//格式化日期时间
|
||||||
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
||||||
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
||||||
@ -269,42 +293,78 @@ export function dateFormat(type, time) {
|
|||||||
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
||||||
return `${year}-${month}-${day}`;
|
return `${year}-${month}-${day}`;
|
||||||
}
|
}
|
||||||
return day
|
return day;
|
||||||
}
|
}
|
||||||
|
|
||||||
//数字超长处理
|
//数字超长处理
|
||||||
export function handleNum(num) {
|
export function handleNum(num) {
|
||||||
var data = 0
|
var data = 0;
|
||||||
if (num) {
|
if (num) {
|
||||||
try {
|
try {
|
||||||
if (num * 1 > 100000) {
|
if (num * 1 > 100000) {
|
||||||
data = (num / 10000).toFixed(0) + '万'
|
data = (num / 10000).toFixed(0) + "万";
|
||||||
} else {
|
} else {
|
||||||
data = (num * 1).toFixed(0)
|
data = (num * 1).toFixed(0);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
data = 0
|
data = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return data
|
return data;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 文件是否是图片
|
* 文件是否是图片
|
||||||
* @param {*} val
|
* @param {*} val
|
||||||
*/
|
*/
|
||||||
export function IS_PNG(val) {
|
export function IS_PNG(val) {
|
||||||
return ['bmp', 'jpg', 'png', 'tif', 'gif', 'pcx', 'tga', 'exif', 'fpx', 'svg', 'psd', 'cdr', 'pcd', 'dxf', 'ufo',
|
return (
|
||||||
'eps', 'ai', 'raw', 'wmf', 'webp', 'avif', 'apng'
|
[
|
||||||
].indexOf(val.toLowerCase()) !== -1
|
"bmp",
|
||||||
|
"jpg",
|
||||||
|
"png",
|
||||||
|
"tif",
|
||||||
|
"gif",
|
||||||
|
"pcx",
|
||||||
|
"tga",
|
||||||
|
"exif",
|
||||||
|
"fpx",
|
||||||
|
"svg",
|
||||||
|
"psd",
|
||||||
|
"cdr",
|
||||||
|
"pcd",
|
||||||
|
"dxf",
|
||||||
|
"ufo",
|
||||||
|
"eps",
|
||||||
|
"ai",
|
||||||
|
"raw",
|
||||||
|
"wmf",
|
||||||
|
"webp",
|
||||||
|
"avif",
|
||||||
|
"apng"
|
||||||
|
].indexOf(val.toLowerCase()) !== -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 文件是否是音频
|
* 文件是否是音频
|
||||||
* @param {*} val
|
* @param {*} val
|
||||||
*/
|
*/
|
||||||
export function IS_MP3(val) {
|
export function IS_MP3(val) {
|
||||||
return ['mp3', 'wav', 'wma', 'mp2', 'flac', 'midi', 'ra', 'ape', 'aac', 'cda', 'mov'].indexOf(val.toLowerCase()) !==
|
return (
|
||||||
-1
|
[
|
||||||
|
"mp3",
|
||||||
|
"wav",
|
||||||
|
"wma",
|
||||||
|
"mp2",
|
||||||
|
"flac",
|
||||||
|
"midi",
|
||||||
|
"ra",
|
||||||
|
"ape",
|
||||||
|
"aac",
|
||||||
|
"cda",
|
||||||
|
"mov"
|
||||||
|
].indexOf(val.toLowerCase()) !== -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -312,26 +372,39 @@ export function IS_MP3(val) {
|
|||||||
* @param {*} val
|
* @param {*} val
|
||||||
*/
|
*/
|
||||||
export function IS_MP4(val) {
|
export function IS_MP4(val) {
|
||||||
return ['avi', 'wmv', 'mpeg', 'mp4', 'm4v', 'mov', 'asf', 'fiv', 'f4v', 'mvb', 'rm', '3gp', 'vob'].indexOf(val
|
return (
|
||||||
.toLowerCase()) !== -1
|
[
|
||||||
|
"avi",
|
||||||
|
"wmv",
|
||||||
|
"mpeg",
|
||||||
|
"mp4",
|
||||||
|
"m4v",
|
||||||
|
"mov",
|
||||||
|
"asf",
|
||||||
|
"fiv",
|
||||||
|
"f4v",
|
||||||
|
"mvb",
|
||||||
|
"rm",
|
||||||
|
"3gp",
|
||||||
|
"vob"
|
||||||
|
].indexOf(val.toLowerCase()) !== -1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function handelArr(arr) {
|
function handelArr(arr) {
|
||||||
let brr = []
|
let brr = [];
|
||||||
if (arr && arr.length > 0) {
|
if (arr && arr.length > 0) {
|
||||||
let obj = {}
|
let obj = {};
|
||||||
let coords = "";
|
let coords = "";
|
||||||
for (let i = 0; i < arr.length; i++) {
|
for (let i = 0; i < arr.length; i++) {
|
||||||
coords += arr[i] + ","
|
coords += arr[i] + ",";
|
||||||
}
|
}
|
||||||
obj.coords = coords
|
obj.coords = coords;
|
||||||
brr.push(obj)
|
brr.push(obj);
|
||||||
}
|
}
|
||||||
return brr
|
return brr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 时间 天数
|
* 时间 天数
|
||||||
* @param {*} val
|
* @param {*} val
|
||||||
@ -341,29 +414,31 @@ export function setEchartTime(val) {
|
|||||||
let arrTime = [];
|
let arrTime = [];
|
||||||
if (val == 0) {
|
if (val == 0) {
|
||||||
for (let i = 0; i < 24; i++) {
|
for (let i = 0; i < 24; i++) {
|
||||||
arrTime.push(i)
|
arrTime.push(i);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (let i = 0; i < val; i++) {
|
for (let i = 0; i < val; i++) {
|
||||||
let date1 = new Date(date.getTime() - i * 24 * 60 * 60 * 1000)
|
let date1 = new Date(date.getTime() - i * 24 * 60 * 60 * 1000);
|
||||||
arrTime.push(_setTime(date1))
|
arrTime.push(_setTime(date1));
|
||||||
}
|
}
|
||||||
arrTime.reverse()
|
arrTime.reverse();
|
||||||
}
|
}
|
||||||
return arrTime
|
return arrTime;
|
||||||
}
|
}
|
||||||
//设置时间
|
//设置时间
|
||||||
function _setTime(date) {
|
function _setTime(date) {
|
||||||
let month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
|
let month =
|
||||||
|
date.getMonth() + 1 < 10
|
||||||
|
? "0" + (date.getMonth() + 1)
|
||||||
|
: date.getMonth() + 1;
|
||||||
let day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
let day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
||||||
return `${month}-${day}`;
|
return `${month}-${day}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//拼接地址
|
//拼接地址
|
||||||
export function setAddress(val) {
|
export function setAddress(val) {
|
||||||
const url = '/mosty-api/mosty-base/minio/image/download/'
|
const url = "/mosty-api/mosty-base/minio/image/download/";
|
||||||
return url + val
|
return url + val;
|
||||||
}
|
}
|
||||||
export function getUUid() {
|
export function getUUid() {
|
||||||
var list = [];
|
var list = [];
|
||||||
@ -379,27 +454,31 @@ export function getUUid() {
|
|||||||
}
|
}
|
||||||
// 预警等级颜色
|
// 预警等级颜色
|
||||||
export const bqYs = (val) => {
|
export const bqYs = (val) => {
|
||||||
if (val == '01') {
|
if (val == "01") {
|
||||||
return '#ff0202'
|
return "#ff0202";
|
||||||
} else if (val == '02') {
|
} else if (val == "02") {
|
||||||
return '#ff8c00'
|
return "#ff8c00";
|
||||||
} else if (val == '03') {
|
} else if (val == "03") {
|
||||||
return '#ffd208ff'
|
return "#ffd208ff";
|
||||||
} else if (val == '04') {
|
} else if (val == "04") {
|
||||||
return '#0000ff'
|
return "#0000ff";
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
/** 全息档案跳转
|
/** 全息档案跳转
|
||||||
* @param {string} szhm 身证号
|
* @param {string} szhm 身证号
|
||||||
*/
|
*/
|
||||||
export function holographicProfileJump(lx, val) {
|
export function holographicProfileJump(lx, val) {
|
||||||
if (!val) return
|
if (!val) return;
|
||||||
if (lx == 1 || !lx) {
|
if (lx == 1 || !lx || lx == "01") {
|
||||||
const sfzh = val.sfzh || val.rysfzh || val.yjRysfzh
|
const sfzh = val.sfzh || val.rysfzh || val.yjRysfzh;
|
||||||
window.open(`https://tyyy.lz.dsj.xz/profile/people/person-manage?sfzhm=${sfzh}&from=portal`)
|
window.open(
|
||||||
|
`https://tyyy.lz.dsj.xz/profile/people/person-manage?sfzhm=${sfzh}&from=portal`
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
const cph = val.cph || val.yjClcph
|
const cph = val.cph || val.yjClcph;
|
||||||
window.open(`https://tyyy.lz.dsj.xz/profile/car/car-manage?cphm=${cph}&from=portal`)
|
window.open(
|
||||||
|
`https://tyyy.lz.dsj.xz/profile/car/car-manage?cphm=${cph}&from=portal`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -416,6 +495,6 @@ export function getErrMsg(fields, msgObj) {
|
|||||||
if (!firstErrorField) return;
|
if (!firstErrorField) return;
|
||||||
/** 第一个错误字段的内容 @type{<Array>Object} - [message, field, fieldValue] */
|
/** 第一个错误字段的内容 @type{<Array>Object} - [message, field, fieldValue] */
|
||||||
let firstErrorFieldObj = fields?.[firstErrorField];
|
let firstErrorFieldObj = fields?.[firstErrorField];
|
||||||
let errMsg = firstErrorFieldObj?.[0]?.message
|
let errMsg = firstErrorFieldObj?.[0]?.message;
|
||||||
return errMsg
|
return errMsg;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,284 @@
|
|||||||
|
<!-- 布控预警选择弹窗 -->
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:draggable="true"
|
||||||
|
:model-value="modelValue"
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
@close="close"
|
||||||
|
append-to-body
|
||||||
|
class="deployment-data-dialog"
|
||||||
|
>
|
||||||
|
<div class="deployment-data-content" v-loading="loading">
|
||||||
|
<!-- 按钮区域 -->
|
||||||
|
<div class="button-area mb10">
|
||||||
|
<el-button type="primary" @click="openDeploymentWarningDialog">
|
||||||
|
<el-icon><Plus /></el-icon>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 已选择数据表格 -->
|
||||||
|
<div class="table-wrapper">
|
||||||
|
<WarnDataTable
|
||||||
|
:loading="pageData.tableConfiger.loading"
|
||||||
|
:tableHeight="400"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="selected-table"
|
||||||
|
>
|
||||||
|
<template #czzt="{ row }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #xbdm="{ row }">
|
||||||
|
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #qblyjb="{ row }">
|
||||||
|
<DictTag :value="row.qblyjb" :tag="false" :options="D_BZ_QBLYJB" />
|
||||||
|
</template>
|
||||||
|
<template #bksj="{ row }">
|
||||||
|
{{
|
||||||
|
row.bkkssj && row.bkjssj ? `${row.bkkssj} - ${row.bkjssj}` : ""
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
<template #xsd="{ row }">{{ row.xsd }}%</template>
|
||||||
|
<template #cszt="{ row }">
|
||||||
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
|
</template>
|
||||||
|
<template #bkyjlx="{ row }">
|
||||||
|
<DictTag :value="row.bkyjlx" :tag="false" :options="D_BZ_BKYJLX" />
|
||||||
|
</template>
|
||||||
|
<template #action="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
text
|
||||||
|
@click="handleDelete(row)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</WarnDataTable>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 分页 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 布控预警选择弹窗 -->
|
||||||
|
<DeploymentWarningDialog
|
||||||
|
v-model="deploymentWarningVisible"
|
||||||
|
@confirm="handleConfirm"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button @click="close">取消</el-button>
|
||||||
|
<el-button type="primary" @click="handleSave">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { bqYs } from "@/utils/tools.js";
|
||||||
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import DeploymentWarningDialog from "./DeploymentWarningDialog.vue";
|
||||||
|
import { reactive, ref, getCurrentInstance, watch } from "vue";
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: "选择数据"
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: "90%"
|
||||||
|
},
|
||||||
|
showPagination: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
currentRelatedRow: {
|
||||||
|
type: Object,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:modelValue", "confirm"]);
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const {
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_BZ_QBLYJB,
|
||||||
|
D_BZ_BKYJLX
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_BZ_QBLYJB",
|
||||||
|
"D_BZ_BKYJLX"
|
||||||
|
);
|
||||||
|
|
||||||
|
const loading = ref(false);
|
||||||
|
const deploymentWarningVisible = ref(false);
|
||||||
|
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: false,
|
||||||
|
loading: false,
|
||||||
|
haveControls: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
},
|
||||||
|
tableColumn: [
|
||||||
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
|
{ label: "处置状态", align: "center", slotName: "czzt" },
|
||||||
|
{ prop: "yjSj", label: "预警时间", width: 150 },
|
||||||
|
{ prop: "yjRyxm", label: "人员姓名", align: "center" },
|
||||||
|
{ label: "性别", align: "center", slotName: "xbdm" },
|
||||||
|
{ prop: "nl", label: "年龄", align: "center" },
|
||||||
|
{ prop: "yjRysfzh", label: "身份证号", width: 150, align: "center" },
|
||||||
|
{ label: "管控级别", align: "center", slotName: "qblyjb" },
|
||||||
|
{ label: "预警级别", align: "center", slotName: "yjJb" },
|
||||||
|
{ label: "布控时间", align: "center", slotName: "bksj" },
|
||||||
|
{ prop: "ssbm", label: "接收单位", align: "center" },
|
||||||
|
{ label: "相似度", slotName: "xsd", align: "center" },
|
||||||
|
{ prop: "yjNr", label: "预警内容", align: "center" },
|
||||||
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" },
|
||||||
|
{
|
||||||
|
label: "操作",
|
||||||
|
width: 80,
|
||||||
|
align: "center",
|
||||||
|
slotName: "action",
|
||||||
|
fixed: "right"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
// 清空数据
|
||||||
|
pageData.tableData = [];
|
||||||
|
pageData.total = 0;
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
pageData.pageConfiger.pageSize = 20;
|
||||||
|
emit("update:modelValue", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开布控预警选择弹窗
|
||||||
|
const openDeploymentWarningDialog = () => {
|
||||||
|
deploymentWarningVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确认选择数据
|
||||||
|
const handleConfirm = (selectedRows) => {
|
||||||
|
if (selectedRows && selectedRows.length > 0) {
|
||||||
|
const promes = {
|
||||||
|
glidList: selectedRows.map((item) => item.id),
|
||||||
|
yjid: props.currentRelatedRow.id
|
||||||
|
};
|
||||||
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/addGlyj")
|
||||||
|
.then((res) => {
|
||||||
|
proxy.$message({ type: "success", message: "关联成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: "关联失败" });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 删除数据
|
||||||
|
const handleDelete = (row) => {
|
||||||
|
// 删除数据
|
||||||
|
proxy
|
||||||
|
.$confirm("确定要删除关联预警?", "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
qcckPost(
|
||||||
|
{ yjid: props.currentRelatedRow.id, glidList: [row.id] },
|
||||||
|
"/mosty-gsxt/tbYjxx/delGlyj"
|
||||||
|
).then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "删除关联预警成功" });
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const getList = () => {
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
const promes = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
glyjcx: 1,
|
||||||
|
id: props.currentRelatedRow.id
|
||||||
|
};
|
||||||
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/getPageList").then((res) => {
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
pageData.total = res.total;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 确定
|
||||||
|
const handleSave = () => {
|
||||||
|
emit("confirm", pageData.tableData);
|
||||||
|
close();
|
||||||
|
};
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal) {
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.deployment-data-content {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper {
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-area {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb10 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,354 @@
|
|||||||
|
<!-- 布控预警弹窗 -->
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:draggable="true"
|
||||||
|
:model-value="modelValue"
|
||||||
|
title="布控预警"
|
||||||
|
:width="width"
|
||||||
|
@close="close"
|
||||||
|
append-to-body
|
||||||
|
class="deployment-warning-dialog"
|
||||||
|
>
|
||||||
|
<div class="deployment-warning-content" v-loading="loading">
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
|
<QueryFormPanel
|
||||||
|
v-model="queryFrom"
|
||||||
|
:fields="searchConfiger"
|
||||||
|
@search="onSearch"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 表格 -->
|
||||||
|
<div class="table-wrapper">
|
||||||
|
<WarnDataTable
|
||||||
|
:loading="pageData.tableConfiger.loading"
|
||||||
|
:tableHeight="400"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="warn-table"
|
||||||
|
@selectionChange="handleChooseData"
|
||||||
|
>
|
||||||
|
<template #czzt="{ row }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #xbdm="{ row }">
|
||||||
|
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #qblyjb="{ row }">
|
||||||
|
<DictTag :value="row.qblyjb" :tag="false" :options="D_BZ_QBLYJB" />
|
||||||
|
</template>
|
||||||
|
<template #bksj="{ row }">
|
||||||
|
{{
|
||||||
|
row.bkkssj && row.bkjssj ? `${row.bkkssj} - ${row.bkjssj}` : ""
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
<template #xsd="{ row }">{{ row.xsd }}%</template>
|
||||||
|
<template #cszt="{ row }">
|
||||||
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
|
</template>
|
||||||
|
<template #bkyjlx="{ row }">
|
||||||
|
<DictTag :value="row.bkyjlx" :tag="false" :options="D_BZ_BKYJLX" />
|
||||||
|
</template>
|
||||||
|
</WarnDataTable>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Pages
|
||||||
|
@changeNo="changeNo"
|
||||||
|
@changeSize="changeSize"
|
||||||
|
:tableHeight="400"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 计算人数弹窗 -->
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button @click="handleConfirm" type="primary">确定选择</el-button>
|
||||||
|
<el-button @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { bqYs } from "@/utils/tools.js";
|
||||||
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
|
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import {
|
||||||
|
reactive,
|
||||||
|
ref,
|
||||||
|
onMounted,
|
||||||
|
getCurrentInstance,
|
||||||
|
nextTick,
|
||||||
|
watch,
|
||||||
|
computed
|
||||||
|
} from "vue";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import peopleConut from "../warningControl/deploymentIntegration/peopleConut.vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: "90%"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:modelValue", "confirm"]);
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const {
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_BZ_QBLYJB,
|
||||||
|
D_BZ_BKYJLX
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_BZ_QBLYJB",
|
||||||
|
"D_BZ_BKYJLX"
|
||||||
|
);
|
||||||
|
|
||||||
|
const searchBox = ref();
|
||||||
|
const searchDom = ref();
|
||||||
|
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{
|
||||||
|
label: "处置状态",
|
||||||
|
prop: "czzt",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GSXT_YJXX_CZZT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "预警时间",
|
||||||
|
prop: "startTime",
|
||||||
|
showType: "datetimerange",
|
||||||
|
placeholder: "请选择预警时间"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "姓名",
|
||||||
|
prop: "yjRyxm",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入姓名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "身份证号",
|
||||||
|
prop: "yjRysfzh",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入身份证号"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "管控级别",
|
||||||
|
prop: "qblyjb",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_QBLYJB
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "预警级别",
|
||||||
|
prop: "yjJb",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_YJJB,
|
||||||
|
placeholder: "请选择预警级别",
|
||||||
|
multiple: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控时间",
|
||||||
|
prop: "bksj",
|
||||||
|
showType: "daterange",
|
||||||
|
placeholder: "请选择布控开始时间"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "接收单位",
|
||||||
|
prop: "ssbmdm",
|
||||||
|
showType: "department",
|
||||||
|
placeholder: "请选择接收单位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控单位",
|
||||||
|
prop: "gkbmdm",
|
||||||
|
showType: "department",
|
||||||
|
placeholder: "请选择布控单位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "比对源",
|
||||||
|
prop: "bkyjlx",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_BKYJLX,
|
||||||
|
placeholder: "请选择比对源"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "超时状态",
|
||||||
|
prop: "cszt",
|
||||||
|
placeholder: "请选择超时状态",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_CSZT
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
const queryFrom = ref({});
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "checkBox",
|
||||||
|
loading: false,
|
||||||
|
haveControls: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
},
|
||||||
|
tableColumn: [
|
||||||
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
|
{ label: "处置状态", align: "center", slotName: "czzt" },
|
||||||
|
{ prop: "yjSj", label: "预警时间", width: 150 },
|
||||||
|
{ prop: "yjRyxm", label: "人员姓名", align: "center" },
|
||||||
|
{ label: "性别", align: "center", slotName: "xbdm" },
|
||||||
|
{ prop: "nl", label: "年龄", align: "center" },
|
||||||
|
{ prop: "yjRysfzh", label: "身份证号", width: 150, align: "center" },
|
||||||
|
{ label: "管控级别", align: "center", slotName: "qblyjb" },
|
||||||
|
{ label: "预警级别", align: "center", slotName: "yjJb" },
|
||||||
|
{ label: "布控时间", align: "center", width: 150, slotName: "bksj" },
|
||||||
|
{ prop: "ssbm", label: "接收单位", align: "center" },
|
||||||
|
{ prop: "gkbmmc", label: "布控单位", align: "center" },
|
||||||
|
{ prop: "bkyjlx", label: "比对源", align: "center", slotName: "bkyjlx" },
|
||||||
|
{ label: "相似度", slotName: "xsd", align: "center" },
|
||||||
|
{ prop: "yjNr", label: "预警内容", width: 150, align: "center" },
|
||||||
|
{ label: "超时状态", align: "center", slotName: "cszt" }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
const loading = computed(() => pageData.tableConfiger.loading);
|
||||||
|
|
||||||
|
onMounted(() => {});
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal) {
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
// 清空数据
|
||||||
|
pageData.tableData = [];
|
||||||
|
pageData.total = 0;
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
pageData.pageConfiger.pageSize = 20;
|
||||||
|
selectRows.value = [];
|
||||||
|
emit("update:modelValue", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = {
|
||||||
|
...queryFrom.value,
|
||||||
|
...val,
|
||||||
|
startTime: val.startTime ? val.startTime[0] : "",
|
||||||
|
endTime: val.startTime ? val.startTime[1] : "",
|
||||||
|
bkkssj: val.bksj ? val.bksj[0] : "",
|
||||||
|
bkjssj: val.bksj ? val.bksj[1] : "",
|
||||||
|
yjJb: val.yjJb?.join(",") || ""
|
||||||
|
};
|
||||||
|
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;
|
||||||
|
const params = {
|
||||||
|
...queryFrom.value,
|
||||||
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
|
pageSize: pageData.pageConfiger.pageSize,
|
||||||
|
yjlb: "01"
|
||||||
|
};
|
||||||
|
qcckPost(params, "/mosty-gsxt/tbYjxx/getPageList")
|
||||||
|
.then((res) => {
|
||||||
|
pageData.total = res.total || 0;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 选中项
|
||||||
|
const selectRows = ref([]);
|
||||||
|
const handleChooseData = (val) => {
|
||||||
|
selectRows.value = val;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确认选择
|
||||||
|
const handleConfirm = () => {
|
||||||
|
if (selectRows.value.length === 0) {
|
||||||
|
ElMessage.warning("请先选择数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emit("confirm", selectRows.value);
|
||||||
|
close();
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.deployment-warning-content {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper {
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt10 {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb10 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,315 @@
|
|||||||
|
<!-- 选择数据弹窗 -->
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:draggable="true"
|
||||||
|
:model-value="modelValue"
|
||||||
|
:title="title"
|
||||||
|
:width="width"
|
||||||
|
@close="close"
|
||||||
|
append-to-body
|
||||||
|
class="select-data-dialog"
|
||||||
|
>
|
||||||
|
<div class="select-data-content" v-loading="loading">
|
||||||
|
<!-- 按钮区域 -->
|
||||||
|
<div class="button-area mb10">
|
||||||
|
<el-button type="primary" @click="openSevenWarningDialog">
|
||||||
|
<el-icon><Plus /></el-icon>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 已选择数据表格 -->
|
||||||
|
<div class="table-wrapper" ref="tableWrapperRef" v-if="props.modelValue">
|
||||||
|
<WarnDataTable
|
||||||
|
:loading="pageData.tableConfiger.loading"
|
||||||
|
:tableHeight="tableHeight"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="selected-table"
|
||||||
|
>
|
||||||
|
<template #status="{ row }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #xbdm="{ row }">
|
||||||
|
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #bqdl="{ row }">
|
||||||
|
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
||||||
|
</template>
|
||||||
|
<template #yjLylx="{ row }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.yjLylx"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GS_ZDR_GJLB"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #cszt="{ row }">
|
||||||
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
|
</template>
|
||||||
|
<template #qbly="{ row }">
|
||||||
|
<DictTag :value="row.qbly" :tag="false" :options="D_BZ_QBLY" />
|
||||||
|
</template>
|
||||||
|
<template #qblyjb="{ row }">
|
||||||
|
<DictTag :value="row.qblyjb" :tag="false" :options="D_BZ_QBLYJB" />
|
||||||
|
</template>
|
||||||
|
<template #action="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
size="small"
|
||||||
|
text
|
||||||
|
@click="handleDelete(row)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</WarnDataTable>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 分页 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 七类重点选择弹窗 -->
|
||||||
|
<SevenWarningDialog
|
||||||
|
v-model="sevenWarningVisible"
|
||||||
|
@confirm="handleConfirm"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button @click="close">取消</el-button>
|
||||||
|
<el-button type="primary" @click="handleSave">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
|
import { bqYs } from "@/utils/tools.js";
|
||||||
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import SevenWarningDialog from "./SevenWarningDialog.vue";
|
||||||
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import {
|
||||||
|
reactive,
|
||||||
|
ref,
|
||||||
|
onMounted,
|
||||||
|
getCurrentInstance,
|
||||||
|
nextTick,
|
||||||
|
computed,
|
||||||
|
watch
|
||||||
|
} from "vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: "选择数据"
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: "90%"
|
||||||
|
},
|
||||||
|
showPagination: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
currentRelatedRow: {
|
||||||
|
type: Object,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:modelValue", "confirm"]);
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const {
|
||||||
|
D_GS_QLZDRLX,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_BZ_QBLY,
|
||||||
|
D_BZ_QBLYJB
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_GS_QLZDRLX",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_GS_ZDR_GJLB",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_BZ_QBLY",
|
||||||
|
"D_BZ_QBLYJB"
|
||||||
|
);
|
||||||
|
|
||||||
|
const loading = ref(false);
|
||||||
|
const tableHeight = ref(400);
|
||||||
|
const sevenWarningVisible = ref(false);
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal) {
|
||||||
|
tableHeight.value = 500;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: false,
|
||||||
|
loading: false,
|
||||||
|
haveControls: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
},
|
||||||
|
tableColumn: [
|
||||||
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
|
|
||||||
|
{ label: "预警状态", width: 80, align: "center", slotName: "status" },
|
||||||
|
{ prop: "yjSj", label: "预警时间" },
|
||||||
|
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
||||||
|
{ prop: "yjRysfzh", label: "身份证号", width: 158 },
|
||||||
|
{ label: "性别", width: 55, align: "center", slotName: "xbdm" },
|
||||||
|
{ prop: "nl", label: "年龄", width: 55, align: "center" },
|
||||||
|
{ label: "预警级别", width: 80, align: "center", slotName: "yjJb" },
|
||||||
|
{ label: "人员类别", width: 80, align: "center", slotName: "bqdl" },
|
||||||
|
{ prop: "yjbqmc", label: "人员细类", width: 80 },
|
||||||
|
{ label: "轨迹类别", width: 80, align: "center", slotName: "yjLylx" },
|
||||||
|
{ prop: "yjDz", label: "活动发生地", width: 100 },
|
||||||
|
{ prop: "ssbm", label: "接收单位" },
|
||||||
|
{ label: "情报来源", width: 80, align: "center", slotName: "qbly" },
|
||||||
|
{ label: "来源级别", width: 80, align: "center", slotName: "qblyjb" },
|
||||||
|
{ prop: "yjCs", label: "次数", width: 55, align: "center" },
|
||||||
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" },
|
||||||
|
{
|
||||||
|
label: "操作",
|
||||||
|
align: "center",
|
||||||
|
slotName: "action",
|
||||||
|
fixed: "right"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => {});
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
// 清空数据
|
||||||
|
pageData.tableData = [];
|
||||||
|
pageData.total = 0;
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
pageData.pageConfiger.pageSize = 20;
|
||||||
|
emit("update:modelValue", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打开七类重点选择弹窗
|
||||||
|
const openSevenWarningDialog = () => {
|
||||||
|
sevenWarningVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确认选择数据
|
||||||
|
const handleConfirm = (selectedRows) => {
|
||||||
|
if (selectedRows && selectedRows.length > 0) {
|
||||||
|
const promes = {
|
||||||
|
glidList: selectedRows.map((item) => item.id),
|
||||||
|
yjid: props.currentRelatedRow.id
|
||||||
|
};
|
||||||
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/addGlyj")
|
||||||
|
.then((res) => {
|
||||||
|
proxy.$message({ type: "success", message: "关联成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: "关联失败" });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 删除数据
|
||||||
|
const handleDelete = (row) => {
|
||||||
|
proxy
|
||||||
|
.$confirm("确定要删除关联预警?", "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
qcckPost(
|
||||||
|
{ yjid: props.currentRelatedRow.id, glidList: [row.id] },
|
||||||
|
"/mosty-gsxt/tbYjxx/delGlyj"
|
||||||
|
).then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "删除关联预警成功" });
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 查询数据
|
||||||
|
const getList = () => {
|
||||||
|
pageData.tableConfiger.loading = true;
|
||||||
|
const promes = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
// sfglyj: 1,
|
||||||
|
id: props.currentRelatedRow.id,
|
||||||
|
glyjcx: 1
|
||||||
|
};
|
||||||
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/getQlzdrPageList")
|
||||||
|
.then((res) => {
|
||||||
|
pageData.total = res.total || 0;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确定
|
||||||
|
const handleSave = () => {
|
||||||
|
emit("confirm", pageData.tableData);
|
||||||
|
close();
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.select-data-content {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper {
|
||||||
|
height: 50vh;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-area {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb10 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,440 @@
|
|||||||
|
<!-- 七类重点预警弹窗 -->
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:draggable="true"
|
||||||
|
:model-value="modelValue"
|
||||||
|
title="七类重点"
|
||||||
|
:width="width"
|
||||||
|
@close="close"
|
||||||
|
append-to-body
|
||||||
|
class="seven-warning-dialog"
|
||||||
|
>
|
||||||
|
<div class="seven-warning-content" v-loading="loading">
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
|
<QueryFormPanel
|
||||||
|
v-model="queryFrom"
|
||||||
|
:fields="searchConfiger"
|
||||||
|
ref="searchDom"
|
||||||
|
@search="onSearch"
|
||||||
|
>
|
||||||
|
<template #yjCs>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.yjkscs"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.yjjscs"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #nl>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.ksnl"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始年龄"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.jsnl"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束年龄"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</QueryFormPanel>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 表格 -->
|
||||||
|
<div class="table-wrapper">
|
||||||
|
<WarnDataTable
|
||||||
|
:loading="pageData.tableConfiger.loading"
|
||||||
|
:tableHeight="400"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="warn-table"
|
||||||
|
@selectionChange="handleChooseData"
|
||||||
|
>
|
||||||
|
<template #status="{ row }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #xbdm="{ row }">
|
||||||
|
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
||||||
|
</template>
|
||||||
|
<template #yjJb="{ row }">
|
||||||
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #bqdl="{ row }">
|
||||||
|
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
||||||
|
</template>
|
||||||
|
<template #yjLylx="{ row }">
|
||||||
|
<DictTag
|
||||||
|
:value="row.yjLylx"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GS_ZDR_GJLB"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #cszt="{ row }">
|
||||||
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
|
</template>
|
||||||
|
<template #qbly="{ row }">
|
||||||
|
<DictTag :value="row.qbly" :tag="false" :options="D_BZ_QBLY" />
|
||||||
|
</template>
|
||||||
|
<template #qblyjb="{ row }">
|
||||||
|
<DictTag :value="row.qblyjb" :tag="false" :options="D_BZ_QBLYJB" />
|
||||||
|
</template>
|
||||||
|
</WarnDataTable>
|
||||||
|
|
||||||
|
<Pages
|
||||||
|
@changeNo="changeNo"
|
||||||
|
@changeSize="changeSize"
|
||||||
|
:tableHeight="400"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 计算人数弹窗 -->
|
||||||
|
<peopleConut v-model="searchOpen" :dataConut="dataConut" />
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button @click="handleConfirm" type="primary">确定选择</el-button>
|
||||||
|
<el-button @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||||
|
import { bqYs } from "@/utils/tools.js";
|
||||||
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
|
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import {
|
||||||
|
reactive,
|
||||||
|
ref,
|
||||||
|
onMounted,
|
||||||
|
getCurrentInstance,
|
||||||
|
nextTick,
|
||||||
|
watch
|
||||||
|
} from "vue";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import peopleConut from "../warningControl/sevenWarning/peopleConut.vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: "90%"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:modelValue", "confirm"]);
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const {
|
||||||
|
D_BZ_YJLY,
|
||||||
|
D_GS_QLZDRLX,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_GS_QLZDRYXX,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_GS_ZDR_RYJB,
|
||||||
|
D_BZ_SF,
|
||||||
|
D_BZ_QBLY,
|
||||||
|
D_BZ_QBLYJB
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_BZ_YJLY",
|
||||||
|
"D_GS_QLZDRLX",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_GS_QLZDRYXX",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_GS_ZDR_RYJB",
|
||||||
|
"D_GS_ZDR_GJLB",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_BZ_SF",
|
||||||
|
"D_BZ_QBLY",
|
||||||
|
"D_BZ_QBLYJB"
|
||||||
|
);
|
||||||
|
|
||||||
|
const searchBox = ref();
|
||||||
|
const searchDom = ref();
|
||||||
|
const tableHeight = ref(400);
|
||||||
|
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{
|
||||||
|
key: "startTime",
|
||||||
|
label: "预警时间",
|
||||||
|
type: "datetimerange",
|
||||||
|
placeholder: "请选择预警时间"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "yjJb",
|
||||||
|
label: "预警级别",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_YJJB,
|
||||||
|
multiple: true,
|
||||||
|
placeholder: "请选择预警级别"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "ssbmdm",
|
||||||
|
label: "接收单位",
|
||||||
|
type: "department",
|
||||||
|
placeholder: "请选择接收单位"
|
||||||
|
},
|
||||||
|
{ key: "yjRyxm", label: "姓名", type: "input", placeholder: "请输入姓名" },
|
||||||
|
{
|
||||||
|
key: "xbdm",
|
||||||
|
label: "性别",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_XB,
|
||||||
|
placeholder: "请选择性别"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
key: "bqdl",
|
||||||
|
label: "人员类别",
|
||||||
|
type: "select",
|
||||||
|
options: D_GS_QLZDRLX,
|
||||||
|
placeholder: "请选择人员类别"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
key: "yjRysfzh",
|
||||||
|
label: "身份证号码",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入身份证号码"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "nl",
|
||||||
|
label: "年龄",
|
||||||
|
type: "slot",
|
||||||
|
placeholder: "请输入年龄"
|
||||||
|
},
|
||||||
|
|
||||||
|
{ key: "yjLylx", label: "轨迹类别", type: "select", options: D_GS_ZDR_GJLB },
|
||||||
|
{
|
||||||
|
key: "yjDz",
|
||||||
|
label: "活动发生地",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入活动发生地"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
key: "qbly",
|
||||||
|
label: "情报来源",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_QBLY,
|
||||||
|
placeholder: "请选择情报来源"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "qblyjb",
|
||||||
|
label: "情报来源级别",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_QBLYJB,
|
||||||
|
placeholder: "请选择情报来源级别"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
const queryFrom = ref({});
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "checkBox",
|
||||||
|
loading: false,
|
||||||
|
haveControls: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
},
|
||||||
|
tableColumn: [
|
||||||
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
|
{ label: "预警状态", width: 80, align: "center", slotName: "status" },
|
||||||
|
{ prop: "yjSj", label: "预警时间" },
|
||||||
|
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
||||||
|
{ prop: "yjRysfzh", label: "身份证号" },
|
||||||
|
{ label: "性别", width: 55, align: "center", slotName: "xbdm" },
|
||||||
|
{ prop: "nl", label: "年龄", width: 55, align: "center" },
|
||||||
|
{ label: "预警级别", width: 80, align: "center", slotName: "yjJb" },
|
||||||
|
{ label: "人员类别", width: 80, align: "center", slotName: "bqdl" },
|
||||||
|
{ prop: "yjbqmc", label: "人员细类", width: 80 },
|
||||||
|
{ label: "轨迹类别", width: 80, align: "center", slotName: "yjLylx" },
|
||||||
|
{ prop: "yjDz", label: "活动发生地" },
|
||||||
|
{ prop: "ssbm", label: "接收单位" },
|
||||||
|
{ label: "情报来源", width: 80, align: "center", slotName: "qbly" },
|
||||||
|
{ label: "来源级别", width: 80, align: "center", slotName: "qblyjb" },
|
||||||
|
{ prop: "yjCs", label: "次数", width: 55, align: "center" },
|
||||||
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
const loading = computed(() => pageData.tableConfiger.loading);
|
||||||
|
|
||||||
|
import { computed } from "vue";
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal) {
|
||||||
|
nextTick(() => {
|
||||||
|
tabHeightFn();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
// 清空数据
|
||||||
|
pageData.tableData = [];
|
||||||
|
pageData.total = 0;
|
||||||
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
|
pageData.pageConfiger.pageSize = 20;
|
||||||
|
selectRows.value = [];
|
||||||
|
emit("update:modelValue", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = { ...val, yjJb: val.yjJb?.join(",") || "" };
|
||||||
|
queryFrom.value.startTime = val.startTime ? val.startTime[0] : "";
|
||||||
|
queryFrom.value.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;
|
||||||
|
const promes = {
|
||||||
|
...queryFrom.value,
|
||||||
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
|
pageSize: pageData.pageConfiger.pageSize
|
||||||
|
};
|
||||||
|
delete promes.times;
|
||||||
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/getQlzdrPageList")
|
||||||
|
.then((res) => {
|
||||||
|
pageData.total = res.total || 0;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 选中项
|
||||||
|
const selectRows = ref([]);
|
||||||
|
const handleChooseData = (val) => {
|
||||||
|
selectRows.value = val;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确认选择
|
||||||
|
const handleConfirm = () => {
|
||||||
|
if (selectRows.value.length === 0) {
|
||||||
|
ElMessage.warning("请先选择数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emit("confirm", selectRows.value);
|
||||||
|
close();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
if (searchBox.value) {
|
||||||
|
const dialogBody = document.querySelector(
|
||||||
|
".seven-warning-dialog .el-dialog__body"
|
||||||
|
);
|
||||||
|
if (dialogBody) {
|
||||||
|
const headerHeight = 60;
|
||||||
|
const footerHeight = 60;
|
||||||
|
const paddingHeight = 40;
|
||||||
|
const searchHeight = searchBox.value.offsetHeight || 50;
|
||||||
|
tableHeight.value =
|
||||||
|
dialogBody.clientHeight -
|
||||||
|
headerHeight -
|
||||||
|
footerHeight -
|
||||||
|
paddingHeight -
|
||||||
|
searchHeight -
|
||||||
|
50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.seven-warning-content {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-wrapper {
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt10 {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb10 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,194 @@
|
|||||||
|
<!--预警详情弹窗(根据yjLylx展示不同表格)-->
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:draggable="true"
|
||||||
|
:model-value="modelValue"
|
||||||
|
:title="dialogTitle"
|
||||||
|
:width="width"
|
||||||
|
@close="close"
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<div class="yj-detail-dialog" v-loading="loading">
|
||||||
|
<MyTable
|
||||||
|
:tableData="tableData"
|
||||||
|
:tableColumn="tableColumn"
|
||||||
|
:tableHeight="tableHeight"
|
||||||
|
:key="keyCount"
|
||||||
|
:tableConfiger="tableConfiger"
|
||||||
|
>
|
||||||
|
<template #jqlyfs="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqlyfs" :options="dict.D_BZ_JQLY" />
|
||||||
|
</template>
|
||||||
|
<template #jqlbdm="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqlbdm" :options="dict.JQLB" />
|
||||||
|
</template>
|
||||||
|
<template #jqxldm="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqxldm" :options="dict.JQXL" />
|
||||||
|
</template>
|
||||||
|
<template #jqdjdm="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqdjdm" :options="dict.D_BZ_JQDJ" />
|
||||||
|
</template>
|
||||||
|
<template #jqlxdm="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.jqlxdm" :options="dict.JQLX" />
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<el-button @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed, watch } from "vue";
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: "预警详情"
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: "70%"
|
||||||
|
},
|
||||||
|
dataList: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:modelValue"]);
|
||||||
|
|
||||||
|
const loading = ref(false);
|
||||||
|
const tableData = ref([]);
|
||||||
|
const keyCount = ref(0);
|
||||||
|
|
||||||
|
const tableHeight = 500;
|
||||||
|
|
||||||
|
const tableConfiger = ref({
|
||||||
|
rowHieght: 61,
|
||||||
|
loading: false,
|
||||||
|
haveControls: false
|
||||||
|
});
|
||||||
|
|
||||||
|
const tableColumn = ref([]);
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
emit("update:modelValue", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const API_MAP = {
|
||||||
|
21: {
|
||||||
|
path: "/mosty-gsxt/yjzxSfyjxq/selectList",
|
||||||
|
name: "身份预警"
|
||||||
|
},
|
||||||
|
22: {
|
||||||
|
path: "/mosty-gsxt/yjzxXwyjxq/selectList",
|
||||||
|
name: "行为预警"
|
||||||
|
},
|
||||||
|
23: {
|
||||||
|
path: "/mosty-gsxt/yjzxZhyjxq/selectList",
|
||||||
|
name: "组合预警"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const COLUMNS_MAP = {
|
||||||
|
21: [
|
||||||
|
{ label: "姓名", prop: "bjrmc" },
|
||||||
|
{ label: "身份证号", prop: "bjrzjhm" },
|
||||||
|
// { label: "来源类型", prop: "jqlyfs", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情类别", prop: "jqlbdm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情小类", prop: "jqxldm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情等级", prop: "jqdjdm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情类型", prop: "jqlxdm", showSolt: true, width: 100 },
|
||||||
|
{ label: "预警地址", prop: "bjdz" },
|
||||||
|
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "预警时间", prop: "yjsj", showOverflowTooltip: true }
|
||||||
|
],
|
||||||
|
22: [
|
||||||
|
{ label: "姓名", prop: "bjrmc" },
|
||||||
|
{ label: "身份证号", prop: "bjrzjhm" },
|
||||||
|
// { label: "来源类型", prop: "jqlyfs", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情类别", prop: "jqlbdm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情小类", prop: "jqxldm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情等级", prop: "jqdjdm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情类型", prop: "jqlxdm", showSolt: true, width: 100 },
|
||||||
|
{ label: "预警地址", prop: "bjdz" },
|
||||||
|
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "预警时间", prop: "yjsj", showOverflowTooltip: true }
|
||||||
|
],
|
||||||
|
23: [
|
||||||
|
{ label: "姓名", prop: "bjrmc" },
|
||||||
|
{ label: "身份证号", prop: "bjrzjhm" },
|
||||||
|
// { label: "来源类型", prop: "jqlyfs", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情类别", prop: "jqlbdm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情小类", prop: "jqxldm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情等级", prop: "jqdjdm", showSolt: true, width: 100 },
|
||||||
|
// { label: "警情类型", prop: "jqlxdm", showSolt: true, width: 100 },
|
||||||
|
{ label: "预警地址", prop: "bjdz" },
|
||||||
|
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
|
{ label: "预警时间", prop: "yjsj", showOverflowTooltip: true }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
const dialogTitle = computed(() => {
|
||||||
|
const type = API_MAP[props.dataList.yjLylx];
|
||||||
|
return type ? `${type.name}详情(${tableData.value.length})` : props.title;
|
||||||
|
});
|
||||||
|
|
||||||
|
const fetchData = async (row) => {
|
||||||
|
const yjLylx = row.yjLylx;
|
||||||
|
const api = API_MAP[yjLylx];
|
||||||
|
if (!api) return;
|
||||||
|
|
||||||
|
loading.value = true;
|
||||||
|
tableConfiger.value.loading = true;
|
||||||
|
tableData.value = [];
|
||||||
|
tableColumn.value = COLUMNS_MAP[yjLylx] || [];
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await qcckGet({ yjid: row.id }, api.path);
|
||||||
|
if (Array.isArray(res)) {
|
||||||
|
tableData.value = res;
|
||||||
|
} else if (res && Array.isArray(res)) {
|
||||||
|
tableData.value = res;
|
||||||
|
} else {
|
||||||
|
tableData.value = [];
|
||||||
|
}
|
||||||
|
keyCount.value++;
|
||||||
|
} catch (e) {
|
||||||
|
console.error("加载预警详情失败", e);
|
||||||
|
tableData.value = [];
|
||||||
|
} finally {
|
||||||
|
loading.value = false;
|
||||||
|
tableConfiger.value.loading = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal && props.dataList.id) {
|
||||||
|
fetchData(props.dataList);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.yj-detail-dialog {
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -101,7 +101,7 @@ import ControlWarning from "@/views/backOfficeSystem/fourColorManage/warningCont
|
|||||||
import LabelWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/iabelWarning/index.vue";
|
import LabelWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/iabelWarning/index.vue";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
// "人像预警", "车辆预警",, "区域预警","无人机预警"
|
// "人像预警", "车辆预警",, "区域预警","无人机预警"
|
||||||
const butList = ref(["七类重点", "政保预警", "布控预警", "预警整合"]);
|
const butList = ref(["七类重点", "政保预警", "布控预警"]);
|
||||||
const qh = ref("七类重点");
|
const qh = ref("七类重点");
|
||||||
const value = ref("人像预警");
|
const value = ref("人像预警");
|
||||||
const Bqvalue = ref("身份预警");
|
const Bqvalue = ref("身份预警");
|
||||||
@ -135,7 +135,7 @@ onMounted(() => {
|
|||||||
if (hasPermissin.value) {
|
if (hasPermissin.value) {
|
||||||
const data = butList.value.filter((item) => item !== "预警整合");
|
const data = butList.value.filter((item) => item !== "预警整合");
|
||||||
// "身份预警", "行为预警", "组合预警"
|
// "身份预警", "行为预警", "组合预警"
|
||||||
butList.value = [...data, ...["标签预警", "预警整合"]];
|
butList.value = [...data, ...["标签预警"]];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,186 +1,280 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :draggable="true" v-model="showDialog" :append-to-body="true" :destroy-on-close="true" :title="title"
|
<el-dialog
|
||||||
:close-on-click-modal="false">
|
:draggable="true"
|
||||||
<FormMessage v-model="listQuery" :disabled="title == '反馈' ? false : true" :formList="formData" labelWidth="160px"
|
v-model="showDialog"
|
||||||
ref="elform" :rules="rules">
|
:append-to-body="true"
|
||||||
|
:destroy-on-close="true"
|
||||||
|
:title="title"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<FormMessage
|
||||||
|
v-model="listQuery"
|
||||||
|
:disabled="title == '反馈' ? false : true"
|
||||||
|
:formList="formData"
|
||||||
|
labelWidth="160px"
|
||||||
|
ref="elform"
|
||||||
|
:rules="rules"
|
||||||
|
>
|
||||||
<template #mbzrmjxm>
|
<template #mbzrmjxm>
|
||||||
<MOSTY.Other width="100%" @click="handleChoose('mbzrmjxm')" clearable v-model="listQuery.mbzrmjxm"
|
<MOSTY.Other
|
||||||
placeholder="请选择民警" :readonly="true" />
|
width="100%"
|
||||||
|
@click="handleChoose('mbzrmjxm')"
|
||||||
|
clearable
|
||||||
|
v-model="listQuery.mbzrmjxm"
|
||||||
|
placeholder="请选择民警"
|
||||||
|
:readonly="true"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #czzrmj>
|
<template #czzrmj>
|
||||||
<MOSTY.Other width="100%" @click="handleChoose('czzrmj')" clearable v-model="listQuery.czzrmj"
|
<MOSTY.Other
|
||||||
placeholder="请选择民警" :readonly="true" />
|
width="100%"
|
||||||
|
@click="handleChoose('czzrmj')"
|
||||||
|
clearable
|
||||||
|
v-model="listQuery.czzrmj"
|
||||||
|
placeholder="请选择民警"
|
||||||
|
:readonly="true"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
</FormMessage>
|
</FormMessage>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="flex just-center">
|
<div class="flex just-center">
|
||||||
<el-button @click="close">取消</el-button>
|
<el-button @click="close">取消</el-button>
|
||||||
<el-button type="primary" @click="submitForm" :loading="loading" v-if="title == '反馈'">确认</el-button>
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitForm"
|
||||||
|
:loading="loading"
|
||||||
|
v-if="title == '反馈'"
|
||||||
|
>确认</el-button
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<ChooseUser v-model="chooseUserVisible" v-if="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds"
|
<ChooseUser
|
||||||
:Single="true" />
|
v-model="chooseUserVisible"
|
||||||
|
v-if="chooseUserVisible"
|
||||||
|
@choosedUsers="handleUserSelected"
|
||||||
|
:roleIds="roleIds"
|
||||||
|
:Single="true"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue"
|
import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue";
|
||||||
import * as MOSTY from "@/components/MyComponents/index";
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
import FormMessage from "@/components/aboutTable/FormMessage.vue";
|
||||||
import { onMounted, reactive, ref, getCurrentInstance,onUnmounted } from 'vue';
|
import { onMounted, reactive, ref, getCurrentInstance, onUnmounted } from "vue";
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
lx: {
|
lx: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '01'
|
default: "01"
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
const emit = defineEmits(['change'])
|
const emit = defineEmits(["change"]);
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_BZ_SF, D_YJXX_CZCSLX, D_YJXX_CZSSXZ, D_YJXX_CKCZJG, D_YJXX_CKZYLX } = proxy.$dict('D_YJXX_CKZYLX', 'D_BZ_SF', 'D_YJXX_CZCSLX', 'D_YJXX_CZSSXZ', 'D_YJXX_CKCZJG')
|
const { D_BZ_SF, D_YJXX_CZCSLX, D_YJXX_CZSSXZ, D_YJXX_CKCZJG, D_YJXX_CKZYLX } =
|
||||||
const chooseUserVisible = ref(false)
|
proxy.$dict(
|
||||||
const roleIds = ref([])
|
"D_YJXX_CKZYLX",
|
||||||
const elform = ref()
|
"D_BZ_SF",
|
||||||
const showDialog = ref(false)
|
"D_YJXX_CZCSLX",
|
||||||
const loading = ref(false)
|
"D_YJXX_CZSSXZ",
|
||||||
const choosetype = ref('')
|
"D_YJXX_CKCZJG"
|
||||||
const listQuery = ref({})
|
);
|
||||||
|
const chooseUserVisible = ref(false);
|
||||||
|
const roleIds = ref([]);
|
||||||
|
const elform = ref();
|
||||||
|
const showDialog = ref(false);
|
||||||
|
const loading = ref(false);
|
||||||
|
const choosetype = ref("");
|
||||||
|
const listQuery = ref({});
|
||||||
const formData = ref([
|
const formData = ref([
|
||||||
{ label: "发现目标状态", prop: "mbzt", type: "select", options: D_BZ_SF },
|
{ label: "发现目标状态", prop: "mbzt", type: "select", options: D_BZ_SF },
|
||||||
{ label: "发现目标责任单位", prop: "mbzrdwdm", type: "department", depMc: 'mbzrdw' },
|
{
|
||||||
|
label: "发现目标责任单位",
|
||||||
|
prop: "mbzrdwdm",
|
||||||
|
type: "department",
|
||||||
|
depMc: "mbzrdw"
|
||||||
|
},
|
||||||
{ label: "发现目标责任民警", prop: "mbzrmjxm", type: "slot" },
|
{ label: "发现目标责任民警", prop: "mbzrmjxm", type: "slot" },
|
||||||
{ label: "是否本人", prop: "sfbr", type: "select", options: D_BZ_SF },
|
{ label: "是否本人", prop: "sfbr", type: "select", options: D_BZ_SF },
|
||||||
{ label: "处置时间", prop: "czsj", type: "datetime" },
|
{ label: "处置时间", prop: "czsj", type: "datetime" },
|
||||||
{ label: "处置地址", prop: "czdz", type: "textarea", width: '100%' },
|
{ label: "处置地址", prop: "czdz", type: "textarea", width: "100%" },
|
||||||
{ label: "详细地址", prop: "xxdz", type: "textarea", width: '100%' },
|
{ label: "详细地址", prop: "xxdz", type: "textarea", width: "100%" },
|
||||||
{ label: "处置责任单位", prop: "czzrdwdm", type: "department", depMc: 'czzrdw' },
|
{
|
||||||
|
label: "处置责任单位",
|
||||||
|
prop: "czzrdwdm",
|
||||||
|
type: "department",
|
||||||
|
depMc: "czzrdw"
|
||||||
|
},
|
||||||
{ label: "处置责任民警", prop: "czzrmj", type: "slot" },
|
{ label: "处置责任民警", prop: "czzrmj", type: "slot" },
|
||||||
{ label: "常控处置措施类型", prop: "ckczcslx", type: "select", options: D_YJXX_CZCSLX },
|
{
|
||||||
{ label: "常控处置措施细类", prop: "ckczcsxl", type: "select", options: D_YJXX_CZSSXZ },
|
label: "常控处置措施类型",
|
||||||
{ label: "常控处置结果", prop: "ckczjg", type: "select", options: D_YJXX_CKCZJG },
|
prop: "ckczcslx",
|
||||||
|
type: "select",
|
||||||
|
options: D_YJXX_CZCSLX
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "常控处置措施细类",
|
||||||
|
prop: "ckczcsxl",
|
||||||
|
type: "select",
|
||||||
|
options: D_YJXX_CZSSXZ
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "常控处置结果",
|
||||||
|
prop: "ckczjg",
|
||||||
|
type: "select",
|
||||||
|
options: D_YJXX_CKCZJG
|
||||||
|
},
|
||||||
{ label: "常控立线侦察评估", prop: "cklxzcpg", type: "input" },
|
{ label: "常控立线侦察评估", prop: "cklxzcpg", type: "input" },
|
||||||
{ label: "常控立线侦察依据", prop: "cklxzcpgyj", type: "input" },
|
{ label: "常控立线侦察依据", prop: "cklxzcpgyj", type: "input" },
|
||||||
{ label: "常控从事职业类型", prop: "ckzylx", type: "select", options: D_YJXX_CKZYLX },
|
{
|
||||||
|
label: "常控从事职业类型",
|
||||||
|
prop: "ckzylx",
|
||||||
|
type: "select",
|
||||||
|
options: D_YJXX_CKZYLX
|
||||||
|
},
|
||||||
{ label: "是否尿检", prop: "sfnj", type: "radio", options: D_BZ_SF },
|
{ label: "是否尿检", prop: "sfnj", type: "radio", options: D_BZ_SF },
|
||||||
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea", width: '100%' },
|
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea", width: "100%" },
|
||||||
{ label: "常控处置反馈补充信息", prop: "ckczbcxx", type: "textarea", width: '100%' },
|
{
|
||||||
])
|
label: "常控处置反馈补充信息",
|
||||||
|
prop: "ckczbcxx",
|
||||||
|
type: "textarea",
|
||||||
|
width: "100%"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
mbzt: [{ required: true, message: "请选择发现目标状态", trigger: "change" }],
|
mbzt: [{ required: true, message: "请选择发现目标状态", trigger: "change" }],
|
||||||
fxmbzedw: [{ required: true, message: "请选择发现目标责任单位", trigger: "change" }],
|
fxmbzedw: [
|
||||||
mbzrmjxm: [{ required: true, message: "请选择发现目标责任民警", trigger: "change" }],
|
{ required: true, message: "请选择发现目标责任单位", trigger: "change" }
|
||||||
|
],
|
||||||
|
mbzrmjxm: [
|
||||||
|
{ required: true, message: "请选择发现目标责任民警", trigger: "change" }
|
||||||
|
],
|
||||||
sfbr: [{ required: true, message: "请选择是否本人", trigger: "change" }],
|
sfbr: [{ required: true, message: "请选择是否本人", trigger: "change" }],
|
||||||
czsj: [{ required: true, message: "请选择处置时间", trigger: "change" }],
|
czsj: [{ required: true, message: "请选择处置时间", trigger: "change" }],
|
||||||
czdz: [{ required: true, message: "请选择处置地址", trigger: "blur" }],
|
czdz: [{ required: true, message: "请选择处置地址", trigger: "blur" }],
|
||||||
xxdz: [{ required: true, message: "请选择详细地址", trigger: "blur" }],
|
xxdz: [{ required: true, message: "请选择详细地址", trigger: "blur" }],
|
||||||
czzrdwdm: [{ required: true, message: "请选择处置责任单位", trigger: "change" }],
|
czzrdwdm: [
|
||||||
czzrmj: [{ required: true, message: "请选择处置责任民警", trigger: "change" }],
|
{ required: true, message: "请选择处置责任单位", trigger: "change" }
|
||||||
ckczcslx: [{ required: true, message: "请选择常控处置措施类型", trigger: "change" }],
|
],
|
||||||
ckczcsxl: [{ required: true, message: "请选择常控处置措施细类", trigger: "change" }],
|
czzrmj: [
|
||||||
|
{ required: true, message: "请选择处置责任民警", trigger: "change" }
|
||||||
|
],
|
||||||
|
ckczcslx: [
|
||||||
|
{ required: true, message: "请选择常控处置措施类型", trigger: "change" }
|
||||||
|
],
|
||||||
|
ckczcsxl: [
|
||||||
|
{ required: true, message: "请选择常控处置措施细类", trigger: "change" }
|
||||||
|
],
|
||||||
ckczjg: [{ required: true, message: "请输入常控处置结果", trigger: "blur" }],
|
ckczjg: [{ required: true, message: "请输入常控处置结果", trigger: "blur" }],
|
||||||
cklxzcpg: [{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }],
|
cklxzcpg: [
|
||||||
cklxzcpgyj: [{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }],
|
{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }
|
||||||
ckzylx: [{ required: true, message: "请选择常控从事职业类型", trigger: "change" }],
|
],
|
||||||
sfnj: [{ required: true, message: "请选择是否尿检", trigger: "change" }],
|
cklxzcpgyj: [
|
||||||
})
|
{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }
|
||||||
|
],
|
||||||
|
ckzylx: [
|
||||||
|
{ required: true, message: "请选择常控从事职业类型", trigger: "change" }
|
||||||
|
],
|
||||||
|
sfnj: [{ required: true, message: "请选择是否尿检", trigger: "change" }]
|
||||||
|
});
|
||||||
|
|
||||||
const title = ref('')
|
const title = ref("");
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
emitter.on("openFkDialog", (val) => {
|
emitter.on("openFkDialog", (val) => {
|
||||||
showDialog.value = true;
|
showDialog.value = true;
|
||||||
listQuery.value = { yjid: val.id }
|
listQuery.value = { yjid: val.id };
|
||||||
let url = ''
|
let url = "";
|
||||||
switch (props.lx) {
|
switch (props.lx) {
|
||||||
case '01':
|
case "01":
|
||||||
url = '/mosty-gsxt/tbYjxx/getInfo/'
|
url = "/mosty-gsxt/tbYjxx/getInfo/";
|
||||||
break;
|
break;
|
||||||
case '02':
|
case "02":
|
||||||
url = '/mosty-gsxt/yjzxXwyj/'
|
url = "/mosty-gsxt/yjzxXwyj/";
|
||||||
break;
|
break;
|
||||||
case '03':
|
case "03":
|
||||||
url = '/mosty-gsxt/yjzxSfyj/'
|
url = "/mosty-gsxt/yjzxSfyj/";
|
||||||
break;
|
break;
|
||||||
case '04':
|
case "04":
|
||||||
url = '/mosty-gsxt/yjzxZhyj/'
|
url = "/mosty-gsxt/yjzxZhyj/";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
title.value = val.type;
|
title.value = val.type;
|
||||||
if (val.type == '查看反馈') {
|
if (val.type == "查看反馈") {
|
||||||
qcckGet({}, url + val.id).then((res) => {
|
qcckGet({}, url + val.id).then((res) => {
|
||||||
let list = res.fkList || []
|
let list = res.fkList || [];
|
||||||
listQuery.value = list.length > 0 ? list[0] : {};
|
listQuery.value = list.length > 0 ? list[0] : {};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
|
|
||||||
const handleChoose = (type) => {
|
const handleChoose = (type) => {
|
||||||
chooseUserVisible.value = true,
|
(chooseUserVisible.value = true), (choosetype.value = type);
|
||||||
choosetype.value = type;
|
};
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// 选取角色
|
// 选取角色
|
||||||
const handleUserSelected = (val) => {
|
const handleUserSelected = (val) => {
|
||||||
switch (choosetype.value) {
|
switch (choosetype.value) {
|
||||||
case 'mbzrmjxm':
|
case "mbzrmjxm":
|
||||||
listQuery.value.mbzrmjxm = val[0].userName
|
listQuery.value.mbzrmjxm = val[0].userName;
|
||||||
listQuery.value.mbzrmjsfzh = val[0].inDustRialId
|
listQuery.value.mbzrmjsfzh = val[0].inDustRialId;
|
||||||
break;
|
break;
|
||||||
case 'czzrmj':
|
case "czzrmj":
|
||||||
listQuery.value.czzrmj = val[0].userName
|
listQuery.value.czzrmj = val[0].userName;
|
||||||
listQuery.value.czzrmjsfzh = val[0].inDustRialId
|
listQuery.value.czzrmjsfzh = val[0].inDustRialId;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
};
|
||||||
}
|
|
||||||
|
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
elform.value.submit((val) => {
|
elform.value.submit((val) => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const prome = {
|
const prome = {
|
||||||
...listQuery.value,
|
...listQuery.value
|
||||||
}
|
};
|
||||||
let url = ''
|
let url = "";
|
||||||
switch (props.lx) {
|
switch (props.lx) {
|
||||||
case '01':
|
case "01":
|
||||||
url = '/mosty-gsxt/tbYjxx/yjfk'
|
url = "/mosty-gsxt/tbYjxx/yjfk";
|
||||||
break;
|
break;
|
||||||
case '02':
|
case "02":
|
||||||
url = '/mosty-gsxt/yjzxXwyj/yjfk'
|
url = "/mosty-gsxt/yjzxXwyj/yjfk";
|
||||||
break;
|
break;
|
||||||
case '03':
|
case "03":
|
||||||
url = '/mosty-gsxt/yjzxSfyj/yjfk'
|
url = "/mosty-gsxt/yjzxSfyj/yjfk";
|
||||||
break;
|
break;
|
||||||
case '04':
|
case "04":
|
||||||
url = '/mosty-gsxt/yjzxZhyj/yjfk'
|
url = "/mosty-gsxt/yjzxZhyj/yjfk";
|
||||||
break;
|
break;
|
||||||
case '05':
|
case "05":
|
||||||
url = '/mosty-gsxt/tbYjxx/yjfk'
|
url = "/mosty-gsxt/tbYjxx/yjfk";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
qcckPost(prome, url).then(() => {
|
qcckPost(prome, url)
|
||||||
loading.value = false;
|
.then(() => {
|
||||||
proxy.$message({ type: "success", message: "反馈成功" });
|
loading.value = false;
|
||||||
emit('change')
|
proxy.$message({ type: "success", message: "反馈成功" });
|
||||||
close()
|
emit("change");
|
||||||
}).catch(() => {
|
close();
|
||||||
loading.value = false;
|
})
|
||||||
})
|
.catch(() => {
|
||||||
})
|
loading.value = false;
|
||||||
}
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const close = () => {
|
const close = () => {
|
||||||
elform.value.reset();
|
elform.value.reset();
|
||||||
listQuery.value = {}
|
listQuery.value = {};
|
||||||
showDialog.value = false;
|
showDialog.value = false;
|
||||||
}
|
};
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
emitter.off("openFkDialog")
|
emitter.off("openFkDialog");
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -281,7 +281,6 @@ const handleQsFk = (val, type) => {
|
|||||||
emitter.emit("openFkDialog", { id: val.id, type });
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
const addModelRef = ref(null)
|
const addModelRef = ref(null)
|
||||||
const openAddModel = (row) => {
|
const openAddModel = (row) => {
|
||||||
|
|||||||
@ -2,43 +2,93 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<QueryFormPanel v-model="listQuery" :fields="searchConfiger" @search='onSearch'>
|
<QueryFormPanel
|
||||||
|
v-model="listQuery"
|
||||||
|
:fields="searchConfiger"
|
||||||
|
@search="onSearch"
|
||||||
|
>
|
||||||
<template #but>
|
<template #but>
|
||||||
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
|
<el-button type="primary" @click="exportExl" size="small"
|
||||||
<el-button type="primary" size="small" @click="handleQs">签收</el-button>
|
>导出</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="handleQs"
|
||||||
|
>签收</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</QueryFormPanel>
|
</QueryFormPanel>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class=" tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
|
<div
|
||||||
<WarnDataTable :loading="pageData.tableConfiger.loading" :tableHeight="pageData.tableHeight"
|
class="tabBox_zdy"
|
||||||
:data="pageData.tableData" :columns="pageData.tableColumn" table-class="warn-table"
|
:style="{ height: pageData.tableHeight + 40 + 'px' }"
|
||||||
@selectionChange="handleChooseData">
|
>
|
||||||
|
<WarnDataTable
|
||||||
|
:loading="pageData.tableConfiger.loading"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="warn-table"
|
||||||
|
@selectionChange="handleChooseData"
|
||||||
|
>
|
||||||
<template #yjTp="{ row }">
|
<template #yjTp="{ row }">
|
||||||
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
||||||
<img src="@/assets/images/car.png" width="30" height="30" v-if="row.yjLx == 2" />
|
<img
|
||||||
<img src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
src="@/assets/images/car.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-if="row.yjLx == 2"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
src="@/assets/images/default_male.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-else
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<el-image v-else style="width: 30px; height:30px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
|
<el-image
|
||||||
show-progress>
|
v-else
|
||||||
|
style="width: 30px; height: 30px"
|
||||||
|
:src="row.yjTp"
|
||||||
|
:preview-src-list="[row.yjTp]"
|
||||||
|
show-progress
|
||||||
|
>
|
||||||
<template #error>
|
<template #error>
|
||||||
<div class="image-slot error">
|
<div class="image-slot error">
|
||||||
<img src="@/assets/images/car.png" width="30" height="30" v-if="row.yjLx == 2" />
|
<img
|
||||||
<img src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
src="@/assets/images/car.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-if="row.yjLx == 2"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
src="@/assets/images/default_male.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-else
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-image>
|
</el-image>
|
||||||
</template>
|
</template>
|
||||||
<template #czzt="{ row }">
|
<template #czzt="{ row }">
|
||||||
<DictTag :value="row.czzt" :color="row.czzt === '01' ? '#ff2424' : '#1d72e8'" :tag="false"
|
<DictTag
|
||||||
:options="D_GSXT_YJXX_CZZT" />
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #xbdm="{ row }">
|
<template #xbdm="{ row }">
|
||||||
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
||||||
</template>
|
</template>
|
||||||
<template #yjJb="{ row }">
|
<template #yjJb="{ row }">
|
||||||
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
<DictTag :value="row.yjJb" color="#fff" :tag="false" :options="D_BZ_YJJB" />
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #bkly="{ row }">
|
<template #bkly="{ row }">
|
||||||
@ -47,9 +97,7 @@
|
|||||||
<template #bkczyq="{ row }">
|
<template #bkczyq="{ row }">
|
||||||
<DictTag :value="row.bkczyq" :tag="false" :options="D_GS_BK_CZYQ" />
|
<DictTag :value="row.bkczyq" :tag="false" :options="D_GS_BK_CZYQ" />
|
||||||
</template>
|
</template>
|
||||||
<template #xsd="{ row }">
|
<template #xsd="{ row }"> {{ row.xsd }}% </template>
|
||||||
{{ row.xsd }}%
|
|
||||||
</template>
|
|
||||||
<template #yjLylx="{ row }">
|
<template #yjLylx="{ row }">
|
||||||
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_SJLY" />
|
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_SJLY" />
|
||||||
</template>
|
</template>
|
||||||
@ -57,41 +105,70 @@
|
|||||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
</template>
|
</template>
|
||||||
<template #operation="{ row }">
|
<template #operation="{ row }">
|
||||||
<div style="display: flex;justify-content: space-between;">
|
<div style="display: flex; justify-content: space-between">
|
||||||
<span class="warning" @click="pushAssess(row)">全息档案</span>
|
<span class="warning" @click="pushAssess(row)">全息档案</span>
|
||||||
<span class="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</span>
|
<span class="primary" @click="handleCzjy(row)" v-if="roleCode"
|
||||||
|
>处置建议</span
|
||||||
|
>
|
||||||
<!-- <span type="primary" @click="showDetail(row)">转合成</span> -->
|
<!-- <span type="primary" @click="showDetail(row)">转合成</span> -->
|
||||||
<!-- <span type="danger" @click="delDictItem(row.id)">转会商</span> -->
|
<!-- <span type="danger" @click="delDictItem(row.id)">转会商</span> -->
|
||||||
<span class="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</span>
|
<span
|
||||||
<span class="success" @click="handleQsFk(row, '反馈')"
|
class="success"
|
||||||
v-else-if="row.czzt == '02' && permission_sfqs">反馈</span>
|
@click="handleQsFk(row, '签收')"
|
||||||
|
v-if="row.czzt == '01'"
|
||||||
|
>签收</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="success"
|
||||||
|
@click="handleQsFk(row, '反馈')"
|
||||||
|
v-else-if="row.czzt == '02'"
|
||||||
|
>反馈</span
|
||||||
|
>
|
||||||
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
||||||
<span class="primary" @click="openBox(row)">详情</span>
|
<span class="primary" @click="openBox(row)">详情</span>
|
||||||
<span class="primary" @click="pushWarning(row)">指派</span>
|
<span class="primary" @click="pushWarning(row)">指派</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</WarnDataTable>
|
</WarnDataTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages
|
||||||
...pageData.pageConfiger,
|
@changeNo="changeNo"
|
||||||
total: pageData.total
|
@changeSize="changeSize"
|
||||||
}"></Pages>
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<FkDialog @change="getList" lx="05" />
|
<FkDialog @change="getList" lx="05" />
|
||||||
<AddFrom ref="addModelRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }" />
|
<AddFrom
|
||||||
|
ref="addModelRef"
|
||||||
|
:dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }"
|
||||||
|
/>
|
||||||
<!-- 处置建议 -->
|
<!-- 处置建议 -->
|
||||||
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
|
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
|
||||||
<ZpForm v-model="warningShow" :dataList="dataList" />
|
<ZpForm v-model="warningShow" :dataList="dataList" />
|
||||||
<!-- <Pagination v-model="paginationOpen" /> -->
|
<!-- <Pagination v-model="paginationOpen" /> -->
|
||||||
<Pagination v-model="paginationOpen" :dataList="dataPres"
|
<Pagination
|
||||||
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB, D_GS_BK_CZYQ }" />
|
v-model="paginationOpen"
|
||||||
|
:dataList="dataPres"
|
||||||
|
:dict="{
|
||||||
|
D_BZ_XB,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_GS_QLZDRLX,
|
||||||
|
D_GS_ZDR_RYJB,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_GS_BK_CZYQ
|
||||||
|
}"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { IdCard } from '@/utils/validate.js'
|
import { IdCard } from "@/utils/validate.js";
|
||||||
import Czjy from './components/czjy.vue'
|
import Czjy from "./components/czjy.vue";
|
||||||
import { getItem, setItem } from '@/utils/storage'
|
import { getItem, setItem } from "@/utils/storage";
|
||||||
import WarnDataTable from '@/views/backOfficeSystem/ces/components/WarnDataTable.vue'
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import AddFrom from "./components/addFrom.vue";
|
import AddFrom from "./components/addFrom.vue";
|
||||||
@ -100,46 +177,195 @@ import ZpForm from "@/views/backOfficeSystem/fourColorManage/warningControl/seve
|
|||||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import { holographicProfileJump } from "@/utils/tools.js"
|
import { holographicProfileJump } from "@/utils/tools.js";
|
||||||
import Items from "./item/items.vue"
|
import Items from "./item/items.vue";
|
||||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||||
import { getMultiDictVal } from "@/utils/dict.js"
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
import Pagination from "./components/particulars.vue";
|
import Pagination from "./components/particulars.vue";
|
||||||
const czjyRef = ref()
|
const czjyRef = ref();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
const { D_GS_QLZDRLX, D_BZ_YJLY, D_GSXT_YJXX_CZZT, D_GS_SSYJ, D_BZ_YJJB, D_BZ_BKLYS, D_BZ_XB, D_BZ_SF, D_GS_CSZT, D_GS_BKZT, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB, D_GS_BK_CZYQ, D_BZ_SJLY } = proxy.$dict('D_GS_QLZDRLX', 'D_BZ_YJLY', "D_GSXT_YJXX_CZZT", "D_GS_SSYJ", 'D_BZ_YJJB', 'D_BZ_BKLYS', 'D_BZ_XB', 'D_BZ_SF', 'D_GS_CSZT', 'D_GS_BKZT', 'D_GS_ZDR_RYJB', 'D_GS_ZDR_GJLB', 'D_GS_BK_CZYQ', 'D_BZ_SJLY')
|
const {
|
||||||
const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ })
|
D_GS_QLZDRLX,
|
||||||
|
D_BZ_YJLY,
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_GS_SSYJ,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_BZ_BKLYS,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_BZ_SF,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_GS_BKZT,
|
||||||
|
D_GS_ZDR_RYJB,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_GS_BK_CZYQ,
|
||||||
|
D_BZ_SJLY
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_GS_QLZDRLX",
|
||||||
|
"D_BZ_YJLY",
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_GS_SSYJ",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_BZ_BKLYS",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_BZ_SF",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_GS_BKZT",
|
||||||
|
"D_GS_ZDR_RYJB",
|
||||||
|
"D_GS_ZDR_GJLB",
|
||||||
|
"D_GS_BK_CZYQ",
|
||||||
|
"D_BZ_SJLY"
|
||||||
|
);
|
||||||
|
const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ });
|
||||||
// 搜索配置
|
// 搜索配置
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{ label: "布控开始时间", prop: 'bkkssj', showType: "date", placeholder: "请选择布控开始时间" },
|
{
|
||||||
{ label: "布控结束时间", prop: 'bkjssj', showType: "date", placeholder: "请选择布控结束时间" },
|
label: "布控开始时间",
|
||||||
{ label: "预警时间", prop: 'startTime', showType: "datetimerange", placeholder: "请选择预警时间" },
|
prop: "bkkssj",
|
||||||
{ label: "预警级别", prop: 'yjJb', showType: "select", options: D_BZ_YJJB, placeholder: "请选择预警级别", multiple: true },
|
showType: "date",
|
||||||
{ label: "布控来源", prop: 'bkly', showType: "select", options: D_BZ_BKLYS, placeholder: "请选择布控来源" },
|
placeholder: "请选择布控开始时间"
|
||||||
{ label: "布控范围", prop: 'bkfw', showType: "input", placeholder: "请输入布控范围" },
|
},
|
||||||
{ label: "布控单位", prop: 'gkbmdm', showType: "department", placeholder: "请选择布控单位" },
|
{
|
||||||
{ label: "所属单位", prop: 'ssbmdm', showType: "department", placeholder: "请选择所属单位" },
|
label: "布控结束时间",
|
||||||
{ label: "相似度", prop: 'xsd', showType: "input", placeholder: "请输入相似度" },
|
prop: "bkjssj",
|
||||||
{ key: 'sfglyj', label: '关联预警', type: 'select', options: D_BZ_SF, placeholder: '请选择关联预警' },
|
showType: "date",
|
||||||
{ key: 'sfgz', label: '重点关注', type: 'select', options: D_BZ_SF, placeholder: '请选择重点关注' },
|
placeholder: "请选择布控结束时间"
|
||||||
{ key: 'sfzp', label: '二次指派', type: 'select', options: D_BZ_SF, placeholder: '请选择二次指派' },
|
},
|
||||||
{ label: "签收状态", prop: 'czzt', showType: "select", options: D_GSXT_YJXX_CZZT },
|
{
|
||||||
{ label: "超时状态", prop: 'cszt', placeholder: "请选择超时状态", showType: "select", options: D_GS_CSZT },
|
label: "预警时间",
|
||||||
{ label: "布控状态", prop: 'zkzt', showType: "select", options: D_GS_BKZT, placeholder: "请选择布控状态" },
|
prop: "startTime",
|
||||||
{ label: "姓名", prop: 'yjRyxm', showType: "input", placeholder: "请输入姓名" },
|
showType: "datetimerange",
|
||||||
{ label: "性别", prop: 'xbdm', showType: "select", options: D_BZ_XB, placeholder: "请选择性别" },
|
placeholder: "请选择预警时间"
|
||||||
{ label: "开始年龄", prop: 'ksnl', placeholder: "请输入年龄", showType: "number" },
|
},
|
||||||
{ label: "结束年龄", prop: 'jsnl', placeholder: "请输入年龄", showType: "number" },
|
{
|
||||||
{ label: "跨地区", prop: 'sflksd', showType: "select", options: D_BZ_SF, placeholder: "请选择是否跨地区" },
|
label: "预警级别",
|
||||||
{ label: "身份证号", prop: 'yjRysfzh', showType: "input", placeholder: "请输入身份证号" },
|
prop: "yjJb",
|
||||||
{ label: "预警内容", prop: 'yjNr', showType: "input", placeholder: "请输入预警内容" },
|
showType: "select",
|
||||||
|
options: D_BZ_YJJB,
|
||||||
|
placeholder: "请选择预警级别",
|
||||||
|
multiple: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控来源",
|
||||||
|
prop: "bkly",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_BKLYS,
|
||||||
|
placeholder: "请选择布控来源"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控范围",
|
||||||
|
prop: "bkfw",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入布控范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控单位",
|
||||||
|
prop: "gkbmdm",
|
||||||
|
showType: "department",
|
||||||
|
placeholder: "请选择布控单位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "所属单位",
|
||||||
|
prop: "ssbmdm",
|
||||||
|
showType: "department",
|
||||||
|
placeholder: "请选择所属单位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "相似度",
|
||||||
|
prop: "xsd",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入相似度"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "sfglyj",
|
||||||
|
label: "关联预警",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择关联预警"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "sfgz",
|
||||||
|
label: "重点关注",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择重点关注"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "sfzp",
|
||||||
|
label: "二次指派",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择二次指派"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "签收状态",
|
||||||
|
prop: "czzt",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GSXT_YJXX_CZZT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "超时状态",
|
||||||
|
prop: "cszt",
|
||||||
|
placeholder: "请选择超时状态",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_CSZT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控状态",
|
||||||
|
prop: "zkzt",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_BKZT,
|
||||||
|
placeholder: "请选择布控状态"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "姓名",
|
||||||
|
prop: "yjRyxm",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入姓名"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "性别",
|
||||||
|
prop: "xbdm",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_XB,
|
||||||
|
placeholder: "请选择性别"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "开始年龄",
|
||||||
|
prop: "ksnl",
|
||||||
|
placeholder: "请输入年龄",
|
||||||
|
showType: "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "结束年龄",
|
||||||
|
prop: "jsnl",
|
||||||
|
placeholder: "请输入年龄",
|
||||||
|
showType: "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "跨地区",
|
||||||
|
prop: "sflksd",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择是否跨地区"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "身份证号",
|
||||||
|
prop: "yjRysfzh",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入身份证号"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "预警内容",
|
||||||
|
prop: "yjNr",
|
||||||
|
showType: "input",
|
||||||
|
placeholder: "请输入预警内容"
|
||||||
|
}
|
||||||
]);
|
]);
|
||||||
const ORDIMG = 'https://89.40.7.122:38496/image'
|
const ORDIMG = "https://89.40.7.122:38496/image";
|
||||||
const IMGYM = 'https://sg.lz.dsj.xz/dhimage'
|
const IMGYM = "https://sg.lz.dsj.xz/dhimage";
|
||||||
const permission_sfqs = ref(false)
|
const permission_sfqs = ref(false);
|
||||||
const roleCode = ref(false)
|
const roleCode = ref(false);
|
||||||
|
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
|
|
||||||
@ -151,7 +377,7 @@ const pageData = reactive({
|
|||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "checkBox",
|
showSelectType: "checkBox",
|
||||||
loading: false,
|
loading: false,
|
||||||
haveControls: true,
|
haveControls: true
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
pageConfiger: {
|
pageConfiger: {
|
||||||
@ -160,37 +386,37 @@ const pageData = reactive({
|
|||||||
},
|
},
|
||||||
controlsWidth: 180, //操作栏宽度
|
controlsWidth: 180, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ type: 'index', label: '序号', width: 55, align: 'center' },
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
{ label: "处置状态", align: 'center', width: 70, slotName: 'czzt' },
|
{ label: "处置状态", align: "center", width: 70, slotName: "czzt" },
|
||||||
{ prop: 'yjSj', label: '预警时间', width: 80 },
|
{ prop: "yjSj", label: "预警时间", width: 80 },
|
||||||
{ prop: 'yjRyxm', label: '人员姓名', width: 70 },
|
{ prop: "yjRyxm", label: "人员姓名", width: 70 },
|
||||||
{ prop: 'yjRysfzh', label: '身份证号', width: 80 },
|
{ prop: "yjRysfzh", label: "身份证号", width: 80 },
|
||||||
{ label: '性别', width: 50, align: 'center', slotName: 'xbdm' },
|
{ label: "性别", width: 50, align: "center", slotName: "xbdm" },
|
||||||
{ prop: 'nl', label: '年龄', width: 50, align: 'center' },
|
{ prop: "nl", label: "年龄", width: 50, align: "center" },
|
||||||
{ label: '预警级别', width: 80, align: 'center', slotName: 'yjJb' },
|
{ label: "预警级别", width: 80, align: "center", slotName: "yjJb" },
|
||||||
{ label: "布控单位", prop: "gkbmmc", align: 'center' },
|
{ label: "布控单位", prop: "gkbmmc", align: "center" },
|
||||||
{ label: "布控来源", align: 'center', slotName: 'bkly', width: 70 },
|
{ label: "布控来源", align: "center", slotName: "bkly", width: 70 },
|
||||||
{ prop: 'bkfw', label: "布控范围", align: 'center', width: 70 },
|
{ prop: "bkfw", label: "布控范围", align: "center", width: 70 },
|
||||||
{ prop: 'bkkssj', label: "布控开始时间", align: 'center' },
|
{ prop: "bkkssj", label: "布控开始时间", align: "center" },
|
||||||
{ prop: 'bkjssj', label: "布控结束时间", align: 'center' },
|
{ prop: "bkjssj", label: "布控结束时间", align: "center" },
|
||||||
{ label: "处置要求", width: 70, slotName: 'bkczyq', align: 'center' },
|
{ label: "处置要求", width: 70, slotName: "bkczyq", align: "center" },
|
||||||
{ label: "预警内容", prop: "yjNr", align: 'center' },
|
{ label: "预警内容", prop: "yjNr", align: "center" },
|
||||||
{ label: "相似度", slotName: "xsd", align: 'center', width: 50 },
|
{ label: "相似度", slotName: "xsd", align: "center", width: 50 },
|
||||||
{ label: "所属部门", prop: "ssbm", align: 'center' },
|
{ label: "所属部门", prop: "ssbm", align: "center" },
|
||||||
{ label: "数据来源", slotName: "yjLylx", align: 'center' },
|
{ label: "数据来源", slotName: "yjLylx", align: "center" },
|
||||||
{ label: '操作', width: 180, slotName: 'operation' },
|
{ label: "操作", width: 180, slotName: "operation" },
|
||||||
{ label: '超时状态', width: 80, align: 'center', slotName: 'cszt' },
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" },
|
||||||
{ label: "在控状态", width: 70, align: 'center', slotName: "zkzt" },
|
{ label: "在控状态", width: 70, align: "center", slotName: "zkzt" }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : ''
|
let str = getItem("deptId") ? getItem("deptId")[0].deptLevel : "";
|
||||||
permission_sfqs.value = str.startsWith('2' || '3') ? false : true;
|
permission_sfqs.value = str.startsWith("2" || "3") ? false : true;
|
||||||
let rols = getItem('roleList') ? getItem('roleList') : []
|
let rols = getItem("roleList") ? getItem("roleList") : [];
|
||||||
let obj = rols.find(item => {
|
let obj = rols.find((item) => {
|
||||||
return ['JS_666666', 'JS_777777', 'JS_888888'].includes(item.roleCode)
|
return ["JS_666666", "JS_777777", "JS_888888"].includes(item.roleCode);
|
||||||
})
|
});
|
||||||
roleCode.value = obj ? true : false;
|
roleCode.value = obj ? true : false;
|
||||||
|
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
@ -199,13 +425,14 @@ onMounted(() => {
|
|||||||
|
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = {
|
queryFrom.value = {
|
||||||
...queryFrom.value, ...val,
|
...queryFrom.value,
|
||||||
startTime: val.startTime ? val.startTime[0] : '',
|
...val,
|
||||||
endTime: val.startTime ? val.startTime[1] : '',
|
startTime: val.startTime ? val.startTime[0] : "",
|
||||||
yjJb: val.yjJb?.join(',') || '',
|
endTime: val.startTime ? val.startTime[1] : "",
|
||||||
sfglyj: val.sfglyj?.join(',') || '',
|
yjJb: val.yjJb?.join(",") || "",
|
||||||
sfgz: val.sfgz?.join(',') || '',
|
sfglyj: val.sfglyj?.join(",") || "",
|
||||||
sfzp: val.sfzp?.join(',') || ''
|
sfgz: val.sfgz?.join(",") || "",
|
||||||
|
sfzp: val.sfzp?.join(",") || ""
|
||||||
};
|
};
|
||||||
|
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
@ -213,9 +440,9 @@ const onSearch = (val) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const reset = () => {
|
const reset = () => {
|
||||||
delete queryFrom.value.ksfz
|
delete queryFrom.value.ksfz;
|
||||||
delete queryFrom.value.jsfz
|
delete queryFrom.value.jsfz;
|
||||||
}
|
};
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
@ -232,89 +459,92 @@ const getList = () => {
|
|||||||
let params = {
|
let params = {
|
||||||
...queryFrom.value,
|
...queryFrom.value,
|
||||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
pageSize: pageData.pageConfiger.pageSize,
|
pageSize: pageData.pageConfiger.pageSize
|
||||||
}
|
};
|
||||||
qcckPost(params, '/mosty-gsxt/tbYjxx/getBdbkPageList').then((res) => {
|
qcckPost(params, "/mosty-gsxt/tbYjxx/getBdbkPageList")
|
||||||
pageData.tableData = res?.records || []
|
.then((res) => {
|
||||||
pageData.total = res?.total || 0;
|
pageData.tableData = res?.records || [];
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.total = res?.total || 0;
|
||||||
}).catch(() => {
|
pageData.tableConfiger.loading = false;
|
||||||
pageData.tableConfiger.loading = false;
|
})
|
||||||
});
|
.catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// 处理签收
|
// 处理签收
|
||||||
const handleQsFk = (val, type) => {
|
const handleQsFk = (val, type) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case '签收':
|
case "签收":
|
||||||
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
proxy
|
||||||
qcckPost({ id: val.id }, "/mosty-gsxt/mosty-gsxt/tbYjxx/yjqs").then(() => {
|
.$confirm("是否确定要签收?", "警告", { type: "warning" })
|
||||||
val.czzt = '02'
|
.then(() => {
|
||||||
getList()
|
qcckPost({ id: val.id }, "/mosty-gsxt/mosty-gsxt/tbYjxx/yjqs").then(
|
||||||
proxy.$message({ type: "success", message: "签收成功" });
|
() => {
|
||||||
|
val.czzt = "02";
|
||||||
|
getList();
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
})
|
|
||||||
break;
|
break;
|
||||||
case '反馈':
|
case "反馈":
|
||||||
case '查看反馈':
|
case "查看反馈":
|
||||||
emitter.emit("openFkDialog", { id: val.id, type });
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
const pushAssess = (val) => {
|
const pushAssess = (val) => {
|
||||||
return holographicProfileJump(val?.yjLx, val) // 全息档案跳转
|
return holographicProfileJump(val?.yjLx, val); // 全息档案跳转
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
const bqYs = (val) => {
|
const bqYs = (val) => {
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case '01':
|
case "01":
|
||||||
return '#ff0202'
|
return "#ff0202";
|
||||||
case '02':
|
case "02":
|
||||||
return '#ff8c00'
|
return "#ff8c00";
|
||||||
case '03':
|
case "03":
|
||||||
return '#ffff00'
|
return "#ffff00";
|
||||||
case '04':
|
case "04":
|
||||||
return '#0000ff'
|
return "#0000ff";
|
||||||
default:
|
default:
|
||||||
return ''
|
return "";
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// 新增
|
// 新增
|
||||||
const addModelRef = ref(null)
|
const addModelRef = ref(null);
|
||||||
const openAddFrom = (row) => {
|
const openAddFrom = (row) => {
|
||||||
addModelRef.value.init('add', row)
|
addModelRef.value.init("add", row);
|
||||||
}
|
};
|
||||||
|
|
||||||
const handleCzjy = (row) => {
|
const handleCzjy = (row) => {
|
||||||
czjyRef.value.init(row)
|
czjyRef.value.init(row);
|
||||||
}
|
};
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 230;
|
pageData.tableHeight =
|
||||||
|
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||||
|
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
// 指派
|
// 指派
|
||||||
const dataList = ref(null)
|
const dataList = ref(null);
|
||||||
const warningShow = ref(false)
|
const warningShow = ref(false);
|
||||||
const pushWarning = (val) => {
|
const pushWarning = (val) => {
|
||||||
warningShow.value = true;
|
warningShow.value = true;
|
||||||
dataList.value = val;
|
dataList.value = val;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 选中项 */
|
/** 选中项 */
|
||||||
const selectRows = ref([])
|
const selectRows = ref([]);
|
||||||
const handleChooseData = (val) => {
|
const handleChooseData = (val) => {
|
||||||
selectRows.value = val
|
selectRows.value = val;
|
||||||
}
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
czzt_cname: "处置状态",
|
czzt_cname: "处置状态",
|
||||||
@ -329,48 +559,62 @@ const exportExl = () => {
|
|||||||
yjCs: "预警次数",
|
yjCs: "预警次数",
|
||||||
yjRysjh: "布控手机号",
|
yjRysjh: "布控手机号",
|
||||||
yjClcph: "布控车牌号",
|
yjClcph: "布控车牌号",
|
||||||
yjRysfzh: "身份证",
|
yjRysfzh: "身份证"
|
||||||
}
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
const needArr =
|
||||||
const data = needArr.map(item => {
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
|
const data = needArr.map((item) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
nl_cname: IdCard(item.yjRysfzh, 3),
|
nl_cname: IdCard(item.yjRysfzh, 3),
|
||||||
xb_cname: IdCard(item.yjRysfzh, 2),
|
xb_cname: IdCard(item.yjRysfzh, 2),
|
||||||
xsd_cname: (item.xsd > 0 ? item.xsd : 0) + '%',
|
xsd_cname: (item.xsd > 0 ? item.xsd : 0) + "%",
|
||||||
yjJb_name: getMultiDictVal(item.yjJb, D_GS_SSYJ),
|
yjJb_name: getMultiDictVal(item.yjJb, D_GS_SSYJ),
|
||||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
yjJb_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
yjJb_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB)
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
exportExlByObj(titleObj, data, '预警布控')
|
exportExlByObj(titleObj, data, "预警布控");
|
||||||
}
|
};
|
||||||
|
|
||||||
const handleQs = () => {
|
const handleQs = () => {
|
||||||
if (selectRows.value?.length === 0) return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
if (selectRows.value?.length === 0)
|
||||||
let wqs = selectRows.value.filter(item => item.czzt == '01');
|
return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||||
if (wqs.length == 0) return proxy.$message({ type: "warning", message: "数据都已签收,请选择未签收的数据" });
|
let wqs = selectRows.value.filter((item) => item.czzt == "01");
|
||||||
let yqs = selectRows.value.filter(item => item.czzt == '02');
|
if (wqs.length == 0)
|
||||||
let texy = yqs.length > 0 ? `${yqs.length}条已签收预警数据,确认要签收${wqs.length}条未签收预警数据吗?` : '确认要签收所有预警数据吗?'
|
return proxy.$message({
|
||||||
proxy.$confirm(texy, "警告", { type: "warning" }).then(() => {
|
type: "warning",
|
||||||
let ids = wqs.map(item => item.id)
|
message: "数据都已签收,请选择未签收的数据"
|
||||||
qcckPost({ ids }, '/mosty-gsxt/tbYjxx/batchQs').then(() => {
|
|
||||||
proxy.$message({ type: "success", message: "成功" });
|
|
||||||
getList();
|
|
||||||
}).catch(() => {
|
|
||||||
proxy.$message({ type: "error", message: "失败" });
|
|
||||||
});
|
});
|
||||||
}).catch(() => { });
|
let yqs = selectRows.value.filter((item) => item.czzt == "02");
|
||||||
}
|
let texy =
|
||||||
|
yqs.length > 0
|
||||||
|
? `${yqs.length}条已签收预警数据,确认要签收${wqs.length}条未签收预警数据吗?`
|
||||||
|
: "确认要签收所有预警数据吗?";
|
||||||
|
proxy
|
||||||
|
.$confirm(texy, "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
let ids = wqs.map((item) => item.id);
|
||||||
|
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/batchQs")
|
||||||
|
.then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: "失败" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
// 详情
|
// 详情
|
||||||
const paginationOpen = ref(false)
|
const paginationOpen = ref(false);
|
||||||
const dataPres = ref({})
|
const dataPres = ref({});
|
||||||
const openBox = (val) => {
|
const openBox = (val) => {
|
||||||
paginationOpen.value = true
|
paginationOpen.value = true;
|
||||||
dataPres.value = val
|
dataPres.value = val;
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -14,6 +14,9 @@
|
|||||||
<el-button type="primary" size="small" @click="handleQs"
|
<el-button type="primary" size="small" @click="handleQs"
|
||||||
>签收</el-button
|
>签收</el-button
|
||||||
>
|
>
|
||||||
|
<el-button type="primary" size="small" @click="handleRelatedWarning"
|
||||||
|
>关联预警</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</QueryFormPanel>
|
</QueryFormPanel>
|
||||||
</div>
|
</div>
|
||||||
@ -78,13 +81,13 @@
|
|||||||
<span
|
<span
|
||||||
class="success"
|
class="success"
|
||||||
@click="handleQsFk(row, '签收')"
|
@click="handleQsFk(row, '签收')"
|
||||||
v-if="row.czzt == '01' && permission_sfqs"
|
v-if="row.czzt == '01'"
|
||||||
>签收</span
|
>签收</span
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
class="success"
|
class="success"
|
||||||
@click="handleQsFk(row, '反馈')"
|
@click="handleQsFk(row, '反馈')"
|
||||||
v-else-if="row.czzt == '02' && permission_sfqs"
|
v-else-if="row.czzt == '02'"
|
||||||
>反馈</span
|
>反馈</span
|
||||||
>
|
>
|
||||||
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
||||||
@ -125,6 +128,12 @@
|
|||||||
D_GS_BK_CZYQ
|
D_GS_BK_CZYQ
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
|
<DeploymentDataDialog
|
||||||
|
v-model="selectDataVisible"
|
||||||
|
title="关联预警"
|
||||||
|
@confirm="handleSelectConfirm"
|
||||||
|
:currentRelatedRow="currentRelatedRow"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -144,6 +153,8 @@ import { holographicProfileJump } from "@/utils/tools.js";
|
|||||||
import { exportExlByObj } from "@/utils/exportExcel.js";
|
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||||
import { getMultiDictVal } from "@/utils/dict.js";
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
import Pagination from "./components/particulars.vue";
|
import Pagination from "./components/particulars.vue";
|
||||||
|
import DeploymentDataDialog from "../../YjData/DeploymentDataDialog.vue";
|
||||||
|
|
||||||
const czjyRef = ref();
|
const czjyRef = ref();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
@ -458,32 +469,40 @@ const handleChooseData = (val) => {
|
|||||||
};
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
czzt_cname: "处置状态",
|
index: "序号",
|
||||||
|
czzt_name: "处置状态",
|
||||||
yjSj: "预警时间",
|
yjSj: "预警时间",
|
||||||
yjRyxm: "姓名",
|
yjRyxm: "人员姓名",
|
||||||
nl_cname: "年龄", // IdCard(row.yjRysfzh, 3)
|
xbdm_name: "性别",
|
||||||
yjLylx: "数据来源",
|
nl: "年龄",
|
||||||
xb_cname: "性别",
|
yjRysfzh: "身份证号",
|
||||||
yjJb_cname: "预警级别",
|
qblyjb_name: "管控级别",
|
||||||
xsd_cname: "相似度",
|
yjJb_name: "预警级别",
|
||||||
yjDz: "预警地点",
|
bksj: "布控时间",
|
||||||
yjCs: "预警次数",
|
ssbm: "接收单位",
|
||||||
yjRysjh: "布控手机号",
|
gkbmmc: "布控单位",
|
||||||
yjClcph: "布控车牌号",
|
bkyjlx_name: "比对源",
|
||||||
yjRysfzh: "身份证"
|
xsd_name: "相似度",
|
||||||
|
yjNr: "预警内容",
|
||||||
|
cszt_name: "超时状态",
|
||||||
|
zkzt_name: "在控状态"
|
||||||
};
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr =
|
const needArr =
|
||||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
const data = needArr.map((item) => {
|
const data = needArr.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
index: index + 1,
|
||||||
nl_cname: IdCard(item.yjRysfzh, 3),
|
|
||||||
xb_cname: IdCard(item.yjRysfzh, 2),
|
|
||||||
xsd_cname: (item.xsd > 0 ? item.xsd : 0) + "%",
|
|
||||||
yjJb_name: getMultiDictVal(item.yjJb, D_GS_SSYJ),
|
|
||||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
yjJb_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB)
|
xbdm_name: getMultiDictVal(item.xbdm, D_BZ_XB),
|
||||||
|
qblyjb_name: getMultiDictVal(item.qblyjb, D_BZ_QBLYJB),
|
||||||
|
yjJb_name: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||||
|
bkyjlx_name: getMultiDictVal(item.bkyjlx, D_BZ_BKYJLX),
|
||||||
|
xsd_name: (item.xsd > 0 ? item.xsd : 0) + "%",
|
||||||
|
cszt_name: getMultiDictVal(item.cszt, D_GS_CSZT),
|
||||||
|
zkzt_name: getMultiDictVal(item.zkzt, D_GS_BKZT),
|
||||||
|
bksj: item.bkkssj && item.bkjssj ? `${item.bkkssj} - ${item.bkjssj}` : "",
|
||||||
|
...item
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
exportExlByObj(titleObj, data, "预警布控");
|
exportExlByObj(titleObj, data, "预警布控");
|
||||||
@ -526,6 +545,32 @@ const openBox = (val) => {
|
|||||||
paginationOpen.value = true;
|
paginationOpen.value = true;
|
||||||
dataPres.value = val;
|
dataPres.value = val;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 关联预警弹窗
|
||||||
|
const selectDataVisible = ref(false);
|
||||||
|
const currentRelatedRow = ref(null);
|
||||||
|
|
||||||
|
// 关联预警
|
||||||
|
const handleRelatedWarning = () => {
|
||||||
|
if (selectRows.value.length === 0) {
|
||||||
|
proxy.$message({ type: "warning", message: "请先选择一条数据" });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (selectRows.value.length > 1) {
|
||||||
|
proxy.$message({ type: "warning", message: "只能选择一条数据" });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentRelatedRow.value = selectRows.value[0];
|
||||||
|
selectDataVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确认关联预警
|
||||||
|
const handleSelectConfirm = (selectedData) => {
|
||||||
|
console.log("关联预警数据:", selectedData);
|
||||||
|
console.log("当前选中行:", currentRelatedRow.value);
|
||||||
|
// 这里可以调用接口进行关联操作
|
||||||
|
// qcckPost({ ... }, "/api/xxx").then(res => { ... })
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -0,0 +1,80 @@
|
|||||||
|
<!--预警指派展示组件 -->
|
||||||
|
<template>
|
||||||
|
<el-dialog :draggable="true" :model-value="modelValue" :title="title" :width="width" @close="close" append-to-body>
|
||||||
|
<div class="count-container">
|
||||||
|
<div class="count-number">{{dataConut}}</div>
|
||||||
|
<div class="count-label">预警人数</div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer" style="text-align: center;">
|
||||||
|
<el-button @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { defineProps,getCurrentInstance } from 'vue';
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: '人数查询'
|
||||||
|
},
|
||||||
|
dataConut: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},width: {
|
||||||
|
type: String,
|
||||||
|
default: '20%'
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
// 定义事件
|
||||||
|
const emit = defineEmits(['update:modelValue']);
|
||||||
|
const close = () => {
|
||||||
|
emit('update:modelValue', false);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.count-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 40px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.count-number {
|
||||||
|
font-size: 48px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #409eff;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.count-label {
|
||||||
|
font-size: 18px;
|
||||||
|
color: #606266;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -11,6 +11,7 @@
|
|||||||
placeholder="开始分值"
|
placeholder="开始分值"
|
||||||
style="width: 130px"
|
style="width: 130px"
|
||||||
clearable
|
clearable
|
||||||
|
:min="0"
|
||||||
></el-input>
|
></el-input>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryFrom.yjjsfz"
|
v-model="queryFrom.yjjsfz"
|
||||||
@ -18,6 +19,27 @@
|
|||||||
placeholder="结束分值"
|
placeholder="结束分值"
|
||||||
style="width: 130px"
|
style="width: 130px"
|
||||||
clearable
|
clearable
|
||||||
|
:min="0"
|
||||||
|
></el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #yjcs>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.ksyjcs"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
></el-input>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.jsyjcs"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
></el-input>
|
></el-input>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -47,6 +69,13 @@
|
|||||||
row.sfcs
|
row.sfcs
|
||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
|
<template #yjcs="{ row }">
|
||||||
|
<span
|
||||||
|
style="color: #0072ff; cursor: pointer"
|
||||||
|
@click="openYjDetail(row)"
|
||||||
|
>{{ row.yjcs }}</span
|
||||||
|
>
|
||||||
|
</template>
|
||||||
<template #czzt="{ row }">
|
<template #czzt="{ row }">
|
||||||
<DictTag
|
<DictTag
|
||||||
:value="row.czzt"
|
:value="row.czzt"
|
||||||
@ -143,6 +172,13 @@
|
|||||||
url="/yjzxSfyj/sjxspz"
|
url="/yjzxSfyj/sjxspz"
|
||||||
:roleIds="roleIds"
|
:roleIds="roleIds"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<!-- 预警详情弹窗 -->
|
||||||
|
<dialogYjList
|
||||||
|
v-model="yjDetailVisible"
|
||||||
|
:dataList="yjDetailData"
|
||||||
|
:dict="{ D_BZ_JQLY, JQLB, D_BZ_JQDJ, JQXL, JQLX }"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -162,6 +198,7 @@ import { qcckPost, qcckGet } from "@/api/qcckApi.js";
|
|||||||
import { yjzxSfyjSelectList, yjzxyjzxSfyjSelectList } from "@/api/yj.js";
|
import { yjzxSfyjSelectList, yjzxyjzxSfyjSelectList } from "@/api/yj.js";
|
||||||
import { tbGsxtBqglSelectList } from "@/api/zdr";
|
import { tbGsxtBqglSelectList } from "@/api/zdr";
|
||||||
import Detail from "./components/detail.vue";
|
import Detail from "./components/detail.vue";
|
||||||
|
import dialogYjList from "@/views/backOfficeSystem/fourColorManage/YjData/dialogYjList.vue";
|
||||||
import { watch } from "vue";
|
import { watch } from "vue";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import { holographicProfileJump, bqYs } from "@/utils/tools.js";
|
import { holographicProfileJump, bqYs } from "@/utils/tools.js";
|
||||||
@ -173,13 +210,28 @@ import { IdCard } from "@/utils/dict.js";
|
|||||||
const czjyRef = ref();
|
const czjyRef = ref();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
const { D_GSXT_YJXX_CZZT, D_GS_SSYJ, D_BZ_YJJB, D_BZ_YJBQLX } = proxy.$dict(
|
// const { } = proxy.$dict();
|
||||||
|
const {
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_GS_SSYJ,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_BZ_YJBQLX,
|
||||||
|
D_BZ_JQDJ,
|
||||||
|
D_GS_BQ_DJ,
|
||||||
|
JQLB,
|
||||||
|
D_BZ_JQLY,
|
||||||
|
JQXL
|
||||||
|
} = proxy.$dict(
|
||||||
"D_GSXT_YJXX_CZZT",
|
"D_GSXT_YJXX_CZZT",
|
||||||
"D_GS_SSYJ",
|
"D_GS_SSYJ",
|
||||||
"D_BZ_YJJB",
|
"D_BZ_YJJB",
|
||||||
"D_BZ_YJBQLX"
|
"D_BZ_YJBQLX",
|
||||||
|
"D_BZ_JQDJ",
|
||||||
|
"D_GS_BQ_DJ",
|
||||||
|
"JQLB",
|
||||||
|
"D_BZ_JQLY",
|
||||||
|
"JQXL"
|
||||||
);
|
);
|
||||||
const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ });
|
|
||||||
|
|
||||||
// 搜索配置
|
// 搜索配置
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
@ -226,7 +278,7 @@ const searchConfiger = ref([
|
|||||||
{
|
{
|
||||||
key: "yjcs",
|
key: "yjcs",
|
||||||
label: "活动频次",
|
label: "活动频次",
|
||||||
type: "input",
|
type: "slot",
|
||||||
placeholder: "请输入活动频次"
|
placeholder: "请输入活动频次"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -268,8 +320,9 @@ const pageData = reactive({
|
|||||||
{ label: "年龄", align: "center", slotName: "nl", align: "center" },
|
{ label: "年龄", align: "center", slotName: "nl", align: "center" },
|
||||||
{ label: "标签类型", align: "center", slotName: "yjLylx" },
|
{ label: "标签类型", align: "center", slotName: "yjLylx" },
|
||||||
{ label: "标签级别", align: "center", slotName: "yjjb" },
|
{ label: "标签级别", align: "center", slotName: "yjjb" },
|
||||||
|
{ prop: "yjbq", label: "预警类别", align: "center", width: 120 },
|
||||||
{ prop: "ssbm", label: "接收单位", align: "center", width: 200 },
|
{ prop: "ssbm", label: "接收单位", align: "center", width: 200 },
|
||||||
{ prop: "yjcs", label: "活动频次", align: "center" },
|
{ label: "活动频次", align: "center", slotName: "yjcs" },
|
||||||
{ prop: "yjfz", label: "标签分值", align: "center" },
|
{ prop: "yjfz", label: "标签分值", align: "center" },
|
||||||
{ label: "操作", width: 200, slotName: "operation" }
|
{ label: "操作", width: 200, slotName: "operation" }
|
||||||
]
|
]
|
||||||
@ -375,6 +428,14 @@ const detailRef = ref();
|
|||||||
const handleClick = (row) => {
|
const handleClick = (row) => {
|
||||||
detailRef.value.init(row);
|
detailRef.value.init(row);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 预警详情弹窗
|
||||||
|
const yjDetailVisible = ref(false);
|
||||||
|
const yjDetailData = ref({});
|
||||||
|
const openYjDetail = (row) => {
|
||||||
|
yjDetailData.value = row;
|
||||||
|
yjDetailVisible.value = true;
|
||||||
|
};
|
||||||
// 处理签收
|
// 处理签收
|
||||||
const handleQsFk = (val, type) => {
|
const handleQsFk = (val, type) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -400,7 +461,10 @@ const handleQsFk = (val, type) => {
|
|||||||
const assessShow = ref(false);
|
const assessShow = ref(false);
|
||||||
const dataList = ref();
|
const dataList = ref();
|
||||||
const pushAssess = (val) => {
|
const pushAssess = (val) => {
|
||||||
return holographicProfileJump(val.yjlb, val); // 全息档案跳转
|
window.open(
|
||||||
|
`https://tyyy.lz.dsj.xz/profile/people/person-manage?sfzhm=${val.rysfzh}&from=portal`
|
||||||
|
);
|
||||||
|
// return holographicProfileJump(val.yjlb, val); // 全息档案跳转
|
||||||
};
|
};
|
||||||
|
|
||||||
// 发送指令
|
// 发送指令
|
||||||
@ -475,26 +539,32 @@ const handleChooseData = (val) => {
|
|||||||
};
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
czzt_cname: "状态",
|
index: "序号",
|
||||||
|
czzt_name: "处置状态",
|
||||||
yjsj: "预警时间",
|
yjsj: "预警时间",
|
||||||
xm: "姓名",
|
ryxm: "姓名",
|
||||||
sfzh: "身份证号",
|
xb_name: "性别",
|
||||||
yjbqmc: "标签",
|
rysfzh: "身份证号",
|
||||||
bqys_cname: "级别",
|
nl: "年龄",
|
||||||
|
yjLylx_name: "标签类型",
|
||||||
|
yjjb_name: "标签级别",
|
||||||
|
yjbq: "预警类别",
|
||||||
ssbm: "接收单位",
|
ssbm: "接收单位",
|
||||||
sfcs: "活动频次",
|
yjcs: "活动频次",
|
||||||
bqfz: "标签分值",
|
yjfz: "标签分值"
|
||||||
pzxs: "系数",
|
|
||||||
sffz: "计算分值"
|
|
||||||
};
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr =
|
const needArr =
|
||||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
const data = needArr.map((item) => {
|
const data = needArr.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
index: index + 1,
|
||||||
bqys_cname: getMultiDictVal(item.bqys, D_GS_SSYJ),
|
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT)
|
xb_name: IdCard(item.rysfzh, 2),
|
||||||
|
nl: IdCard(item.rysfzh, 3),
|
||||||
|
yjLylx_name: getMultiDictVal(item.yjLylx, D_BZ_YJBQLX),
|
||||||
|
yjjb_name: getMultiDictVal(item.yjjb, D_BZ_YJJB),
|
||||||
|
...item
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
exportExlByObj(titleObj, data, "身份预警");
|
exportExlByObj(titleObj, data, "身份预警");
|
||||||
|
|||||||
@ -4,12 +4,65 @@
|
|||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<!-- <Search :searchArr="searchConfiger" @submit="onSearch" ref="searchDom" :key="pageData.keyCount">
|
<!-- <Search :searchArr="searchConfiger" @submit="onSearch" ref="searchDom" :key="pageData.keyCount">
|
||||||
</Search> -->
|
</Search> -->
|
||||||
<QueryFormPanel v-model="queryFrom" :fields="searchConfiger" ref="searchDom" @search='onSearch'>
|
<QueryFormPanel
|
||||||
|
v-model="queryFrom"
|
||||||
|
:fields="searchConfiger"
|
||||||
|
ref="searchDom"
|
||||||
|
@search="onSearch"
|
||||||
|
>
|
||||||
|
<template #yjCs>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.yjkscs"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
></el-input>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.yjjscs"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
></el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #nl>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.ksnl"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始年龄"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
></el-input>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.jsnl"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束年龄"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
></el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<template #but>
|
<template #but>
|
||||||
<el-button type="primary" size="small" @click="exportExl">批量导出</el-button>
|
<el-button type="primary" size="small" @click="exportExl"
|
||||||
<el-button type="primary" size="small" @click="handleQs">批量签收</el-button>
|
>批量导出</el-button
|
||||||
<el-button type="primary" size="small" @click="handleQs">批量分析</el-button>
|
>
|
||||||
<el-button type="primary" size="small" @click="countPeople">计算人数</el-button>
|
<el-button type="primary" size="small" @click="handleQs"
|
||||||
|
>批量签收</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="handleQs"
|
||||||
|
>批量分析</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="countPeople"
|
||||||
|
>计算人数</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</QueryFormPanel>
|
</QueryFormPanel>
|
||||||
</div>
|
</div>
|
||||||
@ -22,20 +75,34 @@
|
|||||||
</template>
|
</template>
|
||||||
</PageTitle> -->
|
</PageTitle> -->
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div style="background-color: #fff;">
|
<div style="background-color: #fff">
|
||||||
<WarnDataTable :loading="pageData.tableConfiger.loading" :tableHeight="pageData.tableHeight"
|
<WarnDataTable
|
||||||
:data="pageData.tableData" :columns="pageData.tableColumn" table-class="warn-table"
|
:loading="pageData.tableConfiger.loading"
|
||||||
@selectionChange="handleChooseData">
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="warn-table"
|
||||||
|
@selectionChange="handleChooseData"
|
||||||
|
>
|
||||||
<template #status="{ row }">
|
<template #status="{ row }">
|
||||||
<DictTag :value="row.czzt" :color="row.czzt === '01' ? '#ff2424' : '#1d72e8'" :tag="false"
|
<DictTag
|
||||||
:options="D_GSXT_YJXX_CZZT" />
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #xbdm="{ row }">
|
<template #xbdm="{ row }">
|
||||||
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
|
||||||
</template>
|
</template>
|
||||||
<template #yjJb="{ row }">
|
<template #yjJb="{ row }">
|
||||||
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
<DictTag :value="row.yjJb" color="#fff" :tag="false" :options="D_BZ_YJJB" />
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #bqdl="{ row }">
|
<template #bqdl="{ row }">
|
||||||
@ -48,68 +115,198 @@
|
|||||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
</template>
|
</template>
|
||||||
<template #operation="{ row }">
|
<template #operation="{ row }">
|
||||||
<div style="display: flex;justify-content: space-between;">
|
<div style="display: flex; justify-content: space-between">
|
||||||
<span class="primary" @click="handleQsSingle(row)">签收</span>
|
<span
|
||||||
|
class="primary"
|
||||||
|
@click="handleQsFk(row)"
|
||||||
|
v-if="row.czzt == '01'"
|
||||||
|
>签收</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="primary"
|
||||||
|
@click="handleQsFk(row, '反馈')"
|
||||||
|
v-else-if="row.czzt == '02'"
|
||||||
|
>反馈</span
|
||||||
|
>
|
||||||
<span class="primary" @click="particularsOpen(row)">详情</span>
|
<span class="primary" @click="particularsOpen(row)">详情</span>
|
||||||
<span class="warning" @click="pushWarning(row)">指派</span>
|
<span class="warning" @click="pushWarning(row)">指派</span>
|
||||||
<span class="warning" v-if="row.sfbc != '1'" @click="failWarning(row)">报错</span>
|
<span
|
||||||
<span class="primary" @click="payAttention(row)">关注</span>
|
class="warning"
|
||||||
|
v-if="row.sfbc != '1'"
|
||||||
|
@click="failWarning(row)"
|
||||||
|
>报错</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
:class="row.sfgz == 0 ? 'primary' : 'danger'"
|
||||||
|
@click="payAttention(row)"
|
||||||
|
>{{ row.sfgz == 0 ? "关注" : "取消关注" }}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</WarnDataTable>
|
</WarnDataTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages
|
||||||
...pageData.pageConfiger,
|
@changeNo="changeNo"
|
||||||
total: pageData.total
|
@changeSize="changeSize"
|
||||||
}"></Pages>
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ZpForm v-model="warningShow" :dataList="dataList" />
|
<ZpForm v-model="warningShow" :dataList="dataList" />
|
||||||
<Particulars v-model="particularsShow" :dataList="dataPres"
|
<Particulars
|
||||||
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB }" />
|
v-model="particularsShow"
|
||||||
|
:dataList="dataPres"
|
||||||
|
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB }"
|
||||||
|
/>
|
||||||
<peopleConut v-model="searchOpen" :dataConut="dataConut" />
|
<peopleConut v-model="searchOpen" :dataConut="dataConut" />
|
||||||
|
<FkDialog @change="getList" lx="03" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { getMultiDictVal } from "@/utils/dict.js"
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||||
import ZpForm from "./zpForm.vue";
|
import ZpForm from "./zpForm.vue";
|
||||||
import { bqYs } from '@/utils/tools.js'
|
import { bqYs } from "@/utils/tools.js";
|
||||||
import Particulars from "./particulars.vue";
|
import Particulars from "./particulars.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import WarnDataTable from '@/views/backOfficeSystem/ces/components/WarnDataTable.vue'
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
// import MyTable from "@/components/aboutTable/MyTable.vue";
|
// import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, } from "vue";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import peopleConut from "./peopleConut.vue";
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
|
import PeopleConut from "./peopleConut.vue";
|
||||||
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_BZ_YJLY, D_GS_QLZDRLX, D_GS_ZDR_GJLB, D_BZ_YJJB, D_GS_CSZT, D_GS_QLZDRYXX, D_BZ_XB, D_GSXT_YJXX_CZZT, D_GS_ZDR_RYJB, D_BZ_SF } = proxy.$dict('D_BZ_YJLY', 'D_GS_QLZDRLX', "D_BZ_YJJB", "D_GS_QLZDRYXX", "D_BZ_XB", "D_GSXT_YJXX_CZZT", "D_GS_ZDR_RYJB", 'D_GS_ZDR_GJLB', 'D_GS_CSZT', "D_BZ_SF"); //获取字典数据
|
const {
|
||||||
|
D_BZ_YJLY,
|
||||||
|
D_GS_QLZDRLX,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_GS_QLZDRYXX,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_GS_ZDR_RYJB,
|
||||||
|
D_BZ_SF
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_BZ_YJLY",
|
||||||
|
"D_GS_QLZDRLX",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_GS_QLZDRYXX",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_GS_ZDR_RYJB",
|
||||||
|
"D_GS_ZDR_GJLB",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_BZ_SF"
|
||||||
|
); //获取字典数据
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const warningShow = ref(false);
|
const warningShow = ref(false);
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
const searchConfiger = ref(
|
const searchConfiger = ref([
|
||||||
[
|
{
|
||||||
{ key: 'startTime', label: '预警时间', type: 'datetimerange', placeholder: '请选择预警时间' },
|
key: "startTime",
|
||||||
{ key: 'yjJb', label: '预警级别', type: 'select', options: D_BZ_YJJB, multiple: true, placeholder: '请选择预警级别' },
|
label: "预警时间",
|
||||||
{ key: 'ssbmdm', label: '接收单位', type: 'department', placeholder: '请选择接收单位' },
|
type: "datetimerange",
|
||||||
{ key: 'sfglyj', label: '关联预警', type: 'select', options: D_BZ_SF, placeholder: '请选择关联预警' },
|
placeholder: "请选择预警时间"
|
||||||
{ key: 'yjRyxm', label: '姓名', type: 'input', placeholder: '请输入姓名' },
|
},
|
||||||
{ key: 'xbdm', label: '性别', type: 'select', options: D_BZ_XB, placeholder: '请选择性别' },
|
{
|
||||||
{ key: 'cszt', label: '超时状态', type: 'select', options: D_GS_CSZT, placeholder: '请选择超时状态' },
|
key: "yjJb",
|
||||||
{ key: 'bqdl', label: '人员类别', type: 'select', options: D_GS_QLZDRLX, placeholder: '请选择人员类别' },
|
label: "预警级别",
|
||||||
{ key: 'sfgz', label: '重点关注', type: 'select', options: D_BZ_SF, placeholder: '请选择重点关注' },
|
type: "select",
|
||||||
{ key: 'sfzp', label: '二次指派', type: 'select', options: D_BZ_SF, placeholder: '请选择二次指派' },
|
options: D_BZ_YJJB,
|
||||||
{ key: 'yjRysfzh', label: '身份证号码', type: 'input', placeholder: '请输入身份证号码' },
|
multiple: true,
|
||||||
{ key: 'ksnl', label: '开始年龄', type: 'input', placeholder: '请输入开始年龄' },
|
placeholder: "请选择预警级别"
|
||||||
{ key: 'jsnl', label: '结束年龄', type: 'input', placeholder: '请输入结束年龄' },
|
},
|
||||||
{ key: 'yjCs', label: '预警次数', type: 'input', placeholder: '请输入预警次数' },
|
{
|
||||||
{ key: 'bqdl', label: '人员级别', type: 'select', options: D_GS_ZDR_RYJB },
|
key: "ssbmdm",
|
||||||
{ key: 'yjLylx', label: '轨迹类别', type: 'select', options: D_GS_ZDR_GJLB },
|
label: "接收单位",
|
||||||
{ key: 'yjDz', label: '活动发生地', type: 'input', placeholder: '请输入活动发生地' },
|
type: "department",
|
||||||
{ key: 'yjbqmc', label: '人员细类', type: 'input', placeholder: '请输入人员细类' }
|
placeholder: "请选择接收单位"
|
||||||
])
|
},
|
||||||
|
{
|
||||||
|
key: "sfglyj",
|
||||||
|
label: "关联预警",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择关联预警"
|
||||||
|
},
|
||||||
|
{ key: "yjRyxm", label: "姓名", type: "input", placeholder: "请输入姓名" },
|
||||||
|
{
|
||||||
|
key: "xbdm",
|
||||||
|
label: "性别",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_XB,
|
||||||
|
placeholder: "请选择性别"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "cszt",
|
||||||
|
label: "超时状态",
|
||||||
|
type: "select",
|
||||||
|
options: D_GS_CSZT,
|
||||||
|
placeholder: "请选择超时状态"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "bqdl",
|
||||||
|
label: "人员类别",
|
||||||
|
type: "select",
|
||||||
|
options: D_GS_QLZDRLX,
|
||||||
|
placeholder: "请选择人员类别"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "sfgz",
|
||||||
|
label: "重点关注",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择重点关注"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "sfzp",
|
||||||
|
label: "二次指派",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_SF,
|
||||||
|
placeholder: "请选择二次指派"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "yjRysfzh",
|
||||||
|
label: "身份证号码",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入身份证号码"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "nl",
|
||||||
|
label: "年龄",
|
||||||
|
type: "slot",
|
||||||
|
placeholder: "请输入年龄"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
key: "yjCs",
|
||||||
|
label: "预警次数",
|
||||||
|
type: "slot",
|
||||||
|
placeholder: "请输入预警次数"
|
||||||
|
},
|
||||||
|
{ key: "bqdl", label: "人员级别", type: "select", options: D_GS_ZDR_RYJB },
|
||||||
|
{ key: "yjLylx", label: "轨迹类别", type: "select", options: D_GS_ZDR_GJLB },
|
||||||
|
{
|
||||||
|
key: "yjDz",
|
||||||
|
label: "活动发生地",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入活动发生地"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "yjbqmc",
|
||||||
|
label: "人员细类",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入人员细类"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
@ -129,198 +326,245 @@ const pageData = reactive({
|
|||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 200, //操作栏宽度
|
controlsWidth: 200, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ type: 'index', label: '序号', width: 55, align: 'center' },
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
{ label: '预警状态', width: 86, align: 'center', slotName: 'status' },
|
{ label: "预警状态", width: 86, align: "center", slotName: "status" },
|
||||||
{ prop: 'yjSj', label: '预警时间', width: 150 },
|
{ prop: "yjSj", label: "预警时间", width: 150 },
|
||||||
{ prop: 'yjRyxm', label: '人员姓名', width: 80 },
|
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
||||||
{ prop: 'yjRysfzh', label: '身份证号', width: 158 },
|
{ prop: "yjRysfzh", label: "身份证号", width: 158 },
|
||||||
{ label: '性别', width: 56, align: 'center', slotName: 'xbdm' },
|
{ label: "性别", width: 56, align: "center", slotName: "xbdm" },
|
||||||
{ prop: 'nl', label: '年龄', width: 56, align: 'center' },
|
{ prop: "nl", label: "年龄", width: 56, align: "center" },
|
||||||
{ label: '预警级别', width: 88, align: 'center', slotName: 'yjJb' },
|
{ label: "预警级别", width: 88, align: "center", slotName: "yjJb" },
|
||||||
{ label: '人员类别', width: 90, align: 'center', slotName: 'bqdl' },
|
{ label: "人员类别", width: 90, align: "center", slotName: "bqdl" },
|
||||||
{ prop: 'yjbqmc', label: '人员细类', width: 92 },
|
{ prop: "yjbqmc", label: "人员细类", width: 92 },
|
||||||
{ label: '轨迹类别', width: 92, align: 'center', slotName: 'yjLylx' },
|
{ label: "轨迹类别", width: 92, align: "center", slotName: "yjLylx" },
|
||||||
{ prop: 'yjDz', label: '活动发生地' },
|
{ prop: "yjDz", label: "活动发生地" },
|
||||||
{ prop: 'ssbm', label: '接收单位' },
|
{ prop: "ssbm", label: "接收单位" },
|
||||||
{ prop: 'yjCs', label: '次数', width: 60, align: 'center' },
|
{ prop: "yjCs", label: "次数", width: 60, align: "center" },
|
||||||
{ label: '操作', width: 180, slotName: 'operation' },
|
{ label: "操作", width: 180, slotName: "operation" },
|
||||||
{ label: '超时状态', width: 80, align: 'center', slotName: 'cszt' }
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" }
|
||||||
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
getList()
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = { ...val, yjJb: val.yjJb?.join(',') || '' }
|
queryFrom.value = { ...val, yjJb: val.yjJb?.join(",") || "" };
|
||||||
queryFrom.value.startTime = val.startTime ? val.startTime[0] : ''
|
queryFrom.value.startTime = val.startTime ? val.startTime[0] : "";
|
||||||
queryFrom.value.endTime = val.startTime ? val.startTime[1] : ''
|
queryFrom.value.endTime = val.startTime ? val.startTime[1] : "";
|
||||||
// queryFrom.value.sfglyj = val.sfglyj?.join(',') || ''
|
// queryFrom.value.sfglyj = val.sfglyj?.join(',') || ''
|
||||||
// queryFrom.value.sfgz = val.sfgz?.join(',') || ''
|
// queryFrom.value.sfgz = val.sfgz?.join(',') || ''
|
||||||
// queryFrom.value.sfzp = val.sfzp?.join(',') || ''
|
// queryFrom.value.sfzp = val.sfzp?.join(',') || ''
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
const changeSize = (val) => {
|
const changeSize = (val) => {
|
||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
const promes = {
|
const promes = {
|
||||||
...queryFrom.value,
|
...queryFrom.value,
|
||||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
pageSize: pageData.pageConfiger.pageSize,
|
pageSize: pageData.pageConfiger.pageSize,
|
||||||
yjlb: '03'
|
yjlb: "03"
|
||||||
}
|
};
|
||||||
delete promes.times;
|
delete promes.times;
|
||||||
qcckPost(promes, '/mosty-gsxt/tbYjxx/getPageList').then((res) => {
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/getPageList")
|
||||||
pageData.total = res.total || 0;
|
.then((res) => {
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.total = res.total || 0;
|
||||||
pageData.tableData = res.records || []
|
pageData.tableConfiger.loading = false;
|
||||||
}).catch(() => {
|
pageData.tableData = res.records || [];
|
||||||
pageData.tableConfiger.loading = false;
|
})
|
||||||
})
|
.catch(() => {
|
||||||
}
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const pushWarning = (val) => {
|
const pushWarning = (val) => {
|
||||||
warningShow.value = true;
|
warningShow.value = true;
|
||||||
dataList.value = val;
|
dataList.value = val;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
const failWarning = (val) => {
|
const failWarning = (val) => {
|
||||||
let ids = [val.id]
|
let ids = [val.id];
|
||||||
qcckPost({ ids }, '/mosty-gsxt/tbYjxx/yjbc').then((res) => {
|
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/yjbc")
|
||||||
proxy.$message({ type: "success", message: "成功" });
|
.then((res) => {
|
||||||
getList();
|
proxy.$message({ type: "success", message: "成功" });
|
||||||
}).catch(() => {
|
getList();
|
||||||
proxy.$message({ type: "error", message: "失败" });
|
})
|
||||||
});
|
.catch(() => {
|
||||||
}
|
proxy.$message({ type: "error", message: "失败" });
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/** 选中项 */
|
/** 选中项 */
|
||||||
const selectRows = ref([])
|
const selectRows = ref([]);
|
||||||
const handleChooseData = (val) => {
|
const handleChooseData = (val) => {
|
||||||
selectRows.value = val
|
selectRows.value = val;
|
||||||
}
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
czzt_name: "状态",
|
index: "序号",
|
||||||
|
czzt_name: "预警状态",
|
||||||
yjSj: "预警时间",
|
yjSj: "预警时间",
|
||||||
yjRyxm: "人员姓名",
|
yjRyxm: "人员姓名",
|
||||||
yjRysfzh: "身份证号",
|
yjRysfzh: "身份证号",
|
||||||
|
xbdm_name: "性别",
|
||||||
|
nl: "年龄",
|
||||||
yjJb_name: "预警级别",
|
yjJb_name: "预警级别",
|
||||||
bqdl_name: "人员类别",
|
bqdl_name: "人员类别",
|
||||||
yjbqmc: "细类",
|
yjbqmc: "人员细类",
|
||||||
|
yjLylx_name: "轨迹类别",
|
||||||
yjDz: "活动发生地",
|
yjDz: "活动发生地",
|
||||||
ssbm: "接收单位",
|
ssbm: "接收单位",
|
||||||
yjCs: "预警次数",
|
yjCs: "次数",
|
||||||
}
|
cszt_name: "超时状态"
|
||||||
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
const needArr =
|
||||||
const data = needArr.map(item => {
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
|
const data = needArr.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
index: index + 1,
|
||||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
yjJb_name: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
yjJb_name: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||||
bqdl_name: getMultiDictVal(item.bqdl, D_GS_QLZDRLX),
|
bqdl_name: getMultiDictVal(item.bqdl, D_GS_QLZDRLX),
|
||||||
}
|
xbdm_name: getMultiDictVal(item.xbdm, D_BZ_XB),
|
||||||
})
|
yjLylx_name: getMultiDictVal(item.yjLylx, D_GS_ZDR_GJLB),
|
||||||
exportExlByObj(titleObj, data, '七类重点')
|
cszt_name: getMultiDictVal(item.cszt, D_GS_CSZT),
|
||||||
}
|
...item
|
||||||
|
};
|
||||||
|
});
|
||||||
|
exportExlByObj(titleObj, data, "七类重点");
|
||||||
|
};
|
||||||
// 批量签收
|
// 批量签收
|
||||||
const handleQs = () => {
|
const handleQs = () => {
|
||||||
if (selectRows.value?.length === 0) return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
if (selectRows.value?.length === 0)
|
||||||
let wqs = selectRows.value.filter(item => item.czzt == '01');
|
return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||||
if (wqs.length == 0) return proxy.$message({ type: "warning", message: "数据都已签收,请选择未签收的数据" });
|
let wqs = selectRows.value.filter((item) => item.czzt == "01");
|
||||||
let yqs = selectRows.value.filter(item => item.czzt == '02');
|
if (wqs.length == 0)
|
||||||
let texy = yqs.length > 0 ? `${yqs.length}条已签收预警数据,确认要签收${wqs.length}条未签收预警数据吗?` : '确认要签收所有预警数据吗?'
|
return proxy.$message({
|
||||||
proxy.$confirm(texy, "警告", { type: "warning" }).then(() => {
|
type: "warning",
|
||||||
let ids = wqs.map(item => item.id)
|
message: "数据都已签收,请选择未签收的数据"
|
||||||
qcckPost({ ids }, '/mosty-gsxt/tbYjxx/batchQs').then(() => {
|
|
||||||
proxy.$message({ type: "success", message: "成功" });
|
|
||||||
getList();
|
|
||||||
}).catch(() => {
|
|
||||||
proxy.$message({ type: "error", message: "失败" });
|
|
||||||
});
|
});
|
||||||
}).catch(() => { });
|
let yqs = selectRows.value.filter((item) => item.czzt == "02");
|
||||||
}
|
let texy =
|
||||||
|
yqs.length > 0
|
||||||
|
? `${yqs.length}条已签收预警数据,确认要签收${wqs.length}条未签收预警数据吗?`
|
||||||
|
: "确认要签收所有预警数据吗?";
|
||||||
|
proxy
|
||||||
|
.$confirm(texy, "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
let ids = wqs.map((item) => item.id);
|
||||||
|
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/batchQs")
|
||||||
|
.then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: "失败" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
// 详情
|
// 详情
|
||||||
const dataPres = ref({})
|
const dataPres = ref({});
|
||||||
const particularsShow = ref(false);
|
const particularsShow = ref(false);
|
||||||
const particularsOpen = (row) => {
|
const particularsOpen = (row) => {
|
||||||
dataPres.value = row
|
dataPres.value = row;
|
||||||
|
|
||||||
particularsShow.value = true;
|
particularsShow.value = true;
|
||||||
}
|
};
|
||||||
// 单条签收
|
// 单条签收
|
||||||
const handleQsSingle = (row) => {
|
const handleQsFk = (row, type) => {
|
||||||
if (row.czzt == '02') return proxy.$message({ type: "warning", message: "数据已签收,无需重复签收" });
|
if (type === "反馈") {
|
||||||
proxy.$confirm('确认要签收该条预警数据吗?', "警告", { type: "warning" }).then(() => {
|
emitter.emit("openFkDialog", { id: row.id, type });
|
||||||
qcckPost({ ids: [row.id] }, '/mosty-gsxt/tbYjxx/batchQs').then(() => {
|
} else {
|
||||||
proxy.$message({ type: "success", message: "成功" });
|
if (row.czzt == "02")
|
||||||
getList();
|
return proxy.$message({
|
||||||
}).catch(() => {
|
type: "warning",
|
||||||
proxy.$message({ type: "error", message: "失败" });
|
message: "数据已签收,无需重复签收"
|
||||||
});
|
});
|
||||||
}).catch(() => { });
|
proxy
|
||||||
}
|
.$confirm("确认要签收该条预警数据吗?", "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
qcckPost({ ids: [row.id] }, "/mosty-gsxt/tbYjxx/batchQs")
|
||||||
|
.then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: "失败" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
}
|
||||||
|
};
|
||||||
// 关注
|
// 关注
|
||||||
const payAttention = (row) => {
|
const payAttention = (row) => {
|
||||||
let promes = {}
|
let promes = {};
|
||||||
if (row.sfgz == '1') {
|
if (row.sfgz == "1") {
|
||||||
promes.sfgz = '0'
|
promes.sfgz = "0";
|
||||||
promes.msg = '取消关注'
|
promes.msg = "取消关注";
|
||||||
} else {
|
} else {
|
||||||
promes.sfgz = '1'
|
promes.sfgz = "1";
|
||||||
promes.msg = '关注'
|
promes.msg = "关注";
|
||||||
}
|
}
|
||||||
|
|
||||||
proxy.$confirm('确认要关注该条预警数据吗?', "警告", { type: "warning" }).then(() => {
|
proxy
|
||||||
qcckPost({ sfgz: promes.sfgz, id: row.id }, '/mosty-gsxt/tbYjxx/yjgz').then(() => {
|
.$confirm("确认要关注该条预警数据吗?", "警告", { type: "warning" })
|
||||||
proxy.$message({ type: "success", message: `${promes.msg}成功` });
|
.then(() => {
|
||||||
getList();
|
qcckPost({ sfgz: promes.sfgz, id: row.id }, "/mosty-gsxt/tbYjxx/yjgz")
|
||||||
}).catch(() => {
|
.then(() => {
|
||||||
proxy.$message({ type: "error", message: `${promes.msg}失败` });
|
proxy.$message({ type: "success", message: `${promes.msg}成功` });
|
||||||
});
|
getList();
|
||||||
}).catch(() => { });
|
})
|
||||||
}
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: `${promes.msg}失败` });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
// 人数计算
|
// 人数计算
|
||||||
const searchDom = ref(null)
|
const searchDom = ref(null);
|
||||||
const dataConut = ref(0)
|
const dataConut = ref(0);
|
||||||
const searchOpen = ref(false)
|
const searchOpen = ref(false);
|
||||||
const countPeople = () => {
|
const countPeople = () => {
|
||||||
|
|
||||||
const promes = {
|
const promes = {
|
||||||
...searchDom.value.formState,
|
...searchDom.value.formState,
|
||||||
yjJb: searchDom.value.formState.yjJb?.join(',') || '',
|
yjJb: searchDom.value.formState.yjJb?.join(",") || "",
|
||||||
startTime: searchDom.value.formState.startTime ? searchDom.value.formState.startTime[0] : '',
|
startTime: searchDom.value.formState.startTime
|
||||||
endTime: searchDom.value.formState.endTime ? searchDom.value.formState.endTime[1] : '',
|
? searchDom.value.formState.startTime[0]
|
||||||
}
|
: "",
|
||||||
qcckPost(promes, '/mosty-gsxt/tbYjxx/bkyjQctj').then((res) => {
|
endTime: searchDom.value.formState.endTime
|
||||||
dataConut.value = res || 0
|
? searchDom.value.formState.endTime[1]
|
||||||
searchOpen.value = true
|
: ""
|
||||||
}).catch(() => {
|
};
|
||||||
// proxy.$message({ type: "error", message: `${promes.msg}失败` });
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/bkyjQctj")
|
||||||
});
|
.then((res) => {
|
||||||
}
|
dataConut.value = res || 0;
|
||||||
|
searchOpen.value = true;
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// proxy.$message({ type: "error", message: `${promes.msg}失败` });
|
||||||
|
});
|
||||||
|
};
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
console.log("xxxxxxx");
|
pageData.tableHeight =
|
||||||
|
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 230;
|
window.onresize = function () {
|
||||||
window.onresize = function () { tabHeightFn(); };
|
tabHeightFn();
|
||||||
|
};
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -2,37 +2,79 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10">
|
<div ref="searchBox" class="mt10">
|
||||||
<QueryFormPanel v-model="listQuery" :fields="searchConfiger" @search='onSearch'>
|
<QueryFormPanel
|
||||||
|
v-model="listQuery"
|
||||||
|
:fields="searchConfiger"
|
||||||
|
@search="onSearch"
|
||||||
|
>
|
||||||
<template #but>
|
<template #but>
|
||||||
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
|
<el-button type="primary" @click="exportExl" size="small"
|
||||||
<el-button type="primary" size="small" @click="handleQs">签收</el-button>
|
>导出</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="handleQs"
|
||||||
|
>签收</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</QueryFormPanel>
|
</QueryFormPanel>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div :style="{ height: (pageData.tableHeight + 40) + 'px' }" class="bgTable">
|
<div :style="{ height: pageData.tableHeight + 40 + 'px' }" class="bgTable">
|
||||||
<WarnDataTable :loading="pageData.tableConfiger.loading" :tableHeight="pageData.tableHeight"
|
<WarnDataTable
|
||||||
:data="pageData.tableData" :columns="pageData.tableColumn" table-class="warn-table"
|
:loading="pageData.tableConfiger.loading"
|
||||||
@selectionChange="handleChooseData">
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:data="pageData.tableData"
|
||||||
|
:columns="pageData.tableColumn"
|
||||||
|
table-class="warn-table"
|
||||||
|
@selectionChange="handleChooseData"
|
||||||
|
>
|
||||||
<template #yjTp="{ row }">
|
<template #yjTp="{ row }">
|
||||||
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
||||||
<img src="@/assets/images/car.png" width="30" height="30" v-if="row.yjLx == 2" />
|
<img
|
||||||
<img src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
src="@/assets/images/car.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-if="row.yjLx == 2"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
src="@/assets/images/default_male.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-else
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<el-image v-else style="width: 30px; height:30px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
|
<el-image
|
||||||
show-progress>
|
v-else
|
||||||
|
style="width: 30px; height: 30px"
|
||||||
|
:src="row.yjTp"
|
||||||
|
:preview-src-list="[row.yjTp]"
|
||||||
|
show-progress
|
||||||
|
>
|
||||||
<template #error>
|
<template #error>
|
||||||
<div class="image-slot error">
|
<div class="image-slot error">
|
||||||
<img src="@/assets/images/car.png" width="30" height="30" v-if="row.yjLx == 2" />
|
<img
|
||||||
<img src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
src="@/assets/images/car.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-if="row.yjLx == 2"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
src="@/assets/images/default_male.png"
|
||||||
|
width="30"
|
||||||
|
height="30"
|
||||||
|
v-else
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-image>
|
</el-image>
|
||||||
</template>
|
</template>
|
||||||
<template #czzt="{ row }">
|
<template #czzt="{ row }">
|
||||||
<DictTag :value="row.czzt" :color="row.czzt === '01' ? '#ff2424' : '#1d72e8'" :tag="false"
|
<DictTag
|
||||||
:options="D_GSXT_YJXX_CZZT" />
|
:value="row.czzt"
|
||||||
|
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_GSXT_YJXX_CZZT"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #yjRyxm="{ row }">
|
<template #yjRyxm="{ row }">
|
||||||
{{ row.yjLx == 2 ? row.yjClcph : row.yjRyxm }}
|
{{ row.yjLx == 2 ? row.yjClcph : row.yjRyxm }}
|
||||||
@ -42,7 +84,12 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #yjJb="{ row }">
|
<template #yjJb="{ row }">
|
||||||
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
<div :style="{ 'background-color': bqYs(row.yjJb) }">
|
||||||
<DictTag :value="row.yjJb" color="#fff" :tag="false" :options="D_BZ_YJJB" />
|
<DictTag
|
||||||
|
:value="row.yjJb"
|
||||||
|
color="#fff"
|
||||||
|
:tag="false"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #bkly="{ row }">
|
<template #bkly="{ row }">
|
||||||
@ -51,88 +98,164 @@
|
|||||||
<template #bkczyq="{ row }">
|
<template #bkczyq="{ row }">
|
||||||
<DictTag :value="row.bkczyq" :tag="false" :options="D_GS_BK_CZYQ" />
|
<DictTag :value="row.bkczyq" :tag="false" :options="D_GS_BK_CZYQ" />
|
||||||
</template>
|
</template>
|
||||||
<template #xsd="{ row }">
|
<template #xsd="{ row }"> {{ row.xsd }}% </template>
|
||||||
{{ row.xsd }}%
|
|
||||||
</template>
|
|
||||||
<template #yjLylx="{ row }">
|
<template #yjLylx="{ row }">
|
||||||
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
|
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
|
||||||
</template>
|
</template>
|
||||||
<template #yjLx="{ row }">
|
<template #yjLx="{ row }">
|
||||||
{{ row.yjLx == 2 ? '车辆' : '人员' }}
|
{{ row.yjLx == 2 ? "车辆" : "人员" }}
|
||||||
</template>
|
</template>
|
||||||
<template #cszt="{ row }">
|
<template #cszt="{ row }">
|
||||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
</template>
|
</template>
|
||||||
<template #operation="{ row }">
|
<template #operation="{ row }">
|
||||||
<div style="display: flex;justify-content: space-between;">
|
<div style="display: flex; justify-content: space-between">
|
||||||
<span class="warning" @click="pushAssess(row)">全息档案</span>
|
<span class="warning" @click="pushAssess(row)">全息档案</span>
|
||||||
<span class="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</span>
|
<span class="primary" @click="handleCzjy(row)" v-if="roleCode"
|
||||||
|
>处置建议</span
|
||||||
|
>
|
||||||
<!-- <span type="primary" @click="showDetail(row)">转合成</span> -->
|
<!-- <span type="primary" @click="showDetail(row)">转合成</span> -->
|
||||||
<!-- <span type="danger" @click="delDictItem(row.id)">转会商</span> -->
|
<!-- <span type="danger" @click="delDictItem(row.id)">转会商</span> -->
|
||||||
<span class="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</span>
|
<span
|
||||||
<span class="success" @click="handleQsFk(row, '反馈')"
|
class="success"
|
||||||
v-else-if="row.czzt == '02' && permission_sfqs">反馈</span>
|
@click="handleQsFk(row, '签收')"
|
||||||
|
v-if="row.czzt == '01'"
|
||||||
|
>签收</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="success"
|
||||||
|
@click="handleQsFk(row, '反馈')"
|
||||||
|
v-else-if="row.czzt == '02'"
|
||||||
|
>反馈</span
|
||||||
|
>
|
||||||
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
||||||
<span class="primary" @click="openBox(row)">详情</span>
|
<span class="primary" @click="openBox(row)">详情</span>
|
||||||
<span class="primary" @click="pushWarning(row)">指派</span>
|
<span class="primary" @click="pushWarning(row)">指派</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</WarnDataTable>
|
</WarnDataTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages
|
||||||
...pageData.pageConfiger,
|
@changeNo="changeNo"
|
||||||
total: pageData.total
|
@changeSize="changeSize"
|
||||||
}"></Pages>
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Detail ref="detailRef" />
|
<Detail ref="detailRef" />
|
||||||
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||||
<FkDialog @change="getList" lx="04" />
|
<FkDialog @change="getList" lx="04" />
|
||||||
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
<Information
|
||||||
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
v-model="showDialog"
|
||||||
:tacitly="tacitly" />
|
title="发送指令"
|
||||||
|
@submit="submit"
|
||||||
|
@close="closeFszl"
|
||||||
|
>
|
||||||
|
<SemdFqzl
|
||||||
|
ref="semdFqzlRef"
|
||||||
|
:itemData="itemData"
|
||||||
|
@handleClose="handleClose"
|
||||||
|
identification="yj"
|
||||||
|
:tacitly="tacitly"
|
||||||
|
/>
|
||||||
</Information>
|
</Information>
|
||||||
<AddFrom ref="addModelRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }" />
|
<AddFrom
|
||||||
|
ref="addModelRef"
|
||||||
|
:dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }"
|
||||||
|
/>
|
||||||
<!-- 处置建议 -->
|
<!-- 处置建议 -->
|
||||||
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
|
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
|
||||||
|
|
||||||
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz"
|
<ChooseJf
|
||||||
:roleIds="roleIds" />
|
v-model="chooseJfShow"
|
||||||
|
titleValue="选择系数"
|
||||||
|
:Single="false"
|
||||||
|
:chooseJfBh="chooseJfBh"
|
||||||
|
url="/yjzxZhyj/sjxspz"
|
||||||
|
:roleIds="roleIds"
|
||||||
|
/>
|
||||||
<!-- <Pagination v-model="paginationOpen" /> -->
|
<!-- <Pagination v-model="paginationOpen" /> -->
|
||||||
<Pagination v-model="paginationOpen" :dataList="dataPres"
|
<Pagination
|
||||||
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB, D_GS_BK_CZYQ }" />
|
v-model="paginationOpen"
|
||||||
|
:dataList="dataPres"
|
||||||
|
:dict="{
|
||||||
|
D_BZ_XB,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_GS_QLZDRLX,
|
||||||
|
D_GS_ZDR_RYJB,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_GS_BK_CZYQ
|
||||||
|
}"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import Czjy from './components/czjy.vue'
|
import Czjy from "./components/czjy.vue";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
import Searchs from "@/components/aboutTable/Search.vue";
|
import Searchs from "@/components/aboutTable/Search.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Items from "./item/items.vue";
|
import Items from "./item/items.vue";
|
||||||
import ChooseJf from '@/components/ChooseList/ChooseJf/index.vue'
|
import ChooseJf from "@/components/ChooseList/ChooseJf/index.vue";
|
||||||
import { tbYjxxGetZbtj, tbGsxtBqzhSelectList, yjzxZhyjSelectList } from '@/api/yj.js'
|
import {
|
||||||
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
tbYjxxGetZbtj,
|
||||||
|
tbGsxtBqzhSelectList,
|
||||||
|
yjzxZhyjSelectList
|
||||||
|
} from "@/api/yj.js";
|
||||||
|
import HolographicArchive from "@/views/home/components/holographicArchive.vue";
|
||||||
import Information from "@/views/home/model/information.vue";
|
import Information from "@/views/home/model/information.vue";
|
||||||
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
import SemdFqzl from "@/components/instructionHasBeen/sendFqzl.vue";
|
||||||
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
import AddFrom from "./components/addFrom.vue";
|
import AddFrom from "./components/addFrom.vue";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import Detail from './components/detail.vue'
|
import Detail from "./components/detail.vue";
|
||||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||||
import { getMultiDictVal } from "@/utils/dict.js"
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import Pagination from "./components/particulars.vue";
|
import Pagination from "./components/particulars.vue";
|
||||||
import WarnDataTable from '@/views/backOfficeSystem/ces/components/WarnDataTable.vue'
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
||||||
import { bqYs } from '@/utils/tools.js'
|
import { bqYs } from "@/utils/tools.js";
|
||||||
const permission_sfqs = ref(false)
|
const permission_sfqs = ref(false);
|
||||||
const roleCode = ref(false)
|
const roleCode = ref(false);
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
const czjyRef = ref()
|
const czjyRef = ref();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GSXT_YJXX_CZZT, D_GS_SSYJ, D_BZ_YJJB, D_BZ_YJLY, D_BZ_YJLX, D_BZ_BKLYS, D_GS_CSZT, D_GS_BKZT, D_BZ_XB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB, D_GS_BK_CZYQ, D_GS_QLZDRYXX } =
|
const {
|
||||||
proxy.$dict("D_GSXT_YJXX_CZZT", "D_GS_SSYJ", "D_BZ_YJJB", "D_BZ_YJLY", "D_BZ_YJLX", "D_BZ_BKLYS", "D_GS_CSZT", "D_GS_BKZT", "D_BZ_XB", "D_GS_QLZDRLX", "D_GS_ZDR_RYJB", "D_GS_ZDR_GJLB", "D_GS_BK_CZYQ", "D_GS_QLZDRYXX");
|
D_GSXT_YJXX_CZZT,
|
||||||
|
D_GS_SSYJ,
|
||||||
|
D_BZ_YJJB,
|
||||||
|
D_BZ_YJLY,
|
||||||
|
D_BZ_YJLX,
|
||||||
|
D_BZ_BKLYS,
|
||||||
|
D_GS_CSZT,
|
||||||
|
D_GS_BKZT,
|
||||||
|
D_BZ_XB,
|
||||||
|
D_GS_QLZDRLX,
|
||||||
|
D_GS_ZDR_RYJB,
|
||||||
|
D_GS_ZDR_GJLB,
|
||||||
|
D_GS_BK_CZYQ,
|
||||||
|
D_GS_QLZDRYXX
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_GSXT_YJXX_CZZT",
|
||||||
|
"D_GS_SSYJ",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_BZ_YJLY",
|
||||||
|
"D_BZ_YJLX",
|
||||||
|
"D_BZ_BKLYS",
|
||||||
|
"D_GS_CSZT",
|
||||||
|
"D_GS_BKZT",
|
||||||
|
"D_BZ_XB",
|
||||||
|
"D_GS_QLZDRLX",
|
||||||
|
"D_GS_ZDR_RYJB",
|
||||||
|
"D_GS_ZDR_GJLB",
|
||||||
|
"D_GS_BK_CZYQ",
|
||||||
|
"D_GS_QLZDRYXX"
|
||||||
|
);
|
||||||
|
|
||||||
// 字典数据集合
|
// 字典数据集合
|
||||||
const dict = ref({
|
const dict = ref({
|
||||||
@ -141,28 +264,116 @@ const dict = ref({
|
|||||||
D_BZ_YJLY,
|
D_BZ_YJLY,
|
||||||
D_BZ_YJJB,
|
D_BZ_YJJB,
|
||||||
D_BZ_YJLX
|
D_BZ_YJLX
|
||||||
})
|
});
|
||||||
import { holographicProfileJump } from "@/utils/tools.js"
|
import { holographicProfileJump } from "@/utils/tools.js";
|
||||||
|
|
||||||
// 搜索配置
|
// 搜索配置
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{ label: "布控开始时间", prop: 'bkkssj', showType: "date", placeholder: "请选择布控开始时间" },
|
{
|
||||||
{ label: "布控结束时间", prop: 'bkjssj', showType: "date", placeholder: "请选择布控结束时间" },
|
label: "布控开始时间",
|
||||||
{ label: "预警时间", prop: 'startTime', showType: "datetimerange", placeholder: "请选择预警时间" },
|
prop: "bkkssj",
|
||||||
{ label: "比中项", prop: 'yjLx', showType: "select", options: [{ label: '人员', value: '1', }, { label: '车辆', value: '2', }], multiple: true },
|
showType: "date",
|
||||||
{ label: "布控来源", prop: 'bkly', showType: "select", options: D_BZ_BKLYS, placeholder: "请选择布控来源" },
|
placeholder: "请选择布控开始时间"
|
||||||
{ label: "所属单位", prop: 'ssbmdm', showType: "department", placeholder: "请选择所属单位" },
|
},
|
||||||
{ label: "布控单位", prop: 'gkbmdm', showType: "department", placeholder: "请选择布控单位" },
|
{
|
||||||
{ label: "签收状态", prop: 'czzt', showType: "select", options: D_GSXT_YJXX_CZZT },
|
label: "布控结束时间",
|
||||||
{ label: "超时状态", prop: 'cszt', placeholder: "请选择超时状态", showType: "select", options: D_GS_CSZT },
|
prop: "bkjssj",
|
||||||
{ label: "布控状态", prop: 'zkzt', showType: "select", options: D_GS_BKZT, placeholder: "请选择布控状态" },
|
showType: "date",
|
||||||
{ key: 'yjRyxm', label: '姓名', type: 'input', placeholder: '请输入姓名' },
|
placeholder: "请选择布控结束时间"
|
||||||
{ key: 'xbdm', label: '性别', type: 'select', options: D_BZ_XB, placeholder: '请选择性别' },
|
},
|
||||||
{ key: 'yjRysfzh', label: '身份证号码', type: 'input', placeholder: '请输入身份证号码' },
|
{
|
||||||
{ key: 'ksnl', label: '开始年龄', type: 'number', placeholder: '请输入开始年龄' },
|
label: "预警时间",
|
||||||
{ key: 'jsnl', label: '结束年龄', type: 'number', placeholder: '请输入结束年龄' },
|
prop: "startTime",
|
||||||
{ key: 'clcph', label: '车牌号码', type: 'input', placeholder: '请输入车牌号码' },
|
showType: "datetimerange",
|
||||||
{ key: 'yjNr', label: '预警内容', type: 'input', placeholder: '请输入预警内容' },
|
placeholder: "请选择预警时间"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "比中项",
|
||||||
|
prop: "yjLx",
|
||||||
|
showType: "select",
|
||||||
|
options: [
|
||||||
|
{ label: "人员", value: "1" },
|
||||||
|
{ label: "车辆", value: "2" }
|
||||||
|
],
|
||||||
|
multiple: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控来源",
|
||||||
|
prop: "bkly",
|
||||||
|
showType: "select",
|
||||||
|
options: D_BZ_BKLYS,
|
||||||
|
placeholder: "请选择布控来源"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "所属单位",
|
||||||
|
prop: "ssbmdm",
|
||||||
|
showType: "department",
|
||||||
|
placeholder: "请选择所属单位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控单位",
|
||||||
|
prop: "gkbmdm",
|
||||||
|
showType: "department",
|
||||||
|
placeholder: "请选择布控单位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "签收状态",
|
||||||
|
prop: "czzt",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GSXT_YJXX_CZZT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "超时状态",
|
||||||
|
prop: "cszt",
|
||||||
|
placeholder: "请选择超时状态",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_CSZT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "布控状态",
|
||||||
|
prop: "zkzt",
|
||||||
|
showType: "select",
|
||||||
|
options: D_GS_BKZT,
|
||||||
|
placeholder: "请选择布控状态"
|
||||||
|
},
|
||||||
|
{ key: "yjRyxm", label: "姓名", type: "input", placeholder: "请输入姓名" },
|
||||||
|
{
|
||||||
|
key: "xbdm",
|
||||||
|
label: "性别",
|
||||||
|
type: "select",
|
||||||
|
options: D_BZ_XB,
|
||||||
|
placeholder: "请选择性别"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "yjRysfzh",
|
||||||
|
label: "身份证号码",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入身份证号码"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "ksnl",
|
||||||
|
label: "开始年龄",
|
||||||
|
type: "number",
|
||||||
|
placeholder: "请输入开始年龄"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "jsnl",
|
||||||
|
label: "结束年龄",
|
||||||
|
type: "number",
|
||||||
|
placeholder: "请输入结束年龄"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "clcph",
|
||||||
|
label: "车牌号码",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入车牌号码"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "yjNr",
|
||||||
|
label: "预警内容",
|
||||||
|
type: "input",
|
||||||
|
placeholder: "请输入预警内容"
|
||||||
|
}
|
||||||
// { label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" },
|
// { label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" },
|
||||||
// { label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
|
// { label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
|
||||||
// { label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
|
// { label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
|
||||||
@ -179,7 +390,7 @@ const pageData = reactive({
|
|||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "checkBox",
|
showSelectType: "checkBox",
|
||||||
loading: false,
|
loading: false,
|
||||||
haveControls: true,
|
haveControls: true
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
pageConfiger: {
|
pageConfiger: {
|
||||||
@ -188,29 +399,29 @@ const pageData = reactive({
|
|||||||
},
|
},
|
||||||
controlsWidth: 160,
|
controlsWidth: 160,
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ type: 'index', label: '序号', width: 55, align: 'center' },
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
{ label: '预警状态', width: 80, align: 'center', slotName: 'czzt' },
|
{ label: "预警状态", width: 80, align: "center", slotName: "czzt" },
|
||||||
{ prop: 'yjSj', label: '预警时间', width: 80, align: 'center' },
|
{ prop: "yjSj", label: "预警时间", width: 80, align: "center" },
|
||||||
{ prop: 'bkqymc', label: '区域名称', width: 80, align: 'center' },
|
{ prop: "bkqymc", label: "区域名称", width: 80, align: "center" },
|
||||||
{ label: "比中", slotName: 'yjLx', width: 60, align: 'center' },
|
{ label: "比中", slotName: "yjLx", width: 60, align: "center" },
|
||||||
{ label: '人员姓名', slotName: 'yjRyxm', width: 80, align: 'center' },
|
{ label: "人员姓名", slotName: "yjRyxm", width: 80, align: "center" },
|
||||||
{ prop: 'yjRysfzh', label: '身份证号', width: 80, align: 'center' },
|
{ prop: "yjRysfzh", label: "身份证号", width: 80, align: "center" },
|
||||||
{ label: '性别', width: 56, align: 'center', slotName: 'xbdm' },
|
{ label: "性别", width: 56, align: "center", slotName: "xbdm" },
|
||||||
{ prop: 'nl', label: '年龄', width: 56, align: 'center' },
|
{ prop: "nl", label: "年龄", width: 56, align: "center" },
|
||||||
{ label: '预警级别', width: 88, align: 'center', slotName: 'yjJb' },
|
{ label: "预警级别", width: 88, align: "center", slotName: "yjJb" },
|
||||||
{ label: "布控单位", prop: "gkbmmc", align: 'center' },
|
{ label: "布控单位", prop: "gkbmmc", align: "center" },
|
||||||
{ label: "布控来源", align: 'center', slotName: 'bkly', width: 70 },
|
{ label: "布控来源", align: "center", slotName: "bkly", width: 70 },
|
||||||
{ prop: 'bkfw', label: "布控范围", align: 'center', width: 70 },
|
{ prop: "bkfw", label: "布控范围", align: "center", width: 70 },
|
||||||
{ prop: 'bkkssj', label: "布控开始时间", align: 'center' },
|
{ prop: "bkkssj", label: "布控开始时间", align: "center" },
|
||||||
{ prop: 'bkjssj', label: "布控结束时间", align: 'center' },
|
{ prop: "bkjssj", label: "布控结束时间", align: "center" },
|
||||||
{ label: "处置要求", width: 70, slotName: 'bkczyq', align: 'center' },
|
{ label: "处置要求", width: 70, slotName: "bkczyq", align: "center" },
|
||||||
{ label: "相似度", slotName: "xsd", align: 'center', width: 50 },
|
{ label: "相似度", slotName: "xsd", align: "center", width: 50 },
|
||||||
{ label: "预警内容", prop: "yjNr", align: 'center' },
|
{ label: "预警内容", prop: "yjNr", align: "center" },
|
||||||
{ label: "所属部门", prop: "ssbm", align: 'center' },
|
{ label: "所属部门", prop: "ssbm", align: "center" },
|
||||||
{ label: "数据来源", slotName: "yjLylx", align: 'center' },
|
{ label: "数据来源", slotName: "yjLylx", align: "center" },
|
||||||
{ label: '操作', width: 180, slotName: 'operation' },
|
{ label: "操作", width: 180, slotName: "operation" },
|
||||||
{ label: '超时状态', width: 80, align: 'center', slotName: 'cszt' },
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" },
|
||||||
{ label: "在控状态", width: 70, align: 'center', slotName: "zkzt" },
|
{ label: "在控状态", width: 70, align: "center", slotName: "zkzt" }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -225,24 +436,23 @@ onMounted(() => {
|
|||||||
// roleCode.value = obj ? true : false;
|
// roleCode.value = obj ? true : false;
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
getList();
|
getList();
|
||||||
gettbGsxtBqglSelectList()
|
gettbGsxtBqglSelectList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const handleCzjy = (row) => {
|
const handleCzjy = (row) => {
|
||||||
czjyRef.value.init(row)
|
czjyRef.value.init(row);
|
||||||
}
|
};
|
||||||
|
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryFrom.value = { ...queryFrom.value, ...val, yjLx: val.yjLx.join(',') };
|
queryFrom.value = { ...queryFrom.value, ...val, yjLx: val.yjLx.join(",") };
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
|
||||||
const reset = () => {
|
const reset = () => {
|
||||||
delete queryFrom.value.ksfz
|
delete queryFrom.value.ksfz;
|
||||||
delete queryFrom.value.jsfz
|
delete queryFrom.value.jsfz;
|
||||||
}
|
};
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
@ -261,121 +471,121 @@ const getList = () => {
|
|||||||
...queryFrom.value,
|
...queryFrom.value,
|
||||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
pageSize: pageData.pageConfiger.pageSize
|
pageSize: pageData.pageConfiger.pageSize
|
||||||
}
|
};
|
||||||
qcckPost({ promes }, "/mosty-gsxt/tbYjxx/getQybkPageList").then((res) => {
|
qcckPost({ promes }, "/mosty-gsxt/tbYjxx/getQybkPageList")
|
||||||
pageData.tableData = res.records || [];
|
.then((res) => {
|
||||||
pageData.total = res.total || 0;
|
pageData.tableData = res.records || [];
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.total = res.total || 0;
|
||||||
}).catch(() => {
|
pageData.tableConfiger.loading = false;
|
||||||
pageData.tableConfiger.loading = false;
|
})
|
||||||
});
|
.catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
const bqLbData = ref({
|
const bqLbData = ref({
|
||||||
bqXl: []
|
bqXl: []
|
||||||
})
|
});
|
||||||
const gettbGsxtBqglSelectList = (val) => {
|
const gettbGsxtBqglSelectList = (val) => {
|
||||||
tbGsxtBqzhSelectList({}).then((res) => {
|
tbGsxtBqzhSelectList({}).then((res) => {
|
||||||
bqLbData.value.bqXl = res.map(item => {
|
bqLbData.value.bqXl =
|
||||||
return {
|
res.map((item) => {
|
||||||
label: item.bqMc,
|
return {
|
||||||
value: item.bqDm
|
label: item.bqMc,
|
||||||
}
|
value: item.bqDm
|
||||||
}) || []
|
};
|
||||||
})
|
}) || [];
|
||||||
}
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// 查看详情
|
// 查看详情
|
||||||
const detailRef = ref()
|
const detailRef = ref();
|
||||||
const handleClick = (row) => {
|
const handleClick = (row) => {
|
||||||
detailRef.value.init(row)
|
detailRef.value.init(row);
|
||||||
}
|
};
|
||||||
const assessShow = ref(false)
|
const assessShow = ref(false);
|
||||||
/** 选中项 */
|
/** 选中项 */
|
||||||
const selectRows = ref([])
|
const selectRows = ref([]);
|
||||||
const dataList = ref()
|
const dataList = ref();
|
||||||
const pushAssess = (val) => {
|
const pushAssess = (val) => {
|
||||||
return holographicProfileJump(val.yjlx, val) // 全息档案跳转
|
return holographicProfileJump(val.yjlx, val); // 全息档案跳转
|
||||||
// assessShow.value = true;
|
// assessShow.value = true;
|
||||||
// dataList.value = val;
|
// dataList.value = val;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
// 发送指令
|
// 发送指令
|
||||||
const showDialog = ref(false)
|
const showDialog = ref(false);
|
||||||
const itemData = ref()
|
const itemData = ref();
|
||||||
const showDetail = (item) => {
|
const showDetail = (item) => {
|
||||||
showDialog.value = true;
|
showDialog.value = true;
|
||||||
itemData.value = item
|
itemData.value = item;
|
||||||
}
|
};
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
showDialog.value = false;
|
showDialog.value = false;
|
||||||
}
|
};
|
||||||
const semdFqzlRef = ref()
|
const semdFqzlRef = ref();
|
||||||
const tacitly = {
|
const tacitly = {
|
||||||
title: 'yjbt',
|
title: "yjbt",
|
||||||
instructionContent: 'yjnr'
|
instructionContent: "yjnr"
|
||||||
}
|
};
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
semdFqzlRef.value.getsendFqzl()
|
semdFqzlRef.value.getsendFqzl();
|
||||||
}
|
};
|
||||||
|
|
||||||
const closeFszl = () => {
|
const closeFszl = () => {
|
||||||
semdFqzlRef.value.close()
|
semdFqzlRef.value.close();
|
||||||
}
|
};
|
||||||
|
|
||||||
// 处理签收
|
// 处理签收
|
||||||
const handleQsFk = (val, type) => {
|
const handleQsFk = (val, type) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case '签收':
|
case "签收":
|
||||||
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
proxy
|
||||||
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxZhyj/yjqs").then(() => {
|
.$confirm("是否确定要签收?", "警告", { type: "warning" })
|
||||||
val.czzt = '02'
|
.then(() => {
|
||||||
getList()
|
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxZhyj/yjqs").then(() => {
|
||||||
proxy.$message({ type: "success", message: "签收成功" });
|
val.czzt = "02";
|
||||||
|
getList();
|
||||||
|
proxy.$message({ type: "success", message: "签收成功" });
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
break;
|
break;
|
||||||
case '反馈':
|
case "反馈":
|
||||||
case '查看反馈':
|
case "查看反馈":
|
||||||
emitter.emit("openFkDialog", { id: val.id, type });
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
};
|
||||||
}
|
const addModelRef = ref(null);
|
||||||
const addModelRef = ref(null)
|
|
||||||
const openAddModel = (row) => {
|
const openAddModel = (row) => {
|
||||||
console.log(row);
|
console.log(row);
|
||||||
|
|
||||||
addModelRef.value.init(row)
|
addModelRef.value.init(row);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
// 选择系数
|
// 选择系数
|
||||||
const chooseJfShow = ref(false)
|
const chooseJfShow = ref(false);
|
||||||
const chooseJfBh = ref()
|
const chooseJfBh = ref();
|
||||||
const roleIds = ref()
|
const roleIds = ref();
|
||||||
const chooseJfFun = (val) => {
|
const chooseJfFun = (val) => {
|
||||||
chooseJfBh.value = val.id
|
chooseJfBh.value = val.id;
|
||||||
yjzxZhyjSelectList(val.id).then(res => {
|
yjzxZhyjSelectList(val.id).then((res) => {
|
||||||
roleIds.value = res.sjxspzList.map(item => item.xsid)
|
roleIds.value = res.sjxspzList.map((item) => item.xsid);
|
||||||
chooseJfShow.value = true
|
chooseJfShow.value = true;
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 230;
|
pageData.tableHeight =
|
||||||
|
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const handleChooseData = (val) => {
|
const handleChooseData = (val) => {
|
||||||
selectRows.value = val
|
selectRows.value = val;
|
||||||
}
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
yjRyxm: "姓名",
|
yjRyxm: "姓名",
|
||||||
@ -389,46 +599,59 @@ const exportExl = () => {
|
|||||||
yjbqmc: "预警标签",
|
yjbqmc: "预警标签",
|
||||||
yjSj: "预警时间",
|
yjSj: "预警时间",
|
||||||
czzt_cname: "处置状态",
|
czzt_cname: "处置状态",
|
||||||
ssbm: "所属部门",
|
ssbm: "所属部门"
|
||||||
}
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
const needArr =
|
||||||
const data = needArr.map(item => {
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
|
const data = needArr.map((item) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
bqys_cname: getMultiDictVal(item.yjLx, D_BZ_YJLX),
|
bqys_cname: getMultiDictVal(item.yjLx, D_BZ_YJLX),
|
||||||
czzt_cname: getMultiDictVal(item.yjLylx, D_BZ_YJLY),
|
czzt_cname: getMultiDictVal(item.yjLylx, D_BZ_YJLY),
|
||||||
bqys_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
bqys_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||||
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT)
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
exportExlByObj(titleObj, data, '组合预警')
|
exportExlByObj(titleObj, data, "组合预警");
|
||||||
|
};
|
||||||
}
|
|
||||||
|
|
||||||
const handleQs = () => {
|
const handleQs = () => {
|
||||||
if (selectRows.value?.length === 0) return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
if (selectRows.value?.length === 0)
|
||||||
let wqs = selectRows.value.filter(item => item.czzt == '01');
|
return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||||
if (wqs.length == 0) return proxy.$message({ type: "warning", message: "数据都已签收,请选择未签收的数据" });
|
let wqs = selectRows.value.filter((item) => item.czzt == "01");
|
||||||
let yqs = selectRows.value.filter(item => item.czzt == '02');
|
if (wqs.length == 0)
|
||||||
let texy = yqs.length > 0 ? `${yqs.length}条已签收预警数据,确认要签收${wqs.length}条未签收预警数据吗?` : '确认要签收所有预警数据吗?'
|
return proxy.$message({
|
||||||
proxy.$confirm(texy, "警告", { type: "warning" }).then(() => {
|
type: "warning",
|
||||||
let ids = wqs.map(item => item.id)
|
message: "数据都已签收,请选择未签收的数据"
|
||||||
qcckPost({ ids }, '/mosty-gsxt/tbYjxx/batchQs').then(() => {
|
|
||||||
proxy.$message({ type: "success", message: "成功" });
|
|
||||||
getList();
|
|
||||||
}).catch(() => {
|
|
||||||
proxy.$message({ type: "error", message: "失败" });
|
|
||||||
});
|
});
|
||||||
}).catch(() => { });
|
let yqs = selectRows.value.filter((item) => item.czzt == "02");
|
||||||
}
|
let texy =
|
||||||
|
yqs.length > 0
|
||||||
|
? `${yqs.length}条已签收预警数据,确认要签收${wqs.length}条未签收预警数据吗?`
|
||||||
|
: "确认要签收所有预警数据吗?";
|
||||||
|
proxy
|
||||||
|
.$confirm(texy, "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
let ids = wqs.map((item) => item.id);
|
||||||
|
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/batchQs")
|
||||||
|
.then(() => {
|
||||||
|
proxy.$message({ type: "success", message: "成功" });
|
||||||
|
getList();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$message({ type: "error", message: "失败" });
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
// 详情
|
// 详情
|
||||||
const paginationOpen = ref(false)
|
const paginationOpen = ref(false);
|
||||||
const dataPres = ref()
|
const dataPres = ref();
|
||||||
const openBox = (val) => {
|
const openBox = (val) => {
|
||||||
dataPres.value = val
|
dataPres.value = val;
|
||||||
paginationOpen.value = true
|
paginationOpen.value = true;
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -1,19 +1,34 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
<Searchs
|
||||||
|
:searchArr="searchConfiger"
|
||||||
|
@submit="onSearch"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
>
|
||||||
</Searchs>
|
</Searchs>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="margTop" >
|
<div class="margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:tableData="pageData.tableData"
|
||||||
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
:controlsWidth="pageData.controlsWidth"
|
||||||
|
>
|
||||||
<template #sfcs="{ row }">
|
<template #sfcs="{ row }">
|
||||||
<span style="color: #0072ff;">{{ row.sfcs }}</span>
|
<span style="color: #0072ff">{{ row.sfcs }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #yjjb="{ row }">
|
<template #yjjb="{ row }">
|
||||||
<DictTag :value="row.yjjb" :tag="false" :color="bqYs(row.yjjb)" :options="D_BZ_YJJB" />
|
<DictTag
|
||||||
|
:value="row.yjjb"
|
||||||
|
:tag="false"
|
||||||
|
:color="bqYs(row.yjjb)"
|
||||||
|
:options="D_BZ_YJJB"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #yjlx="{ row }">
|
<template #yjlx="{ row }">
|
||||||
<DictTag :value="row.yjlx" :tag="false" :options="D_GS_ZDQT_YJLB" />
|
<DictTag :value="row.yjlx" :tag="false" :options="D_GS_ZDQT_YJLB" />
|
||||||
@ -22,13 +37,21 @@
|
|||||||
<DictTag :value="row.yjlb" :options="D_BZ_YJLX" />
|
<DictTag :value="row.yjlb" :options="D_BZ_YJLX" />
|
||||||
</template>
|
</template>
|
||||||
<template #sffz="{ row }">
|
<template #sffz="{ row }">
|
||||||
<span :style="row.sffz > 100 ? 'color: #ff0000;' : 'color: #0072ff;'">{{ row.sffz }}</span>
|
<span
|
||||||
|
:style="row.sffz > 100 ? 'color: #ff0000;' : 'color: #0072ff;'"
|
||||||
|
>{{ row.sffz }}</span
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
<template #yjtp="{ row }">
|
<template #yjtp="{ row }">
|
||||||
<template v-if="!row.yjtp || row.yjtp.includes('baidu')">
|
<template v-if="!row.yjtp || row.yjtp.includes('baidu')">
|
||||||
<img src="@/assets/images/car.png" width="30" height="30" />
|
<img src="@/assets/images/car.png" width="30" height="30" />
|
||||||
</template>
|
</template>
|
||||||
<el-image style="width: 30px; height:30px" :src="row.yjtp" :preview-src-list="[row.yjtp]" show-progress>
|
<el-image
|
||||||
|
style="width: 30px; height: 30px"
|
||||||
|
:src="row.yjtp"
|
||||||
|
:preview-src-list="[row.yjtp]"
|
||||||
|
show-progress
|
||||||
|
>
|
||||||
<template #error>
|
<template #error>
|
||||||
<div class="image-slot error">
|
<div class="image-slot error">
|
||||||
<img src="@/assets/images/car.png" width="30" height="30" />
|
<img src="@/assets/images/car.png" width="30" height="30" />
|
||||||
@ -46,10 +69,15 @@
|
|||||||
<!-- <el-link type="primary" @click="openAddFrom(row)">详情</el-link> -->
|
<!-- <el-link type="primary" @click="openAddFrom(row)">详情</el-link> -->
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages
|
||||||
...pageData.pageConfiger,
|
@changeNo="changeNo"
|
||||||
total: pageData.total
|
@changeSize="changeSize"
|
||||||
}"></Pages>
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
></Pages>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <Detail ref="detailRef" /> -->
|
<!-- <Detail ref="detailRef" /> -->
|
||||||
@ -60,35 +88,66 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { holographicProfileJump } from "@/utils/tools.js"
|
import { holographicProfileJump } from "@/utils/tools.js";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
import Searchs from "@/components/aboutTable/Search.vue";
|
import Searchs from "@/components/aboutTable/Search.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import DictTag from "@/components/DictTag/index.vue";
|
import DictTag from "@/components/DictTag/index.vue";
|
||||||
import { bqYs } from '@/utils/tools'
|
import { bqYs } from "@/utils/tools";
|
||||||
// import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
// import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
import { yjzxSfyjSelectList } from "@/api/yj.js";
|
import { yjzxSfyjSelectList } from "@/api/yj.js";
|
||||||
import { tbGsxtBqglSelectList } from '@/api/zdr'
|
import { tbGsxtBqglSelectList } from "@/api/zdr";
|
||||||
// import Detail from './components/detail.vue'
|
// import Detail from './components/detail.vue'
|
||||||
import { watch } from "vue";
|
import { watch } from "vue";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const searchBox = ref();
|
const searchBox = ref();
|
||||||
const { D_BZ_YJLX, D_BZ_HPZL, D_BZ_YJJB, D_GS_ZDQT_YJLB } = proxy.$dict("D_BZ_YJLX", "D_BZ_HPZL", "D_BZ_YJJB", "D_GS_ZDQT_YJLB")
|
const { D_BZ_YJLX, D_BZ_HPZL, D_BZ_YJJB, D_GS_ZDQT_YJLB } = proxy.$dict(
|
||||||
|
"D_BZ_YJLX",
|
||||||
|
"D_BZ_HPZL",
|
||||||
|
"D_BZ_YJJB",
|
||||||
|
"D_GS_ZDQT_YJLB"
|
||||||
|
);
|
||||||
// 搜索配置
|
// 搜索配置
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
// { label: "姓名", prop: 'ryxm', placeholder: "请输入姓名", showType: "input" },
|
// { label: "姓名", prop: 'ryxm', placeholder: "请输入姓名", showType: "input" },
|
||||||
// { label: "身份证号码", prop: 'rysfzh', placeholder: "请输入身份证号码", showType: "input" },
|
// { label: "身份证号码", prop: 'rysfzh', placeholder: "请输入身份证号码", showType: "input" },
|
||||||
// { label: "车牌号", prop: 'cph', placeholder: "请输入车牌号", showType: "input" },//yjClcph
|
// { label: "车牌号", prop: 'cph', placeholder: "请输入车牌号", showType: "input" },//yjClcph
|
||||||
{ label: "预警类型", prop: 'yjlxList', placeholder: "请选择预警类型", showType: "select", options: [],multiple:true },
|
{
|
||||||
{ label: "预警级别", prop: 'yjjbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true },
|
label: "预警类型",
|
||||||
{ label: "预警类别", prop: 'yjlbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true },
|
prop: "yjlxList",
|
||||||
{ label: "时间", prop: 'times', showType: "datetimerange" },
|
placeholder: "请选择预警类型",
|
||||||
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
|
showType: "select",
|
||||||
|
options: [],
|
||||||
|
multiple: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "预警级别",
|
||||||
|
prop: "yjjbList",
|
||||||
|
placeholder: "请选择预警级别",
|
||||||
|
showType: "select",
|
||||||
|
options: [],
|
||||||
|
multiple: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "预警类别",
|
||||||
|
prop: "yjlbList",
|
||||||
|
placeholder: "请选择预警级别",
|
||||||
|
showType: "select",
|
||||||
|
options: [],
|
||||||
|
multiple: true
|
||||||
|
},
|
||||||
|
{ label: "时间", prop: "times", showType: "datetimerange" },
|
||||||
|
{
|
||||||
|
label: "部门",
|
||||||
|
prop: "ssbmdm",
|
||||||
|
placeholder: "请选择部门",
|
||||||
|
showType: "department"
|
||||||
|
}
|
||||||
// { label: "号牌类型", prop: 'hplx', placeholder: "请选择号牌类型", showType: "select", options: [] },
|
// { label: "号牌类型", prop: 'hplx', placeholder: "请选择号牌类型", showType: "select", options: [] },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -111,9 +170,9 @@ const pageData = reactive({
|
|||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 100, //操作栏宽度
|
controlsWidth: 100, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "身份分值", prop: "sffz", showSolt: true },
|
{ label: "总分值", prop: "sffz", showSolt: true },
|
||||||
// { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 },
|
// { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 },
|
||||||
{ label: "预警时间", prop: "yjsj",},
|
{ label: "预警时间", prop: "yjsj" },
|
||||||
{ label: "姓名", prop: "ryxm", showOverflowTooltip: true },
|
{ label: "姓名", prop: "ryxm", showOverflowTooltip: true },
|
||||||
// { label: "车牌号", prop: "cph", showOverflowTooltip: true },
|
// { label: "车牌号", prop: "cph", showOverflowTooltip: true },
|
||||||
// { label: "号牌类型", prop: "hplx", showOverflowTooltip: true },
|
// { label: "号牌类型", prop: "hplx", showOverflowTooltip: true },
|
||||||
@ -121,12 +180,17 @@ const pageData = reactive({
|
|||||||
// { label: "部门名称", prop: "ssbm", showOverflowTooltip: true },
|
// { label: "部门名称", prop: "ssbm", showOverflowTooltip: true },
|
||||||
// { label: "预警地址", prop: "yjdz", showOverflowTooltip: true },
|
// { label: "预警地址", prop: "yjdz", showOverflowTooltip: true },
|
||||||
{ label: "预警标签", prop: "yjbq", showOverflowTooltip: true },
|
{ label: "预警标签", prop: "yjbq", showOverflowTooltip: true },
|
||||||
{ label: "预警级别", prop: "yjjb", showSolt: true, showOverflowTooltip: true },
|
{
|
||||||
|
label: "预警级别",
|
||||||
|
prop: "yjjb",
|
||||||
|
showSolt: true,
|
||||||
|
showOverflowTooltip: true
|
||||||
|
},
|
||||||
{ label: "预警类别", prop: "yjlb", showSolt: true },
|
{ label: "预警类别", prop: "yjlb", showSolt: true },
|
||||||
{ label: "预警类型", prop: "yjlx", showSolt: true },
|
{ label: "预警类型", prop: "yjlx", showSolt: true },
|
||||||
// { label: "身份次数", prop: "sfcs", showSlot: true },
|
// { label: "身份次数", prop: "sfcs", showSlot: true },
|
||||||
|
|
||||||
{ label: "预警内容", prop: "yjnr", showOverflowTooltip: true },
|
{ label: "预警内容", prop: "yjnr", showOverflowTooltip: true }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
// yjlb // 预警类别 D_BZ_YJLX 1人像 2车辆。。
|
// yjlb // 预警类别 D_BZ_YJLX 1人像 2车辆。。
|
||||||
@ -138,22 +202,24 @@ onMounted(() => {
|
|||||||
searchConfiger.value[0].options = D_GS_ZDQT_YJLB;
|
searchConfiger.value[0].options = D_GS_ZDQT_YJLB;
|
||||||
searchConfiger.value[1].options = D_BZ_YJJB;
|
searchConfiger.value[1].options = D_BZ_YJJB;
|
||||||
searchConfiger.value[2].options = D_BZ_YJLX;
|
searchConfiger.value[2].options = D_BZ_YJLX;
|
||||||
getList()
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
const changeSize = (val) => {
|
const changeSize = (val) => {
|
||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
|
|
||||||
const pushAssess = (val) => {
|
|
||||||
return holographicProfileJump(val.yjlx,val) // 全息档案跳转
|
|
||||||
}
|
|
||||||
|
|
||||||
|
const pushAssess = (row) => {
|
||||||
|
window.open(
|
||||||
|
`https://tyyy.lz.dsj.xz/profile/people/person-manage?sfzhm=${row.rysfzh}&from=portal`
|
||||||
|
);
|
||||||
|
// return holographicProfileJump(val.yjlx, val); // 全息档案跳转
|
||||||
|
};
|
||||||
|
|
||||||
// 获取数据
|
// 获取数据
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
@ -162,66 +228,68 @@ const getList = () => {
|
|||||||
...queryFrom.value,
|
...queryFrom.value,
|
||||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
pageSize: pageData.pageConfiger.pageSize
|
pageSize: pageData.pageConfiger.pageSize
|
||||||
}
|
};
|
||||||
delete promes.times;
|
delete promes.times;
|
||||||
qcckPost(promes, '/mosty-gsxt/tbYjxx/selectYjxxFzPage').then((res) => {
|
qcckPost(promes, "/mosty-gsxt/tbYjxx/selectYjxxFzPage")
|
||||||
pageData.tableData = res.records || [];
|
.then((res) => {
|
||||||
pageData.total = res.total;
|
pageData.tableData = res.records || [];
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.total = res.total;
|
||||||
}).catch(() => {
|
pageData.tableConfiger.loading = false;
|
||||||
pageData.tableConfiger.loading = false;
|
})
|
||||||
})
|
.catch(() => {
|
||||||
}
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// 处理签收
|
// 处理签收
|
||||||
const handleToImportantMan = (val, type) => {
|
const handleToImportantMan = (val, type) => {
|
||||||
proxy.$confirm("是否确定转重点人?", "警告", { type: "warning" }).then(() => {
|
proxy.$confirm("是否确定转重点人?", "警告", { type: "warning" }).then(() => {
|
||||||
qcckGet({}, `/mosty-gsxt/tbYjxx/yjToZdry/${val.id}`).then(() => {
|
qcckGet({}, `/mosty-gsxt/tbYjxx/yjToZdry/${val.id}`).then(() => {
|
||||||
proxy.$message({ type: "success", message: "转重点人成功" });
|
proxy.$message({ type: "success", message: "转重点人成功" });
|
||||||
getList()
|
getList();
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
|
};
|
||||||
}
|
|
||||||
// 发送指令
|
// 发送指令
|
||||||
const showDialog = ref(false)
|
const showDialog = ref(false);
|
||||||
const itemData = ref()
|
const itemData = ref();
|
||||||
|
|
||||||
const semdFqzlRef = ref()
|
const semdFqzlRef = ref();
|
||||||
const tacitly = {
|
const tacitly = {
|
||||||
title: 'jfbt',
|
title: "jfbt",
|
||||||
instructionContent: 'jfnr'
|
instructionContent: "jfnr"
|
||||||
}
|
};
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
semdFqzlRef.value.getsendFqzl()
|
semdFqzlRef.value.getsendFqzl();
|
||||||
}
|
};
|
||||||
const closeFszl = () => {
|
const closeFszl = () => {
|
||||||
semdFqzlRef.value.close()
|
semdFqzlRef.value.close();
|
||||||
}
|
};
|
||||||
const addModelRef = ref()
|
const addModelRef = ref();
|
||||||
const openAddFrom = (row) => {
|
const openAddFrom = (row) => {
|
||||||
emitter.emit('openAddFrom', row)
|
emitter.emit("openAddFrom", row);
|
||||||
}
|
};
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
|
pageData.tableHeight =
|
||||||
window.onresize = function() {
|
window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
|
||||||
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (obj) => {
|
const onSearch = (obj) => {
|
||||||
queryFrom.value = {...obj }
|
queryFrom.value = { ...obj };
|
||||||
queryFrom.value.startTime = obj.times ? obj.times[0] : ''
|
queryFrom.value.startTime = obj.times ? obj.times[0] : "";
|
||||||
queryFrom.value.endTime = obj.times ? obj.times[1] : ''
|
queryFrom.value.endTime = obj.times ? obj.times[1] : "";
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
getList
|
getList
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@ -10,6 +10,46 @@
|
|||||||
ref="searchDom"
|
ref="searchDom"
|
||||||
@search="onSearch"
|
@search="onSearch"
|
||||||
>
|
>
|
||||||
|
<template #yjCs>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.yjkscs"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.yjjscs"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束次数"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #nl>
|
||||||
|
<div>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.ksnl"
|
||||||
|
type="number"
|
||||||
|
placeholder="开始年龄"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
<el-input
|
||||||
|
v-model="queryFrom.jsnl"
|
||||||
|
type="number"
|
||||||
|
placeholder="结束年龄"
|
||||||
|
style="width: 130px"
|
||||||
|
clearable
|
||||||
|
:min="0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<template #but>
|
<template #but>
|
||||||
<el-button type="primary" size="small" @click="exportExl"
|
<el-button type="primary" size="small" @click="exportExl"
|
||||||
>批量导出</el-button
|
>批量导出</el-button
|
||||||
@ -17,12 +57,15 @@
|
|||||||
<el-button type="primary" size="small" @click="handleQs"
|
<el-button type="primary" size="small" @click="handleQs"
|
||||||
>批量签收</el-button
|
>批量签收</el-button
|
||||||
>
|
>
|
||||||
<el-button type="primary" size="small" @click="handleQs"
|
<!-- <el-button type="primary" size="small" @click="handleQs"
|
||||||
>批量分析</el-button
|
>批量分析</el-button
|
||||||
>
|
> -->
|
||||||
<el-button type="primary" size="small" @click="countPeople"
|
<el-button type="primary" size="small" @click="countPeople"
|
||||||
>计算人数</el-button
|
>计算人数</el-button
|
||||||
>
|
>
|
||||||
|
<el-button type="primary" size="small" @click="handleRelatedWarning"
|
||||||
|
>关联预警</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</QueryFormPanel>
|
</QueryFormPanel>
|
||||||
</div>
|
</div>
|
||||||
@ -69,7 +112,7 @@
|
|||||||
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
||||||
</template>
|
</template>
|
||||||
<template #yjLylx="{ row }">
|
<template #yjLylx="{ row }">
|
||||||
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
|
<DictTag :value="row.yjLylx" :tag="false" :options="D_GS_ZDR_GJLB" />
|
||||||
</template>
|
</template>
|
||||||
<template #cszt="{ row }">
|
<template #cszt="{ row }">
|
||||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||||
@ -82,7 +125,18 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #operation="{ row }">
|
<template #operation="{ row }">
|
||||||
<div style="display: flex; justify-content: space-between">
|
<div style="display: flex; justify-content: space-between">
|
||||||
<span class="primary" @click="handleQsSingle(row)">签收</span>
|
<span
|
||||||
|
class="primary"
|
||||||
|
@click="handleQsSingle(row)"
|
||||||
|
v-if="row.czzt == '01'"
|
||||||
|
>签收</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="success"
|
||||||
|
@click="handleQsFk(row, '反馈')"
|
||||||
|
v-else-if="row.czzt == '02'"
|
||||||
|
>反馈</span
|
||||||
|
>
|
||||||
<span class="primary" @click="particularsOpen(row)">详情</span>
|
<span class="primary" @click="particularsOpen(row)">详情</span>
|
||||||
<span class="warning" @click="pushWarning(row)">指派</span>
|
<span class="warning" @click="pushWarning(row)">指派</span>
|
||||||
<span
|
<span
|
||||||
@ -91,7 +145,11 @@
|
|||||||
@click="failWarning(row)"
|
@click="failWarning(row)"
|
||||||
>报错</span
|
>报错</span
|
||||||
>
|
>
|
||||||
<span class="primary" @click="payAttention(row)">关注</span>
|
<span
|
||||||
|
:class="row.sfgz == 0 ? 'primary' : 'danger'"
|
||||||
|
@click="payAttention(row)"
|
||||||
|
>{{ row.sfgz == 0 ? "关注" : "取消关注" }}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</WarnDataTable>
|
</WarnDataTable>
|
||||||
@ -113,6 +171,13 @@
|
|||||||
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB }"
|
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB }"
|
||||||
/>
|
/>
|
||||||
<peopleConut v-model="searchOpen" :dataConut="dataConut" />
|
<peopleConut v-model="searchOpen" :dataConut="dataConut" />
|
||||||
|
<SelectDataDialog
|
||||||
|
v-model="selectDataVisible"
|
||||||
|
title="关联预警"
|
||||||
|
@confirm="handleSelectConfirm"
|
||||||
|
:currentRelatedRow="currentRelatedRow"
|
||||||
|
/>
|
||||||
|
<FkDialog @change="getList" lx="05" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -121,16 +186,17 @@ import { exportExlByObj } from "@/utils/exportExcel.js";
|
|||||||
import ZpForm from "./zpForm.vue";
|
import ZpForm from "./zpForm.vue";
|
||||||
import { bqYs } from "@/utils/tools.js";
|
import { bqYs } from "@/utils/tools.js";
|
||||||
import Particulars from "./particulars.vue";
|
import Particulars from "./particulars.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
|
||||||
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
|
||||||
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||||
// import MyTable from "@/components/aboutTable/MyTable.vue";
|
// import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.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";
|
||||||
import peopleConut from "./peopleConut.vue";
|
import peopleConut from "./peopleConut.vue";
|
||||||
|
import SelectDataDialog from "../../YjData/SelectDataDialog.vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
const {
|
const {
|
||||||
D_BZ_YJLY,
|
D_BZ_YJLY,
|
||||||
D_GS_QLZDRLX,
|
D_GS_QLZDRLX,
|
||||||
@ -232,24 +298,19 @@ const searchConfiger = ref([
|
|||||||
placeholder: "请输入身份证号码"
|
placeholder: "请输入身份证号码"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "ksnl",
|
key: "nl",
|
||||||
label: "开始年龄",
|
label: "年龄",
|
||||||
type: "input",
|
type: "slot",
|
||||||
placeholder: "请输入开始年龄"
|
placeholder: "请输入年龄"
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "jsnl",
|
|
||||||
label: "结束年龄",
|
|
||||||
type: "input",
|
|
||||||
placeholder: "请输入结束年龄"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
key: "yjCs",
|
key: "yjCs",
|
||||||
label: "预警次数",
|
label: "预警次数",
|
||||||
type: "input",
|
type: "slot",
|
||||||
placeholder: "请输入预警次数"
|
placeholder: "请输入预警次数"
|
||||||
},
|
},
|
||||||
{ key: "bqdl", label: "人员级别", type: "select", options: D_GS_ZDR_RYJB },
|
// { key: "bqdl", label: "人员级别", type: "select", options: D_GS_ZDR_RYJB },
|
||||||
{ key: "yjLylx", label: "轨迹类别", type: "select", options: D_GS_ZDR_GJLB },
|
{ key: "yjLylx", label: "轨迹类别", type: "select", options: D_GS_ZDR_GJLB },
|
||||||
{
|
{
|
||||||
key: "yjDz",
|
key: "yjDz",
|
||||||
@ -299,7 +360,7 @@ const pageData = reactive({
|
|||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ type: "index", label: "序号", width: 55, align: "center" },
|
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||||
{ label: "预警状态", width: 80, align: "center", slotName: "status" },
|
{ label: "预警状态", width: 80, align: "center", slotName: "status" },
|
||||||
{ prop: "yjSj", label: "预警时间", width: 145 },
|
{ prop: "yjSj", label: "预警时间", width: 125 },
|
||||||
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
||||||
{ prop: "yjRysfzh", label: "身份证号", width: 158 },
|
{ prop: "yjRysfzh", label: "身份证号", width: 158 },
|
||||||
{ label: "性别", width: 55, align: "center", slotName: "xbdm" },
|
{ label: "性别", width: 55, align: "center", slotName: "xbdm" },
|
||||||
@ -313,7 +374,7 @@ const pageData = reactive({
|
|||||||
{ label: "情报来源", width: 80, align: "center", slotName: "qbly" },
|
{ label: "情报来源", width: 80, align: "center", slotName: "qbly" },
|
||||||
{ label: "来源级别", width: 80, align: "center", slotName: "qblyjb" },
|
{ label: "来源级别", width: 80, align: "center", slotName: "qblyjb" },
|
||||||
{ prop: "yjCs", label: "次数", width: 55, align: "center" },
|
{ prop: "yjCs", label: "次数", width: 55, align: "center" },
|
||||||
{ label: "操作", width: 180, slotName: "operation" },
|
{ label: "操作", width: 200, slotName: "operation" },
|
||||||
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" }
|
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
@ -378,6 +439,18 @@ const failWarning = (val) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 处理签收
|
||||||
|
const handleQsFk = (val, type) => {
|
||||||
|
console.log(val.id, "xxxxxxxxxxxxxxxxxxxxxxxx");
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case "反馈":
|
||||||
|
case "查看反馈":
|
||||||
|
emitter.emit("openFkDialog", { id: val.id, type });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** 选中项 */
|
/** 选中项 */
|
||||||
const selectRows = ref([]);
|
const selectRows = ref([]);
|
||||||
const handleChooseData = (val) => {
|
const handleChooseData = (val) => {
|
||||||
@ -385,26 +458,39 @@ const handleChooseData = (val) => {
|
|||||||
};
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
czzt_name: "状态",
|
index: "序号",
|
||||||
|
czzt_name: "预警状态",
|
||||||
yjSj: "预警时间",
|
yjSj: "预警时间",
|
||||||
yjRyxm: "人员姓名",
|
yjRyxm: "人员姓名",
|
||||||
yjRysfzh: "身份证号",
|
yjRysfzh: "身份证号",
|
||||||
|
xbdm_name: "性别",
|
||||||
|
nl: "年龄",
|
||||||
yjJb_name: "预警级别",
|
yjJb_name: "预警级别",
|
||||||
bqdl_name: "人员类别",
|
bqdl_name: "人员类别",
|
||||||
yjbqmc: "细类",
|
yjbqmc: "人员细类",
|
||||||
|
yjLylx_name: "轨迹类别",
|
||||||
yjDz: "活动发生地",
|
yjDz: "活动发生地",
|
||||||
ssbm: "接收单位",
|
ssbm: "接收单位",
|
||||||
yjCs: "预警次数"
|
qbly_name: "情报来源",
|
||||||
|
qblyjb_name: "来源级别",
|
||||||
|
yjCs: "次数",
|
||||||
|
cszt_name: "超时状态"
|
||||||
};
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr =
|
const needArr =
|
||||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
const data = needArr.map((item) => {
|
const data = needArr.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
index: index + 1,
|
||||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
yjJb_name: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
yjJb_name: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||||
bqdl_name: getMultiDictVal(item.bqdl, D_GS_QLZDRLX)
|
bqdl_name: getMultiDictVal(item.bqdl, D_GS_QLZDRLX),
|
||||||
|
xbdm_name: getMultiDictVal(item.xbdm, D_BZ_XB),
|
||||||
|
yjLylx_name: getMultiDictVal(item.yjLylx, D_GS_ZDR_GJLB),
|
||||||
|
qbly_name: getMultiDictVal(item.qbly, D_BZ_QBLY),
|
||||||
|
qblyjb_name: getMultiDictVal(item.qblyjb, D_BZ_QBLYJB),
|
||||||
|
cszt_name: getMultiDictVal(item.cszt, D_GS_CSZT),
|
||||||
|
...item
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
exportExlByObj(titleObj, data, "七类重点");
|
exportExlByObj(titleObj, data, "七类重点");
|
||||||
@ -497,6 +583,30 @@ const payAttention = (row) => {
|
|||||||
const searchDom = ref(null);
|
const searchDom = ref(null);
|
||||||
const dataConut = ref(0);
|
const dataConut = ref(0);
|
||||||
const searchOpen = ref(false);
|
const searchOpen = ref(false);
|
||||||
|
|
||||||
|
// 关联预警弹窗
|
||||||
|
const selectDataVisible = ref(false);
|
||||||
|
const currentRelatedRow = ref(null);
|
||||||
|
|
||||||
|
// 关联预警
|
||||||
|
const handleRelatedWarning = () => {
|
||||||
|
if (selectRows.value.length === 0) {
|
||||||
|
proxy.$message({ type: "warning", message: "请先选择一条数据" });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (selectRows.value.length > 1) {
|
||||||
|
proxy.$message({ type: "warning", message: "只能选择一条数据" });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentRelatedRow.value = selectRows.value[0];
|
||||||
|
selectDataVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 确认关联预警
|
||||||
|
const handleSelectConfirm = (selectedData) => {
|
||||||
|
console.log("关联预警数据:", selectedData);
|
||||||
|
console.log("当前选中行:", currentRelatedRow.value);
|
||||||
|
};
|
||||||
const countPeople = () => {
|
const countPeople = () => {
|
||||||
const promes = {
|
const promes = {
|
||||||
...searchDom.value.formState,
|
...searchDom.value.formState,
|
||||||
@ -519,8 +629,6 @@ const countPeople = () => {
|
|||||||
};
|
};
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
console.log("xxxxxxx");
|
|
||||||
|
|
||||||
pageData.tableHeight =
|
pageData.tableHeight =
|
||||||
window.innerHeight - searchBox.value.offsetHeight - 230;
|
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
|
|||||||
@ -1,226 +1,245 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
class="luntan-tech-dialog"
|
class="luntan-tech-dialog"
|
||||||
:model-value="modelValue"
|
:model-value="modelValue"
|
||||||
center
|
center
|
||||||
width="500px"
|
width="500px"
|
||||||
:destroy-on-close="true"
|
:destroy-on-close="true"
|
||||||
:title="title"
|
:title="title"
|
||||||
@close="close"
|
@close="close"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
:append-to-body="true"
|
||||||
<div class="avatar-upload-container">
|
>
|
||||||
<div class="avatar-preview">
|
<div class="avatar-upload-container">
|
||||||
<img v-if="avatarUrl" :src="avatarUrl" alt="预览头像" class="preview-image">
|
<div class="avatar-preview">
|
||||||
<div v-else class="preview-placeholder">
|
<img
|
||||||
<el-icon class="placeholder-icon">
|
v-if="avatarUrl"
|
||||||
<User />
|
:src="avatarUrl"
|
||||||
</el-icon>
|
alt="预览头像"
|
||||||
<span>请上传头像</span>
|
class="preview-image"
|
||||||
</div>
|
/>
|
||||||
</div>
|
<div v-else class="preview-placeholder">
|
||||||
<div class="upload-section">
|
<el-icon class="placeholder-icon">
|
||||||
<el-upload class="avatar-uploader" :auto-upload="false" :show-file-list="false"
|
<User />
|
||||||
:on-change="handleAvatarChange" :before-upload="beforeAvatarUpload" accept="image/*">
|
</el-icon>
|
||||||
<el-button size="small" type="primary">选择图片</el-button>
|
<span>请上传头像</span>
|
||||||
</el-upload>
|
|
||||||
<div class="upload-tips">
|
|
||||||
<p>• 支持 JPG、PNG 格式</p>
|
|
||||||
<p>• 图片大小不超过 2MB</p>
|
|
||||||
<p>• 建议尺寸为 200x200 像素</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="upload-section">
|
||||||
|
<el-upload
|
||||||
|
class="avatar-uploader"
|
||||||
|
:auto-upload="false"
|
||||||
|
:show-file-list="false"
|
||||||
|
:on-change="handleAvatarChange"
|
||||||
|
:before-upload="beforeAvatarUpload"
|
||||||
|
accept="image/*"
|
||||||
|
>
|
||||||
|
<el-button size="small" type="primary">选择图片</el-button>
|
||||||
|
</el-upload>
|
||||||
|
<div class="upload-tips">
|
||||||
|
<p>• 支持 JPG、PNG 格式</p>
|
||||||
|
<p>• 图片大小不超过 2MB</p>
|
||||||
|
<p>• 建议尺寸为 200x200 像素</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="close">取消</el-button>
|
<el-button @click="close">取消</el-button>
|
||||||
<el-button type="primary" @click="confirmUpload" :loading="uploading" :disabled="!avatarUrl || uploading">
|
<el-button
|
||||||
{{ uploading ? '上传中...' : '确认更换' }}
|
type="primary"
|
||||||
</el-button>
|
@click="confirmUpload"
|
||||||
</template>
|
:loading="uploading"
|
||||||
</el-dialog>
|
:disabled="!avatarUrl || uploading"
|
||||||
|
>
|
||||||
|
{{ uploading ? "上传中..." : "确认更换" }}
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, watch } from "vue";
|
import { ref, watch } from "vue";
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from "element-plus";
|
||||||
import { User } from '@element-plus/icons-vue';
|
import { User } from "@element-plus/icons-vue";
|
||||||
import { upImageUploadId } from '@/api/commit';
|
import { upImageUploadId } from "@/api/commit";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "更换头像"
|
default: "更换头像"
|
||||||
},
|
},
|
||||||
heightNumber: {
|
heightNumber: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 250
|
default: 250
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const emits = defineEmits(["update:modelValue", "avatarUpdated"]);
|
const emits = defineEmits(["update:modelValue", "avatarUpdated"]);
|
||||||
|
|
||||||
// 头像相关状态
|
// 头像相关状态
|
||||||
const avatarUrl = ref('');
|
const avatarUrl = ref("");
|
||||||
const uploading = ref(false);
|
const uploading = ref(false);
|
||||||
|
|
||||||
// 监听对话框显示状态,重置头像预览
|
// 监听对话框显示状态,重置头像预览
|
||||||
watch(() => props.modelValue, (newVal) => {
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(newVal) => {
|
||||||
if (!newVal) {
|
if (!newVal) {
|
||||||
// 对话框关闭时重置头像预览
|
// 对话框关闭时重置头像预览
|
||||||
avatarUrl.value = '';
|
avatarUrl.value = "";
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// 当前选择的文件
|
// 当前选择的文件
|
||||||
const selectedFile = ref(null);
|
const selectedFile = ref(null);
|
||||||
|
|
||||||
// 处理头像选择
|
// 处理头像选择
|
||||||
const handleAvatarChange = (file) => {
|
const handleAvatarChange = (file) => {
|
||||||
selectedFile.value = file.raw;
|
selectedFile.value = file.raw;
|
||||||
// 创建临时预览URL
|
// 创建临时预览URL
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = (e) => {
|
||||||
avatarUrl.value = e.target.result;
|
avatarUrl.value = e.target.result;
|
||||||
};
|
};
|
||||||
reader.readAsDataURL(file.raw);
|
reader.readAsDataURL(file.raw);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 上传前检查
|
// 上传前检查
|
||||||
const beforeAvatarUpload = (file) => {
|
const beforeAvatarUpload = (file) => {
|
||||||
const isJPG = file.type === 'image/jpeg';
|
const isJPG = file.type === "image/jpeg";
|
||||||
const isPNG = file.type === 'image/png';
|
const isPNG = file.type === "image/png";
|
||||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||||
|
|
||||||
if (!isJPG && !isPNG) {
|
if (!isJPG && !isPNG) {
|
||||||
ElMessage.error('请上传 JPG 或 PNG 格式的图片!');
|
ElMessage.error("请上传 JPG 或 PNG 格式的图片!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isLt2M) {
|
if (!isLt2M) {
|
||||||
ElMessage.error('图片大小不能超过 2MB!');
|
ElMessage.error("图片大小不能超过 2MB!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 确认上传头像
|
// 确认上传头像
|
||||||
const confirmUpload = async () => {
|
const confirmUpload = async () => {
|
||||||
if (!avatarUrl.value || !selectedFile.value) {
|
if (!avatarUrl.value || !selectedFile.value) {
|
||||||
ElMessage.warning('请先选择头像图片');
|
ElMessage.warning("请先选择头像图片");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uploading.value = true;
|
uploading.value = true;
|
||||||
try {
|
try {
|
||||||
// 创建FormData对象
|
// 创建FormData对象
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('file', selectedFile.value);
|
formData.append("file", selectedFile.value);
|
||||||
// 调用实际的上传接口
|
// 调用实际的上传接口
|
||||||
const response = await upImageUploadId(formData);
|
const response = await upImageUploadId(formData);
|
||||||
console.log(response);
|
console.log(response);
|
||||||
emits('avatarUpdated', response);
|
emits("avatarUpdated", response);
|
||||||
// 关闭对话框
|
// 关闭对话框
|
||||||
close();
|
close();
|
||||||
|
} catch (error) {
|
||||||
} catch (error) {
|
console.error("上传头像失败:", error);
|
||||||
console.error('上传头像失败:', error);
|
ElMessage.error("上传头像失败,请重试");
|
||||||
ElMessage.error('上传头像失败,请重试');
|
} finally {
|
||||||
} finally {
|
uploading.value = false;
|
||||||
uploading.value = false;
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 关闭对话框
|
// 关闭对话框
|
||||||
const close = () => {
|
const close = () => {
|
||||||
emits("update:modelValue", false);
|
emits("update:modelValue", false);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import '../styles/luntan-tech.scss';
|
@import "../styles/luntan-tech.scss";
|
||||||
|
|
||||||
.avatar-upload-container {
|
.avatar-upload-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 12px 0 8px;
|
padding: 12px 0 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar-preview {
|
.avatar-preview {
|
||||||
width: 160px;
|
width: 160px;
|
||||||
height: 160px;
|
height: 160px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 2px solid rgba(0, 227, 255, 0.4);
|
border: 2px solid rgba(0, 227, 255, 0.4);
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: rgba(10, 30, 60, 0.6);
|
||||||
|
box-shadow: 0 0 20px rgba(0, 120, 200, 0.2);
|
||||||
|
|
||||||
|
.preview-image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-placeholder {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: rgba(10, 30, 60, 0.6);
|
color: $lt-text-muted;
|
||||||
box-shadow: 0 0 20px rgba(0, 120, 200, 0.2);
|
|
||||||
|
|
||||||
.preview-image {
|
.placeholder-icon {
|
||||||
width: 100%;
|
font-size: 48px;
|
||||||
height: 100%;
|
margin-bottom: 8px;
|
||||||
object-fit: cover;
|
color: rgba(0, 227, 255, 0.45);
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-placeholder {
|
span {
|
||||||
display: flex;
|
font-size: 14px;
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
color: $lt-text-muted;
|
|
||||||
|
|
||||||
.placeholder-icon {
|
|
||||||
font-size: 48px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
color: rgba(0, 227, 255, 0.45);
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-section {
|
.upload-section {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar-uploader {
|
.avatar-uploader {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
|
|
||||||
:deep(.el-button--primary) {
|
:deep(.el-button--primary) {
|
||||||
background: linear-gradient(180deg, #00a3ff 0%, #0066bb 100%);
|
background: linear-gradient(180deg, #00a3ff 0%, #0066bb 100%);
|
||||||
border-color: rgba(0, 227, 255, 0.5);
|
border-color: rgba(0, 227, 255, 0.5);
|
||||||
box-shadow: 0 0 12px rgba(0, 163, 255, 0.35);
|
box-shadow: 0 0 12px rgba(0, 163, 255, 0.35);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-tips {
|
.upload-tips {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: $lt-text-muted;
|
color: $lt-text-muted;
|
||||||
background: rgba(10, 30, 60, 0.65);
|
background: rgba(10, 30, 60, 0.65);
|
||||||
border: 1px solid $lt-border-dim;
|
border: 1px solid $lt-border-dim;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import '../styles/luntan-dialog-tech.scss';
|
@import "../styles/luntan-dialog-tech.scss";
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
title="发布帖子"
|
title="发布帖子"
|
||||||
width="60%"
|
width="60%"
|
||||||
:before-close="handleClose"
|
:before-close="handleClose"
|
||||||
|
:append-to-body="true"
|
||||||
>
|
>
|
||||||
<div style="overflow: auto; height: 60vh">
|
<div style="overflow: auto; height: 60vh">
|
||||||
<el-form :model="form" :rules="rules" ref="formRef" label-width="80px">
|
<el-form :model="form" :rules="rules" ref="formRef" label-width="80px">
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
title="发表回复"
|
title="发表回复"
|
||||||
width="600px"
|
width="600px"
|
||||||
:before-close="handleClose"
|
:before-close="handleClose"
|
||||||
|
:append-to-body="true"
|
||||||
>
|
>
|
||||||
<el-form :model="form" :rules="rules" ref="formRef">
|
<el-form :model="form" :rules="rules" ref="formRef">
|
||||||
<el-form-item prop="content">
|
<el-form-item prop="content">
|
||||||
@ -158,5 +159,5 @@ const resetForm = () => {
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import '../styles/luntan-dialog-tech.scss';
|
@import "../styles/luntan-dialog-tech.scss";
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -2,17 +2,32 @@
|
|||||||
<div>
|
<div>
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<div ref="searchBox" class="mt10 mb10">
|
<div ref="searchBox" class="mt10 mb10">
|
||||||
<Search :searchArr="searchConfiger" ref="ces" @submit="onSearch" :key="pageData.keyCount">
|
<Search
|
||||||
<el-button type="primary" size="small" @click="exportExl">导出</el-button>
|
:searchArr="searchConfiger"
|
||||||
<el-button type="primary" size="small" @click="getSlect">我的关注</el-button>
|
ref="ces"
|
||||||
|
@submit="onSearch"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="exportExl"
|
||||||
|
>导出</el-button
|
||||||
|
>
|
||||||
|
<el-button type="primary" size="small" @click="getSlect"
|
||||||
|
>我的关注</el-button
|
||||||
|
>
|
||||||
</Search>
|
</Search>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="heightBox margTop">
|
<div class="heightBox margTop">
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
:tableData="pageData.tableData"
|
||||||
@chooseData="handleChooseData">
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
:controlsWidth="pageData.controlsWidth"
|
||||||
|
@chooseData="handleChooseData"
|
||||||
|
>
|
||||||
<!-- <template #jjlx="{ row }">
|
<!-- <template #jjlx="{ row }">
|
||||||
<DictTag :tag="false" :value="row.jjlx" :options="D_BZ_JQBQ" />
|
<DictTag :tag="false" :value="row.jjlx" :options="D_BZ_JQBQ" />
|
||||||
</template> -->
|
</template> -->
|
||||||
@ -25,52 +40,98 @@
|
|||||||
<!-- <template #ypzt="{ row }">
|
<!-- <template #ypzt="{ row }">
|
||||||
{{ row.ypzt === '01' ? '已研判' : '未研判' }}
|
{{ row.ypzt === '01' ? '已研判' : '未研判' }}
|
||||||
</template> -->
|
</template> -->
|
||||||
<template #hszt="{ row }">
|
<template #hszt="{ row }">
|
||||||
{{ row.hszt === '01' ? '未会商' : '已会商' }}
|
{{ row.hszt === "01" ? "未会商" : "已会商" }}
|
||||||
</template>
|
</template>
|
||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
<template #controls="{ row }">
|
<template #controls="{ row }">
|
||||||
<el-link type="warning" @click="CreateConsultationMeeting(row)">创建会商</el-link>
|
<el-link type="warning" @click="CreateConsultationMeeting(row)"
|
||||||
<el-link :type=" row.sfgz=='0'?'success':'danger'" @click="Attention(row,row.sfgz=='0'?'关注':'取消关注')">{{ row.sfgz=='0'?'关注':'取消关注' }}</el-link>
|
>创建会商</el-link
|
||||||
|
>
|
||||||
|
<el-link
|
||||||
|
:type="row.sfgz == '0' ? 'success' : 'danger'"
|
||||||
|
@click="Attention(row, row.sfgz == '0' ? '关注' : '取消关注')"
|
||||||
|
>{{ row.sfgz == "0" ? "关注" : "取消关注" }}</el-link
|
||||||
|
>
|
||||||
<el-link type="primary" @click="addEdit('edit', row)">详情</el-link>
|
<el-link type="primary" @click="addEdit('edit', row)">详情</el-link>
|
||||||
<!-- <el-link type="warning" @click="handleYP('研判', row)">研判</el-link>
|
<!-- <el-link type="warning" @click="handleYP('研判', row)">研判</el-link>
|
||||||
<el-link type="danger" @click="handleYP('深度研判', row)">深度研判</el-link> -->
|
<el-link type="danger" @click="handleYP('深度研判', row)">深度研判</el-link> -->
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight"
|
<Pages
|
||||||
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }">
|
@changeNo="changeNo"
|
||||||
|
@changeSize="changeSize"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }"
|
||||||
|
>
|
||||||
</Pages>
|
</Pages>
|
||||||
</div>
|
</div>
|
||||||
<!-- 编辑详情 -->
|
<!-- 编辑详情 -->
|
||||||
<EditAddForm v-if="show" ref="detailDiloag"
|
<EditAddForm
|
||||||
:dic="{ JQLB, JQLX, JQXL, JQZL, D_BZ_JQLY, D_BZ_JQFL, JQLB_DP, D_BZ_JQBQ, D_GS_SSYJ }" @updateDate="getList" />
|
v-if="show"
|
||||||
|
ref="detailDiloag"
|
||||||
|
:dic="{
|
||||||
|
JQLB,
|
||||||
|
JQLX,
|
||||||
|
JQXL,
|
||||||
|
JQZL,
|
||||||
|
D_BZ_JQLY,
|
||||||
|
D_BZ_JQFL,
|
||||||
|
JQLB_DP,
|
||||||
|
D_BZ_JQBQ,
|
||||||
|
D_GS_SSYJ
|
||||||
|
}"
|
||||||
|
@updateDate="getList"
|
||||||
|
/>
|
||||||
<!-- 研判弹窗 -->
|
<!-- 研判弹窗 -->
|
||||||
<YpDialog ref="ypDialog" @change="getList" />
|
<YpDialog ref="ypDialog" @change="getList" />
|
||||||
<DeepYpDialog ref="deepYpDialog" @change="getList" />
|
<DeepYpDialog ref="deepYpDialog" @change="getList" />
|
||||||
<DiscussionDialog v-model="showDialog" :dataList="dataList" :lx="lx" />
|
<DiscussionDialog v-model="showDialog" :dataList="dataList" :lx="lx" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { getMultiDictVal } from "@/utils/dict.js"
|
import { getMultiDictVal } from "@/utils/dict.js";
|
||||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||||
import YpDialog from "./components/ypDialog.vue";
|
import YpDialog from "./components/ypDialog.vue";
|
||||||
import DeepYpDialog from "./components/deepypDialog.vue";
|
import DeepYpDialog from "./components/deepypDialog.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
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 EditAddForm from "./components/editAddForm.vue";
|
import EditAddForm from "./components/editAddForm.vue";
|
||||||
import { lzJcjPjdbSelectPage } from '@/api/semanticAnalysis.js'
|
import { lzJcjPjdbSelectPage } from "@/api/semanticAnalysis.js";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||||
import DiscussionDialog from "@/views/backOfficeSystem/JudgmentHome/ResearchHome/components/discussionDialog.vue";
|
import DiscussionDialog from "@/views/backOfficeSystem/JudgmentHome/ResearchHome/components/discussionDialog.vue";
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js"
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_BQ_DJ, JQLB, JQLX, JQXL, JQZL, D_BZ_JQLY, D_BZ_JQFL, JQLB_DP, D_BZ_JQBQ, D_GS_SSYJ } = proxy.$dict('D_GS_BQ_DJ', "JQLB", 'JQLX', 'JQXL', 'JQZL', 'D_BZ_JQLY', 'D_BZ_JQFL', 'JQLB_DP', 'D_BZ_JQBQ', 'D_GS_SSYJ'); //获取字典数据
|
const {
|
||||||
|
D_GS_BQ_DJ,
|
||||||
|
JQLB,
|
||||||
|
JQLX,
|
||||||
|
JQXL,
|
||||||
|
JQZL,
|
||||||
|
D_BZ_JQLY,
|
||||||
|
D_BZ_JQFL,
|
||||||
|
JQLB_DP,
|
||||||
|
D_BZ_JQBQ,
|
||||||
|
D_GS_SSYJ
|
||||||
|
} = proxy.$dict(
|
||||||
|
"D_GS_BQ_DJ",
|
||||||
|
"JQLB",
|
||||||
|
"JQLX",
|
||||||
|
"JQXL",
|
||||||
|
"JQZL",
|
||||||
|
"D_BZ_JQLY",
|
||||||
|
"D_BZ_JQFL",
|
||||||
|
"JQLB_DP",
|
||||||
|
"D_BZ_JQBQ",
|
||||||
|
"D_GS_SSYJ"
|
||||||
|
); //获取字典数据
|
||||||
const ypDialog = ref();
|
const ypDialog = ref();
|
||||||
const deepYpDialog = ref();
|
const deepYpDialog = ref();
|
||||||
const detailDiloag = ref();
|
const detailDiloag = ref();
|
||||||
const show = ref(false)
|
const show = ref(false);
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{
|
{
|
||||||
label: "接警员姓名",
|
label: "接警员姓名",
|
||||||
@ -97,6 +158,12 @@ const searchConfiger = ref([
|
|||||||
showType: "select",
|
showType: "select",
|
||||||
options: D_GS_BQ_DJ
|
options: D_GS_BQ_DJ
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "监测时间",
|
||||||
|
prop: "startTime",
|
||||||
|
placeholder: "请选择监测时间",
|
||||||
|
showType: "datetimerange"
|
||||||
|
}
|
||||||
]);
|
]);
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
@ -105,7 +172,7 @@ const pageData = reactive({
|
|||||||
tableConfiger: {
|
tableConfiger: {
|
||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "checkbox",
|
showSelectType: "checkbox",
|
||||||
loading: false,
|
loading: false
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
pageConfiger: {
|
pageConfiger: {
|
||||||
@ -124,37 +191,40 @@ const pageData = reactive({
|
|||||||
{ label: "警情类型", prop: "jqlbdm", showSolt: true },
|
{ label: "警情类型", prop: "jqlbdm", showSolt: true },
|
||||||
{ label: "警情地址", prop: "jqdz" },
|
{ label: "警情地址", prop: "jqdz" },
|
||||||
{ label: "补充接警内容", prop: "bcjjnr", showOverflowTooltip: true },
|
{ label: "补充接警内容", prop: "bcjjnr", showOverflowTooltip: true },
|
||||||
{ label: "会商状态", prop: "hszt", showSolt: true },
|
{ label: "会商状态", prop: "hszt", showSolt: true }
|
||||||
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
getList()
|
getList();
|
||||||
});
|
});
|
||||||
const listQuery = ref({})
|
const listQuery = ref({});
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
listQuery.value = { ...val };
|
listQuery.value = {
|
||||||
|
...val,
|
||||||
|
startTime: val.startTime ? val.startTime[0] : "",
|
||||||
|
endTime: val.startTime ? val.startTime[1] : ""
|
||||||
|
};
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
const ces=ref()
|
const ces = ref();
|
||||||
// 点击关注
|
// 点击关注
|
||||||
const getSlect = () => {
|
const getSlect = () => {
|
||||||
listQuery.value = { ...ces.value.searchObj , sfgz: 1 };
|
listQuery.value = { ...ces.value.searchObj, sfgz: 1 };
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
const changeSize = (val) => {
|
const changeSize = (val) => {
|
||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
getList()
|
getList();
|
||||||
}
|
};
|
||||||
|
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
@ -162,36 +232,38 @@ const getList = () => {
|
|||||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
pageSize: pageData.pageConfiger.pageSize,
|
pageSize: pageData.pageConfiger.pageSize,
|
||||||
...listQuery.value
|
...listQuery.value
|
||||||
}
|
};
|
||||||
lzJcjPjdbSelectPage(params).then(res => {
|
lzJcjPjdbSelectPage(params)
|
||||||
pageData.tableData = res.records || [];
|
.then((res) => {
|
||||||
pageData.total = res.total;
|
pageData.tableData = res.records || [];
|
||||||
}).finally(() => {
|
pageData.total = res.total;
|
||||||
pageData.tableConfiger.loading = false;
|
})
|
||||||
})
|
.finally(() => {
|
||||||
}
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// 新增
|
// 新增
|
||||||
const addEdit = (type, row) => {
|
const addEdit = (type, row) => {
|
||||||
show.value = true;
|
show.value = true;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
detailDiloag.value.init(type, row,);
|
detailDiloag.value.init(type, row);
|
||||||
})
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleYP = (type, row) => {
|
const handleYP = (type, row) => {
|
||||||
if (type === '研判') {
|
if (type === "研判") {
|
||||||
ypDialog.value.init(row);
|
ypDialog.value.init(row);
|
||||||
} else {
|
} else {
|
||||||
deepYpDialog.value.init(row);
|
deepYpDialog.value.init(row);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/** 选中项 */
|
/** 选中项 */
|
||||||
const selectRows = ref([])
|
const selectRows = ref([]);
|
||||||
const handleChooseData = (val) => {
|
const handleChooseData = (val) => {
|
||||||
selectRows.value = val
|
selectRows.value = val;
|
||||||
}
|
};
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
jjdbh: "接警单编号",
|
jjdbh: "接警单编号",
|
||||||
@ -203,65 +275,70 @@ const exportExl = () => {
|
|||||||
jqlbdm_name: "警情类型",
|
jqlbdm_name: "警情类型",
|
||||||
jqdz: "警情地址",
|
jqdz: "警情地址",
|
||||||
bcjjnr: "补充接警内容",
|
bcjjnr: "补充接警内容",
|
||||||
ypzt_name: "会商状态",
|
ypzt_name: "会商状态"
|
||||||
}
|
};
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
const needArr =
|
||||||
const data = needArr.map(item => {
|
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||||
|
const data = needArr.map((item) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
jqdjdm_name: getMultiDictVal(item.jqdjdm, D_GS_BQ_DJ),
|
jqdjdm_name: getMultiDictVal(item.jqdjdm, D_GS_BQ_DJ),
|
||||||
jqlbdm_name: getMultiDictVal(item.jqlbdm, JQLB),
|
jqlbdm_name: getMultiDictVal(item.jqlbdm, JQLB),
|
||||||
ypzt_name: item.hszt === '01' ? '未会商' : '已会商',
|
ypzt_name: item.hszt === "01" ? "未会商" : "已会商"
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
exportExlByObj(titleObj, data, '警情管理')
|
exportExlByObj(titleObj, data, "警情管理");
|
||||||
}
|
};
|
||||||
// 创建会商
|
// 创建会商
|
||||||
const showDialog = ref(false)
|
const showDialog = ref(false);
|
||||||
const dataList = ref({})
|
const dataList = ref({});
|
||||||
const lx = ref('01')
|
const lx = ref("01");
|
||||||
const CreateConsultationMeeting = (val) => {
|
const CreateConsultationMeeting = (val) => {
|
||||||
dataList.value = val
|
dataList.value = val;
|
||||||
showDialog.value=true
|
showDialog.value = true;
|
||||||
}
|
};
|
||||||
// 是否关注
|
// 是否关注
|
||||||
const Attention = (val,str) => {
|
const Attention = (val, str) => {
|
||||||
proxy.$confirm(`是否${str}该警情?`, '提示', {
|
proxy
|
||||||
confirmButtonText: '确定',
|
.$confirm(`是否${str}该警情?`, "提示", {
|
||||||
cancelButtonText: '取消',
|
confirmButtonText: "确定",
|
||||||
type: 'warning'
|
cancelButtonText: "取消",
|
||||||
}).then(() => {
|
type: "warning"
|
||||||
// 关注警情
|
|
||||||
qcckPost({
|
|
||||||
id: val.jjdbh,
|
|
||||||
sfgz: val.sfgz === '0' ? '1' : '0',
|
|
||||||
},'/mosty-gsxt/lzJcjPjdb/jqgz').then(res => {
|
|
||||||
proxy.$message({
|
|
||||||
message: `${str}成功`,
|
|
||||||
type: 'success'
|
|
||||||
})
|
})
|
||||||
getList()
|
.then(() => {
|
||||||
})
|
// 关注警情
|
||||||
|
qcckPost(
|
||||||
}).catch(() => {
|
{
|
||||||
// 取消关注
|
id: val.jjdbh,
|
||||||
});
|
sfgz: val.sfgz === "0" ? "1" : "0"
|
||||||
}
|
},
|
||||||
|
"/mosty-gsxt/lzJcjPjdb/jqgz"
|
||||||
|
).then((res) => {
|
||||||
|
proxy.$message({
|
||||||
|
message: `${str}成功`,
|
||||||
|
type: "success"
|
||||||
|
});
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// 取消关注
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
pageData.tableHeight =
|
||||||
|
window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style >
|
<style>
|
||||||
.el-loading-mask {
|
.el-loading-mask {
|
||||||
background: rgba(0, 0, 0, 0.5) !important;
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
70
src/views/home/model/keyPpersonneltypes copy.vue
Normal file
70
src/views/home/model/keyPpersonneltypes copy.vue
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<template>
|
||||||
|
<div class="comom-title">
|
||||||
|
<div class="title" style="width: 70%;">重点人员类型<span class="switchover" @click.stop="reversalPush">切换</span></div>
|
||||||
|
<div class="title titleFz" @click="visible = true">
|
||||||
|
查看列表
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="height: calc(100% - 35px);">
|
||||||
|
<Pie3D :data="data" />
|
||||||
|
</div>
|
||||||
|
<ZdryDiloding v-model="visible" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import Pie3D from '@/components/MyComponents/Pie3D.vue'
|
||||||
|
import ZdryDiloding from '@/views/home/model/mesgSwitch/zdryDiloding.vue'
|
||||||
|
import { tbGsxtZdryzdryBqtj } from '@/api/zdr'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
const data = ref([
|
||||||
|
{ value: 18, name: '涉恐人员' },
|
||||||
|
{ value: 13, name: '涉稳人员' },
|
||||||
|
{ value: 17, name: '在逃人员' },
|
||||||
|
{ value: 20, name: '涉毒人员' },
|
||||||
|
{ value: 25, name: '刑事犯罪前科' },
|
||||||
|
{ value: 30, name: '肇事肇祸精神病' },
|
||||||
|
{ value: 30, name: '重点上访人员' },
|
||||||
|
{ value: 30, name: '僧尼人员' },
|
||||||
|
])
|
||||||
|
const emit = defineEmits(["reversalPush"])
|
||||||
|
const reversalPush = () => {
|
||||||
|
emit('reversalPush')
|
||||||
|
}
|
||||||
|
const visible = ref(false)
|
||||||
|
const tbGsxtZdryzdryBqtjFn = () => {
|
||||||
|
tbGsxtZdryzdryBqtj({ bqlx: '01' }).then(res => {
|
||||||
|
const dataList = res.slice(0, 8)
|
||||||
|
data.value = dataList.map(item => {
|
||||||
|
return {
|
||||||
|
value: item.sl,
|
||||||
|
name: item.bqmc,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
tbGsxtZdryzdryBqtjFn()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.el-loading-mask {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "@/assets/css/homeScreen.scss";
|
||||||
|
|
||||||
|
.titleFz {
|
||||||
|
position: relative;
|
||||||
|
z-index: 100;
|
||||||
|
font-size: 14px !important;
|
||||||
|
color: rgb(255, 166, 14);
|
||||||
|
}
|
||||||
|
.switchover{
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: 20px;
|
||||||
|
color: rgb(255, 146, 4);
|
||||||
|
margin-left: 23%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,48 +1,41 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="comom-title">
|
<div class="comom-title">
|
||||||
<div class="title" style="width: 70%;">重点人员类型<span class="switchover" @click.stop="reversalPush">切换</span></div>
|
<div class="title" style="width: 70%">
|
||||||
<div class="title titleFz" @click="visible = true">
|
警种统计 <span class="switchover" @click.stop="reversalPush">切换</span>
|
||||||
查看列表
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="title titleFz" @click="visible = true">查看列表</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: calc(100% - 35px);">
|
<div style="height: calc(100% - 35px)">
|
||||||
<Pie3D :data="data" />
|
<Pie3D :data="data" />
|
||||||
</div>
|
</div>
|
||||||
<ZdryDiloding v-model="visible" />
|
<ZdryDiloding v-model="visible" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import Pie3D from '@/components/MyComponents/Pie3D.vue'
|
import Pie3D from "@/components/MyComponents/Pie3D.vue";
|
||||||
import ZdryDiloding from '@/views/home/model/mesgSwitch/zdryDiloding.vue'
|
import ZdryDiloding from "@/views/home/model/mesgSwitch/zdryDiloding.vue";
|
||||||
import { tbGsxtZdryzdryBqtj } from '@/api/zdr'
|
import { tbGsxtZdryzdryBqtj } from "@/api/zdr";
|
||||||
import { ref } from 'vue'
|
import { qcckGet } from "@/api/qcckApi";
|
||||||
const data = ref([
|
import { ref } from "vue";
|
||||||
{ value: 18, name: '涉恐人员' },
|
const data = ref([]);
|
||||||
{ value: 13, name: '涉稳人员' },
|
const emit = defineEmits(["reversalPush"]);
|
||||||
{ value: 17, name: '在逃人员' },
|
|
||||||
{ value: 20, name: '涉毒人员' },
|
|
||||||
{ value: 25, name: '刑事犯罪前科' },
|
|
||||||
{ value: 30, name: '肇事肇祸精神病' },
|
|
||||||
{ value: 30, name: '重点上访人员' },
|
|
||||||
{ value: 30, name: '僧尼人员' },
|
|
||||||
])
|
|
||||||
const emit = defineEmits(["reversalPush"])
|
|
||||||
const reversalPush = () => {
|
const reversalPush = () => {
|
||||||
emit('reversalPush')
|
emit("reversalPush");
|
||||||
}
|
};
|
||||||
const visible = ref(false)
|
const visible = ref(false);
|
||||||
const tbGsxtZdryzdryBqtjFn = () => {
|
const tbGsxtZdryzdryBqtjFn = () => {
|
||||||
tbGsxtZdryzdryBqtj({ bqlx: '01' }).then(res => {
|
qcckGet({}, "/mosty-gsxt/tbGsxtZdry/ryjzCount ").then((res) => {
|
||||||
const dataList = res.slice(0, 8)
|
// tbGsxtZdryzdryBqtj({ bqlx: "01" }).then((res) => {
|
||||||
data.value = dataList.map(item => {
|
// const dataList = res.slice(0, 8);
|
||||||
|
data.value = res.map((item) => {
|
||||||
return {
|
return {
|
||||||
value: item.sl,
|
value: item.sl ? item.sl : 0,
|
||||||
name: item.bqmc,
|
name: item.zdmc
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
tbGsxtZdryzdryBqtjFn()
|
tbGsxtZdryzdryBqtjFn();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@ -60,7 +53,7 @@ tbGsxtZdryzdryBqtjFn()
|
|||||||
font-size: 14px !important;
|
font-size: 14px !important;
|
||||||
color: rgb(255, 166, 14);
|
color: rgb(255, 166, 14);
|
||||||
}
|
}
|
||||||
.switchover{
|
.switchover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
|
|||||||
Reference in New Issue
Block a user