lcw
This commit is contained in:
@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
import ImageCompressor from "image-compressor.js";
|
||||
|
||||
// 生成10位数的随机数
|
||||
@ -13,23 +11,34 @@ export function generateRandom10Digits() {
|
||||
// 随机颜色 - 把16进制的颜色换成rgba格式
|
||||
export function choseRbgb(color, opcity) {
|
||||
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 {
|
||||
let r = Math.floor(Math.random() * 256)
|
||||
let g = Math.floor(Math.random() * 256)
|
||||
let b = Math.floor(Math.random() * 256)
|
||||
let a = opcity ? opcity : 1
|
||||
return `rgba(${r},${g},${b},${a})`
|
||||
let r = Math.floor(Math.random() * 256);
|
||||
let g = Math.floor(Math.random() * 256);
|
||||
let b = Math.floor(Math.random() * 256);
|
||||
let a = opcity ? opcity : 1;
|
||||
return `rgba(${r},${g},${b},${a})`;
|
||||
}
|
||||
}
|
||||
|
||||
// 随机十六进制颜色
|
||||
export function randomHexColor() { // 随机生成十六进制颜色
|
||||
export function randomHexColor() {
|
||||
// 随机生成十六进制颜色
|
||||
var hex = Math.floor(Math.random() * 16777216).toString(16);
|
||||
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) {
|
||||
reject("图片压缩失败,请稍后再试");
|
||||
},
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
// 今天周几
|
||||
export function weekValidate() {
|
||||
let week = new Date().getDay()
|
||||
let weekenday = ''
|
||||
let week = new Date().getDay();
|
||||
let weekenday = "";
|
||||
switch (week) {
|
||||
case 0: return weekenday = '星期日'
|
||||
case 1: return weekenday = '星期一'
|
||||
case 2: return weekenday = '星期二'
|
||||
case 3: return weekenday = '星期三'
|
||||
case 4: return weekenday = '星期四'
|
||||
case 5: return weekenday = '星期五'
|
||||
case 6: return weekenday = '星期六'
|
||||
case 0:
|
||||
return (weekenday = "星期日");
|
||||
case 1:
|
||||
return (weekenday = "星期一");
|
||||
case 2:
|
||||
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) {
|
||||
const time = date ? new Date(date) : new Date()
|
||||
const yyyy = time.getFullYear()
|
||||
const MM = (time.getMonth() + 1).toString().padStart(2, 0)
|
||||
const dd = time.getDate().toString().padStart(2, '0')
|
||||
const hh = time.getHours().toString().padStart(2, '0')
|
||||
const mm = time.getMinutes().toString().padStart(2, '0')
|
||||
const ss = time.getSeconds().toString().padStart(2, '0')
|
||||
const time = date ? new Date(date) : new Date();
|
||||
const yyyy = time.getFullYear();
|
||||
const MM = (time.getMonth() + 1).toString().padStart(2, 0);
|
||||
const dd = time.getDate().toString().padStart(2, "0");
|
||||
const hh = time.getHours().toString().padStart(2, "0");
|
||||
const mm = time.getMinutes().toString().padStart(2, "0");
|
||||
const ss = time.getSeconds().toString().padStart(2, "0");
|
||||
|
||||
if (type == 'ymd') {
|
||||
if (type == "ymd") {
|
||||
return `${yyyy}-${MM}-${dd}`;
|
||||
}
|
||||
if (type == 'md') {
|
||||
return `${MM}.${dd}`
|
||||
if (type == "md") {
|
||||
return `${MM}.${dd}`;
|
||||
}
|
||||
if (type == 'td') {
|
||||
return `${yyyy}年${MM}月${dd}日`
|
||||
if (type == "td") {
|
||||
return `${yyyy}年${MM}月${dd}日`;
|
||||
}
|
||||
if (type == 'ny') {
|
||||
return `${yyyy}年${MM}月`
|
||||
if (type == "ny") {
|
||||
return `${yyyy}年${MM}月`;
|
||||
}
|
||||
if (type == 'yd') {
|
||||
return `${yyyy}`
|
||||
if (type == "yd") {
|
||||
return `${yyyy}`;
|
||||
}
|
||||
if (type == 'ym') {
|
||||
return MM
|
||||
if (type == "ym") {
|
||||
return MM;
|
||||
}
|
||||
if (type == 'rm') {
|
||||
return dd
|
||||
if (type == "rm") {
|
||||
return dd;
|
||||
}
|
||||
if (type == 'mm') {
|
||||
return `${yyyy}${MM}${dd}${hh}${mm}${ss}`
|
||||
if (type == "mm") {
|
||||
return `${yyyy}${MM}${dd}${hh}${mm}${ss}`;
|
||||
}
|
||||
if (type == 'ydm') {
|
||||
return `${yyyy}年${MM}月${dd}日${hh}时${mm}分${ss}秒`
|
||||
if (type == "ydm") {
|
||||
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) {
|
||||
let startTime, endTime;
|
||||
let now = new Date(); //当前日期
|
||||
@ -132,89 +147,93 @@ export function timeSlotChange(val) {
|
||||
let nowDay = now.getDate(); //当前日
|
||||
let nowMonth = now.getMonth(); //当前月
|
||||
let nowYear = now.getFullYear(); //当前年
|
||||
let jd = Math.ceil((nowMonth + 1) / 3)
|
||||
let jd = Math.ceil((nowMonth + 1) / 3);
|
||||
switch (val) {
|
||||
case '天':
|
||||
case '日':
|
||||
case "天":
|
||||
case "日":
|
||||
// 设置当天的开始时间(00:00:00)
|
||||
const startDate = new Date();
|
||||
startDate.setHours(0, 0, 0, 0);
|
||||
startTime = timeValidate(startDate, 'ymd');
|
||||
startTime = timeValidate(startDate, "ymd");
|
||||
|
||||
// 设置当天的结束时间(23:59:59)
|
||||
const endDate = new Date();
|
||||
endDate.setHours(23, 59, 59, 999);
|
||||
endTime = timeValidate(endDate, 'ymd');
|
||||
endTime = timeValidate(endDate, "ymd");
|
||||
console.log(startTime, endTime);
|
||||
|
||||
break;
|
||||
case "本周":
|
||||
case "周":
|
||||
startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)
|
||||
endTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek)
|
||||
startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
|
||||
endTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek);
|
||||
|
||||
break;
|
||||
case "本月":
|
||||
case "月":
|
||||
startTime = new Date(nowYear, nowMonth, 1)
|
||||
endTime = new Date(nowYear, nowMonth + 1, 0)
|
||||
startTime = new Date(nowYear, nowMonth, 1);
|
||||
endTime = new Date(nowYear, nowMonth + 1, 0);
|
||||
console.log(startTime, endTime);
|
||||
break;
|
||||
case "本季度":
|
||||
case "季度":
|
||||
startTime = new Date(nowYear, (jd - 1) * 3, 1)
|
||||
endTime = new Date(nowYear, jd * 3, 0)
|
||||
break
|
||||
startTime = new Date(nowYear, (jd - 1) * 3, 1);
|
||||
endTime = new Date(nowYear, jd * 3, 0);
|
||||
break;
|
||||
case "本年":
|
||||
case "年":
|
||||
startTime = new Date(nowYear, 0, 1)
|
||||
endTime = new Date(nowYear, 11, 31)
|
||||
break
|
||||
startTime = new Date(nowYear, 0, 1);
|
||||
endTime = new Date(nowYear, 11, 31);
|
||||
break;
|
||||
}
|
||||
return [timeValidate(startTime, 'ymd'), timeValidate(endTime, 'ymd')]
|
||||
return [timeValidate(startTime, "ymd"), timeValidate(endTime, "ymd")];
|
||||
}
|
||||
|
||||
|
||||
// 获取当前近多少天 7后7天 -7 前五天
|
||||
export function getRecentDay(n) {
|
||||
var currentDate = new Date();
|
||||
var preDate = new Date(currentDate.getTime() + n * 24 * 3600 * 1000)
|
||||
let year = preDate.getFullYear()
|
||||
let mon = preDate.getMonth() + 1
|
||||
let day = preDate.getDate()
|
||||
let s = year + '-' + (mon < 10 ? ('0' + mon) : mon) + '-' + (day < 10 ? ('0' + day) : day)
|
||||
return s
|
||||
var preDate = new Date(currentDate.getTime() + n * 24 * 3600 * 1000);
|
||||
let year = preDate.getFullYear();
|
||||
let mon = preDate.getMonth() + 1;
|
||||
let day = preDate.getDate();
|
||||
let s =
|
||||
year +
|
||||
"-" +
|
||||
(mon < 10 ? "0" + mon : mon) +
|
||||
"-" +
|
||||
(day < 10 ? "0" + day : day);
|
||||
return s;
|
||||
}
|
||||
|
||||
// 获取n近7月 7后7 -7 前
|
||||
export function getnRencebtMonth(n) {
|
||||
let date = new Date();
|
||||
date.setMonth(date.getMonth() - n)
|
||||
date.toLocaleDateString()
|
||||
let y = date.getFullYear()
|
||||
let m = date.getMonth() + 1
|
||||
m = m < 10 ? ('0' + m) : m + ''
|
||||
return y + m
|
||||
date.setMonth(date.getMonth() - n);
|
||||
date.toLocaleDateString();
|
||||
let y = date.getFullYear();
|
||||
let m = date.getMonth() + 1;
|
||||
m = m < 10 ? "0" + m : m + "";
|
||||
return y + m;
|
||||
}
|
||||
/**
|
||||
* 数据去重 相同数据值累加
|
||||
* @param {Object} array 数据
|
||||
*/
|
||||
export function setArray(array) {
|
||||
let newArr = []
|
||||
array.forEach(item => {
|
||||
const res = newArr.findIndex(ol => {
|
||||
let newArr = [];
|
||||
array.forEach((item) => {
|
||||
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) {
|
||||
newArr[res].sl = newArr[res].sl + item.sl
|
||||
newArr[res].sl = newArr[res].sl + item.sl;
|
||||
} else {
|
||||
newArr.push(item)
|
||||
newArr.push(item);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
return newArr
|
||||
return newArr;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -222,44 +241,49 @@ export function setArray(array) {
|
||||
* @param {Object} array 数据
|
||||
*/
|
||||
export function hbArray(array, item1, item2, item3) {
|
||||
let newArr = []
|
||||
array.forEach(item => {
|
||||
const res = newArr.findIndex(ol => {
|
||||
let newArr = [];
|
||||
array.forEach((item) => {
|
||||
const res = newArr.findIndex((ol) => {
|
||||
//组织机构代码相同 并且报警类别相同
|
||||
return item.product == ol.product
|
||||
})
|
||||
return item.product == ol.product;
|
||||
});
|
||||
if (res !== -1) {
|
||||
newArr[res][item1] = newArr[res][item1] + item[item1]
|
||||
newArr[res][item2] = newArr[res][item2] + item[item2]
|
||||
newArr[res][item3] = newArr[res][item3] + item[item3]
|
||||
newArr[res][item1] = newArr[res][item1] + item[item1];
|
||||
newArr[res][item2] = newArr[res][item2] + item[item2];
|
||||
newArr[res][item3] = newArr[res][item3] + item[item3];
|
||||
} else {
|
||||
newArr.push(item)
|
||||
newArr.push(item);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
return newArr
|
||||
return newArr;
|
||||
}
|
||||
//时间格式
|
||||
export function dateFormat(type, time) {
|
||||
let date
|
||||
let date;
|
||||
if (time) {
|
||||
date = new Date(time);
|
||||
} else {
|
||||
date = new Date();
|
||||
}
|
||||
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 minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
|
||||
let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
|
||||
let day
|
||||
let minutes =
|
||||
date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
|
||||
let seconds =
|
||||
date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
|
||||
let day;
|
||||
|
||||
if (type == 'z') {
|
||||
if (type == "z") {
|
||||
//前一天日期
|
||||
day = date.getDate() - 1;
|
||||
day = day < 10 ? "0" + day : 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();
|
||||
@ -269,42 +293,78 @@ export function dateFormat(type, time) {
|
||||
day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
||||
return `${year}-${month}-${day}`;
|
||||
}
|
||||
return day
|
||||
return day;
|
||||
}
|
||||
|
||||
//数字超长处理
|
||||
export function handleNum(num) {
|
||||
var data = 0
|
||||
var data = 0;
|
||||
if (num) {
|
||||
try {
|
||||
if (num * 1 > 100000) {
|
||||
data = (num / 10000).toFixed(0) + '万'
|
||||
data = (num / 10000).toFixed(0) + "万";
|
||||
} else {
|
||||
data = (num * 1).toFixed(0)
|
||||
data = (num * 1).toFixed(0);
|
||||
}
|
||||
} catch (error) {
|
||||
data = 0
|
||||
data = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return data
|
||||
return data;
|
||||
}
|
||||
/**
|
||||
* 文件是否是图片
|
||||
* @param {*} val
|
||||
*/
|
||||
export function IS_PNG(val) {
|
||||
return ['bmp', 'jpg', 'png', 'tif', 'gif', 'pcx', 'tga', 'exif', 'fpx', 'svg', 'psd', 'cdr', 'pcd', 'dxf', 'ufo',
|
||||
'eps', 'ai', 'raw', 'wmf', 'webp', 'avif', 'apng'
|
||||
return (
|
||||
[
|
||||
"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
|
||||
*/
|
||||
export function IS_MP3(val) {
|
||||
return ['mp3', 'wav', 'wma', 'mp2', 'flac', 'midi', 'ra', 'ape', 'aac', 'cda', 'mov'].indexOf(val.toLowerCase()) !==
|
||||
-1
|
||||
return (
|
||||
[
|
||||
"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
|
||||
*/
|
||||
export function IS_MP4(val) {
|
||||
return ['avi', 'wmv', 'mpeg', 'mp4', 'm4v', 'mov', 'asf', 'fiv', 'f4v', 'mvb', 'rm', '3gp', 'vob'].indexOf(val
|
||||
.toLowerCase()) !== -1
|
||||
return (
|
||||
[
|
||||
"avi",
|
||||
"wmv",
|
||||
"mpeg",
|
||||
"mp4",
|
||||
"m4v",
|
||||
"mov",
|
||||
"asf",
|
||||
"fiv",
|
||||
"f4v",
|
||||
"mvb",
|
||||
"rm",
|
||||
"3gp",
|
||||
"vob"
|
||||
].indexOf(val.toLowerCase()) !== -1
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
function handelArr(arr) {
|
||||
let brr = []
|
||||
let brr = [];
|
||||
if (arr && arr.length > 0) {
|
||||
let obj = {}
|
||||
let obj = {};
|
||||
let coords = "";
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
coords += arr[i] + ","
|
||||
coords += arr[i] + ",";
|
||||
}
|
||||
obj.coords = coords
|
||||
brr.push(obj)
|
||||
obj.coords = coords;
|
||||
brr.push(obj);
|
||||
}
|
||||
return brr
|
||||
return brr;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 时间 天数
|
||||
* @param {*} val
|
||||
@ -341,29 +414,31 @@ export function setEchartTime(val) {
|
||||
let arrTime = [];
|
||||
if (val == 0) {
|
||||
for (let i = 0; i < 24; i++) {
|
||||
arrTime.push(i)
|
||||
arrTime.push(i);
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < val; i++) {
|
||||
let date1 = new Date(date.getTime() - i * 24 * 60 * 60 * 1000)
|
||||
arrTime.push(_setTime(date1))
|
||||
let date1 = new Date(date.getTime() - i * 24 * 60 * 60 * 1000);
|
||||
arrTime.push(_setTime(date1));
|
||||
}
|
||||
arrTime.reverse()
|
||||
arrTime.reverse();
|
||||
}
|
||||
return arrTime
|
||||
return arrTime;
|
||||
}
|
||||
//设置时间
|
||||
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();
|
||||
return `${month}-${day}`;
|
||||
}
|
||||
|
||||
|
||||
//拼接地址
|
||||
export function setAddress(val) {
|
||||
const url = '/mosty-api/mosty-base/minio/image/download/'
|
||||
return url + val
|
||||
const url = "/mosty-api/mosty-base/minio/image/download/";
|
||||
return url + val;
|
||||
}
|
||||
export function getUUid() {
|
||||
var list = [];
|
||||
@ -379,27 +454,31 @@ export function getUUid() {
|
||||
}
|
||||
// 预警等级颜色
|
||||
export const bqYs = (val) => {
|
||||
if (val == '01') {
|
||||
return '#ff0202'
|
||||
} else if (val == '02') {
|
||||
return '#ff8c00'
|
||||
} else if (val == '03') {
|
||||
return '#ffd208ff'
|
||||
} else if (val == '04') {
|
||||
return '#0000ff'
|
||||
}
|
||||
if (val == "01") {
|
||||
return "#ff0202";
|
||||
} else if (val == "02") {
|
||||
return "#ff8c00";
|
||||
} else if (val == "03") {
|
||||
return "#ffd208ff";
|
||||
} else if (val == "04") {
|
||||
return "#0000ff";
|
||||
}
|
||||
};
|
||||
/** 全息档案跳转
|
||||
* @param {string} szhm 身证号
|
||||
*/
|
||||
export function holographicProfileJump(lx, val) {
|
||||
if (!val) return
|
||||
if (lx == 1 || !lx) {
|
||||
const sfzh = val.sfzh || val.rysfzh || val.yjRysfzh
|
||||
window.open(`https://tyyy.lz.dsj.xz/profile/people/person-manage?sfzhm=${sfzh}&from=portal`)
|
||||
if (!val) return;
|
||||
if (lx == 1 || !lx || lx == "01") {
|
||||
const sfzh = val.sfzh || val.rysfzh || val.yjRysfzh;
|
||||
window.open(
|
||||
`https://tyyy.lz.dsj.xz/profile/people/person-manage?sfzhm=${sfzh}&from=portal`
|
||||
);
|
||||
} else {
|
||||
const cph = val.cph || val.yjClcph
|
||||
window.open(`https://tyyy.lz.dsj.xz/profile/car/car-manage?cphm=${cph}&from=portal`)
|
||||
const cph = val.cph || val.yjClcph;
|
||||
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;
|
||||
/** 第一个错误字段的内容 @type{<Array>Object} - [message, field, fieldValue] */
|
||||
let firstErrorFieldObj = fields?.[firstErrorField];
|
||||
let errMsg = firstErrorFieldObj?.[0]?.message
|
||||
return errMsg
|
||||
let errMsg = firstErrorFieldObj?.[0]?.message;
|
||||
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 { onMounted, ref } from "vue";
|
||||
// "人像预警", "车辆预警",, "区域预警","无人机预警"
|
||||
const butList = ref(["七类重点", "政保预警", "布控预警", "预警整合"]);
|
||||
const butList = ref(["七类重点", "政保预警", "布控预警"]);
|
||||
const qh = ref("七类重点");
|
||||
const value = ref("人像预警");
|
||||
const Bqvalue = ref("身份预警");
|
||||
@ -135,7 +135,7 @@ onMounted(() => {
|
||||
if (hasPermissin.value) {
|
||||
const data = butList.value.filter((item) => item !== "预警整合");
|
||||
// "身份预警", "行为预警", "组合预警"
|
||||
butList.value = [...data, ...["标签预警", "预警整合"]];
|
||||
butList.value = [...data, ...["标签预警"]];
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -1,186 +1,280 @@
|
||||
<template>
|
||||
<el-dialog :draggable="true" v-model="showDialog" :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">
|
||||
<el-dialog
|
||||
:draggable="true"
|
||||
v-model="showDialog"
|
||||
: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>
|
||||
<MOSTY.Other width="100%" @click="handleChoose('mbzrmjxm')" clearable v-model="listQuery.mbzrmjxm"
|
||||
placeholder="请选择民警" :readonly="true" />
|
||||
<MOSTY.Other
|
||||
width="100%"
|
||||
@click="handleChoose('mbzrmjxm')"
|
||||
clearable
|
||||
v-model="listQuery.mbzrmjxm"
|
||||
placeholder="请选择民警"
|
||||
:readonly="true"
|
||||
/>
|
||||
</template>
|
||||
<template #czzrmj>
|
||||
<MOSTY.Other width="100%" @click="handleChoose('czzrmj')" clearable v-model="listQuery.czzrmj"
|
||||
placeholder="请选择民警" :readonly="true" />
|
||||
<MOSTY.Other
|
||||
width="100%"
|
||||
@click="handleChoose('czzrmj')"
|
||||
clearable
|
||||
v-model="listQuery.czzrmj"
|
||||
placeholder="请选择民警"
|
||||
:readonly="true"
|
||||
/>
|
||||
</template>
|
||||
</FormMessage>
|
||||
<template #footer>
|
||||
<div class="flex just-center">
|
||||
<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>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<ChooseUser v-model="chooseUserVisible" v-if="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds"
|
||||
:Single="true" />
|
||||
<ChooseUser
|
||||
v-model="chooseUserVisible"
|
||||
v-if="chooseUserVisible"
|
||||
@choosedUsers="handleUserSelected"
|
||||
:roleIds="roleIds"
|
||||
:Single="true"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<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 { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
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({
|
||||
lx: {
|
||||
type: String,
|
||||
default: '01'
|
||||
default: "01"
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['change'])
|
||||
});
|
||||
const emit = defineEmits(["change"]);
|
||||
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 chooseUserVisible = ref(false)
|
||||
const roleIds = ref([])
|
||||
const elform = ref()
|
||||
const showDialog = ref(false)
|
||||
const loading = ref(false)
|
||||
const choosetype = ref('')
|
||||
const listQuery = ref({})
|
||||
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 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([
|
||||
{ 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: "sfbr", type: "select", options: D_BZ_SF },
|
||||
{ label: "处置时间", prop: "czsj", type: "datetime" },
|
||||
{ label: "处置地址", prop: "czdz", type: "textarea", width: '100%' },
|
||||
{ label: "详细地址", prop: "xxdz", type: "textarea", width: '100%' },
|
||||
{ label: "处置责任单位", prop: "czzrdwdm", type: "department", depMc: 'czzrdw' },
|
||||
{ label: "处置地址", prop: "czdz", type: "textarea", width: "100%" },
|
||||
{ label: "详细地址", prop: "xxdz", type: "textarea", width: "100%" },
|
||||
{
|
||||
label: "处置责任单位",
|
||||
prop: "czzrdwdm",
|
||||
type: "department",
|
||||
depMc: "czzrdw"
|
||||
},
|
||||
{ label: "处置责任民警", prop: "czzrmj", type: "slot" },
|
||||
{ label: "常控处置措施类型", 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: "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: "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: "ckbnjly", type: "textarea", width: '100%' },
|
||||
{ label: "常控处置反馈补充信息", prop: "ckczbcxx", type: "textarea", width: '100%' },
|
||||
])
|
||||
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea", width: "100%" },
|
||||
{
|
||||
label: "常控处置反馈补充信息",
|
||||
prop: "ckczbcxx",
|
||||
type: "textarea",
|
||||
width: "100%"
|
||||
}
|
||||
]);
|
||||
|
||||
const rules = reactive({
|
||||
mbzt: [{ required: true, message: "请选择发现目标状态", trigger: "change" }],
|
||||
fxmbzedw: [{ required: true, message: "请选择发现目标责任单位", trigger: "change" }],
|
||||
mbzrmjxm: [{ required: true, message: "请选择发现目标责任民警", trigger: "change" }],
|
||||
fxmbzedw: [
|
||||
{ required: true, message: "请选择发现目标责任单位", trigger: "change" }
|
||||
],
|
||||
mbzrmjxm: [
|
||||
{ required: true, message: "请选择发现目标责任民警", trigger: "change" }
|
||||
],
|
||||
sfbr: [{ required: true, message: "请选择是否本人", trigger: "change" }],
|
||||
czsj: [{ required: true, message: "请选择处置时间", trigger: "change" }],
|
||||
czdz: [{ required: true, message: "请选择处置地址", trigger: "blur" }],
|
||||
xxdz: [{ required: true, message: "请选择详细地址", trigger: "blur" }],
|
||||
czzrdwdm: [{ required: true, message: "请选择处置责任单位", trigger: "change" }],
|
||||
czzrmj: [{ required: true, message: "请选择处置责任民警", trigger: "change" }],
|
||||
ckczcslx: [{ required: true, message: "请选择常控处置措施类型", trigger: "change" }],
|
||||
ckczcsxl: [{ required: true, message: "请选择常控处置措施细类", trigger: "change" }],
|
||||
czzrdwdm: [
|
||||
{ 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" }],
|
||||
cklxzcpg: [{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }],
|
||||
cklxzcpgyj: [{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }],
|
||||
ckzylx: [{ required: true, message: "请选择常控从事职业类型", trigger: "change" }],
|
||||
sfnj: [{ required: true, message: "请选择是否尿检", trigger: "change" }],
|
||||
})
|
||||
cklxzcpg: [
|
||||
{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }
|
||||
],
|
||||
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(() => {
|
||||
emitter.on("openFkDialog", (val) => {
|
||||
showDialog.value = true;
|
||||
listQuery.value = { yjid: val.id }
|
||||
let url = ''
|
||||
listQuery.value = { yjid: val.id };
|
||||
let url = "";
|
||||
switch (props.lx) {
|
||||
case '01':
|
||||
url = '/mosty-gsxt/tbYjxx/getInfo/'
|
||||
case "01":
|
||||
url = "/mosty-gsxt/tbYjxx/getInfo/";
|
||||
break;
|
||||
case '02':
|
||||
url = '/mosty-gsxt/yjzxXwyj/'
|
||||
case "02":
|
||||
url = "/mosty-gsxt/yjzxXwyj/";
|
||||
break;
|
||||
case '03':
|
||||
url = '/mosty-gsxt/yjzxSfyj/'
|
||||
case "03":
|
||||
url = "/mosty-gsxt/yjzxSfyj/";
|
||||
break;
|
||||
case '04':
|
||||
url = '/mosty-gsxt/yjzxZhyj/'
|
||||
case "04":
|
||||
url = "/mosty-gsxt/yjzxZhyj/";
|
||||
break;
|
||||
}
|
||||
title.value = val.type;
|
||||
if (val.type == '查看反馈') {
|
||||
if (val.type == "查看反馈") {
|
||||
qcckGet({}, url + val.id).then((res) => {
|
||||
let list = res.fkList || []
|
||||
let list = res.fkList || [];
|
||||
listQuery.value = list.length > 0 ? list[0] : {};
|
||||
});
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
const handleChoose = (type) => {
|
||||
chooseUserVisible.value = true,
|
||||
choosetype.value = type;
|
||||
|
||||
}
|
||||
(chooseUserVisible.value = true), (choosetype.value = type);
|
||||
};
|
||||
|
||||
// 选取角色
|
||||
const handleUserSelected = (val) => {
|
||||
switch (choosetype.value) {
|
||||
case 'mbzrmjxm':
|
||||
listQuery.value.mbzrmjxm = val[0].userName
|
||||
listQuery.value.mbzrmjsfzh = val[0].inDustRialId
|
||||
case "mbzrmjxm":
|
||||
listQuery.value.mbzrmjxm = val[0].userName;
|
||||
listQuery.value.mbzrmjsfzh = val[0].inDustRialId;
|
||||
break;
|
||||
case 'czzrmj':
|
||||
listQuery.value.czzrmj = val[0].userName
|
||||
listQuery.value.czzrmjsfzh = val[0].inDustRialId
|
||||
case "czzrmj":
|
||||
listQuery.value.czzrmj = val[0].userName;
|
||||
listQuery.value.czzrmjsfzh = val[0].inDustRialId;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
const submitForm = () => {
|
||||
elform.value.submit((val) => {
|
||||
loading.value = true;
|
||||
const prome = {
|
||||
...listQuery.value,
|
||||
}
|
||||
let url = ''
|
||||
...listQuery.value
|
||||
};
|
||||
let url = "";
|
||||
switch (props.lx) {
|
||||
case '01':
|
||||
url = '/mosty-gsxt/tbYjxx/yjfk'
|
||||
case "01":
|
||||
url = "/mosty-gsxt/tbYjxx/yjfk";
|
||||
break;
|
||||
case '02':
|
||||
url = '/mosty-gsxt/yjzxXwyj/yjfk'
|
||||
case "02":
|
||||
url = "/mosty-gsxt/yjzxXwyj/yjfk";
|
||||
break;
|
||||
case '03':
|
||||
url = '/mosty-gsxt/yjzxSfyj/yjfk'
|
||||
case "03":
|
||||
url = "/mosty-gsxt/yjzxSfyj/yjfk";
|
||||
break;
|
||||
case '04':
|
||||
url = '/mosty-gsxt/yjzxZhyj/yjfk'
|
||||
case "04":
|
||||
url = "/mosty-gsxt/yjzxZhyj/yjfk";
|
||||
break;
|
||||
case '05':
|
||||
url = '/mosty-gsxt/tbYjxx/yjfk'
|
||||
case "05":
|
||||
url = "/mosty-gsxt/tbYjxx/yjfk";
|
||||
break;
|
||||
}
|
||||
qcckPost(prome, url).then(() => {
|
||||
qcckPost(prome, url)
|
||||
.then(() => {
|
||||
loading.value = false;
|
||||
proxy.$message({ type: "success", message: "反馈成功" });
|
||||
emit('change')
|
||||
close()
|
||||
}).catch(() => {
|
||||
emit("change");
|
||||
close();
|
||||
})
|
||||
.catch(() => {
|
||||
loading.value = false;
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const close = () => {
|
||||
elform.value.reset();
|
||||
listQuery.value = {}
|
||||
listQuery.value = {};
|
||||
showDialog.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
onUnmounted(() => {
|
||||
emitter.off("openFkDialog")
|
||||
})
|
||||
emitter.off("openFkDialog");
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -281,7 +281,6 @@ const handleQsFk = (val, type) => {
|
||||
emitter.emit("openFkDialog", { id: val.id, type });
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
const addModelRef = ref(null)
|
||||
const openAddModel = (row) => {
|
||||
|
||||
@ -2,43 +2,93 @@
|
||||
<div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox" class="mt10">
|
||||
<QueryFormPanel v-model="listQuery" :fields="searchConfiger" @search='onSearch'>
|
||||
<QueryFormPanel
|
||||
v-model="listQuery"
|
||||
:fields="searchConfiger"
|
||||
@search="onSearch"
|
||||
>
|
||||
<template #but>
|
||||
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
|
||||
<el-button type="primary" size="small" @click="handleQs">签收</el-button>
|
||||
<el-button type="primary" @click="exportExl" size="small"
|
||||
>导出</el-button
|
||||
>
|
||||
<el-button type="primary" size="small" @click="handleQs"
|
||||
>签收</el-button
|
||||
>
|
||||
</template>
|
||||
</QueryFormPanel>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class=" tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
|
||||
<WarnDataTable :loading="pageData.tableConfiger.loading" :tableHeight="pageData.tableHeight"
|
||||
:data="pageData.tableData" :columns="pageData.tableColumn" table-class="warn-table"
|
||||
@selectionChange="handleChooseData">
|
||||
<div
|
||||
class="tabBox_zdy"
|
||||
:style="{ height: pageData.tableHeight + 40 + 'px' }"
|
||||
>
|
||||
<WarnDataTable
|
||||
:loading="pageData.tableConfiger.loading"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:data="pageData.tableData"
|
||||
:columns="pageData.tableColumn"
|
||||
table-class="warn-table"
|
||||
@selectionChange="handleChooseData"
|
||||
>
|
||||
<template #yjTp="{ row }">
|
||||
<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 src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
||||
<img
|
||||
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>
|
||||
<el-image v-else style="width: 30px; height:30px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
|
||||
show-progress>
|
||||
<el-image
|
||||
v-else
|
||||
style="width: 30px; height: 30px"
|
||||
:src="row.yjTp"
|
||||
:preview-src-list="[row.yjTp]"
|
||||
show-progress
|
||||
>
|
||||
<template #error>
|
||||
<div class="image-slot error">
|
||||
<img 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 />
|
||||
<img
|
||||
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>
|
||||
</template>
|
||||
</el-image>
|
||||
</template>
|
||||
<template #czzt="{ row }">
|
||||
<DictTag :value="row.czzt" :color="row.czzt === '01' ? '#ff2424' : '#1d72e8'" :tag="false"
|
||||
:options="D_GSXT_YJXX_CZZT" />
|
||||
<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" />
|
||||
<DictTag
|
||||
:value="row.yjJb"
|
||||
color="#fff"
|
||||
:tag="false"
|
||||
:options="D_BZ_YJJB"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<template #bkly="{ row }">
|
||||
@ -47,9 +97,7 @@
|
||||
<template #bkczyq="{ row }">
|
||||
<DictTag :value="row.bkczyq" :tag="false" :options="D_GS_BK_CZYQ" />
|
||||
</template>
|
||||
<template #xsd="{ row }">
|
||||
{{ row.xsd }}%
|
||||
</template>
|
||||
<template #xsd="{ row }"> {{ row.xsd }}% </template>
|
||||
<template #yjLylx="{ row }">
|
||||
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_SJLY" />
|
||||
</template>
|
||||
@ -57,41 +105,70 @@
|
||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||
</template>
|
||||
<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="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="danger" @click="delDictItem(row.id)">转会商</span> -->
|
||||
<span class="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</span>
|
||||
<span class="success" @click="handleQsFk(row, '反馈')"
|
||||
v-else-if="row.czzt == '02' && permission_sfqs">反馈</span>
|
||||
<span
|
||||
class="success"
|
||||
@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 class="primary" @click="openBox(row)">详情</span>
|
||||
<span class="primary" @click="pushWarning(row)">指派</span>
|
||||
</div>
|
||||
</template>
|
||||
</WarnDataTable>
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"></Pages>
|
||||
}"
|
||||
></Pages>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<ZpForm v-model="warningShow" :dataList="dataList" />
|
||||
<!-- <Pagination v-model="paginationOpen" /> -->
|
||||
<Pagination 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 }" />
|
||||
<Pagination
|
||||
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>
|
||||
|
||||
<script setup>
|
||||
import { IdCard } from '@/utils/validate.js'
|
||||
import Czjy from './components/czjy.vue'
|
||||
import { getItem, setItem } from '@/utils/storage'
|
||||
import WarnDataTable from '@/views/backOfficeSystem/ces/components/WarnDataTable.vue'
|
||||
import { IdCard } from "@/utils/validate.js";
|
||||
import Czjy from "./components/czjy.vue";
|
||||
import { getItem, setItem } from "@/utils/storage";
|
||||
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 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 { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
import { holographicProfileJump } from "@/utils/tools.js"
|
||||
import Items from "./item/items.vue"
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||
import { getMultiDictVal } from "@/utils/dict.js"
|
||||
import { holographicProfileJump } from "@/utils/tools.js";
|
||||
import Items from "./item/items.vue";
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||
import { getMultiDictVal } from "@/utils/dict.js";
|
||||
import Pagination from "./components/particulars.vue";
|
||||
const czjyRef = ref()
|
||||
const czjyRef = ref();
|
||||
const { proxy } = getCurrentInstance();
|
||||
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 dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ })
|
||||
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 dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ });
|
||||
// 搜索配置
|
||||
const searchConfiger = ref([
|
||||
{ label: "布控开始时间", prop: 'bkkssj', showType: "date", placeholder: "请选择布控开始时间" },
|
||||
{ label: "布控结束时间", prop: 'bkjssj', showType: "date", placeholder: "请选择布控结束时间" },
|
||||
{ label: "预警时间", prop: 'startTime', showType: "datetimerange", placeholder: "请选择预警时间" },
|
||||
{ label: "预警级别", prop: 'yjJb', 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: "请输入预警内容" },
|
||||
|
||||
{
|
||||
label: "布控开始时间",
|
||||
prop: "bkkssj",
|
||||
showType: "date",
|
||||
placeholder: "请选择布控开始时间"
|
||||
},
|
||||
{
|
||||
label: "布控结束时间",
|
||||
prop: "bkjssj",
|
||||
showType: "date",
|
||||
placeholder: "请选择布控结束时间"
|
||||
},
|
||||
{
|
||||
label: "预警时间",
|
||||
prop: "startTime",
|
||||
showType: "datetimerange",
|
||||
placeholder: "请选择预警时间"
|
||||
},
|
||||
{
|
||||
label: "预警级别",
|
||||
prop: "yjJb",
|
||||
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 IMGYM = 'https://sg.lz.dsj.xz/dhimage'
|
||||
const permission_sfqs = ref(false)
|
||||
const roleCode = ref(false)
|
||||
const ORDIMG = "https://89.40.7.122:38496/image";
|
||||
const IMGYM = "https://sg.lz.dsj.xz/dhimage";
|
||||
const permission_sfqs = ref(false);
|
||||
const roleCode = ref(false);
|
||||
|
||||
const queryFrom = ref({});
|
||||
|
||||
@ -151,7 +377,7 @@ const pageData = reactive({
|
||||
rowHieght: 61,
|
||||
showSelectType: "checkBox",
|
||||
loading: false,
|
||||
haveControls: true,
|
||||
haveControls: true
|
||||
},
|
||||
total: 0,
|
||||
pageConfiger: {
|
||||
@ -160,37 +386,37 @@ const pageData = reactive({
|
||||
},
|
||||
controlsWidth: 180, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ type: 'index', label: '序号', width: 55, align: 'center' },
|
||||
{ label: "处置状态", align: 'center', width: 70, slotName: 'czzt' },
|
||||
{ prop: 'yjSj', label: '预警时间', width: 80 },
|
||||
{ prop: 'yjRyxm', label: '人员姓名', width: 70 },
|
||||
{ prop: 'yjRysfzh', label: '身份证号', width: 80 },
|
||||
{ label: '性别', width: 50, align: 'center', slotName: 'xbdm' },
|
||||
{ prop: 'nl', label: '年龄', width: 50, align: 'center' },
|
||||
{ label: '预警级别', width: 80, align: 'center', slotName: 'yjJb' },
|
||||
{ label: "布控单位", prop: "gkbmmc", align: 'center' },
|
||||
{ label: "布控来源", align: 'center', slotName: 'bkly', width: 70 },
|
||||
{ prop: 'bkfw', label: "布控范围", align: 'center', width: 70 },
|
||||
{ prop: 'bkkssj', label: "布控开始时间", align: 'center' },
|
||||
{ prop: 'bkjssj', label: "布控结束时间", align: 'center' },
|
||||
{ label: "处置要求", width: 70, slotName: 'bkczyq', align: 'center' },
|
||||
{ label: "预警内容", prop: "yjNr", align: 'center' },
|
||||
{ label: "相似度", slotName: "xsd", align: 'center', width: 50 },
|
||||
{ label: "所属部门", prop: "ssbm", align: 'center' },
|
||||
{ label: "数据来源", slotName: "yjLylx", align: 'center' },
|
||||
{ label: '操作', width: 180, slotName: 'operation' },
|
||||
{ label: '超时状态', width: 80, align: 'center', slotName: 'cszt' },
|
||||
{ label: "在控状态", width: 70, align: 'center', slotName: "zkzt" },
|
||||
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||
{ label: "处置状态", align: "center", width: 70, slotName: "czzt" },
|
||||
{ prop: "yjSj", label: "预警时间", width: 80 },
|
||||
{ prop: "yjRyxm", label: "人员姓名", width: 70 },
|
||||
{ prop: "yjRysfzh", label: "身份证号", width: 80 },
|
||||
{ label: "性别", width: 50, align: "center", slotName: "xbdm" },
|
||||
{ prop: "nl", label: "年龄", width: 50, align: "center" },
|
||||
{ label: "预警级别", width: 80, align: "center", slotName: "yjJb" },
|
||||
{ label: "布控单位", prop: "gkbmmc", align: "center" },
|
||||
{ label: "布控来源", align: "center", slotName: "bkly", width: 70 },
|
||||
{ prop: "bkfw", label: "布控范围", align: "center", width: 70 },
|
||||
{ prop: "bkkssj", label: "布控开始时间", align: "center" },
|
||||
{ prop: "bkjssj", label: "布控结束时间", align: "center" },
|
||||
{ label: "处置要求", width: 70, slotName: "bkczyq", align: "center" },
|
||||
{ label: "预警内容", prop: "yjNr", align: "center" },
|
||||
{ label: "相似度", slotName: "xsd", align: "center", width: 50 },
|
||||
{ label: "所属部门", prop: "ssbm", align: "center" },
|
||||
{ label: "数据来源", slotName: "yjLylx", align: "center" },
|
||||
{ label: "操作", width: 180, slotName: "operation" },
|
||||
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" },
|
||||
{ label: "在控状态", width: 70, align: "center", slotName: "zkzt" }
|
||||
]
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : ''
|
||||
permission_sfqs.value = str.startsWith('2' || '3') ? false : true;
|
||||
let rols = getItem('roleList') ? getItem('roleList') : []
|
||||
let obj = rols.find(item => {
|
||||
return ['JS_666666', 'JS_777777', 'JS_888888'].includes(item.roleCode)
|
||||
})
|
||||
let str = getItem("deptId") ? getItem("deptId")[0].deptLevel : "";
|
||||
permission_sfqs.value = str.startsWith("2" || "3") ? false : true;
|
||||
let rols = getItem("roleList") ? getItem("roleList") : [];
|
||||
let obj = rols.find((item) => {
|
||||
return ["JS_666666", "JS_777777", "JS_888888"].includes(item.roleCode);
|
||||
});
|
||||
roleCode.value = obj ? true : false;
|
||||
|
||||
tabHeightFn();
|
||||
@ -199,13 +425,14 @@ onMounted(() => {
|
||||
|
||||
const onSearch = (val) => {
|
||||
queryFrom.value = {
|
||||
...queryFrom.value, ...val,
|
||||
startTime: val.startTime ? val.startTime[0] : '',
|
||||
endTime: val.startTime ? val.startTime[1] : '',
|
||||
yjJb: val.yjJb?.join(',') || '',
|
||||
sfglyj: val.sfglyj?.join(',') || '',
|
||||
sfgz: val.sfgz?.join(',') || '',
|
||||
sfzp: val.sfzp?.join(',') || ''
|
||||
...queryFrom.value,
|
||||
...val,
|
||||
startTime: val.startTime ? val.startTime[0] : "",
|
||||
endTime: val.startTime ? val.startTime[1] : "",
|
||||
yjJb: val.yjJb?.join(",") || "",
|
||||
sfglyj: val.sfglyj?.join(",") || "",
|
||||
sfgz: val.sfgz?.join(",") || "",
|
||||
sfzp: val.sfzp?.join(",") || ""
|
||||
};
|
||||
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
@ -213,9 +440,9 @@ const onSearch = (val) => {
|
||||
};
|
||||
|
||||
const reset = () => {
|
||||
delete queryFrom.value.ksfz
|
||||
delete queryFrom.value.jsfz
|
||||
}
|
||||
delete queryFrom.value.ksfz;
|
||||
delete queryFrom.value.jsfz;
|
||||
};
|
||||
|
||||
const changeNo = (val) => {
|
||||
pageData.pageConfiger.pageCurrent = val;
|
||||
@ -232,13 +459,15 @@ const getList = () => {
|
||||
let params = {
|
||||
...queryFrom.value,
|
||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||
pageSize: pageData.pageConfiger.pageSize,
|
||||
}
|
||||
qcckPost(params, '/mosty-gsxt/tbYjxx/getBdbkPageList').then((res) => {
|
||||
pageData.tableData = res?.records || []
|
||||
pageSize: pageData.pageConfiger.pageSize
|
||||
};
|
||||
qcckPost(params, "/mosty-gsxt/tbYjxx/getBdbkPageList")
|
||||
.then((res) => {
|
||||
pageData.tableData = res?.records || [];
|
||||
pageData.total = res?.total || 0;
|
||||
pageData.tableConfiger.loading = false;
|
||||
}).catch(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
});
|
||||
};
|
||||
@ -246,75 +475,76 @@ const getList = () => {
|
||||
// 处理签收
|
||||
const handleQsFk = (val, type) => {
|
||||
switch (type) {
|
||||
case '签收':
|
||||
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||
qcckPost({ id: val.id }, "/mosty-gsxt/mosty-gsxt/tbYjxx/yjqs").then(() => {
|
||||
val.czzt = '02'
|
||||
getList()
|
||||
case "签收":
|
||||
proxy
|
||||
.$confirm("是否确定要签收?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
qcckPost({ id: val.id }, "/mosty-gsxt/mosty-gsxt/tbYjxx/yjqs").then(
|
||||
() => {
|
||||
val.czzt = "02";
|
||||
getList();
|
||||
proxy.$message({ type: "success", message: "签收成功" });
|
||||
}
|
||||
);
|
||||
});
|
||||
})
|
||||
break;
|
||||
case '反馈':
|
||||
case '查看反馈':
|
||||
case "反馈":
|
||||
case "查看反馈":
|
||||
emitter.emit("openFkDialog", { id: val.id, type });
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const pushAssess = (val) => {
|
||||
return holographicProfileJump(val?.yjLx, val) // 全息档案跳转
|
||||
}
|
||||
|
||||
return holographicProfileJump(val?.yjLx, val); // 全息档案跳转
|
||||
};
|
||||
|
||||
const bqYs = (val) => {
|
||||
switch (val) {
|
||||
case '01':
|
||||
return '#ff0202'
|
||||
case '02':
|
||||
return '#ff8c00'
|
||||
case '03':
|
||||
return '#ffff00'
|
||||
case '04':
|
||||
return '#0000ff'
|
||||
case "01":
|
||||
return "#ff0202";
|
||||
case "02":
|
||||
return "#ff8c00";
|
||||
case "03":
|
||||
return "#ffff00";
|
||||
case "04":
|
||||
return "#0000ff";
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
return "";
|
||||
}
|
||||
};
|
||||
|
||||
// 新增
|
||||
const addModelRef = ref(null)
|
||||
const addModelRef = ref(null);
|
||||
const openAddFrom = (row) => {
|
||||
addModelRef.value.init('add', row)
|
||||
}
|
||||
addModelRef.value.init("add", row);
|
||||
};
|
||||
|
||||
const handleCzjy = (row) => {
|
||||
czjyRef.value.init(row)
|
||||
}
|
||||
czjyRef.value.init(row);
|
||||
};
|
||||
// 表格高度计算
|
||||
const tabHeightFn = () => {
|
||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
pageData.tableHeight =
|
||||
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
|
||||
window.onresize = function () {
|
||||
tabHeightFn();
|
||||
};
|
||||
};
|
||||
// 指派
|
||||
const dataList = ref(null)
|
||||
const warningShow = ref(false)
|
||||
const dataList = ref(null);
|
||||
const warningShow = ref(false);
|
||||
const pushWarning = (val) => {
|
||||
warningShow.value = true;
|
||||
dataList.value = val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
/** 选中项 */
|
||||
const selectRows = ref([])
|
||||
const selectRows = ref([]);
|
||||
const handleChooseData = (val) => {
|
||||
selectRows.value = val
|
||||
}
|
||||
selectRows.value = val;
|
||||
};
|
||||
const exportExl = () => {
|
||||
const titleObj = {
|
||||
czzt_cname: "处置状态",
|
||||
@ -329,48 +559,62 @@ const exportExl = () => {
|
||||
yjCs: "预警次数",
|
||||
yjRysjh: "布控手机号",
|
||||
yjClcph: "布控车牌号",
|
||||
yjRysfzh: "身份证",
|
||||
}
|
||||
yjRysfzh: "身份证"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
||||
const data = needArr.map(item => {
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
nl_cname: IdCard(item.yjRysfzh, 3),
|
||||
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),
|
||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||
yjJb_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||
}
|
||||
})
|
||||
exportExlByObj(titleObj, data, '预警布控')
|
||||
}
|
||||
yjJb_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB)
|
||||
};
|
||||
});
|
||||
exportExlByObj(titleObj, data, "预警布控");
|
||||
};
|
||||
|
||||
const handleQs = () => {
|
||||
if (selectRows.value?.length === 0) return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||
let wqs = selectRows.value.filter(item => item.czzt == '01');
|
||||
if (wqs.length == 0) return proxy.$message({ type: "warning", message: "数据都已签收,请选择未签收的数据" });
|
||||
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(() => {
|
||||
if (selectRows.value?.length === 0)
|
||||
return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||
let wqs = selectRows.value.filter((item) => item.czzt == "01");
|
||||
if (wqs.length == 0)
|
||||
return proxy.$message({
|
||||
type: "warning",
|
||||
message: "数据都已签收,请选择未签收的数据"
|
||||
});
|
||||
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(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$message({ type: "error", message: "失败" });
|
||||
});
|
||||
}).catch(() => { });
|
||||
}
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
|
||||
// 详情
|
||||
const paginationOpen = ref(false)
|
||||
const dataPres = ref({})
|
||||
const paginationOpen = ref(false);
|
||||
const dataPres = ref({});
|
||||
const openBox = (val) => {
|
||||
paginationOpen.value = true
|
||||
dataPres.value = val
|
||||
}
|
||||
paginationOpen.value = true;
|
||||
dataPres.value = val;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -14,6 +14,9 @@
|
||||
<el-button type="primary" size="small" @click="handleQs"
|
||||
>签收</el-button
|
||||
>
|
||||
<el-button type="primary" size="small" @click="handleRelatedWarning"
|
||||
>关联预警</el-button
|
||||
>
|
||||
</template>
|
||||
</QueryFormPanel>
|
||||
</div>
|
||||
@ -78,13 +81,13 @@
|
||||
<span
|
||||
class="success"
|
||||
@click="handleQsFk(row, '签收')"
|
||||
v-if="row.czzt == '01' && permission_sfqs"
|
||||
v-if="row.czzt == '01'"
|
||||
>签收</span
|
||||
>
|
||||
<span
|
||||
class="success"
|
||||
@click="handleQsFk(row, '反馈')"
|
||||
v-else-if="row.czzt == '02' && permission_sfqs"
|
||||
v-else-if="row.czzt == '02'"
|
||||
>反馈</span
|
||||
>
|
||||
<!-- <span type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</span> -->
|
||||
@ -125,6 +128,12 @@
|
||||
D_GS_BK_CZYQ
|
||||
}"
|
||||
/>
|
||||
<DeploymentDataDialog
|
||||
v-model="selectDataVisible"
|
||||
title="关联预警"
|
||||
@confirm="handleSelectConfirm"
|
||||
:currentRelatedRow="currentRelatedRow"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@ -144,6 +153,8 @@ import { holographicProfileJump } from "@/utils/tools.js";
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||
import { getMultiDictVal } from "@/utils/dict.js";
|
||||
import Pagination from "./components/particulars.vue";
|
||||
import DeploymentDataDialog from "../../YjData/DeploymentDataDialog.vue";
|
||||
|
||||
const czjyRef = ref();
|
||||
const { proxy } = getCurrentInstance();
|
||||
const searchBox = ref();
|
||||
@ -458,32 +469,40 @@ const handleChooseData = (val) => {
|
||||
};
|
||||
const exportExl = () => {
|
||||
const titleObj = {
|
||||
czzt_cname: "处置状态",
|
||||
index: "序号",
|
||||
czzt_name: "处置状态",
|
||||
yjSj: "预警时间",
|
||||
yjRyxm: "姓名",
|
||||
nl_cname: "年龄", // IdCard(row.yjRysfzh, 3)
|
||||
yjLylx: "数据来源",
|
||||
xb_cname: "性别",
|
||||
yjJb_cname: "预警级别",
|
||||
xsd_cname: "相似度",
|
||||
yjDz: "预警地点",
|
||||
yjCs: "预警次数",
|
||||
yjRysjh: "布控手机号",
|
||||
yjClcph: "布控车牌号",
|
||||
yjRysfzh: "身份证"
|
||||
yjRyxm: "人员姓名",
|
||||
xbdm_name: "性别",
|
||||
nl: "年龄",
|
||||
yjRysfzh: "身份证号",
|
||||
qblyjb_name: "管控级别",
|
||||
yjJb_name: "预警级别",
|
||||
bksj: "布控时间",
|
||||
ssbm: "接收单位",
|
||||
gkbmmc: "布控单位",
|
||||
bkyjlx_name: "比对源",
|
||||
xsd_name: "相似度",
|
||||
yjNr: "预警内容",
|
||||
cszt_name: "超时状态",
|
||||
zkzt_name: "在控状态"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item) => {
|
||||
const data = needArr.map((item, index) => {
|
||||
return {
|
||||
...item,
|
||||
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),
|
||||
index: index + 1,
|
||||
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, "预警布控");
|
||||
@ -526,6 +545,32 @@ const openBox = (val) => {
|
||||
paginationOpen.value = true;
|
||||
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>
|
||||
|
||||
<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="开始分值"
|
||||
style="width: 130px"
|
||||
clearable
|
||||
:min="0"
|
||||
></el-input>
|
||||
<el-input
|
||||
v-model="queryFrom.yjjsfz"
|
||||
@ -18,6 +19,27 @@
|
||||
placeholder="结束分值"
|
||||
style="width: 130px"
|
||||
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>
|
||||
</div>
|
||||
</template>
|
||||
@ -47,6 +69,13 @@
|
||||
row.sfcs
|
||||
}}</span>
|
||||
</template>
|
||||
<template #yjcs="{ row }">
|
||||
<span
|
||||
style="color: #0072ff; cursor: pointer"
|
||||
@click="openYjDetail(row)"
|
||||
>{{ row.yjcs }}</span
|
||||
>
|
||||
</template>
|
||||
<template #czzt="{ row }">
|
||||
<DictTag
|
||||
:value="row.czzt"
|
||||
@ -143,6 +172,13 @@
|
||||
url="/yjzxSfyj/sjxspz"
|
||||
:roleIds="roleIds"
|
||||
/>
|
||||
|
||||
<!-- 预警详情弹窗 -->
|
||||
<dialogYjList
|
||||
v-model="yjDetailVisible"
|
||||
:dataList="yjDetailData"
|
||||
:dict="{ D_BZ_JQLY, JQLB, D_BZ_JQDJ, JQXL, JQLX }"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@ -162,6 +198,7 @@ import { qcckPost, qcckGet } from "@/api/qcckApi.js";
|
||||
import { yjzxSfyjSelectList, yjzxyjzxSfyjSelectList } from "@/api/yj.js";
|
||||
import { tbGsxtBqglSelectList } from "@/api/zdr";
|
||||
import Detail from "./components/detail.vue";
|
||||
import dialogYjList from "@/views/backOfficeSystem/fourColorManage/YjData/dialogYjList.vue";
|
||||
import { watch } from "vue";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
import { holographicProfileJump, bqYs } from "@/utils/tools.js";
|
||||
@ -173,13 +210,28 @@ import { IdCard } from "@/utils/dict.js";
|
||||
const czjyRef = ref();
|
||||
const { proxy } = getCurrentInstance();
|
||||
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_GS_SSYJ",
|
||||
"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([
|
||||
@ -226,7 +278,7 @@ const searchConfiger = ref([
|
||||
{
|
||||
key: "yjcs",
|
||||
label: "活动频次",
|
||||
type: "input",
|
||||
type: "slot",
|
||||
placeholder: "请输入活动频次"
|
||||
},
|
||||
{
|
||||
@ -268,8 +320,9 @@ const pageData = reactive({
|
||||
{ label: "年龄", align: "center", slotName: "nl", align: "center" },
|
||||
{ label: "标签类型", align: "center", slotName: "yjLylx" },
|
||||
{ label: "标签级别", align: "center", slotName: "yjjb" },
|
||||
{ prop: "yjbq", label: "预警类别", align: "center", width: 120 },
|
||||
{ prop: "ssbm", label: "接收单位", align: "center", width: 200 },
|
||||
{ prop: "yjcs", label: "活动频次", align: "center" },
|
||||
{ label: "活动频次", align: "center", slotName: "yjcs" },
|
||||
{ prop: "yjfz", label: "标签分值", align: "center" },
|
||||
{ label: "操作", width: 200, slotName: "operation" }
|
||||
]
|
||||
@ -375,6 +428,14 @@ const detailRef = ref();
|
||||
const handleClick = (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) => {
|
||||
switch (type) {
|
||||
@ -400,7 +461,10 @@ const handleQsFk = (val, type) => {
|
||||
const assessShow = ref(false);
|
||||
const dataList = ref();
|
||||
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 titleObj = {
|
||||
czzt_cname: "状态",
|
||||
index: "序号",
|
||||
czzt_name: "处置状态",
|
||||
yjsj: "预警时间",
|
||||
xm: "姓名",
|
||||
sfzh: "身份证号",
|
||||
yjbqmc: "标签",
|
||||
bqys_cname: "级别",
|
||||
ryxm: "姓名",
|
||||
xb_name: "性别",
|
||||
rysfzh: "身份证号",
|
||||
nl: "年龄",
|
||||
yjLylx_name: "标签类型",
|
||||
yjjb_name: "标签级别",
|
||||
yjbq: "预警类别",
|
||||
ssbm: "接收单位",
|
||||
sfcs: "活动频次",
|
||||
bqfz: "标签分值",
|
||||
pzxs: "系数",
|
||||
sffz: "计算分值"
|
||||
yjcs: "活动频次",
|
||||
yjfz: "标签分值"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item) => {
|
||||
const data = needArr.map((item, index) => {
|
||||
return {
|
||||
...item,
|
||||
bqys_cname: getMultiDictVal(item.bqys, D_GS_SSYJ),
|
||||
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT)
|
||||
index: index + 1,
|
||||
czzt_name: 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, "身份预警");
|
||||
|
||||
@ -4,12 +4,65 @@
|
||||
<div ref="searchBox" class="mt10 mb10">
|
||||
<!-- <Search :searchArr="searchConfiger" @submit="onSearch" ref="searchDom" :key="pageData.keyCount">
|
||||
</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>
|
||||
<el-button type="primary" size="small" @click="exportExl">批量导出</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>
|
||||
<el-button type="primary" size="small" @click="exportExl"
|
||||
>批量导出</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>
|
||||
</QueryFormPanel>
|
||||
</div>
|
||||
@ -22,20 +75,34 @@
|
||||
</template>
|
||||
</PageTitle> -->
|
||||
<!-- 表格 -->
|
||||
<div style="background-color: #fff;">
|
||||
<WarnDataTable :loading="pageData.tableConfiger.loading" :tableHeight="pageData.tableHeight"
|
||||
:data="pageData.tableData" :columns="pageData.tableColumn" table-class="warn-table"
|
||||
@selectionChange="handleChooseData">
|
||||
<div style="background-color: #fff">
|
||||
<WarnDataTable
|
||||
:loading="pageData.tableConfiger.loading"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
: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" />
|
||||
<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" />
|
||||
<DictTag
|
||||
:value="row.yjJb"
|
||||
color="#fff"
|
||||
:tag="false"
|
||||
:options="D_BZ_YJJB"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<template #bqdl="{ row }">
|
||||
@ -48,68 +115,198 @@
|
||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||
</template>
|
||||
<template #operation="{ row }">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<span class="primary" @click="handleQsSingle(row)">签收</span>
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<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="warning" @click="pushWarning(row)">指派</span>
|
||||
<span class="warning" v-if="row.sfbc != '1'" @click="failWarning(row)">报错</span>
|
||||
<span class="primary" @click="payAttention(row)">关注</span>
|
||||
<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>
|
||||
</template>
|
||||
</WarnDataTable>
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"></Pages>
|
||||
}"
|
||||
></Pages>
|
||||
</div>
|
||||
</div>
|
||||
<ZpForm v-model="warningShow" :dataList="dataList" />
|
||||
<Particulars v-model="particularsShow" :dataList="dataPres"
|
||||
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB }" />
|
||||
<Particulars
|
||||
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" />
|
||||
<FkDialog @change="getList" lx="03" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getMultiDictVal } from "@/utils/dict.js"
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||
import { getMultiDictVal } from "@/utils/dict.js";
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||
import ZpForm from "./zpForm.vue";
|
||||
import { bqYs } from '@/utils/tools.js'
|
||||
import { bqYs } from "@/utils/tools.js";
|
||||
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 PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
// import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance, } from "vue";
|
||||
import peopleConut from "./peopleConut.vue";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
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 { 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 warningShow = ref(false);
|
||||
const dataList = ref([]);
|
||||
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: '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: 'ksnl', label: '开始年龄', type: 'input', placeholder: '请输入开始年龄' },
|
||||
{ key: 'jsnl', label: '结束年龄', type: 'input', placeholder: '请输入结束年龄' },
|
||||
{ key: 'yjCs', label: '预警次数', type: 'input', 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 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: "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 pageData = reactive({
|
||||
@ -129,198 +326,245 @@ const pageData = reactive({
|
||||
}, //分页
|
||||
controlsWidth: 200, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ type: 'index', label: '序号', width: 55, align: 'center' },
|
||||
{ label: '预警状态', width: 86, align: 'center', slotName: 'status' },
|
||||
{ prop: 'yjSj', label: '预警时间', width: 150 },
|
||||
{ prop: 'yjRyxm', label: '人员姓名', width: 80 },
|
||||
{ prop: 'yjRysfzh', label: '身份证号', width: 158 },
|
||||
{ label: '性别', width: 56, align: 'center', slotName: 'xbdm' },
|
||||
{ prop: 'nl', label: '年龄', width: 56, align: 'center' },
|
||||
{ label: '预警级别', width: 88, align: 'center', slotName: 'yjJb' },
|
||||
{ label: '人员类别', width: 90, align: 'center', slotName: 'bqdl' },
|
||||
{ prop: 'yjbqmc', label: '人员细类', width: 92 },
|
||||
{ label: '轨迹类别', width: 92, align: 'center', slotName: 'yjLylx' },
|
||||
{ prop: 'yjDz', label: '活动发生地' },
|
||||
{ prop: 'ssbm', label: '接收单位' },
|
||||
{ prop: 'yjCs', label: '次数', width: 60, align: 'center' },
|
||||
{ label: '操作', width: 180, slotName: 'operation' },
|
||||
{ label: '超时状态', width: 80, align: 'center', slotName: 'cszt' }
|
||||
|
||||
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||
{ label: "预警状态", width: 86, align: "center", slotName: "status" },
|
||||
{ prop: "yjSj", label: "预警时间", width: 150 },
|
||||
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
||||
{ prop: "yjRysfzh", label: "身份证号", width: 158 },
|
||||
{ label: "性别", width: 56, align: "center", slotName: "xbdm" },
|
||||
{ prop: "nl", label: "年龄", width: 56, align: "center" },
|
||||
{ label: "预警级别", width: 88, align: "center", slotName: "yjJb" },
|
||||
{ label: "人员类别", width: 90, align: "center", slotName: "bqdl" },
|
||||
{ prop: "yjbqmc", label: "人员细类", width: 92 },
|
||||
{ label: "轨迹类别", width: 92, align: "center", slotName: "yjLylx" },
|
||||
{ prop: "yjDz", label: "活动发生地" },
|
||||
{ prop: "ssbm", label: "接收单位" },
|
||||
{ prop: "yjCs", label: "次数", width: 60, align: "center" },
|
||||
{ label: "操作", width: 180, slotName: "operation" },
|
||||
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" }
|
||||
]
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
tabHeightFn();
|
||||
getList()
|
||||
getList();
|
||||
});
|
||||
|
||||
// 搜索
|
||||
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] : ''
|
||||
queryFrom.value = { ...val, yjJb: val.yjJb?.join(",") || "" };
|
||||
queryFrom.value.startTime = val.startTime ? val.startTime[0] : "";
|
||||
queryFrom.value.endTime = val.startTime ? val.startTime[1] : "";
|
||||
// queryFrom.value.sfglyj = val.sfglyj?.join(',') || ''
|
||||
// queryFrom.value.sfgz = val.sfgz?.join(',') || ''
|
||||
// queryFrom.value.sfzp = val.sfzp?.join(',') || ''
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
const changeNo = (val) => {
|
||||
pageData.pageConfiger.pageCurrent = val;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
const changeSize = (val) => {
|
||||
pageData.pageConfiger.pageSize = val;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
const getList = () => {
|
||||
pageData.tableConfiger.loading = true;
|
||||
const promes = {
|
||||
...queryFrom.value,
|
||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||
pageSize: pageData.pageConfiger.pageSize,
|
||||
yjlb: '03'
|
||||
}
|
||||
yjlb: "03"
|
||||
};
|
||||
delete promes.times;
|
||||
qcckPost(promes, '/mosty-gsxt/tbYjxx/getPageList').then((res) => {
|
||||
qcckPost(promes, "/mosty-gsxt/tbYjxx/getPageList")
|
||||
.then((res) => {
|
||||
pageData.total = res.total || 0;
|
||||
pageData.tableConfiger.loading = false;
|
||||
pageData.tableData = res.records || []
|
||||
}).catch(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
pageData.tableData = res.records || [];
|
||||
})
|
||||
}
|
||||
.catch(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
});
|
||||
};
|
||||
|
||||
const pushWarning = (val) => {
|
||||
warningShow.value = true;
|
||||
dataList.value = val;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
const failWarning = (val) => {
|
||||
let ids = [val.id]
|
||||
qcckPost({ ids }, '/mosty-gsxt/tbYjxx/yjbc').then((res) => {
|
||||
let ids = [val.id];
|
||||
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/yjbc")
|
||||
.then((res) => {
|
||||
proxy.$message({ type: "success", message: "成功" });
|
||||
getList();
|
||||
}).catch(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$message({ type: "error", message: "失败" });
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
/** 选中项 */
|
||||
const selectRows = ref([])
|
||||
const selectRows = ref([]);
|
||||
const handleChooseData = (val) => {
|
||||
selectRows.value = val
|
||||
}
|
||||
selectRows.value = val;
|
||||
};
|
||||
const exportExl = () => {
|
||||
const titleObj = {
|
||||
czzt_name: "状态",
|
||||
index: "序号",
|
||||
czzt_name: "预警状态",
|
||||
yjSj: "预警时间",
|
||||
yjRyxm: "人员姓名",
|
||||
yjRysfzh: "身份证号",
|
||||
xbdm_name: "性别",
|
||||
nl: "年龄",
|
||||
yjJb_name: "预警级别",
|
||||
bqdl_name: "人员类别",
|
||||
yjbqmc: "细类",
|
||||
yjbqmc: "人员细类",
|
||||
yjLylx_name: "轨迹类别",
|
||||
yjDz: "活动发生地",
|
||||
ssbm: "接收单位",
|
||||
yjCs: "预警次数",
|
||||
}
|
||||
yjCs: "次数",
|
||||
cszt_name: "超时状态"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
||||
const data = needArr.map(item => {
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item, index) => {
|
||||
return {
|
||||
...item,
|
||||
index: index + 1,
|
||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||
yjJb_name: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||
bqdl_name: getMultiDictVal(item.bqdl, D_GS_QLZDRLX),
|
||||
}
|
||||
})
|
||||
exportExlByObj(titleObj, data, '七类重点')
|
||||
}
|
||||
xbdm_name: getMultiDictVal(item.xbdm, D_BZ_XB),
|
||||
yjLylx_name: getMultiDictVal(item.yjLylx, D_GS_ZDR_GJLB),
|
||||
cszt_name: getMultiDictVal(item.cszt, D_GS_CSZT),
|
||||
...item
|
||||
};
|
||||
});
|
||||
exportExlByObj(titleObj, data, "七类重点");
|
||||
};
|
||||
// 批量签收
|
||||
const handleQs = () => {
|
||||
if (selectRows.value?.length === 0) return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||
let wqs = selectRows.value.filter(item => item.czzt == '01');
|
||||
if (wqs.length == 0) return proxy.$message({ type: "warning", message: "数据都已签收,请选择未签收的数据" });
|
||||
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(() => {
|
||||
if (selectRows.value?.length === 0)
|
||||
return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||
let wqs = selectRows.value.filter((item) => item.czzt == "01");
|
||||
if (wqs.length == 0)
|
||||
return proxy.$message({
|
||||
type: "warning",
|
||||
message: "数据都已签收,请选择未签收的数据"
|
||||
});
|
||||
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(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$message({ type: "error", message: "失败" });
|
||||
});
|
||||
}).catch(() => { });
|
||||
}
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
// 详情
|
||||
const dataPres = ref({})
|
||||
const dataPres = ref({});
|
||||
const particularsShow = ref(false);
|
||||
const particularsOpen = (row) => {
|
||||
dataPres.value = row
|
||||
dataPres.value = row;
|
||||
|
||||
particularsShow.value = true;
|
||||
}
|
||||
};
|
||||
// 单条签收
|
||||
const handleQsSingle = (row) => {
|
||||
if (row.czzt == '02') return proxy.$message({ type: "warning", message: "数据已签收,无需重复签收" });
|
||||
proxy.$confirm('确认要签收该条预警数据吗?', "警告", { type: "warning" }).then(() => {
|
||||
qcckPost({ ids: [row.id] }, '/mosty-gsxt/tbYjxx/batchQs').then(() => {
|
||||
const handleQsFk = (row, type) => {
|
||||
if (type === "反馈") {
|
||||
emitter.emit("openFkDialog", { id: row.id, type });
|
||||
} else {
|
||||
if (row.czzt == "02")
|
||||
return proxy.$message({
|
||||
type: "warning",
|
||||
message: "数据已签收,无需重复签收"
|
||||
});
|
||||
proxy
|
||||
.$confirm("确认要签收该条预警数据吗?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
qcckPost({ ids: [row.id] }, "/mosty-gsxt/tbYjxx/batchQs")
|
||||
.then(() => {
|
||||
proxy.$message({ type: "success", message: "成功" });
|
||||
getList();
|
||||
}).catch(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$message({ type: "error", message: "失败" });
|
||||
});
|
||||
}).catch(() => { });
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
};
|
||||
// 关注
|
||||
const payAttention = (row) => {
|
||||
let promes = {}
|
||||
if (row.sfgz == '1') {
|
||||
promes.sfgz = '0'
|
||||
promes.msg = '取消关注'
|
||||
let promes = {};
|
||||
if (row.sfgz == "1") {
|
||||
promes.sfgz = "0";
|
||||
promes.msg = "取消关注";
|
||||
} else {
|
||||
promes.sfgz = '1'
|
||||
promes.msg = '关注'
|
||||
promes.sfgz = "1";
|
||||
promes.msg = "关注";
|
||||
}
|
||||
|
||||
proxy.$confirm('确认要关注该条预警数据吗?', "警告", { type: "warning" }).then(() => {
|
||||
qcckPost({ sfgz: promes.sfgz, id: row.id }, '/mosty-gsxt/tbYjxx/yjgz').then(() => {
|
||||
proxy
|
||||
.$confirm("确认要关注该条预警数据吗?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
qcckPost({ sfgz: promes.sfgz, id: row.id }, "/mosty-gsxt/tbYjxx/yjgz")
|
||||
.then(() => {
|
||||
proxy.$message({ type: "success", message: `${promes.msg}成功` });
|
||||
getList();
|
||||
}).catch(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$message({ type: "error", message: `${promes.msg}失败` });
|
||||
});
|
||||
}).catch(() => { });
|
||||
}
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
// 人数计算
|
||||
const searchDom = ref(null)
|
||||
const dataConut = ref(0)
|
||||
const searchOpen = ref(false)
|
||||
const searchDom = ref(null);
|
||||
const dataConut = ref(0);
|
||||
const searchOpen = ref(false);
|
||||
const countPeople = () => {
|
||||
|
||||
const promes = {
|
||||
...searchDom.value.formState,
|
||||
yjJb: searchDom.value.formState.yjJb?.join(',') || '',
|
||||
startTime: searchDom.value.formState.startTime ? searchDom.value.formState.startTime[0] : '',
|
||||
endTime: searchDom.value.formState.endTime ? searchDom.value.formState.endTime[1] : '',
|
||||
}
|
||||
qcckPost(promes, '/mosty-gsxt/tbYjxx/bkyjQctj').then((res) => {
|
||||
dataConut.value = res || 0
|
||||
searchOpen.value = true
|
||||
}).catch(() => {
|
||||
yjJb: searchDom.value.formState.yjJb?.join(",") || "",
|
||||
startTime: searchDom.value.formState.startTime
|
||||
? searchDom.value.formState.startTime[0]
|
||||
: "",
|
||||
endTime: searchDom.value.formState.endTime
|
||||
? searchDom.value.formState.endTime[1]
|
||||
: ""
|
||||
};
|
||||
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 = () => {
|
||||
console.log("xxxxxxx");
|
||||
|
||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
window.onresize = function () { tabHeightFn(); };
|
||||
pageData.tableHeight =
|
||||
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
window.onresize = function () {
|
||||
tabHeightFn();
|
||||
};
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@ -2,37 +2,79 @@
|
||||
<div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox" class="mt10">
|
||||
<QueryFormPanel v-model="listQuery" :fields="searchConfiger" @search='onSearch'>
|
||||
<QueryFormPanel
|
||||
v-model="listQuery"
|
||||
:fields="searchConfiger"
|
||||
@search="onSearch"
|
||||
>
|
||||
<template #but>
|
||||
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
|
||||
<el-button type="primary" size="small" @click="handleQs">签收</el-button>
|
||||
<el-button type="primary" @click="exportExl" size="small"
|
||||
>导出</el-button
|
||||
>
|
||||
<el-button type="primary" size="small" @click="handleQs"
|
||||
>签收</el-button
|
||||
>
|
||||
</template>
|
||||
</QueryFormPanel>
|
||||
</div>
|
||||
|
||||
<!-- 表格 -->
|
||||
<div :style="{ height: (pageData.tableHeight + 40) + 'px' }" class="bgTable">
|
||||
<WarnDataTable :loading="pageData.tableConfiger.loading" :tableHeight="pageData.tableHeight"
|
||||
:data="pageData.tableData" :columns="pageData.tableColumn" table-class="warn-table"
|
||||
@selectionChange="handleChooseData">
|
||||
<div :style="{ height: pageData.tableHeight + 40 + 'px' }" class="bgTable">
|
||||
<WarnDataTable
|
||||
:loading="pageData.tableConfiger.loading"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:data="pageData.tableData"
|
||||
:columns="pageData.tableColumn"
|
||||
table-class="warn-table"
|
||||
@selectionChange="handleChooseData"
|
||||
>
|
||||
<template #yjTp="{ row }">
|
||||
<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 src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
||||
<img
|
||||
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>
|
||||
<el-image v-else style="width: 30px; height:30px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
|
||||
show-progress>
|
||||
<el-image
|
||||
v-else
|
||||
style="width: 30px; height: 30px"
|
||||
:src="row.yjTp"
|
||||
:preview-src-list="[row.yjTp]"
|
||||
show-progress
|
||||
>
|
||||
<template #error>
|
||||
<div class="image-slot error">
|
||||
<img 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 />
|
||||
<img
|
||||
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>
|
||||
</template>
|
||||
</el-image>
|
||||
</template>
|
||||
<template #czzt="{ row }">
|
||||
<DictTag :value="row.czzt" :color="row.czzt === '01' ? '#ff2424' : '#1d72e8'" :tag="false"
|
||||
:options="D_GSXT_YJXX_CZZT" />
|
||||
<DictTag
|
||||
:value="row.czzt"
|
||||
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
|
||||
:tag="false"
|
||||
:options="D_GSXT_YJXX_CZZT"
|
||||
/>
|
||||
</template>
|
||||
<template #yjRyxm="{ row }">
|
||||
{{ row.yjLx == 2 ? row.yjClcph : row.yjRyxm }}
|
||||
@ -42,7 +84,12 @@
|
||||
</template>
|
||||
<template #yjJb="{ row }">
|
||||
<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>
|
||||
</template>
|
||||
<template #bkly="{ row }">
|
||||
@ -51,88 +98,164 @@
|
||||
<template #bkczyq="{ row }">
|
||||
<DictTag :value="row.bkczyq" :tag="false" :options="D_GS_BK_CZYQ" />
|
||||
</template>
|
||||
<template #xsd="{ row }">
|
||||
{{ row.xsd }}%
|
||||
</template>
|
||||
<template #xsd="{ row }"> {{ row.xsd }}% </template>
|
||||
<template #yjLylx="{ row }">
|
||||
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
|
||||
</template>
|
||||
<template #yjLx="{ row }">
|
||||
{{ row.yjLx == 2 ? '车辆' : '人员' }}
|
||||
{{ row.yjLx == 2 ? "车辆" : "人员" }}
|
||||
</template>
|
||||
<template #cszt="{ row }">
|
||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||
</template>
|
||||
<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="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="danger" @click="delDictItem(row.id)">转会商</span> -->
|
||||
<span class="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</span>
|
||||
<span class="success" @click="handleQsFk(row, '反馈')"
|
||||
v-else-if="row.czzt == '02' && permission_sfqs">反馈</span>
|
||||
<span
|
||||
class="success"
|
||||
@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 class="primary" @click="openBox(row)">详情</span>
|
||||
<span class="primary" @click="pushWarning(row)">指派</span>
|
||||
</div>
|
||||
</template>
|
||||
</WarnDataTable>
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"></Pages>
|
||||
}"
|
||||
></Pages>
|
||||
</div>
|
||||
</div>
|
||||
<Detail ref="detailRef" />
|
||||
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
||||
<FkDialog @change="getList" lx="04" />
|
||||
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
|
||||
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
|
||||
:tacitly="tacitly" />
|
||||
<Information
|
||||
v-model="showDialog"
|
||||
title="发送指令"
|
||||
@submit="submit"
|
||||
@close="closeFszl"
|
||||
>
|
||||
<SemdFqzl
|
||||
ref="semdFqzlRef"
|
||||
:itemData="itemData"
|
||||
@handleClose="handleClose"
|
||||
identification="yj"
|
||||
:tacitly="tacitly"
|
||||
/>
|
||||
</Information>
|
||||
<AddFrom ref="addModelRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }" />
|
||||
<AddFrom
|
||||
ref="addModelRef"
|
||||
:dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }"
|
||||
/>
|
||||
<!-- 处置建议 -->
|
||||
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
|
||||
|
||||
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz"
|
||||
:roleIds="roleIds" />
|
||||
<ChooseJf
|
||||
v-model="chooseJfShow"
|
||||
titleValue="选择系数"
|
||||
:Single="false"
|
||||
:chooseJfBh="chooseJfBh"
|
||||
url="/yjzxZhyj/sjxspz"
|
||||
:roleIds="roleIds"
|
||||
/>
|
||||
<!-- <Pagination v-model="paginationOpen" /> -->
|
||||
<Pagination 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 }" />
|
||||
<Pagination
|
||||
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>
|
||||
|
||||
<script setup>
|
||||
import Czjy from './components/czjy.vue'
|
||||
import Czjy from "./components/czjy.vue";
|
||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
import Searchs from "@/components/aboutTable/Search.vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Items from "./item/items.vue";
|
||||
import ChooseJf from '@/components/ChooseList/ChooseJf/index.vue'
|
||||
import { tbYjxxGetZbtj, tbGsxtBqzhSelectList, yjzxZhyjSelectList } from '@/api/yj.js'
|
||||
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
|
||||
import ChooseJf from "@/components/ChooseList/ChooseJf/index.vue";
|
||||
import {
|
||||
tbYjxxGetZbtj,
|
||||
tbGsxtBqzhSelectList,
|
||||
yjzxZhyjSelectList
|
||||
} from "@/api/yj.js";
|
||||
import HolographicArchive from "@/views/home/components/holographicArchive.vue";
|
||||
import Information from "@/views/home/model/information.vue";
|
||||
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
|
||||
import SemdFqzl from "@/components/instructionHasBeen/sendFqzl.vue";
|
||||
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
|
||||
import AddFrom from "./components/addFrom.vue";
|
||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||
import Detail from './components/detail.vue'
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||
import { getMultiDictVal } from "@/utils/dict.js"
|
||||
import Detail from "./components/detail.vue";
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||
import { getMultiDictVal } from "@/utils/dict.js";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
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 { bqYs } from '@/utils/tools.js'
|
||||
const permission_sfqs = ref(false)
|
||||
const roleCode = ref(false)
|
||||
import { bqYs } from "@/utils/tools.js";
|
||||
const permission_sfqs = ref(false);
|
||||
const roleCode = ref(false);
|
||||
const searchBox = ref();
|
||||
const czjyRef = ref()
|
||||
const czjyRef = ref();
|
||||
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 } =
|
||||
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 {
|
||||
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({
|
||||
@ -141,28 +264,116 @@ const dict = ref({
|
||||
D_BZ_YJLY,
|
||||
D_BZ_YJJB,
|
||||
D_BZ_YJLX
|
||||
})
|
||||
import { holographicProfileJump } from "@/utils/tools.js"
|
||||
});
|
||||
import { holographicProfileJump } from "@/utils/tools.js";
|
||||
|
||||
// 搜索配置
|
||||
const searchConfiger = ref([
|
||||
{ label: "布控开始时间", prop: 'bkkssj', showType: "date", placeholder: "请选择布控开始时间" },
|
||||
{ label: "布控结束时间", prop: 'bkjssj', showType: "date", placeholder: "请选择布控结束时间" },
|
||||
{ label: "预警时间", prop: 'startTime', showType: "datetimerange", 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: "bkkssj",
|
||||
showType: "date",
|
||||
placeholder: "请选择布控开始时间"
|
||||
},
|
||||
{
|
||||
label: "布控结束时间",
|
||||
prop: "bkjssj",
|
||||
showType: "date",
|
||||
placeholder: "请选择布控结束时间"
|
||||
},
|
||||
{
|
||||
label: "预警时间",
|
||||
prop: "startTime",
|
||||
showType: "datetimerange",
|
||||
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: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
|
||||
// { label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
|
||||
@ -179,7 +390,7 @@ const pageData = reactive({
|
||||
rowHieght: 61,
|
||||
showSelectType: "checkBox",
|
||||
loading: false,
|
||||
haveControls: true,
|
||||
haveControls: true
|
||||
},
|
||||
total: 0,
|
||||
pageConfiger: {
|
||||
@ -188,29 +399,29 @@ const pageData = reactive({
|
||||
},
|
||||
controlsWidth: 160,
|
||||
tableColumn: [
|
||||
{ type: 'index', label: '序号', width: 55, align: 'center' },
|
||||
{ label: '预警状态', width: 80, align: 'center', slotName: 'czzt' },
|
||||
{ prop: 'yjSj', label: '预警时间', width: 80, align: 'center' },
|
||||
{ prop: 'bkqymc', label: '区域名称', width: 80, align: 'center' },
|
||||
{ label: "比中", slotName: 'yjLx', width: 60, align: 'center' },
|
||||
{ label: '人员姓名', slotName: 'yjRyxm', width: 80, align: 'center' },
|
||||
{ prop: 'yjRysfzh', label: '身份证号', width: 80, align: 'center' },
|
||||
{ label: '性别', width: 56, align: 'center', slotName: 'xbdm' },
|
||||
{ prop: 'nl', label: '年龄', width: 56, align: 'center' },
|
||||
{ label: '预警级别', width: 88, align: 'center', slotName: 'yjJb' },
|
||||
{ label: "布控单位", prop: "gkbmmc", align: 'center' },
|
||||
{ label: "布控来源", align: 'center', slotName: 'bkly', width: 70 },
|
||||
{ prop: 'bkfw', label: "布控范围", align: 'center', width: 70 },
|
||||
{ prop: 'bkkssj', label: "布控开始时间", align: 'center' },
|
||||
{ prop: 'bkjssj', label: "布控结束时间", align: 'center' },
|
||||
{ label: "处置要求", width: 70, slotName: 'bkczyq', align: 'center' },
|
||||
{ label: "相似度", slotName: "xsd", align: 'center', width: 50 },
|
||||
{ label: "预警内容", prop: "yjNr", align: 'center' },
|
||||
{ label: "所属部门", prop: "ssbm", align: 'center' },
|
||||
{ label: "数据来源", slotName: "yjLylx", align: 'center' },
|
||||
{ label: '操作', width: 180, slotName: 'operation' },
|
||||
{ label: '超时状态', width: 80, align: 'center', slotName: 'cszt' },
|
||||
{ label: "在控状态", width: 70, align: 'center', slotName: "zkzt" },
|
||||
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||
{ label: "预警状态", width: 80, align: "center", slotName: "czzt" },
|
||||
{ prop: "yjSj", label: "预警时间", width: 80, align: "center" },
|
||||
{ prop: "bkqymc", label: "区域名称", width: 80, align: "center" },
|
||||
{ label: "比中", slotName: "yjLx", width: 60, align: "center" },
|
||||
{ label: "人员姓名", slotName: "yjRyxm", width: 80, align: "center" },
|
||||
{ prop: "yjRysfzh", label: "身份证号", width: 80, align: "center" },
|
||||
{ label: "性别", width: 56, align: "center", slotName: "xbdm" },
|
||||
{ prop: "nl", label: "年龄", width: 56, align: "center" },
|
||||
{ label: "预警级别", width: 88, align: "center", slotName: "yjJb" },
|
||||
{ label: "布控单位", prop: "gkbmmc", align: "center" },
|
||||
{ label: "布控来源", align: "center", slotName: "bkly", width: 70 },
|
||||
{ prop: "bkfw", label: "布控范围", align: "center", width: 70 },
|
||||
{ prop: "bkkssj", label: "布控开始时间", align: "center" },
|
||||
{ prop: "bkjssj", label: "布控结束时间", align: "center" },
|
||||
{ label: "处置要求", width: 70, slotName: "bkczyq", align: "center" },
|
||||
{ label: "相似度", slotName: "xsd", align: "center", width: 50 },
|
||||
{ label: "预警内容", prop: "yjNr", align: "center" },
|
||||
{ label: "所属部门", prop: "ssbm", align: "center" },
|
||||
{ label: "数据来源", slotName: "yjLylx", align: "center" },
|
||||
{ label: "操作", width: 180, slotName: "operation" },
|
||||
{ label: "超时状态", width: 80, align: "center", slotName: "cszt" },
|
||||
{ label: "在控状态", width: 70, align: "center", slotName: "zkzt" }
|
||||
]
|
||||
});
|
||||
|
||||
@ -225,24 +436,23 @@ onMounted(() => {
|
||||
// roleCode.value = obj ? true : false;
|
||||
tabHeightFn();
|
||||
getList();
|
||||
gettbGsxtBqglSelectList()
|
||||
gettbGsxtBqglSelectList();
|
||||
});
|
||||
|
||||
|
||||
const handleCzjy = (row) => {
|
||||
czjyRef.value.init(row)
|
||||
}
|
||||
czjyRef.value.init(row);
|
||||
};
|
||||
|
||||
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;
|
||||
getList();
|
||||
};
|
||||
|
||||
const reset = () => {
|
||||
delete queryFrom.value.ksfz
|
||||
delete queryFrom.value.jsfz
|
||||
}
|
||||
delete queryFrom.value.ksfz;
|
||||
delete queryFrom.value.jsfz;
|
||||
};
|
||||
|
||||
const changeNo = (val) => {
|
||||
pageData.pageConfiger.pageCurrent = val;
|
||||
@ -261,121 +471,121 @@ const getList = () => {
|
||||
...queryFrom.value,
|
||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||
pageSize: pageData.pageConfiger.pageSize
|
||||
}
|
||||
qcckPost({ promes }, "/mosty-gsxt/tbYjxx/getQybkPageList").then((res) => {
|
||||
};
|
||||
qcckPost({ promes }, "/mosty-gsxt/tbYjxx/getQybkPageList")
|
||||
.then((res) => {
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total || 0;
|
||||
pageData.tableConfiger.loading = false;
|
||||
}).catch(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
});
|
||||
};
|
||||
const bqLbData = ref({
|
||||
bqXl: []
|
||||
})
|
||||
});
|
||||
const gettbGsxtBqglSelectList = (val) => {
|
||||
tbGsxtBqzhSelectList({}).then((res) => {
|
||||
bqLbData.value.bqXl = res.map(item => {
|
||||
bqLbData.value.bqXl =
|
||||
res.map((item) => {
|
||||
return {
|
||||
label: item.bqMc,
|
||||
value: item.bqDm
|
||||
}
|
||||
}) || []
|
||||
})
|
||||
}
|
||||
|
||||
};
|
||||
}) || [];
|
||||
});
|
||||
};
|
||||
|
||||
// 查看详情
|
||||
const detailRef = ref()
|
||||
const detailRef = ref();
|
||||
const handleClick = (row) => {
|
||||
detailRef.value.init(row)
|
||||
}
|
||||
const assessShow = ref(false)
|
||||
detailRef.value.init(row);
|
||||
};
|
||||
const assessShow = ref(false);
|
||||
/** 选中项 */
|
||||
const selectRows = ref([])
|
||||
const dataList = ref()
|
||||
const selectRows = ref([]);
|
||||
const dataList = ref();
|
||||
const pushAssess = (val) => {
|
||||
return holographicProfileJump(val.yjlx, val) // 全息档案跳转
|
||||
return holographicProfileJump(val.yjlx, val); // 全息档案跳转
|
||||
// assessShow.value = true;
|
||||
// dataList.value = val;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// 发送指令
|
||||
const showDialog = ref(false)
|
||||
const itemData = ref()
|
||||
const showDialog = ref(false);
|
||||
const itemData = ref();
|
||||
const showDetail = (item) => {
|
||||
showDialog.value = true;
|
||||
itemData.value = item
|
||||
}
|
||||
itemData.value = item;
|
||||
};
|
||||
const handleClose = () => {
|
||||
showDialog.value = false;
|
||||
}
|
||||
const semdFqzlRef = ref()
|
||||
};
|
||||
const semdFqzlRef = ref();
|
||||
const tacitly = {
|
||||
title: 'yjbt',
|
||||
instructionContent: 'yjnr'
|
||||
}
|
||||
title: "yjbt",
|
||||
instructionContent: "yjnr"
|
||||
};
|
||||
const submit = () => {
|
||||
semdFqzlRef.value.getsendFqzl()
|
||||
}
|
||||
semdFqzlRef.value.getsendFqzl();
|
||||
};
|
||||
|
||||
const closeFszl = () => {
|
||||
semdFqzlRef.value.close()
|
||||
}
|
||||
semdFqzlRef.value.close();
|
||||
};
|
||||
|
||||
// 处理签收
|
||||
const handleQsFk = (val, type) => {
|
||||
switch (type) {
|
||||
case '签收':
|
||||
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
||||
case "签收":
|
||||
proxy
|
||||
.$confirm("是否确定要签收?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxZhyj/yjqs").then(() => {
|
||||
val.czzt = '02'
|
||||
getList()
|
||||
val.czzt = "02";
|
||||
getList();
|
||||
proxy.$message({ type: "success", message: "签收成功" });
|
||||
});
|
||||
})
|
||||
});
|
||||
break;
|
||||
case '反馈':
|
||||
case '查看反馈':
|
||||
case "反馈":
|
||||
case "查看反馈":
|
||||
emitter.emit("openFkDialog", { id: val.id, type });
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
const addModelRef = ref(null)
|
||||
};
|
||||
const addModelRef = ref(null);
|
||||
const openAddModel = (row) => {
|
||||
console.log(row);
|
||||
|
||||
addModelRef.value.init(row)
|
||||
}
|
||||
|
||||
addModelRef.value.init(row);
|
||||
};
|
||||
|
||||
// 选择系数
|
||||
const chooseJfShow = ref(false)
|
||||
const chooseJfBh = ref()
|
||||
const roleIds = ref()
|
||||
const chooseJfShow = ref(false);
|
||||
const chooseJfBh = ref();
|
||||
const roleIds = ref();
|
||||
const chooseJfFun = (val) => {
|
||||
chooseJfBh.value = val.id
|
||||
yjzxZhyjSelectList(val.id).then(res => {
|
||||
roleIds.value = res.sjxspzList.map(item => item.xsid)
|
||||
chooseJfShow.value = true
|
||||
})
|
||||
}
|
||||
|
||||
chooseJfBh.value = val.id;
|
||||
yjzxZhyjSelectList(val.id).then((res) => {
|
||||
roleIds.value = res.sjxspzList.map((item) => item.xsid);
|
||||
chooseJfShow.value = true;
|
||||
});
|
||||
};
|
||||
|
||||
// 表格高度计算
|
||||
const tabHeightFn = () => {
|
||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
pageData.tableHeight =
|
||||
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
window.onresize = function () {
|
||||
tabHeightFn();
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
const handleChooseData = (val) => {
|
||||
selectRows.value = val
|
||||
}
|
||||
selectRows.value = val;
|
||||
};
|
||||
const exportExl = () => {
|
||||
const titleObj = {
|
||||
yjRyxm: "姓名",
|
||||
@ -389,46 +599,59 @@ const exportExl = () => {
|
||||
yjbqmc: "预警标签",
|
||||
yjSj: "预警时间",
|
||||
czzt_cname: "处置状态",
|
||||
ssbm: "所属部门",
|
||||
}
|
||||
ssbm: "所属部门"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
||||
const data = needArr.map(item => {
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
bqys_cname: getMultiDictVal(item.yjLx, D_BZ_YJLX),
|
||||
czzt_cname: getMultiDictVal(item.yjLylx, D_BZ_YJLY),
|
||||
bqys_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||
}
|
||||
})
|
||||
exportExlByObj(titleObj, data, '组合预警')
|
||||
|
||||
}
|
||||
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT)
|
||||
};
|
||||
});
|
||||
exportExlByObj(titleObj, data, "组合预警");
|
||||
};
|
||||
|
||||
const handleQs = () => {
|
||||
if (selectRows.value?.length === 0) return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||
let wqs = selectRows.value.filter(item => item.czzt == '01');
|
||||
if (wqs.length == 0) return proxy.$message({ type: "warning", message: "数据都已签收,请选择未签收的数据" });
|
||||
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(() => {
|
||||
if (selectRows.value?.length === 0)
|
||||
return proxy.$message({ type: "warning", message: "请选择要签收的预警" });
|
||||
let wqs = selectRows.value.filter((item) => item.czzt == "01");
|
||||
if (wqs.length == 0)
|
||||
return proxy.$message({
|
||||
type: "warning",
|
||||
message: "数据都已签收,请选择未签收的数据"
|
||||
});
|
||||
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(() => {
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$message({ type: "error", message: "失败" });
|
||||
});
|
||||
}).catch(() => { });
|
||||
}
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
// 详情
|
||||
const paginationOpen = ref(false)
|
||||
const dataPres = ref()
|
||||
const paginationOpen = ref(false);
|
||||
const dataPres = ref();
|
||||
const openBox = (val) => {
|
||||
dataPres.value = val
|
||||
paginationOpen.value = true
|
||||
}
|
||||
dataPres.value = val;
|
||||
paginationOpen.value = true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -2,18 +2,33 @@
|
||||
<div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox" class="mt10 mb10">
|
||||
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
|
||||
<Searchs
|
||||
:searchArr="searchConfiger"
|
||||
@submit="onSearch"
|
||||
:key="pageData.keyCount"
|
||||
>
|
||||
</Searchs>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="margTop">
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||
<MyTable
|
||||
:tableData="pageData.tableData"
|
||||
:tableColumn="pageData.tableColumn"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount"
|
||||
:tableConfiger="pageData.tableConfiger"
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
>
|
||||
<template #sfcs="{ row }">
|
||||
<span style="color: #0072ff;">{{ row.sfcs }}</span>
|
||||
<span style="color: #0072ff">{{ row.sfcs }}</span>
|
||||
</template>
|
||||
<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 #yjlx="{ row }">
|
||||
<DictTag :value="row.yjlx" :tag="false" :options="D_GS_ZDQT_YJLB" />
|
||||
@ -22,13 +37,21 @@
|
||||
<DictTag :value="row.yjlb" :options="D_BZ_YJLX" />
|
||||
</template>
|
||||
<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 #yjtp="{ row }">
|
||||
<template v-if="!row.yjtp || row.yjtp.includes('baidu')">
|
||||
<img src="@/assets/images/car.png" width="30" height="30" />
|
||||
</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>
|
||||
<div class="image-slot error">
|
||||
<img src="@/assets/images/car.png" width="30" height="30" />
|
||||
@ -46,10 +69,15 @@
|
||||
<!-- <el-link type="primary" @click="openAddFrom(row)">详情</el-link> -->
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"></Pages>
|
||||
}"
|
||||
></Pages>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <Detail ref="detailRef" /> -->
|
||||
@ -60,35 +88,66 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { holographicProfileJump } from "@/utils/tools.js"
|
||||
import { holographicProfileJump } from "@/utils/tools.js";
|
||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
import Searchs from "@/components/aboutTable/Search.vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import 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 { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
|
||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||
import { yjzxSfyjSelectList } from "@/api/yj.js";
|
||||
import { tbGsxtBqglSelectList } from '@/api/zdr'
|
||||
import { tbGsxtBqglSelectList } from "@/api/zdr";
|
||||
// import Detail from './components/detail.vue'
|
||||
import { watch } from "vue";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
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([
|
||||
// { label: "姓名", prop: 'ryxm', placeholder: "请输入姓名", showType: "input" },
|
||||
// { label: "身份证号码", prop: 'rysfzh', placeholder: "请输入身份证号码", showType: "input" },
|
||||
// { 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: "预警类别", prop: 'yjlbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true },
|
||||
{ label: "时间", prop: 'times', showType: "datetimerange" },
|
||||
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
|
||||
{
|
||||
label: "预警类型",
|
||||
prop: "yjlxList",
|
||||
placeholder: "请选择预警类型",
|
||||
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: [] },
|
||||
]);
|
||||
|
||||
@ -111,9 +170,9 @@ const pageData = reactive({
|
||||
}, //分页
|
||||
controlsWidth: 100, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ label: "身份分值", prop: "sffz", showSolt: true },
|
||||
{ label: "总分值", prop: "sffz", showSolt: true },
|
||||
// { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 },
|
||||
{ label: "预警时间", prop: "yjsj",},
|
||||
{ label: "预警时间", prop: "yjsj" },
|
||||
{ label: "姓名", prop: "ryxm", showOverflowTooltip: true },
|
||||
// { label: "车牌号", prop: "cph", showOverflowTooltip: true },
|
||||
// { label: "号牌类型", prop: "hplx", showOverflowTooltip: true },
|
||||
@ -121,12 +180,17 @@ const pageData = reactive({
|
||||
// { label: "部门名称", prop: "ssbm", showOverflowTooltip: true },
|
||||
// { label: "预警地址", prop: "yjdz", 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: "yjlx", showSolt: true },
|
||||
// { label: "身份次数", prop: "sfcs", showSlot: true },
|
||||
|
||||
{ label: "预警内容", prop: "yjnr", showOverflowTooltip: true },
|
||||
{ label: "预警内容", prop: "yjnr", showOverflowTooltip: true }
|
||||
]
|
||||
});
|
||||
// yjlb // 预警类别 D_BZ_YJLX 1人像 2车辆。。
|
||||
@ -138,22 +202,24 @@ onMounted(() => {
|
||||
searchConfiger.value[0].options = D_GS_ZDQT_YJLB;
|
||||
searchConfiger.value[1].options = D_BZ_YJJB;
|
||||
searchConfiger.value[2].options = D_BZ_YJLX;
|
||||
getList()
|
||||
getList();
|
||||
});
|
||||
|
||||
const changeNo = (val) => {
|
||||
pageData.pageConfiger.pageCurrent = val;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
const changeSize = (val) => {
|
||||
pageData.pageConfiger.pageSize = val;
|
||||
getList()
|
||||
}
|
||||
|
||||
const pushAssess = (val) => {
|
||||
return holographicProfileJump(val.yjlx,val) // 全息档案跳转
|
||||
}
|
||||
getList();
|
||||
};
|
||||
|
||||
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 = () => {
|
||||
@ -162,50 +228,52 @@ const getList = () => {
|
||||
...queryFrom.value,
|
||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||
pageSize: pageData.pageConfiger.pageSize
|
||||
}
|
||||
};
|
||||
delete promes.times;
|
||||
qcckPost(promes, '/mosty-gsxt/tbYjxx/selectYjxxFzPage').then((res) => {
|
||||
qcckPost(promes, "/mosty-gsxt/tbYjxx/selectYjxxFzPage")
|
||||
.then((res) => {
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total;
|
||||
pageData.tableConfiger.loading = false;
|
||||
}).catch(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
})
|
||||
}
|
||||
.catch(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
});
|
||||
};
|
||||
|
||||
// 处理签收
|
||||
const handleToImportantMan = (val, type) => {
|
||||
proxy.$confirm("是否确定转重点人?", "警告", { type: "warning" }).then(() => {
|
||||
qcckGet({}, `/mosty-gsxt/tbYjxx/yjToZdry/${val.id}`).then(() => {
|
||||
proxy.$message({ type: "success", message: "转重点人成功" });
|
||||
getList()
|
||||
getList();
|
||||
});
|
||||
})
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
// 发送指令
|
||||
const showDialog = ref(false)
|
||||
const itemData = ref()
|
||||
const showDialog = ref(false);
|
||||
const itemData = ref();
|
||||
|
||||
const semdFqzlRef = ref()
|
||||
const semdFqzlRef = ref();
|
||||
const tacitly = {
|
||||
title: 'jfbt',
|
||||
instructionContent: 'jfnr'
|
||||
}
|
||||
title: "jfbt",
|
||||
instructionContent: "jfnr"
|
||||
};
|
||||
const submit = () => {
|
||||
semdFqzlRef.value.getsendFqzl()
|
||||
}
|
||||
semdFqzlRef.value.getsendFqzl();
|
||||
};
|
||||
const closeFszl = () => {
|
||||
semdFqzlRef.value.close()
|
||||
}
|
||||
const addModelRef = ref()
|
||||
semdFqzlRef.value.close();
|
||||
};
|
||||
const addModelRef = ref();
|
||||
const openAddFrom = (row) => {
|
||||
emitter.emit('openAddFrom', row)
|
||||
}
|
||||
emitter.emit("openAddFrom", row);
|
||||
};
|
||||
|
||||
// 表格高度计算
|
||||
const tabHeightFn = () => {
|
||||
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
|
||||
pageData.tableHeight =
|
||||
window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
|
||||
window.onresize = function () {
|
||||
tabHeightFn();
|
||||
};
|
||||
@ -213,15 +281,15 @@ const tabHeightFn = () => {
|
||||
|
||||
// 搜索
|
||||
const onSearch = (obj) => {
|
||||
queryFrom.value = {...obj }
|
||||
queryFrom.value.startTime = obj.times ? obj.times[0] : ''
|
||||
queryFrom.value.endTime = obj.times ? obj.times[1] : ''
|
||||
getList()
|
||||
}
|
||||
queryFrom.value = { ...obj };
|
||||
queryFrom.value.startTime = obj.times ? obj.times[0] : "";
|
||||
queryFrom.value.endTime = obj.times ? obj.times[1] : "";
|
||||
getList();
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
getList
|
||||
})
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
@ -10,6 +10,46 @@
|
||||
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>
|
||||
<template #but>
|
||||
<el-button type="primary" size="small" @click="exportExl"
|
||||
>批量导出</el-button
|
||||
@ -17,12 +57,15 @@
|
||||
<el-button type="primary" size="small" @click="handleQs"
|
||||
>批量签收</el-button
|
||||
>
|
||||
<el-button type="primary" size="small" @click="handleQs"
|
||||
<!-- <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="handleRelatedWarning"
|
||||
>关联预警</el-button
|
||||
>
|
||||
</template>
|
||||
</QueryFormPanel>
|
||||
</div>
|
||||
@ -69,7 +112,7 @@
|
||||
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
||||
</template>
|
||||
<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 #cszt="{ row }">
|
||||
<DictTag :value="row.cszt" :tag="false" :options="D_GS_CSZT" />
|
||||
@ -82,7 +125,18 @@
|
||||
</template>
|
||||
<template #operation="{ row }">
|
||||
<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="warning" @click="pushWarning(row)">指派</span>
|
||||
<span
|
||||
@ -91,7 +145,11 @@
|
||||
@click="failWarning(row)"
|
||||
>报错</span
|
||||
>
|
||||
<span class="primary" @click="payAttention(row)">关注</span>
|
||||
<span
|
||||
:class="row.sfgz == 0 ? 'primary' : 'danger'"
|
||||
@click="payAttention(row)"
|
||||
>{{ row.sfgz == 0 ? "关注" : "取消关注" }}
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
</WarnDataTable>
|
||||
@ -113,6 +171,13 @@
|
||||
:dict="{ D_BZ_XB, D_BZ_YJJB, D_GS_QLZDRLX, D_GS_ZDR_RYJB, D_GS_ZDR_GJLB }"
|
||||
/>
|
||||
<peopleConut v-model="searchOpen" :dataConut="dataConut" />
|
||||
<SelectDataDialog
|
||||
v-model="selectDataVisible"
|
||||
title="关联预警"
|
||||
@confirm="handleSelectConfirm"
|
||||
:currentRelatedRow="currentRelatedRow"
|
||||
/>
|
||||
<FkDialog @change="getList" lx="05" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@ -121,16 +186,17 @@ import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||
import ZpForm from "./zpForm.vue";
|
||||
import { bqYs } from "@/utils/tools.js";
|
||||
import Particulars from "./particulars.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.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 Pages from "@/components/aboutTable/Pages.vue";
|
||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
import peopleConut from "./peopleConut.vue";
|
||||
import SelectDataDialog from "../../YjData/SelectDataDialog.vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
const {
|
||||
D_BZ_YJLY,
|
||||
D_GS_QLZDRLX,
|
||||
@ -232,24 +298,19 @@ const searchConfiger = ref([
|
||||
placeholder: "请输入身份证号码"
|
||||
},
|
||||
{
|
||||
key: "ksnl",
|
||||
label: "开始年龄",
|
||||
type: "input",
|
||||
placeholder: "请输入开始年龄"
|
||||
},
|
||||
{
|
||||
key: "jsnl",
|
||||
label: "结束年龄",
|
||||
type: "input",
|
||||
placeholder: "请输入结束年龄"
|
||||
key: "nl",
|
||||
label: "年龄",
|
||||
type: "slot",
|
||||
placeholder: "请输入年龄"
|
||||
},
|
||||
|
||||
{
|
||||
key: "yjCs",
|
||||
label: "预警次数",
|
||||
type: "input",
|
||||
type: "slot",
|
||||
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: "yjDz",
|
||||
@ -299,7 +360,7 @@ const pageData = reactive({
|
||||
tableColumn: [
|
||||
{ type: "index", label: "序号", width: 55, align: "center" },
|
||||
{ label: "预警状态", width: 80, align: "center", slotName: "status" },
|
||||
{ prop: "yjSj", label: "预警时间", width: 145 },
|
||||
{ prop: "yjSj", label: "预警时间", width: 125 },
|
||||
{ prop: "yjRyxm", label: "人员姓名", width: 80 },
|
||||
{ prop: "yjRysfzh", label: "身份证号", width: 158 },
|
||||
{ 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: "qblyjb" },
|
||||
{ prop: "yjCs", label: "次数", width: 55, align: "center" },
|
||||
{ label: "操作", width: 180, slotName: "operation" },
|
||||
{ label: "操作", width: 200, slotName: "operation" },
|
||||
{ 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 handleChooseData = (val) => {
|
||||
@ -385,26 +458,39 @@ const handleChooseData = (val) => {
|
||||
};
|
||||
const exportExl = () => {
|
||||
const titleObj = {
|
||||
czzt_name: "状态",
|
||||
index: "序号",
|
||||
czzt_name: "预警状态",
|
||||
yjSj: "预警时间",
|
||||
yjRyxm: "人员姓名",
|
||||
yjRysfzh: "身份证号",
|
||||
xbdm_name: "性别",
|
||||
nl: "年龄",
|
||||
yjJb_name: "预警级别",
|
||||
bqdl_name: "人员类别",
|
||||
yjbqmc: "细类",
|
||||
yjbqmc: "人员细类",
|
||||
yjLylx_name: "轨迹类别",
|
||||
yjDz: "活动发生地",
|
||||
ssbm: "接收单位",
|
||||
yjCs: "预警次数"
|
||||
qbly_name: "情报来源",
|
||||
qblyjb_name: "来源级别",
|
||||
yjCs: "次数",
|
||||
cszt_name: "超时状态"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item) => {
|
||||
const data = needArr.map((item, index) => {
|
||||
return {
|
||||
...item,
|
||||
index: index + 1,
|
||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||
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, "七类重点");
|
||||
@ -497,6 +583,30 @@ const payAttention = (row) => {
|
||||
const searchDom = ref(null);
|
||||
const dataConut = ref(0);
|
||||
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 promes = {
|
||||
...searchDom.value.formState,
|
||||
@ -519,8 +629,6 @@ const countPeople = () => {
|
||||
};
|
||||
// 表格高度计算
|
||||
const tabHeightFn = () => {
|
||||
console.log("xxxxxxx");
|
||||
|
||||
pageData.tableHeight =
|
||||
window.innerHeight - searchBox.value.offsetHeight - 230;
|
||||
window.onresize = function () {
|
||||
|
||||
@ -8,10 +8,16 @@
|
||||
:title="title"
|
||||
@close="close"
|
||||
:close-on-click-modal="false"
|
||||
:append-to-body="true"
|
||||
>
|
||||
<div class="avatar-upload-container">
|
||||
<div class="avatar-preview">
|
||||
<img v-if="avatarUrl" :src="avatarUrl" alt="预览头像" class="preview-image">
|
||||
<img
|
||||
v-if="avatarUrl"
|
||||
:src="avatarUrl"
|
||||
alt="预览头像"
|
||||
class="preview-image"
|
||||
/>
|
||||
<div v-else class="preview-placeholder">
|
||||
<el-icon class="placeholder-icon">
|
||||
<User />
|
||||
@ -20,8 +26,14 @@
|
||||
</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-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">
|
||||
@ -34,8 +46,13 @@
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="close">取消</el-button>
|
||||
<el-button type="primary" @click="confirmUpload" :loading="uploading" :disabled="!avatarUrl || uploading">
|
||||
{{ uploading ? '上传中...' : '确认更换' }}
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="confirmUpload"
|
||||
:loading="uploading"
|
||||
:disabled="!avatarUrl || uploading"
|
||||
>
|
||||
{{ uploading ? "上传中..." : "确认更换" }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@ -43,9 +60,9 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, watch } from "vue";
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { User } from '@element-plus/icons-vue';
|
||||
import { upImageUploadId } from '@/api/commit';
|
||||
import { ElMessage } from "element-plus";
|
||||
import { User } from "@element-plus/icons-vue";
|
||||
import { upImageUploadId } from "@/api/commit";
|
||||
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
@ -65,16 +82,19 @@ const props = defineProps({
|
||||
const emits = defineEmits(["update:modelValue", "avatarUpdated"]);
|
||||
|
||||
// 头像相关状态
|
||||
const avatarUrl = ref('');
|
||||
const avatarUrl = ref("");
|
||||
const uploading = ref(false);
|
||||
|
||||
// 监听对话框显示状态,重置头像预览
|
||||
watch(() => props.modelValue, (newVal) => {
|
||||
watch(
|
||||
() => props.modelValue,
|
||||
(newVal) => {
|
||||
if (!newVal) {
|
||||
// 对话框关闭时重置头像预览
|
||||
avatarUrl.value = '';
|
||||
avatarUrl.value = "";
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
// 当前选择的文件
|
||||
const selectedFile = ref(null);
|
||||
@ -92,16 +112,16 @@ const handleAvatarChange = (file) => {
|
||||
|
||||
// 上传前检查
|
||||
const beforeAvatarUpload = (file) => {
|
||||
const isJPG = file.type === 'image/jpeg';
|
||||
const isPNG = file.type === 'image/png';
|
||||
const isJPG = file.type === "image/jpeg";
|
||||
const isPNG = file.type === "image/png";
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
|
||||
if (!isJPG && !isPNG) {
|
||||
ElMessage.error('请上传 JPG 或 PNG 格式的图片!');
|
||||
ElMessage.error("请上传 JPG 或 PNG 格式的图片!");
|
||||
return false;
|
||||
}
|
||||
if (!isLt2M) {
|
||||
ElMessage.error('图片大小不能超过 2MB!');
|
||||
ElMessage.error("图片大小不能超过 2MB!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -110,7 +130,7 @@ const beforeAvatarUpload = (file) => {
|
||||
// 确认上传头像
|
||||
const confirmUpload = async () => {
|
||||
if (!avatarUrl.value || !selectedFile.value) {
|
||||
ElMessage.warning('请先选择头像图片');
|
||||
ElMessage.warning("请先选择头像图片");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -118,17 +138,16 @@ const confirmUpload = async () => {
|
||||
try {
|
||||
// 创建FormData对象
|
||||
const formData = new FormData();
|
||||
formData.append('file', selectedFile.value);
|
||||
formData.append("file", selectedFile.value);
|
||||
// 调用实际的上传接口
|
||||
const response = await upImageUploadId(formData);
|
||||
console.log(response);
|
||||
emits('avatarUpdated', response);
|
||||
emits("avatarUpdated", response);
|
||||
// 关闭对话框
|
||||
close();
|
||||
|
||||
} catch (error) {
|
||||
console.error('上传头像失败:', error);
|
||||
ElMessage.error('上传头像失败,请重试');
|
||||
console.error("上传头像失败:", error);
|
||||
ElMessage.error("上传头像失败,请重试");
|
||||
} finally {
|
||||
uploading.value = false;
|
||||
}
|
||||
@ -141,7 +160,7 @@ const close = () => {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '../styles/luntan-tech.scss';
|
||||
@import "../styles/luntan-tech.scss";
|
||||
|
||||
.avatar-upload-container {
|
||||
display: flex;
|
||||
@ -222,5 +241,5 @@ const close = () => {
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
@import '../styles/luntan-dialog-tech.scss';
|
||||
@import "../styles/luntan-dialog-tech.scss";
|
||||
</style>
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
title="发布帖子"
|
||||
width="60%"
|
||||
:before-close="handleClose"
|
||||
:append-to-body="true"
|
||||
>
|
||||
<div style="overflow: auto; height: 60vh">
|
||||
<el-form :model="form" :rules="rules" ref="formRef" label-width="80px">
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
title="发表回复"
|
||||
width="600px"
|
||||
:before-close="handleClose"
|
||||
:append-to-body="true"
|
||||
>
|
||||
<el-form :model="form" :rules="rules" ref="formRef">
|
||||
<el-form-item prop="content">
|
||||
@ -158,5 +159,5 @@ const resetForm = () => {
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
@import '../styles/luntan-dialog-tech.scss';
|
||||
@import "../styles/luntan-dialog-tech.scss";
|
||||
</style>
|
||||
|
||||
@ -2,17 +2,32 @@
|
||||
<div>
|
||||
<!-- 搜索 -->
|
||||
<div ref="searchBox" class="mt10 mb10">
|
||||
<Search :searchArr="searchConfiger" 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
|
||||
:searchArr="searchConfiger"
|
||||
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>
|
||||
</div>
|
||||
|
||||
<!-- 表格 -->
|
||||
<div class="heightBox margTop">
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="handleChooseData">
|
||||
<MyTable
|
||||
:tableData="pageData.tableData"
|
||||
:tableColumn="pageData.tableColumn"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount"
|
||||
:tableConfiger="pageData.tableConfiger"
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="handleChooseData"
|
||||
>
|
||||
<!-- <template #jjlx="{ row }">
|
||||
<DictTag :tag="false" :value="row.jjlx" :options="D_BZ_JQBQ" />
|
||||
</template> -->
|
||||
@ -26,24 +41,48 @@
|
||||
{{ row.ypzt === '01' ? '已研判' : '未研判' }}
|
||||
</template> -->
|
||||
<template #hszt="{ row }">
|
||||
{{ row.hszt === '01' ? '未会商' : '已会商' }}
|
||||
{{ row.hszt === "01" ? "未会商" : "已会商" }}
|
||||
</template>
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
<el-link type="warning" @click="CreateConsultationMeeting(row)">创建会商</el-link>
|
||||
<el-link :type=" row.sfgz=='0'?'success':'danger'" @click="Attention(row,row.sfgz=='0'?'关注':'取消关注')">{{ row.sfgz=='0'?'关注':'取消关注' }}</el-link>
|
||||
<el-link type="warning" @click="CreateConsultationMeeting(row)"
|
||||
>创建会商</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="warning" @click="handleYP('研判', row)">研判</el-link>
|
||||
<el-link type="danger" @click="handleYP('深度研判', row)">深度研判</el-link> -->
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }">
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }"
|
||||
>
|
||||
</Pages>
|
||||
</div>
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm 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" />
|
||||
<EditAddForm
|
||||
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" />
|
||||
<DeepYpDialog ref="deepYpDialog" @change="getList" />
|
||||
@ -52,25 +91,47 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getMultiDictVal } from "@/utils/dict.js"
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||
import { getMultiDictVal } from "@/utils/dict.js";
|
||||
import { exportExlByObj } from "@/utils/exportExcel.js";
|
||||
import YpDialog from "./components/ypDialog.vue";
|
||||
import DeepYpDialog from "./components/deepypDialog.vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.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 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 { 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 deepYpDialog = ref();
|
||||
const detailDiloag = ref();
|
||||
const show = ref(false)
|
||||
const show = ref(false);
|
||||
const searchConfiger = ref([
|
||||
{
|
||||
label: "接警员姓名",
|
||||
@ -97,6 +158,12 @@ const searchConfiger = ref([
|
||||
showType: "select",
|
||||
options: D_GS_BQ_DJ
|
||||
},
|
||||
{
|
||||
label: "监测时间",
|
||||
prop: "startTime",
|
||||
placeholder: "请选择监测时间",
|
||||
showType: "datetimerange"
|
||||
}
|
||||
]);
|
||||
const searchBox = ref(); //搜索框
|
||||
const pageData = reactive({
|
||||
@ -105,7 +172,7 @@ const pageData = reactive({
|
||||
tableConfiger: {
|
||||
rowHieght: 61,
|
||||
showSelectType: "checkbox",
|
||||
loading: false,
|
||||
loading: false
|
||||
},
|
||||
total: 0,
|
||||
pageConfiger: {
|
||||
@ -124,37 +191,40 @@ const pageData = reactive({
|
||||
{ label: "警情类型", prop: "jqlbdm", showSolt: true },
|
||||
{ label: "警情地址", prop: "jqdz" },
|
||||
{ label: "补充接警内容", prop: "bcjjnr", showOverflowTooltip: true },
|
||||
{ label: "会商状态", prop: "hszt", showSolt: true },
|
||||
|
||||
{ label: "会商状态", prop: "hszt", showSolt: true }
|
||||
]
|
||||
});
|
||||
onMounted(() => {
|
||||
tabHeightFn();
|
||||
getList()
|
||||
getList();
|
||||
});
|
||||
const listQuery = ref({})
|
||||
const listQuery = ref({});
|
||||
// 搜索
|
||||
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;
|
||||
getList()
|
||||
}
|
||||
const ces=ref()
|
||||
getList();
|
||||
};
|
||||
const ces = ref();
|
||||
// 点击关注
|
||||
const getSlect = () => {
|
||||
listQuery.value = { ...ces.value.searchObj, sfgz: 1 };
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
|
||||
const changeNo = (val) => {
|
||||
pageData.pageConfiger.pageCurrent = val;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
const changeSize = (val) => {
|
||||
pageData.pageConfiger.pageSize = val;
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
|
||||
const getList = () => {
|
||||
pageData.tableConfiger.loading = true;
|
||||
@ -162,36 +232,38 @@ const getList = () => {
|
||||
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||
pageSize: pageData.pageConfiger.pageSize,
|
||||
...listQuery.value
|
||||
}
|
||||
lzJcjPjdbSelectPage(params).then(res => {
|
||||
};
|
||||
lzJcjPjdbSelectPage(params)
|
||||
.then((res) => {
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total;
|
||||
}).finally(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
})
|
||||
}
|
||||
.finally(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
});
|
||||
};
|
||||
|
||||
// 新增
|
||||
const addEdit = (type, row) => {
|
||||
show.value = true;
|
||||
nextTick(() => {
|
||||
detailDiloag.value.init(type, row,);
|
||||
})
|
||||
detailDiloag.value.init(type, row);
|
||||
});
|
||||
};
|
||||
|
||||
const handleYP = (type, row) => {
|
||||
if (type === '研判') {
|
||||
if (type === "研判") {
|
||||
ypDialog.value.init(row);
|
||||
} else {
|
||||
deepYpDialog.value.init(row);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** 选中项 */
|
||||
const selectRows = ref([])
|
||||
const selectRows = ref([]);
|
||||
const handleChooseData = (val) => {
|
||||
selectRows.value = val
|
||||
}
|
||||
selectRows.value = val;
|
||||
};
|
||||
const exportExl = () => {
|
||||
const titleObj = {
|
||||
jjdbh: "接警单编号",
|
||||
@ -203,56 +275,62 @@ const exportExl = () => {
|
||||
jqlbdm_name: "警情类型",
|
||||
jqdz: "警情地址",
|
||||
bcjjnr: "补充接警内容",
|
||||
ypzt_name: "会商状态",
|
||||
}
|
||||
ypzt_name: "会商状态"
|
||||
};
|
||||
/** 导出【选中】的数据 (没有就全部)*/
|
||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
||||
const data = needArr.map(item => {
|
||||
const needArr =
|
||||
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
|
||||
const data = needArr.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
jqdjdm_name: getMultiDictVal(item.jqdjdm, D_GS_BQ_DJ),
|
||||
jqlbdm_name: getMultiDictVal(item.jqlbdm, JQLB),
|
||||
ypzt_name: item.hszt === '01' ? '未会商' : '已会商',
|
||||
}
|
||||
})
|
||||
exportExlByObj(titleObj, data, '警情管理')
|
||||
}
|
||||
ypzt_name: item.hszt === "01" ? "未会商" : "已会商"
|
||||
};
|
||||
});
|
||||
exportExlByObj(titleObj, data, "警情管理");
|
||||
};
|
||||
// 创建会商
|
||||
const showDialog = ref(false)
|
||||
const dataList = ref({})
|
||||
const lx = ref('01')
|
||||
const showDialog = ref(false);
|
||||
const dataList = ref({});
|
||||
const lx = ref("01");
|
||||
const CreateConsultationMeeting = (val) => {
|
||||
dataList.value = val
|
||||
showDialog.value=true
|
||||
}
|
||||
dataList.value = val;
|
||||
showDialog.value = true;
|
||||
};
|
||||
// 是否关注
|
||||
const Attention = (val, str) => {
|
||||
proxy.$confirm(`是否${str}该警情?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
proxy
|
||||
.$confirm(`是否${str}该警情?`, "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
.then(() => {
|
||||
// 关注警情
|
||||
qcckPost({
|
||||
qcckPost(
|
||||
{
|
||||
id: val.jjdbh,
|
||||
sfgz: val.sfgz === '0' ? '1' : '0',
|
||||
},'/mosty-gsxt/lzJcjPjdb/jqgz').then(res => {
|
||||
sfgz: val.sfgz === "0" ? "1" : "0"
|
||||
},
|
||||
"/mosty-gsxt/lzJcjPjdb/jqgz"
|
||||
).then((res) => {
|
||||
proxy.$message({
|
||||
message: `${str}成功`,
|
||||
type: 'success'
|
||||
type: "success"
|
||||
});
|
||||
getList();
|
||||
});
|
||||
})
|
||||
getList()
|
||||
})
|
||||
|
||||
}).catch(() => {
|
||||
.catch(() => {
|
||||
// 取消关注
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// 表格高度计算
|
||||
const tabHeightFn = () => {
|
||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||
pageData.tableHeight =
|
||||
window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||
window.onresize = function () {
|
||||
tabHeightFn();
|
||||
};
|
||||
@ -263,5 +341,4 @@ const tabHeightFn = () => {
|
||||
.el-loading-mask {
|
||||
background: rgba(0, 0, 0, 0.5) !important;
|
||||
}
|
||||
|
||||
</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>
|
||||
<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 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);">
|
||||
<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"])
|
||||
import Pie3D from "@/components/MyComponents/Pie3D.vue";
|
||||
import ZdryDiloding from "@/views/home/model/mesgSwitch/zdryDiloding.vue";
|
||||
import { tbGsxtZdryzdryBqtj } from "@/api/zdr";
|
||||
import { qcckGet } from "@/api/qcckApi";
|
||||
import { ref } from "vue";
|
||||
const data = ref([]);
|
||||
const emit = defineEmits(["reversalPush"]);
|
||||
const reversalPush = () => {
|
||||
emit('reversalPush')
|
||||
}
|
||||
const visible = ref(false)
|
||||
emit("reversalPush");
|
||||
};
|
||||
const visible = ref(false);
|
||||
const tbGsxtZdryzdryBqtjFn = () => {
|
||||
tbGsxtZdryzdryBqtj({ bqlx: '01' }).then(res => {
|
||||
const dataList = res.slice(0, 8)
|
||||
data.value = dataList.map(item => {
|
||||
qcckGet({}, "/mosty-gsxt/tbGsxtZdry/ryjzCount ").then((res) => {
|
||||
// tbGsxtZdryzdryBqtj({ bqlx: "01" }).then((res) => {
|
||||
// const dataList = res.slice(0, 8);
|
||||
data.value = res.map((item) => {
|
||||
return {
|
||||
value: item.sl,
|
||||
name: item.bqmc,
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
tbGsxtZdryzdryBqtjFn()
|
||||
value: item.sl ? item.sl : 0,
|
||||
name: item.zdmc
|
||||
};
|
||||
});
|
||||
});
|
||||
};
|
||||
tbGsxtZdryzdryBqtjFn();
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
Reference in New Issue
Block a user