版本同步
|
@ -1,8 +1,7 @@
|
||||||
VITE_BASE=/
|
VITE_BASE=/
|
||||||
VITE_BASE_URL=http://192.168.0.79:8095/
|
VITE_BASE_URL=http://192.168.0.138:8199/
|
||||||
|
|
||||||
#websocket t掉线
|
#websocket t掉线
|
||||||
VITE_ON_LINE_WEB_SOCKET_URL=ws://192.168.0.79:8869
|
VITE ON LINE WEB SOCKET URL=Ws://192.168.0.138:8869
|
||||||
|
|
||||||
#websocket 在线学习
|
#websocket 在线学习
|
||||||
VITE_LEARNING_WEB_SOCKET_URL=ws://192.168.0.79:8899
|
VITE_LEARNING_WEB_SOCKET_URL=Ws://192.168.0.138:8899
|
||||||
|
|
|
@ -1,12 +1,29 @@
|
||||||
|
#危化线上
|
||||||
VITE_BASE=/
|
VITE_BASE=/
|
||||||
VITE_BASE_URL=http://192.168.0.31:8095/integrated_whb/
|
VITE_BASE_URL=http://47.92.102.56:8080/integrated_whb/
|
||||||
#VITE_BASE_URL=http://47.92.102.56:8080/integrated_whb/
|
|
||||||
# VITE_BASE_URL=https://qaaqwh.qhdsafety.com/integrated_whb/
|
|
||||||
|
|
||||||
#websocket t掉线
|
#websocket t掉线
|
||||||
VITE_ON_LINE_WEB_SOCKET_URL=ws://47.92.102.56:8869
|
VITE_ON_LINE_WEB_SOCKET_URL=ws://47.92.102.56:8869
|
||||||
# VITE_ON_LINE_WEB_SOCKET_URL=wss://qaaqwh.qhdsafety.com/disconnected/
|
|
||||||
|
|
||||||
#websocket 在线学习
|
#websocket 在线学习
|
||||||
VITE_LEARNING_WEB_SOCKET_URL=ws://47.92.102.56:8899
|
VITE_LEARNING_WEB_SOCKET_URL=ws://47.92.102.56:8899
|
||||||
|
|
||||||
|
#测试
|
||||||
|
#VITE_BASE=/dist
|
||||||
|
#VITE_BASE_URL=http://192.168.20.240:8500/integrated_whb/
|
||||||
|
websocket t掉线
|
||||||
|
#VITE_ON_LINE_WEB_SOCKET_URL=ws://192.168.20.240:8869
|
||||||
|
#websocket 在线学习
|
||||||
|
#VITE_LEARNING_WEB_SOCKET_URL=ws://192.168.20.240:8899
|
||||||
|
|
||||||
|
#盘锦
|
||||||
|
#VITE_BASE=/dist
|
||||||
|
#VITE_BASE_URL=http://203.148.86.96:8500/integrated_whb/
|
||||||
|
#websocket t掉线
|
||||||
|
#VITE_ON_LINE_WEB_SOCKET_URL=ws://203.148.86.96:8869
|
||||||
|
#websocket 在线学习
|
||||||
|
#VITE_LEARNING_WEB_SOCKET_URL=ws://203.148.86.96:8899
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#VITE_BASE_URL=https://qaaqwh.qhdsafety.com/integrated_whb/
|
||||||
|
# VITE_ON_LINE_WEB_SOCKET_URL=wss://qaaqwh.qhdsafety.com/disconnected/
|
||||||
# VITE_LEARNING_WEB_SOCKET_URL=wss://qaaqwh.qhdsafety.com/onlinelearning/
|
# VITE_LEARNING_WEB_SOCKET_URL=wss://qaaqwh.qhdsafety.com/onlinelearning/
|
||||||
|
|
|
@ -5,10 +5,6 @@ interface ImportMetaEnv {
|
||||||
readonly VITE_TEMPLATE_URL: string
|
readonly VITE_TEMPLATE_URL: string
|
||||||
readonly VITE_BASE: string
|
readonly VITE_BASE: string
|
||||||
readonly VITE_BASE_URL: string
|
readonly VITE_BASE_URL: string
|
||||||
/**
|
|
||||||
* websocket t掉线
|
|
||||||
*/
|
|
||||||
readonly VITE_ON_LINE_WEB_SOCKET_URL: string
|
|
||||||
/**
|
/**
|
||||||
* websocket 在线学习
|
* websocket 在线学习
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"autofit.js": "^3.0.7",
|
"autofit.js": "^3.0.7",
|
||||||
"axios": "^1.6.3",
|
"axios": "^1.6.3",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
"echarts": "^5.4.3",
|
"echarts": "^5.4.3",
|
||||||
"element-plus": "^2.6.1",
|
"element-plus": "^2.6.1",
|
||||||
|
@ -25,6 +26,7 @@
|
||||||
"jspdf": "^2.5.1",
|
"jspdf": "^2.5.1",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
|
"mp4box": "^0.5.2",
|
||||||
"nanoid": "^5.0.4",
|
"nanoid": "^5.0.4",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"pako": "^2.1.0",
|
"pako": "^2.1.0",
|
||||||
|
@ -67,7 +69,7 @@
|
||||||
"unplugin-vue-components": "^0.22.12",
|
"unplugin-vue-components": "^0.22.12",
|
||||||
"vite": "^4.5.1",
|
"vite": "^4.5.1",
|
||||||
"vite-plugin-enhance-log": "^0.5.2",
|
"vite-plugin-enhance-log": "^0.5.2",
|
||||||
"vite-plugin-env-parse": "^1.0.10",
|
"vite-plugin-env-parse": "^1.0.12",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-remove-console": "^2.2.0",
|
"vite-plugin-remove-console": "^2.2.0",
|
||||||
"vue-eslint-parser": "^9.3.2"
|
"vue-eslint-parser": "^9.3.2"
|
||||||
|
|
|
@ -407,7 +407,7 @@ var CustomCesium;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
minimumLevel: 3,
|
minimumLevel: 3,
|
||||||
maximumLevel: 19
|
maximumLevel: 18
|
||||||
});
|
});
|
||||||
static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({
|
static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({
|
||||||
url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
|
url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
|
||||||
|
@ -425,7 +425,7 @@ var CustomCesium;
|
||||||
url: r,
|
url: r,
|
||||||
fileExtension: "png",
|
fileExtension: "png",
|
||||||
minimumLevel: 0,
|
minimumLevel: 0,
|
||||||
maximumLevel: 19,
|
maximumLevel: 18,
|
||||||
tilingScheme: new Cesium.WebMercatorTilingScheme
|
tilingScheme: new Cesium.WebMercatorTilingScheme
|
||||||
});
|
});
|
||||||
this.init(e, t, 50)
|
this.init(e, t, 50)
|
||||||
|
@ -684,14 +684,13 @@ var CustomCesium;
|
||||||
|
|
||||||
class d {
|
class d {
|
||||||
constructor(e, t, i = 0) {
|
constructor(e, t, i = 0) {
|
||||||
this.icy = e,
|
this.icy = e,this.ground_arr = [], this.buildingArr = [],
|
||||||
this.tileset = e.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
|
this.tileset = e.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
|
||||||
url: t,
|
url: t,
|
||||||
show: !0,
|
show: !0,
|
||||||
})),
|
})),
|
||||||
this.tileset.readyPromise.then((e => {
|
this.tileset.readyPromise.then((e => {
|
||||||
this.tileset = e,
|
this.tileset = e, this.setHeight(i)
|
||||||
this.setHeight(i)
|
|
||||||
}
|
}
|
||||||
)),
|
)),
|
||||||
this.polygon = []
|
this.polygon = []
|
||||||
|
@ -700,63 +699,59 @@ var CustomCesium;
|
||||||
show(e) {
|
show(e) {
|
||||||
this.tileset.show = e
|
this.tileset.show = e
|
||||||
}
|
}
|
||||||
|
init(e) {
|
||||||
cancelClipping() {//取消裁剪
|
return new Promise((t => {
|
||||||
this.tileset._clippingPlanes = new Cesium.ClippingPlaneCollection({
|
new Cesium.Resource.fetchJson({url: e}).then((e => {
|
||||||
//一组ClippingPlane对象,用于选择性地禁用每个平面外部的渲染。
|
let i = [];
|
||||||
planes: [
|
i = e.scenes, i[0].children.forEach(((e, t) => {
|
||||||
// 裁剪面两个参数的:第一个为平面法向量,第二个为原点到平面的垂直距离
|
e.children && this.buildingArr.push(e)
|
||||||
new Cesium.ClippingPlane(
|
})), this.buildingArr.forEach(((e, t) => {
|
||||||
//笛卡尔3:表示为三维空间的平面的法向量,x表示为该法向量在x轴上的分量,y表示为该法向量在y轴上的分量,z表示为该法向量在z轴上的分量
|
i[0].children.forEach(((i, r) => {
|
||||||
new Cesium.Cartesian3(0.0, 0.0, -1.0),
|
"ground_000001" == i.name && e.name.split("F")[0] > 0 && (this.buildingArr[t].children.push(i), this.ground_arr = i)
|
||||||
2000
|
}))
|
||||||
),
|
})), this.buildingArr.sort(((e, t) => parseInt(e.name.replace("F", "")) - parseInt(t.name.replace("F", ""))));
|
||||||
],
|
let r = [];
|
||||||
});
|
this.buildingArr.forEach(((e, t) => {
|
||||||
|
r.push({floor: e.name, index: t})
|
||||||
|
})), t({scenesArr: i, buildingArr: r})
|
||||||
|
}))
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
showTilesFloor(e) {
|
||||||
clipTileset(polygon) {//裁剪
|
let t = {name: null, children: null};
|
||||||
this.tileset._clippingPlanes = null;
|
"all" != e && (t = this.buildingArr[e]), console.log(this.buildingArr[e]), t.name && (t.name.split("F")[0] < 0 ? this.icy.viewer.scene.globe.depthTestAgainstTerrain = !1 : this.icy.viewer.scene.globe.depthTestAgainstTerrain = !0);
|
||||||
this.polygon = polygon;
|
const i = [];
|
||||||
const transform = this.tileset.root.transform;
|
t.children && t.children.forEach((e => {
|
||||||
const inverseTransform = Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4());
|
const t = ["${name} === '" + e.name + "'", "rgba(255,255,255,1)"];
|
||||||
const clippingPlanes = new Cesium.ClippingPlaneCollection({
|
i.push(t)
|
||||||
//一组ClippingPlane对象,用于选择性地禁用每个平面外部的渲染。
|
})), "all" == e ? (this.icy.viewer.scene.globe.depthTestAgainstTerrain = !0, i.push(["true", "rgba(255,255,255,1)"])) : i.push(["true", "rgba(255,255,255,0.08)"]), this.tileset.style = new Cesium.Cesium3DTileStyle({color: {conditions: i}})
|
||||||
planes: [
|
}
|
||||||
// 裁剪面两个参数的:第一个为平面法向量,第二个为原点到平面的垂直距离
|
clipTileset(e) {
|
||||||
new Cesium.ClippingPlane(
|
this.tileset._clippingPlanes = null, this.polygon = e;
|
||||||
//笛卡尔3:表示为三维空间的平面的法向量,x表示为该法向量在x轴上的分量,y表示为该法向量在y轴上的分量,z表示为该法向量在z轴上的分量
|
const t = this.tileset.root.transform,
|
||||||
new Cesium.Cartesian3(0.0, 0.0, -1.0),
|
i = Cesium.Matrix4.inverseTransformation(t, new Cesium.Matrix4),
|
||||||
1.2//裁剪平面距地面的距离
|
r = new Cesium.ClippingPlaneCollection({planes:
|
||||||
),
|
[new Cesium.ClippingPlane(new Cesium.Cartesian3(0, 0, -1), 1.03)]
|
||||||
],
|
});
|
||||||
});
|
for (let t = 0; t < e.length - 1; t++) {
|
||||||
for (let i = 0; i < polygon.length - 1; i++) {
|
const n = this.createClippingPlane(e[t], e[t + 1], i);
|
||||||
const plane = this.createClippingPlane(polygon[i], polygon[i + 1], inverseTransform);
|
r.add(n)
|
||||||
clippingPlanes.add(plane);
|
|
||||||
}
|
}
|
||||||
this.tileset.clippingPlanes = clippingPlanes;
|
this.tileset.clippingPlanes = r
|
||||||
}
|
}
|
||||||
|
createClippingPlane(e, t, i) {
|
||||||
createClippingPlane(p1, p2, inverseTransform) {
|
const r = this.getOriginCoordinateSystemPoint(e, i), n = this.getOriginCoordinateSystemPoint(t, i),
|
||||||
const p1C3 = this.getOriginCoordinateSystemPoint(p1, inverseTransform);
|
s = new Cesium.Cartesian3(0, 0, -1), a = new Cesium.Cartesian3;
|
||||||
const p2C3 = this.getOriginCoordinateSystemPoint(p2, inverseTransform);
|
Cesium.Cartesian3.subtract(n, r, a);
|
||||||
const up = new Cesium.Cartesian3(0, 0, -1);
|
const o = new Cesium.Cartesian3;
|
||||||
|
Cesium.Cartesian3.cross(s, a, o), Cesium.Cartesian3.normalize(o, o);
|
||||||
const direction = new Cesium.Cartesian3();
|
const l = -Cesium.Cartesian3.dot(o, r);
|
||||||
Cesium.Cartesian3.subtract(p2C3, p1C3, direction);
|
return new Cesium.ClippingPlane(o, l)
|
||||||
const normal = new Cesium.Cartesian3();
|
|
||||||
Cesium.Cartesian3.cross(up, direction, normal);
|
|
||||||
Cesium.Cartesian3.normalize(normal, normal);
|
|
||||||
const distance = -Cesium.Cartesian3.dot(normal, p1C3);
|
|
||||||
return new Cesium.ClippingPlane(normal, distance);
|
|
||||||
}
|
}
|
||||||
|
getOriginCoordinateSystemPoint(e, t) {
|
||||||
getOriginCoordinateSystemPoint(point, inverseTransform) {
|
const i = Cesium.Cartesian3.fromDegrees(e[0], e[1]);
|
||||||
const cartesian = Cesium.Cartesian3.fromDegrees(point[0], point[1]);
|
return Cesium.Matrix4.multiplyByPoint(t, i, new Cesium.Cartesian3)
|
||||||
return Cesium.Matrix4.multiplyByPoint(inverseTransform, cartesian, new Cesium.Cartesian3());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setHeight(e = 0) {
|
setHeight(e = 0) {
|
||||||
const t = this.tileset.boundingSphere
|
const t = this.tileset.boundingSphere
|
||||||
, i = Cesium.Cartographic.fromCartesian(t.center)
|
, i = Cesium.Cartographic.fromCartesian(t.center)
|
||||||
|
@ -771,8 +766,7 @@ var CustomCesium;
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
this.tileset.destroy(),
|
this.tileset.destroy(), this.tileset = void 0
|
||||||
this.tileset = void 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -794,7 +788,6 @@ var CustomCesium;
|
||||||
}
|
}
|
||||||
|
|
||||||
mouseLeft(e) {
|
mouseLeft(e) {
|
||||||
let xx = [];
|
|
||||||
new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => {
|
new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => {
|
||||||
let i = this.icy.viewer.camera.getPickRay(t.position)
|
let i = this.icy.viewer.camera.getPickRay(t.position)
|
||||||
, r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene)
|
, r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene)
|
||||||
|
@ -807,9 +800,14 @@ var CustomCesium;
|
||||||
latitude: Number(a.toFixed(8)),
|
latitude: Number(a.toFixed(8)),
|
||||||
altitude: Number(o.toFixed(5))
|
altitude: Number(o.toFixed(5))
|
||||||
};
|
};
|
||||||
// console.log("鼠标获取经纬高", s, a, o, l);
|
console.log("鼠标获取经纬高", s, a, o, l);
|
||||||
xx.push([s, a, o]);
|
//方向 围绕Z轴旋转
|
||||||
console.log(JSON.stringify(xx));
|
let heading = Cesium.Math.toDegrees(this.icy.viewer.camera.heading).toFixed(2);
|
||||||
|
//倾斜角度 围绕Y轴旋转
|
||||||
|
let pitch = Cesium.Math.toDegrees(this.icy.viewer.camera.pitch).toFixed(2);
|
||||||
|
//围绕X轴旋转
|
||||||
|
let roll = Cesium.Math.toDegrees(this.icy.viewer.camera.roll).toFixed(2);
|
||||||
|
console.log(heading+','+pitch+','+roll);
|
||||||
let h = this.icy.viewer.scene.pick(t.position);
|
let h = this.icy.viewer.scene.pick(t.position);
|
||||||
// console.log(h);
|
// console.log(h);
|
||||||
if (!h)
|
if (!h)
|
||||||
|
@ -1432,7 +1430,7 @@ var CustomCesium;
|
||||||
e()
|
e()
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(e, { url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l, peoName: k, floor: f, isCar: q }, h) {
|
constructor(e, { url: t, height: i, lon: r, lat: n, id: s, name: a, scale: o, angle: l, peoName: k,gltf: gltf, floor: f, isCar: q }, h) {
|
||||||
if (this.icy = e,
|
if (this.icy = e,
|
||||||
!t && !h)
|
!t && !h)
|
||||||
return console.error("传参有问题");
|
return console.error("传参有问题");
|
||||||
|
@ -1484,6 +1482,7 @@ var CustomCesium;
|
||||||
this.entity.peoName = k
|
this.entity.peoName = k
|
||||||
this.entity.floor = f
|
this.entity.floor = f
|
||||||
this.entity.isCar = q
|
this.entity.isCar = q
|
||||||
|
this.entity.gltf = gltf
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import children from "@/components/children/index";
|
||||||
import { MODEL } from "@/assets/js/constant";
|
import { MODEL } from "@/assets/js/constant";
|
||||||
// import asyncRouter from "@/assets/js/asyncRouter";
|
// import asyncRouter from "@/assets/js/asyncRouter";
|
||||||
import { getAsyncRouter } from "@/request/api";
|
import { getAsyncRouter } from "@/request/api";
|
||||||
|
import { useTagsViewStore } from "@/pinia/tagsView.js";
|
||||||
|
|
||||||
const modules = import.meta.glob([
|
const modules = import.meta.glob([
|
||||||
"./views/**/*.vue",
|
"./views/**/*.vue",
|
||||||
|
@ -19,6 +20,7 @@ router.beforeEach(async (to, from, next) => {
|
||||||
const routerStore = useRouterStore(pinia);
|
const routerStore = useRouterStore(pinia);
|
||||||
const menuStore = useMenuStore(pinia);
|
const menuStore = useMenuStore(pinia);
|
||||||
const userStore = useUserStore(pinia);
|
const userStore = useUserStore(pinia);
|
||||||
|
const tagsViewStore = useTagsViewStore(pinia);
|
||||||
// 需要登陆
|
// 需要登陆
|
||||||
if (to.meta.isLogin !== false) {
|
if (to.meta.isLogin !== false) {
|
||||||
if (!userStore.getUserInfo.USER_ID) {
|
if (!userStore.getUserInfo.USER_ID) {
|
||||||
|
@ -30,7 +32,13 @@ router.beforeEach(async (to, from, next) => {
|
||||||
// pinia里没有储存路由,去后台获取路由
|
// pinia里没有储存路由,去后台获取路由
|
||||||
if (routerStore.getRouters.length === 0) {
|
if (routerStore.getRouters.length === 0) {
|
||||||
const resData = await getAsyncRouter();
|
const resData = await getAsyncRouter();
|
||||||
storageRouter = resData.routeList; // 后台请求得到的路由数据
|
// filterMenuData(resData.routeList);
|
||||||
|
// const x = filterMenuData(resData.routeList);
|
||||||
|
// console.log(x);
|
||||||
|
// storageRouter = resData.routeList.filter((item) => item.hasMenu);
|
||||||
|
storageRouter = filterMenuData(resData.routeList);
|
||||||
|
// 后台请求得到的路由数据
|
||||||
|
// console.log(storageRouter);
|
||||||
// storageRouter = asyncRouter; // 死路由
|
// storageRouter = asyncRouter; // 死路由
|
||||||
routerStore.setRouters(storageRouter); // 存储路由
|
routerStore.setRouters(storageRouter); // 存储路由
|
||||||
routerGo(to, next); // 执行路由跳转方法
|
routerGo(to, next); // 执行路由跳转方法
|
||||||
|
@ -47,11 +55,26 @@ router.beforeEach(async (to, from, next) => {
|
||||||
storageRouter = null;
|
storageRouter = null;
|
||||||
routerStore.$reset();
|
routerStore.$reset();
|
||||||
menuStore.$reset();
|
menuStore.$reset();
|
||||||
|
tagsViewStore.$reset();
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function filterMenuData(data) {
|
||||||
|
return data
|
||||||
|
.filter((item) => item.hasMenu) // First filter out items where hasMenu is false
|
||||||
|
.map((item) => {
|
||||||
|
if (item.children && item.children.length > 0) {
|
||||||
|
// Recursively filter children if they exist
|
||||||
|
item.children = filterMenuData(item.children);
|
||||||
|
}
|
||||||
|
return item; // Return the modified item
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function routerGo(to, next) {
|
function routerGo(to, next) {
|
||||||
const menuStore = useMenuStore(pinia);
|
const menuStore = useMenuStore(pinia);
|
||||||
|
const userStore = useUserStore(pinia);
|
||||||
storageRouter = filterAsyncRouter(cloneDeep(storageRouter)); // 过滤路由
|
storageRouter = filterAsyncRouter(cloneDeep(storageRouter)); // 过滤路由
|
||||||
for (let i = 0; i < storageRouter.length; i++) {
|
for (let i = 0; i < storageRouter.length; i++) {
|
||||||
router.addRoute("app", storageRouter[i]); // 动态添加路由
|
router.addRoute("app", storageRouter[i]); // 动态添加路由
|
||||||
|
@ -63,7 +86,14 @@ function routerGo(to, next) {
|
||||||
router.options.routes[i].children.concat(storageRouter)
|
router.options.routes[i].children.concat(storageRouter)
|
||||||
); // 将路由数据存到一个新的pinia里,做菜单渲染
|
); // 将路由数据存到一个新的pinia里,做菜单渲染
|
||||||
if (!menuStore.getModel) {
|
if (!menuStore.getModel) {
|
||||||
menuStore.setModel(MODEL["1"]);
|
if (
|
||||||
|
userStore.getUserInfo.CORPINFO_ID ===
|
||||||
|
"467088695e1340b2897c264bb8100766"
|
||||||
|
) {
|
||||||
|
menuStore.setModel(MODEL["7"]);
|
||||||
|
} else {
|
||||||
|
menuStore.setModel(MODEL["1"]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
:root {
|
:root {
|
||||||
--el-header-height: 69px;
|
--el-header-height: 69px;
|
||||||
--el-aside-scrollbar-height: calc(100vh - var(--el-header-height));
|
--el-aside-scrollbar-height: calc(100vh - var(--el-header-height));
|
||||||
--el-main-scrollbar-height: calc(100vh - var(--el-header-height) - 40px);
|
--el-main-scrollbar-height: calc(100vh - var(--el-header-height) - 40px - 24px - 10px); // 40 面包屑高度 24 tags_view高度 10面包屑和tags_view得距离
|
||||||
--el-border-color: #273868 !important; // 边框颜色
|
--el-border-color: #273868 !important; // 边框颜色
|
||||||
--el-text-color-regular: #fff !important;
|
--el-text-color-regular: #fff !important;
|
||||||
--el-fill-color-light: #0e1d44 !important; //hover背景色
|
--el-fill-color-light: #0e1d44 !important; //hover背景色
|
||||||
|
|
After Width: | Height: | Size: 908 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 7.4 KiB |
|
@ -8,16 +8,22 @@ export const MODEL = {
|
||||||
4: "monitor",
|
4: "monitor",
|
||||||
5: "educationAndTraining",
|
5: "educationAndTraining",
|
||||||
6: "comprehensive",
|
6: "comprehensive",
|
||||||
|
// 东方石油专用 企业管理
|
||||||
|
7: "dfPre",
|
||||||
};
|
};
|
||||||
// 头部导航条
|
// 头部导航条
|
||||||
export const MENU = [
|
export const MENU = [
|
||||||
{ title: "双重预防", model: MODEL["1"] },
|
{ title: "双重预防", model: MODEL["1"], url: "/index" },
|
||||||
{ title: "特殊作业", model: MODEL["2"] },
|
{ title: "特殊作业", model: MODEL["2"] },
|
||||||
{ title: "人员定位", model: MODEL["3"] },
|
{ title: "人员定位", model: MODEL["3"], url: "/location_index" },
|
||||||
{ title: "监测预警", model: MODEL["4"] },
|
{ title: "监测预警", model: MODEL["4"] },
|
||||||
{ title: "教育培训", model: MODEL["5"] },
|
{ title: "教育培训", model: MODEL["5"], url: "/education_index" },
|
||||||
{ title: "综合管理", model: MODEL["6"] },
|
{ title: "综合管理", model: MODEL["6"] },
|
||||||
];
|
];
|
||||||
|
export const MENU_DF = [
|
||||||
|
{ title: "企业管理", model: MODEL["7"] },
|
||||||
|
{ title: "特殊作业", model: MODEL["2"] },
|
||||||
|
];
|
||||||
export const PRINT_STYLE =
|
export const PRINT_STYLE =
|
||||||
'<style type="text/css" media="print">\n' +
|
'<style type="text/css" media="print">\n' +
|
||||||
" @page { size: landscape; }\n" +
|
" @page { size: landscape; }\n" +
|
||||||
|
|
|
@ -420,3 +420,10 @@ export const layoutFnGetPersonnelManagementJobType = async () => {
|
||||||
});
|
});
|
||||||
return ref(resData.list);
|
return ref(resData.list);
|
||||||
};
|
};
|
||||||
|
// 安全标准化等级
|
||||||
|
export const layoutFnGetSafetyLevel = async () => {
|
||||||
|
const resData = await getLevels({
|
||||||
|
DICTIONARIES_ID: "4ad17876ebe24124876a2fbb1f3060e7",
|
||||||
|
});
|
||||||
|
return ref(resData.list);
|
||||||
|
};
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
<el-tree-select
|
<el-tree-select
|
||||||
v-model="modelValue"
|
v-model="modelValue"
|
||||||
:data="departmentTree"
|
:data="departmentTree"
|
||||||
|
:disabled="disabled"
|
||||||
node-key="id"
|
node-key="id"
|
||||||
:props="{
|
:props="{
|
||||||
children: 'nodes',
|
children: 'nodes',
|
||||||
|
@ -38,6 +39,10 @@ const props = defineProps({
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
multiple: {
|
multiple: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
|
@ -60,6 +65,9 @@ const modelValue = useVModel(props, "modelValue", emits);
|
||||||
const departmentTree = await layoutFnGetDepartmentzTree({
|
const departmentTree = await layoutFnGetDepartmentzTree({
|
||||||
rootDisabled: props.rootDisabled,
|
rootDisabled: props.rootDisabled,
|
||||||
});
|
});
|
||||||
|
if (props.multiple) {
|
||||||
|
modelValue.value = [];
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<el-drawer v-model="visible" title="电子围栏台账" direction="rtl" size="50%">
|
<el-drawer v-model="visible" title="电子围栏台账" direction="rtl" size="50%">
|
||||||
<el-card>
|
<el-card>
|
||||||
<el-form
|
<el-form :model="searchForm" label-width="20px">
|
||||||
:model="searchForm"
|
|
||||||
label-width="20px"
|
|
||||||
@submit.prevent="fnResetPagination"
|
|
||||||
>
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="关键字" prop="KEYWORDS" label-width="60px">
|
<el-form-item label="关键字" prop="KEYWORDS" label-width="60px">
|
||||||
|
@ -17,10 +13,8 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label-width="30px">
|
<el-form-item label-width="30px">
|
||||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
<el-button type="primary" @click="fnSearch">搜索</el-button>
|
||||||
<el-button native-type="reset" @click="fnResetPagination">
|
<el-button @click="fnResetPaginationd">重置</el-button>
|
||||||
重置
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -50,13 +44,14 @@
|
||||||
</layout-card>
|
</layout-card>
|
||||||
</el-drawer>
|
</el-drawer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { serialNumber } from "@/assets/js/utils.js";
|
import { serialNumber } from "@/assets/js/utils.js";
|
||||||
import useListData from "@/assets/js/useListData.js";
|
|
||||||
import { getRyRegionList } from "@/request/risk_control.js";
|
import { getRyRegionList } from "@/request/risk_control.js";
|
||||||
import { useVModels } from "@vueuse/core";
|
import { useVModels } from "@vueuse/core";
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
import useListData from "@/assets/js/useListData.js";
|
||||||
useListData(getRyRegionList);
|
|
||||||
|
// 父组件传入的 props
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
@ -66,14 +61,68 @@ const props = defineProps({
|
||||||
form: {
|
form: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true,
|
required: true,
|
||||||
default: () => {},
|
default: () => ({
|
||||||
|
ELECTRONIC_FENCE_NAME: "",
|
||||||
|
ELECTRONIC_FENCE_ID: "",
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const emits = defineEmits(["update:visible", "update:form"]);
|
const emits = defineEmits(["update:visible", "update:form"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
|
// 重置分页
|
||||||
|
const fnResetPaginationd = () => {
|
||||||
|
searchForm.value = {};
|
||||||
|
fnResetPagination();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 搜索功能
|
||||||
|
const fnSearch = () => {
|
||||||
|
fnGetData();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 绑定行数据
|
||||||
const handleJoin = (row) => {
|
const handleJoin = (row) => {
|
||||||
form.value.ELECTRONIC_FENCE_NAME = row.regName;
|
form.value.ELECTRONIC_FENCE_NAME = row.regName;
|
||||||
form.value.ELECTRONIC_FENCE_ID = row.id;
|
form.value.ELECTRONIC_FENCE_ID = row.id;
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
};
|
};
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getRyRegionList);
|
||||||
|
// // 获取数据
|
||||||
|
// const fnGetData = async () => {
|
||||||
|
// const res = await getRyRegionList({ ...pagination }); // 获取数据的请求
|
||||||
|
// list.value = res.varList || [];
|
||||||
|
// pagination.total = res.page.totalResult || 0;
|
||||||
|
// };
|
||||||
|
fnGetData();
|
||||||
|
// onMounted(async () => {
|
||||||
|
// const res = await getRyRegionList();
|
||||||
|
// if (res.webSiteStatus === "1") {
|
||||||
|
// ElNotification({
|
||||||
|
// title: "温馨提示",
|
||||||
|
// message: h(
|
||||||
|
// "i",
|
||||||
|
// { style: "color: teal" },
|
||||||
|
// "人员定位服务正在升级中!功能暂无法使用,请联系管理员!"
|
||||||
|
// ),
|
||||||
|
// duration: 0,
|
||||||
|
// type: "warning",
|
||||||
|
// });
|
||||||
|
// } else if (res.webSiteStatus === "2") {
|
||||||
|
// ElNotification({
|
||||||
|
// title: "温馨提示",
|
||||||
|
// message: h(
|
||||||
|
// "i",
|
||||||
|
// { style: "color: teal" },
|
||||||
|
// "人员定位未开启,请联系管理员开启人员定位功能!"
|
||||||
|
// ),
|
||||||
|
// duration: 0,
|
||||||
|
// type: "warning",
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
@ -7,6 +7,36 @@
|
||||||
>
|
>
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col v-if="hiddenType === 'speCheck'" :span="24">
|
||||||
|
<el-form-item label="检查内容" prop="checkContent">
|
||||||
|
<el-input
|
||||||
|
:model-value="form.checkContent"
|
||||||
|
disabled
|
||||||
|
type="textarea"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="hiddenType === 'speCheck'" :span="24">
|
||||||
|
<el-form-item label="检查依据" prop="checkBasis">
|
||||||
|
<el-input
|
||||||
|
:model-value="form.checkBasis"
|
||||||
|
disabled
|
||||||
|
type="textarea"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="hiddenType === 'speCheck'" :span="24">
|
||||||
|
<el-form-item label="适用场所" prop="applicablePlace">
|
||||||
|
<el-input
|
||||||
|
:model-value="form.applicablePlace"
|
||||||
|
disabled
|
||||||
|
type="textarea"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col v-if="hiddenType === 'unqualified'" :span="24">
|
<el-col v-if="hiddenType === 'unqualified'" :span="24">
|
||||||
<el-form-item label="检查内容" prop="CHECK_CONTENT">
|
<el-form-item label="检查内容" prop="CHECK_CONTENT">
|
||||||
<el-input
|
<el-input
|
||||||
|
@ -86,6 +116,39 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col v-if="hiddenType === 'speCheck'" :span="24">
|
||||||
|
<el-form-item label="扣分项" prop="checkScoreList">
|
||||||
|
<el-select v-model="form.CHECKSCORELD">
|
||||||
|
<el-option
|
||||||
|
v-for="item in checkScoreList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="
|
||||||
|
item.deductIllustrate +
|
||||||
|
'(' +
|
||||||
|
item.deductPoint +
|
||||||
|
'分)' +
|
||||||
|
'。注意此扣分项' +
|
||||||
|
(item.isReject === '0' ? '非' : '为') +
|
||||||
|
'否决项。'
|
||||||
|
"
|
||||||
|
:value="item"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="hiddenType === 'speCheck'" :span="24">
|
||||||
|
<el-form-item label="危害类型" prop="HARM_TYPE">
|
||||||
|
<el-select v-model="form.HARM_TYPE">
|
||||||
|
<el-option value="1" label="事故隐患" />
|
||||||
|
<el-option value="2" label="火灾隐患" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="hiddenType === 'speCheck'" :span="24">
|
||||||
|
<el-form-item label="罚款金额" prop="CHECKPAY">
|
||||||
|
<el-input-number v-model="form.CHECKPAY" :min="1" :max="200000" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="隐患视频" prop="videoFiles">
|
<el-form-item label="隐患视频" prop="videoFiles">
|
||||||
<layout-upload
|
<layout-upload
|
||||||
|
@ -227,6 +290,11 @@ const props = defineProps({
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
|
checkScoreList: {
|
||||||
|
type: Array,
|
||||||
|
required: false,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
// unqualified 清单检查不合格隐患
|
// unqualified 清单检查不合格隐患
|
||||||
// otherHidden 清单检查其他隐患
|
// otherHidden 清单检查其他隐患
|
||||||
// ledger 隐患台账
|
// ledger 隐患台账
|
||||||
|
@ -265,6 +333,7 @@ const rules = {
|
||||||
RECTIFICATIONDEADLINE: [
|
RECTIFICATIONDEADLINE: [
|
||||||
{ required: true, message: "请选择整改期限", trigger: "change" },
|
{ required: true, message: "请选择整改期限", trigger: "change" },
|
||||||
],
|
],
|
||||||
|
HARM_TYPE: [{ required: true, message: "请选择危害类型", trigger: "change" }],
|
||||||
RECTIFICATIONDEPT: [
|
RECTIFICATIONDEPT: [
|
||||||
{ required: true, message: "请选择整改部门", trigger: "change" },
|
{ required: true, message: "请选择整改部门", trigger: "change" },
|
||||||
],
|
],
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<span v-if="data.info.SOURCE === '1'"> 隐患快报 </span>
|
<span v-if="data.info.SOURCE === '1'"> 隐患快报 </span>
|
||||||
<span v-if="data.info.SOURCE === '2'"> 风险管控清单检查 </span>
|
<span v-if="data.info.SOURCE === '2'"> 风险管控清单检查 </span>
|
||||||
<span v-if="data.info.SOURCE === '3'"> 隐患排查清单检查 </span>
|
<span v-if="data.info.SOURCE === '3'"> 隐患排查清单检查 </span>
|
||||||
<span v-if="data.info.SOURCE === '4'"> 安全检查 </span>
|
<span v-if="data.info.SOURCE === '4'"> 专项检查 </span>
|
||||||
<span v-if="data.info.SOURCE === '5'"> 安全检查 </span>
|
<span v-if="data.info.SOURCE === '5'"> 安全检查 </span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<template v-if="data.info.SOURCE === '2' && listType === '1'">
|
<template v-if="data.info.SOURCE === '2' && listType === '1'">
|
||||||
|
@ -58,6 +58,9 @@
|
||||||
<span v-else-if="data.info.STATE === '100'"> 暂存 </span>
|
<span v-else-if="data.info.STATE === '100'"> 暂存 </span>
|
||||||
<span v-else-if="data.info.STATE === '101'"> 待指派 </span>
|
<span v-else-if="data.info.STATE === '101'"> 待指派 </span>
|
||||||
<span v-else-if="data.info.STATE === '102'"> 指派中 </span>
|
<span v-else-if="data.info.STATE === '102'"> 指派中 </span>
|
||||||
|
<span v-else-if="data.info.SOURCE === '4' && data.info.STATE === '0'">
|
||||||
|
专项检查上报后展示隐患状态
|
||||||
|
</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="隐患描述">
|
<el-descriptions-item label="隐患描述">
|
||||||
{{ data.info.HIDDENDESCR }}
|
{{ data.info.HIDDENDESCR }}
|
||||||
|
|
|
@ -15,14 +15,16 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="label">清除绘制</div>
|
<div class="label">清除绘制</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="option" @click="reduction">
|
<div v-if="maptype === 0" class="option" @click="reduction">
|
||||||
<div>
|
<div>
|
||||||
<img src="/src/assets/images/map_tools/icon3.png" alt="" />
|
<img src="/src/assets/images/map_tools/icon3.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="label">还原建筑</div>
|
<div class="label">还原建筑</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="id">当前选中楼层id:{{ model_id }}</div>
|
<div v-if="type === 1 && maptype === 0" class="id">
|
||||||
|
当前选中楼层id:{{ model_id }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -48,6 +50,11 @@ const props = defineProps({
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 1,
|
default: 1,
|
||||||
},
|
},
|
||||||
|
// '0可点击模型,1倾斜模型',
|
||||||
|
maptype: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
positions: {
|
positions: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
|
@ -70,13 +77,24 @@ const emits = defineEmits([
|
||||||
"update:position",
|
"update:position",
|
||||||
"update:modUuid",
|
"update:modUuid",
|
||||||
]);
|
]);
|
||||||
const { positions, position, modUuid } = useVModels(props, emits);
|
const { positions, position, modUuid, maptype } = useVModels(props, emits);
|
||||||
|
|
||||||
const confrim = () => {
|
const confrim = () => {
|
||||||
if (model_id.value === 0) {
|
if (maptype.value === 0) {
|
||||||
ElMessage.error("未选择建筑,或者未扎点");
|
if (model_id.value === 0) {
|
||||||
|
ElMessage.error("未选择建筑,或者未扎点");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (data.length === 0) {
|
||||||
|
ElMessage.error("右键点击选择点位");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (data.length <= 2) {
|
||||||
|
ElMessage.error("最少选择三个点位");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(data);
|
||||||
showEnclosure(data);
|
showEnclosure(data);
|
||||||
positions.value = [...data];
|
positions.value = [...data];
|
||||||
modUuid.value = model_id.value;
|
modUuid.value = model_id.value;
|
||||||
|
|
|
@ -32,7 +32,7 @@ export class Loadglb {
|
||||||
try {
|
try {
|
||||||
const response = await axios.get(
|
const response = await axios.get(
|
||||||
pls_ip.replace("8084", "9000").replace("18084", "19000") +
|
pls_ip.replace("8084", "9000").replace("18084", "19000") +
|
||||||
"/buildr/public/models/scene_000001.json"
|
"/buildr/public/models/scene_000001.json"
|
||||||
);
|
);
|
||||||
// const response = await getSceneJson();
|
// const response = await getSceneJson();
|
||||||
// 将获取的数据保存到实例的属性中
|
// 将获取的数据保存到实例的属性中
|
||||||
|
@ -165,7 +165,7 @@ export class Loadglb {
|
||||||
lon: unit.lon,
|
lon: unit.lon,
|
||||||
lat: unit.lat,
|
lat: unit.lat,
|
||||||
scale: unit.scale,
|
scale: unit.scale,
|
||||||
angle: [90, 0, 0]
|
angle: [90, 0, 0],
|
||||||
// angle: [97.4843053, 0, 0]
|
// angle: [97.4843053, 0, 0]
|
||||||
});
|
});
|
||||||
this.entityList.push(m);
|
this.entityList.push(m);
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
import { Loadglb } from "./loadglb.js";
|
import { Loadglb } from "./loadglb.js";
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
const loadMap = 3;
|
const loadMap = 3;
|
||||||
let $entityTransparent = [];
|
let $entityTransparent = [];
|
||||||
const clickModel = new Map();
|
const clickModel = new Map();
|
||||||
|
const tiles3D = ref({});
|
||||||
|
const tiles3DfloorArr = ref([]);
|
||||||
let enclosure = null;
|
let enclosure = null;
|
||||||
let entities = null;
|
let entities = null;
|
||||||
|
let centerLon = 0;
|
||||||
|
let centerLat = 0;
|
||||||
|
let centerHig = 0;
|
||||||
|
let viewArr = [];
|
||||||
|
|
||||||
export const initMap = (corp) => {
|
export const initMap = (corp) => {
|
||||||
window.$scene = new window.CustomCesium.Scene(
|
window.$scene = new window.CustomCesium.Scene(
|
||||||
"map",
|
"map",
|
||||||
|
@ -24,6 +31,10 @@ export const initMap = (corp) => {
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
const [wgsLat, wgsLon] = bd09ToWgs84(corp.LATITUDE, corp.LONGITUDE);
|
const [wgsLat, wgsLon] = bd09ToWgs84(corp.LATITUDE, corp.LONGITUDE);
|
||||||
|
centerLat = wgsLat;
|
||||||
|
centerLon = wgsLon;
|
||||||
|
centerHig = corp.map_hight;
|
||||||
|
viewArr = corp.view_arr.split(",");
|
||||||
flyTo(wgsLon, wgsLat);
|
flyTo(wgsLon, wgsLat);
|
||||||
// 亮度设置
|
// 亮度设置
|
||||||
const stages = window.$icy.viewer.scene.postProcessStages;
|
const stages = window.$icy.viewer.scene.postProcessStages;
|
||||||
|
@ -32,9 +43,20 @@ export const initMap = (corp) => {
|
||||||
stages.add(window.Cesium.PostProcessStageLibrary.createBrightnessStage());
|
stages.add(window.Cesium.PostProcessStageLibrary.createBrightnessStage());
|
||||||
window.$icy.viewer.scene.brightness.enabled = true;
|
window.$icy.viewer.scene.brightness.enabled = true;
|
||||||
window.$icy.viewer.scene.brightness.uniforms.brightness = Number(1.05); // 此处亮度值为倍数
|
window.$icy.viewer.scene.brightness.uniforms.brightness = Number(1.05); // 此处亮度值为倍数
|
||||||
createGlb(); // 加载glb
|
// 加载地图模型
|
||||||
|
corp.USE_URL === "T"
|
||||||
|
? loadTiles3D(window.$icy, corp.TILES3D_URL) // tiles3d 地图模型
|
||||||
|
: createGlb(); // 加载glb
|
||||||
|
};
|
||||||
|
// loadTiles3D
|
||||||
|
const loadTiles3D = (icy, url) => {
|
||||||
|
tiles3D.value = new window.CustomCesium.Tiles3D(icy, url, 0);
|
||||||
|
tiles3D.value.show(true);
|
||||||
|
const scenetreeurl = url.replace("tileset", "scenetree");
|
||||||
|
tiles3D.value.init(scenetreeurl).then((res) => {
|
||||||
|
tiles3DfloorArr.value = res.buildingArr;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const bd09ToWgs84 = (bdLat, bdLon) => {
|
const bd09ToWgs84 = (bdLat, bdLon) => {
|
||||||
const x_pi = (Math.PI * 3000.0) / 180.0;
|
const x_pi = (Math.PI * 3000.0) / 180.0;
|
||||||
const x = bdLon - 0.0065;
|
const x = bdLon - 0.0065;
|
||||||
|
@ -115,13 +137,13 @@ const transformlng = (lng, lat) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
const flyTo = (lng, lat) => {
|
const flyTo = () => {
|
||||||
window.$carmer.flyTo({
|
window.$carmer.flyTo({
|
||||||
// 视角飞入
|
// 视角飞入
|
||||||
maxHeight: 1500,
|
maxHeight: 1500,
|
||||||
time: 1,
|
time: 1,
|
||||||
position: [lng, lat - 0.001, 200],
|
position: [centerLon, centerLat - 0.0001, parseInt(centerHig)],
|
||||||
angle: [0, -60, 0],
|
angle: viewArr,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,8 @@
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.RISK_DESCR"
|
v-model="form.RISK_DESCR"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
|
maxlength="1000"
|
||||||
|
show-word-limit
|
||||||
:autosize="{
|
:autosize="{
|
||||||
minRows: 3,
|
minRows: 3,
|
||||||
}"
|
}"
|
||||||
|
@ -135,6 +137,8 @@
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.MEASURES"
|
v-model="form.MEASURES"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
|
maxlength="1000"
|
||||||
|
show-word-limit
|
||||||
:autosize="{
|
:autosize="{
|
||||||
minRows: 3,
|
minRows: 3,
|
||||||
}"
|
}"
|
||||||
|
@ -158,6 +162,8 @@
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.EME_MEASURES"
|
v-model="form.EME_MEASURES"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
|
maxlength="1000"
|
||||||
|
show-word-limit
|
||||||
:autosize="{
|
:autosize="{
|
||||||
minRows: 3,
|
minRows: 3,
|
||||||
}"
|
}"
|
||||||
|
@ -197,6 +203,8 @@
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.MANAGEMENT_CONTROL_THREE"
|
v-model="form.MANAGEMENT_CONTROL_THREE"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
|
maxlength="1000"
|
||||||
|
show-word-limit
|
||||||
:autosize="{
|
:autosize="{
|
||||||
minRows: 3,
|
minRows: 3,
|
||||||
}"
|
}"
|
||||||
|
@ -249,7 +257,67 @@ const props = defineProps({
|
||||||
});
|
});
|
||||||
const emits = defineEmits(["update:form"]);
|
const emits = defineEmits(["update:form"]);
|
||||||
const form = useVModel(props, "form", emits);
|
const form = useVModel(props, "form", emits);
|
||||||
const defineRules = {};
|
const defineRules = {
|
||||||
|
DEPTNAME: [
|
||||||
|
{ required: true, message: "管控部门不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
DEPARTMENT_ID: [
|
||||||
|
{ required: true, message: "管控部门不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
USER_ID: [
|
||||||
|
{ required: true, message: "管控责任人不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
RISK_UNIT_ID: [
|
||||||
|
{ required: true, message: "管控责任人不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
IDENTIFICATION_ID: [
|
||||||
|
{ required: true, message: "辨识部位不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
RISK_DESCR: [
|
||||||
|
{ required: true, message: "存在风险不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
LIKELIHOOD: [
|
||||||
|
{ required: true, message: "事故发生的可能性不能为空", trigger: "change" },
|
||||||
|
],
|
||||||
|
EXPOSURE: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "人员暴露于危险环境中的频繁程度不能为空",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
CONSEQUENCE: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "一旦发生事故可能造成的后果不能为空",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
MEASURES: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "管控措施不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ACCIDENTS: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "事故类型不能为空",
|
||||||
|
trigger: "change",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
EME_MEASURES: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "应急处置措施不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
PARTSNAME: [
|
||||||
|
{ required: true, message: "辨识部位名称不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
};
|
||||||
const formRef = ref(null);
|
const formRef = ref(null);
|
||||||
const infoIsEmpty = ref(isEmpty(props.info));
|
const infoIsEmpty = ref(isEmpty(props.info));
|
||||||
const unitList = ref([]);
|
const unitList = ref([]);
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" @click="fnOpen">手写签字</el-button>
|
<el-button type="primary" @click="fnOpen">手写签字</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="modelValue" style="border: 1px dashed #ccc" class="mt-10">
|
<div v-if="modelValue" style="border: 0px dashed #ccc" class="mt-10">
|
||||||
<img :src="modelValue" alt="" style="width: 100%" />
|
<img :src="modelValue" alt="" style="width: 100%" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -103,6 +103,9 @@ if (props.type === "label") {
|
||||||
const resData = await getThreeInstitutionalLibrariesLabel({ loading: false });
|
const resData = await getThreeInstitutionalLibrariesLabel({ loading: false });
|
||||||
tree = resData.tree;
|
tree = resData.tree;
|
||||||
}
|
}
|
||||||
|
if (props.collapseTags) {
|
||||||
|
modelValue.value = [];
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<template>
|
||||||
|
<el-tooltip placement="top" :persistent="true">
|
||||||
|
<template #content>
|
||||||
|
<template v-if="img">
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + img"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
alt=""
|
||||||
|
class="ml-10"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<span v-else>暂无图片</span>
|
||||||
|
</template>
|
||||||
|
<el-tag>预览</el-tag>
|
||||||
|
</el-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
defineOptions({
|
||||||
|
name: "LayoutTooltipImgSingle",
|
||||||
|
});
|
||||||
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
|
defineProps({
|
||||||
|
img: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -132,14 +132,14 @@ const onChange = (uploadFile, uploadFiles) => {
|
||||||
img.onload = () => {
|
img.onload = () => {
|
||||||
if (img.width !== +ratio[0] && img.height !== +ratio[1]) {
|
if (img.width !== +ratio[0] && img.height !== +ratio[1]) {
|
||||||
ElMessage.warning(`只能上传${props.ratio}分辨率的图片`);
|
ElMessage.warning(`只能上传${props.ratio}分辨率的图片`);
|
||||||
uploadRef.value.handleRemove(uploadFile);
|
uploadRef.value.handleRemove(uploadFile.raw);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (size) {
|
if (size) {
|
||||||
if (uploadFile.size > size) {
|
if (uploadFile.size > size) {
|
||||||
ElMessage.warning(`文件大小不能超过${props.size}M`);
|
ElMessage.warning(`文件大小不能超过${props.size}M`);
|
||||||
uploadRef.value.handleRemove(uploadFile);
|
uploadRef.value.handleRemove(uploadFile.raw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (accept) {
|
if (accept) {
|
||||||
|
@ -147,7 +147,7 @@ const onChange = (uploadFile, uploadFiles) => {
|
||||||
emits("update:file-list", uploadFiles);
|
emits("update:file-list", uploadFiles);
|
||||||
} else {
|
} else {
|
||||||
ElMessage.warning(`只能上传${props.accept}格式的文件`);
|
ElMessage.warning(`只能上传${props.accept}格式的文件`);
|
||||||
uploadRef.value.handleRemove(uploadFile);
|
uploadRef.value.handleRemove(uploadFile.raw);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
emits("update:file-list", uploadFiles);
|
emits("update:file-list", uploadFiles);
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
</div>
|
</div>
|
||||||
<verification
|
<verification
|
||||||
:show="verificationShow"
|
:show="verificationShow"
|
||||||
|
:imgs="[verificationUrl]"
|
||||||
@success="verificationSuccess"
|
@success="verificationSuccess"
|
||||||
@close="verificationClose"
|
@close="verificationClose"
|
||||||
/>
|
/>
|
||||||
|
@ -59,6 +60,9 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import Verification from "vue3-puzzle-vcode";
|
import Verification from "vue3-puzzle-vcode";
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
|
import { getVerificationImage } from "@/request/api.js";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import { useUserStore } from "@/pinia/user.js";
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "LayoutVerification",
|
name: "LayoutVerification",
|
||||||
|
@ -69,6 +73,7 @@ defineProps({
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
const verificationUrl = ref("");
|
||||||
const emits = defineEmits(["update:verificationPass"]);
|
const emits = defineEmits(["update:verificationPass"]);
|
||||||
const verificationShow = ref(false);
|
const verificationShow = ref(false);
|
||||||
const verificationClose = () => {
|
const verificationClose = () => {
|
||||||
|
@ -78,6 +83,24 @@ const verificationSuccess = () => {
|
||||||
emits("update:verificationPass", true);
|
emits("update:verificationPass", true);
|
||||||
verificationClose();
|
verificationClose();
|
||||||
};
|
};
|
||||||
|
const VITE_BASE_URL = import.meta.env.VITE_BASE_URL;
|
||||||
|
const userStore = useUserStore();
|
||||||
|
|
||||||
|
const fnGetImageData = async () => {
|
||||||
|
const resData = await getVerificationImage({
|
||||||
|
secretKey: btoa(VITE_BASE_URL),
|
||||||
|
});
|
||||||
|
const sKey = atob(resData.data).split(",");
|
||||||
|
verificationUrl.value = sKey[0];
|
||||||
|
const date1 = dayjs(sKey[1]);
|
||||||
|
const date2 = dayjs(new Date());
|
||||||
|
const diff = date2.diff(date1, "days");
|
||||||
|
userStore.setQyRegister(true);
|
||||||
|
if (diff > 1) {
|
||||||
|
userStore.setQyRegister(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
fnGetImageData();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
@ -205,9 +228,11 @@ const verificationSuccess = () => {
|
||||||
background: #2e63d8 !important;
|
background: #2e63d8 !important;
|
||||||
border: 1px solid #2752b3 !important;
|
border: 1px solid #2752b3 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mi-captcha-radar-pass .mi-captcha-radar-tip {
|
.mi-captcha-radar-pass .mi-captcha-radar-tip {
|
||||||
color: #ffffff !important;
|
color: #ffffff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mi-captcha-radar-success-icon {
|
.mi-captcha-radar-success-icon {
|
||||||
color: #ffffff !important;
|
color: #ffffff !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,9 +31,11 @@
|
||||||
v-for="(item, index) in data.breadcrumbList"
|
v-for="(item, index) in data.breadcrumbList"
|
||||||
:key="item.path"
|
:key="item.path"
|
||||||
>
|
>
|
||||||
<router-link v-if="index === 0" to="/index">
|
<span v-if="index === 0">
|
||||||
|
<!-- <router-link v-if="index === 0" to="/index">-->
|
||||||
{{ item.meta.title }}
|
{{ item.meta.title }}
|
||||||
</router-link>
|
<!-- </router-link>-->
|
||||||
|
</span>
|
||||||
<span v-else-if="index !== data.breadcrumbList.length - 1">
|
<span v-else-if="index !== data.breadcrumbList.length - 1">
|
||||||
{{ item.meta.title }}
|
{{ item.meta.title }}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -102,6 +102,11 @@ const rules = {
|
||||||
],
|
],
|
||||||
newpwd: [
|
newpwd: [
|
||||||
{ required: false, message: "请输入新密码", trigger: "blur" },
|
{ required: false, message: "请输入新密码", trigger: "blur" },
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(?=.*\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{6,18}$/,
|
||||||
|
message: "密码长度为6-18位,必须包含大小字母,小写字母数字和特殊符号。",
|
||||||
|
},
|
||||||
{ min: 6, max: 18, message: "密码长度为6-18位", trigger: "blur" },
|
{ min: 6, max: 18, message: "密码长度为6-18位", trigger: "blur" },
|
||||||
],
|
],
|
||||||
newpassword1: [{ required: false, validator: validatePass, trigger: "blur" }],
|
newpassword1: [{ required: false, validator: validatePass, trigger: "blur" }],
|
||||||
|
|
|
@ -4,15 +4,12 @@
|
||||||
<div class="logo" />
|
<div class="logo" />
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<ul>
|
<ul>
|
||||||
<li @click="fnNavigationBI">
|
<template v-for="(item, index) in data.navData" :key="index">
|
||||||
<div class="title">可视化</div>
|
|
||||||
</li>
|
|
||||||
<template v-for="(item, index) in MENU" :key="index">
|
|
||||||
<li
|
<li
|
||||||
:class="{ active: item.model === menuStore.getModel }"
|
:class="{ active: item.MODEL === menuStore.getModel }"
|
||||||
@click="switchMenu(item.model)"
|
@click="switchMenu(item)"
|
||||||
>
|
>
|
||||||
<div class="title">{{ item.title }}</div>
|
<div class="title">{{ item.TITLE }}</div>
|
||||||
</li>
|
</li>
|
||||||
</template>
|
</template>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -26,7 +23,9 @@
|
||||||
>
|
>
|
||||||
<div class="user_info">
|
<div class="user_info">
|
||||||
<el-avatar :size="23" fit="fill" :src="data.avatar" />
|
<el-avatar :size="23" fit="fill" :src="data.avatar" />
|
||||||
<span style="max-width: 100px;" class="line-1">{{ userStore.getUserInfo.NAME }}</span>
|
<span style="max-width: 100px" class="line-1">{{
|
||||||
|
userStore.getUserInfo.NAME
|
||||||
|
}}</span>
|
||||||
<icon-down
|
<icon-down
|
||||||
theme="filled"
|
theme="filled"
|
||||||
size="16"
|
size="16"
|
||||||
|
@ -61,12 +60,11 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { reactive } from "vue";
|
import { reactive, h } from "vue";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { useMenuStore } from "@/pinia/menu";
|
import { useMenuStore } from "@/pinia/menu";
|
||||||
import { useUserStore } from "@/pinia/user";
|
import { useUserStore } from "@/pinia/user";
|
||||||
import { MENU } from "@/assets/js/constant";
|
import { getInfo, getUserInfo, logout, getNavList } from "@/request/api";
|
||||||
import { getInfo, getUserInfo, logout } from "@/request/api";
|
|
||||||
import { getSpecialOperationsWarnAmount } from "@/request/special_operations";
|
import { getSpecialOperationsWarnAmount } from "@/request/special_operations";
|
||||||
import UpdateInfo from "./components/update_info.vue";
|
import UpdateInfo from "./components/update_info.vue";
|
||||||
import UpdateAvatar from "./components/update_avatar.vue";
|
import UpdateAvatar from "./components/update_avatar.vue";
|
||||||
|
@ -74,6 +72,7 @@ import { checkImgExists, addingPrefixToFile } from "@/assets/js/utils.js";
|
||||||
import { useWebSocket } from "@vueuse/core";
|
import { useWebSocket } from "@vueuse/core";
|
||||||
import { nanoid } from "nanoid";
|
import { nanoid } from "nanoid";
|
||||||
import { ElNotification } from "element-plus";
|
import { ElNotification } from "element-plus";
|
||||||
|
import { getRydyWebsiteStatus } from "@/request/api.js";
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "LayoutHeader",
|
name: "LayoutHeader",
|
||||||
|
@ -93,6 +92,7 @@ const data = reactive({
|
||||||
visible: false,
|
visible: false,
|
||||||
form: {},
|
form: {},
|
||||||
},
|
},
|
||||||
|
navData: [],
|
||||||
});
|
});
|
||||||
const dropdownCommand = async (command) => {
|
const dropdownCommand = async (command) => {
|
||||||
if (command === "signOut") {
|
if (command === "signOut") {
|
||||||
|
@ -115,8 +115,38 @@ const fnGetUserInfo = async () => {
|
||||||
data.userDialog.visible = true;
|
data.userDialog.visible = true;
|
||||||
data.userDialog.form = resData.pd;
|
data.userDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
const switchMenu = (model) => {
|
const getMenuData = async () => {
|
||||||
menuStore.setModel(model);
|
const resData = await getNavList({
|
||||||
|
ROLE_ID: userStore.getUserInfo.ROLEID,
|
||||||
|
});
|
||||||
|
data.navData = resData.navList;
|
||||||
|
menuStore.setModel(resData.navList.find((item) => item.MODEL).MODEL);
|
||||||
|
};
|
||||||
|
getMenuData();
|
||||||
|
const switchMenu = async (item) => {
|
||||||
|
if (item.NAV_ID === 0) {
|
||||||
|
fnNavigationBI();
|
||||||
|
} else {
|
||||||
|
// 人员定位 的话 也判断下是否 升级中
|
||||||
|
if (item.MODEL === "positioning") {
|
||||||
|
const res = await getRydyWebsiteStatus();
|
||||||
|
if (!res.webSiteStatus) {
|
||||||
|
ElNotification({
|
||||||
|
title: "温馨提示",
|
||||||
|
message: h(
|
||||||
|
"i",
|
||||||
|
{ style: "color: teal" },
|
||||||
|
"人员定位服务正在升级中!可视化,人员定位等功能暂无法使用。请耐心等待!"
|
||||||
|
),
|
||||||
|
duration: 0,
|
||||||
|
type: "warning",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menuStore.setModel(item.MODEL);
|
||||||
|
if (item.URL) router.push({ name: item.URL });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
const fnInitWebSocket = () => {
|
const fnInitWebSocket = () => {
|
||||||
const { send } = useWebSocket(
|
const { send } = useWebSocket(
|
||||||
|
@ -151,8 +181,15 @@ const fnGetInfo = async () => {
|
||||||
fnGetInfo();
|
fnGetInfo();
|
||||||
const fnSignOut = async () => {
|
const fnSignOut = async () => {
|
||||||
await logout();
|
await logout();
|
||||||
userStore.$reset();
|
if (
|
||||||
await router.replace("/login");
|
userStore.getUserInfo.CORPINFO_ID === "c6b69927126348ef987118165eb62659"
|
||||||
|
) {
|
||||||
|
userStore.$reset();
|
||||||
|
await router.replace("/login/custom");
|
||||||
|
} else {
|
||||||
|
userStore.$reset();
|
||||||
|
await router.replace("/login");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
const fnSpecialOperationsWarnAmount = async () => {
|
const fnSpecialOperationsWarnAmount = async () => {
|
||||||
const resData = await getSpecialOperationsWarnAmount({ loading: false });
|
const resData = await getSpecialOperationsWarnAmount({ loading: false });
|
||||||
|
@ -167,8 +204,22 @@ const fnSpecialOperationsWarnAmount = async () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fnSpecialOperationsWarnAmount();
|
fnSpecialOperationsWarnAmount();
|
||||||
const fnNavigationBI = () => {
|
const fnNavigationBI = async () => {
|
||||||
notify && notify.close();
|
notify && notify.close();
|
||||||
|
const res = await getRydyWebsiteStatus();
|
||||||
|
if (!res.webSiteStatus) {
|
||||||
|
ElNotification({
|
||||||
|
title: "温馨提示",
|
||||||
|
message: h(
|
||||||
|
"i",
|
||||||
|
{ style: "color: teal" },
|
||||||
|
"人员定位服务正在升级中,地图定位功能暂无法使用,请耐心等待!"
|
||||||
|
),
|
||||||
|
duration: 0,
|
||||||
|
type: "warning",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
router.push({ path: "/BI" });
|
router.push({ path: "/BI" });
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
</el-aside>
|
</el-aside>
|
||||||
<el-main>
|
<el-main>
|
||||||
<layout-breadcrumb v-if="route.meta.isBreadcrumb !== false" />
|
<layout-breadcrumb v-if="route.meta.isBreadcrumb !== false" />
|
||||||
|
<layout-tags-view />
|
||||||
<el-scrollbar style="height: var(--el-main-scrollbar-height)">
|
<el-scrollbar style="height: var(--el-main-scrollbar-height)">
|
||||||
<router-view v-slot="{ Component }">
|
<router-view v-slot="{ Component }">
|
||||||
<transition name="view" mode="out-in">
|
<transition name="view" mode="out-in">
|
||||||
|
@ -35,6 +36,7 @@
|
||||||
import LayoutBreadcrumb from "./breadcrumb/index";
|
import LayoutBreadcrumb from "./breadcrumb/index";
|
||||||
import LayoutHeader from "./header/index";
|
import LayoutHeader from "./header/index";
|
||||||
import LayoutMenu from "./menu/index";
|
import LayoutMenu from "./menu/index";
|
||||||
|
import LayoutTagsView from "./tags_view/index.vue";
|
||||||
import { computed } from "vue";
|
import { computed } from "vue";
|
||||||
import { useMenuStore } from "@/pinia/menu";
|
import { useMenuStore } from "@/pinia/menu";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
|
|
@ -0,0 +1,150 @@
|
||||||
|
<template>
|
||||||
|
<div class="tags_view">
|
||||||
|
<el-tabs
|
||||||
|
v-model="tabActive"
|
||||||
|
type="card"
|
||||||
|
class="tag-view-content"
|
||||||
|
@tab-change="handleTabChange"
|
||||||
|
@tab-remove="handleTabsDelete"
|
||||||
|
>
|
||||||
|
<el-tab-pane
|
||||||
|
v-for="item in tagsViewList"
|
||||||
|
:key="item.path"
|
||||||
|
:name="item.path"
|
||||||
|
:closable="!item.meta.noClosable"
|
||||||
|
>
|
||||||
|
<template #label>
|
||||||
|
<div @contextmenu.prevent="openMenu($event, item)">
|
||||||
|
<span>{{ item.meta.title }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
<tag-menu
|
||||||
|
:key="currentPath"
|
||||||
|
ref="tagMenuRef"
|
||||||
|
:list="openMenuList"
|
||||||
|
:current-title="currentTitle"
|
||||||
|
:offset-x="offsetX"
|
||||||
|
:tag-view-length="tagsViewList.length"
|
||||||
|
@handle-click="handleOption"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed, nextTick, ref, watch } from "vue";
|
||||||
|
import { useRouter, useRoute } from "vue-router";
|
||||||
|
import TagMenu from "./tag_menu.vue";
|
||||||
|
import { useTagsViewStore } from "@/pinia/tagsView.js";
|
||||||
|
import { Refresh, Close } from "@element-plus/icons-vue";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
const tagsViewStore = useTagsViewStore();
|
||||||
|
const tagsViewList = computed(() => tagsViewStore.getTagsViewList);
|
||||||
|
const tabActive = ref("");
|
||||||
|
const tagMenuRef = ref(null);
|
||||||
|
const currentPath = ref("");
|
||||||
|
const currentTitle = ref("");
|
||||||
|
const offsetX = ref(0);
|
||||||
|
|
||||||
|
const openMenu = async ({ target }, { path, meta }) => {
|
||||||
|
const styles = getComputedStyle(document.querySelector(".el-aside"));
|
||||||
|
const variableValue = styles.getPropertyValue("--el-aside-width");
|
||||||
|
offsetX.value =
|
||||||
|
target.getBoundingClientRect().x -
|
||||||
|
parseInt(variableValue.replace("px", "")) -
|
||||||
|
20;
|
||||||
|
currentPath.value = path;
|
||||||
|
currentTitle.value = meta.title;
|
||||||
|
await nextTick();
|
||||||
|
tagMenuRef.value.handleOpen();
|
||||||
|
};
|
||||||
|
watch(
|
||||||
|
() => route.path,
|
||||||
|
() => {
|
||||||
|
const filterRoute = route.matched.filter(
|
||||||
|
(item) => item.meta.isSubMenu === false
|
||||||
|
);
|
||||||
|
if (filterRoute.length === 0) return;
|
||||||
|
const { meta, path } = filterRoute[0];
|
||||||
|
tabActive.value = path;
|
||||||
|
tagsViewStore.addTagsView({
|
||||||
|
path,
|
||||||
|
meta,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const handleTabChange = (path) => router.push(path);
|
||||||
|
const handleTabsDelete = (path) => {
|
||||||
|
tagsViewStore.removeTagsView(path, route.path === path, handleTabChange);
|
||||||
|
};
|
||||||
|
const handleOption = (index) => {
|
||||||
|
const path = currentPath.value;
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
window.location.reload();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
tagsViewStore.closeOtherTagsView(path);
|
||||||
|
handleTabChange(path);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
tagsViewStore.closeAllTagsView();
|
||||||
|
handleTabChange("/index");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const openMenuList = [
|
||||||
|
{
|
||||||
|
icon: Refresh,
|
||||||
|
name: "刷新",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: Close,
|
||||||
|
name: "关闭其他",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: Close,
|
||||||
|
name: "关闭全部",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.tags_view {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: 20px;
|
||||||
|
height: 24px;
|
||||||
|
|
||||||
|
:deep {
|
||||||
|
.el-tabs {
|
||||||
|
--el-tabs-header-height: auto;
|
||||||
|
--el-font-size-base: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs--card > .el-tabs__header {
|
||||||
|
border-bottom: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs--card > .el-tabs__header .el-tabs__item {
|
||||||
|
padding: 4px 10px;
|
||||||
|
border-color: var(--el-border-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs--card > .el-tabs__header .el-tabs__nav {
|
||||||
|
border-color: var(--el-border-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__nav-next,
|
||||||
|
.el-tabs__nav-prev {
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,71 @@
|
||||||
|
<template>
|
||||||
|
<el-dropdown
|
||||||
|
ref="dropdownRef"
|
||||||
|
placement="bottom"
|
||||||
|
trigger="contextmenu"
|
||||||
|
@visible-change="handleVisibleChange"
|
||||||
|
@command="handleCommand"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
:style="{
|
||||||
|
'font-size': '12px',
|
||||||
|
'margin-left': offsetX + 'px',
|
||||||
|
'margin-top': '-22px',
|
||||||
|
visibility: 'hidden',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
{{ currentTitle }}
|
||||||
|
</div>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<template v-for="(item, index) in list" :key="item.name">
|
||||||
|
<el-dropdown-item
|
||||||
|
:command="index"
|
||||||
|
:disabled="index === 1 && tagViewLength === 1"
|
||||||
|
>
|
||||||
|
<el-icon :size="16" color="#fff">
|
||||||
|
<component :is="item.icon" />
|
||||||
|
</el-icon>
|
||||||
|
{{ item.name }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
</template>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
tagViewLength: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
currentTitle: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
offsetX: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["handleClick"]);
|
||||||
|
const active = ref(false);
|
||||||
|
const dropdownRef = ref(null);
|
||||||
|
const handleVisibleChange = (type) => (active.value = type);
|
||||||
|
const handleCommand = (index) => emits("handleClick", index);
|
||||||
|
const handleOpen = () => {
|
||||||
|
dropdownRef.value.handleOpen();
|
||||||
|
};
|
||||||
|
const handleClose = () => {
|
||||||
|
dropdownRef.value.handleClose();
|
||||||
|
};
|
||||||
|
defineExpose({
|
||||||
|
handleOpen,
|
||||||
|
handleClose,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -1,9 +1,72 @@
|
||||||
<template>
|
<template>
|
||||||
<hidden-danger-view />
|
<div class="mobile">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell :title="info.RISKUNITNAME" :value="info.PARTSNAME" />
|
||||||
|
<van-cell title="存在风险">
|
||||||
|
<template #label>
|
||||||
|
<div v-for="(item, index) in infoList" :key="index" class="mt-10">
|
||||||
|
{{ index + 1 }}. {{ item.RISK_DESCR }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell title="主要管控措施">
|
||||||
|
<template #label>
|
||||||
|
<div v-for="(item, index) in infoList" :key="index" class="mt-10">
|
||||||
|
{{ index + 1 }}. {{ item.MEASURES }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell title="管控部门" :value="info.DEPTNAME" />
|
||||||
|
<van-cell title="事故类型" :label="info.ACCIDENTS_NAME" />
|
||||||
|
<van-cell title="风险等级">
|
||||||
|
<template #value>
|
||||||
|
<span v-if="LEVELID === 'levelD'" class="text-blue">
|
||||||
|
低风险/D级
|
||||||
|
</span>
|
||||||
|
<span v-else-if="LEVELID === 'levelC'" class="text-yellow">
|
||||||
|
一般风险/C级
|
||||||
|
</span>
|
||||||
|
<span v-else-if="LEVELID === 'levelB'" class="text-orange">
|
||||||
|
较大风险/B级
|
||||||
|
</span>
|
||||||
|
<span v-else-if="LEVELID === 'levelA'" class="text-red">
|
||||||
|
重大风险/A级
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import HiddenDangerView from "../identifying_parts/hidden_danger_view.vue";
|
import { ref } from "vue";
|
||||||
|
import {
|
||||||
|
getIdentifyingPartsInfo,
|
||||||
|
getIdentifyingPartsInfoList,
|
||||||
|
} from "@/request/mobile.js";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
path: {
|
||||||
|
type: String,
|
||||||
|
default: "/mobile/risk_point/hidden_danger_view",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const route = useRoute();
|
||||||
|
const { IDENTIFICATIONPARTS_ID } = route.query;
|
||||||
|
const info = ref({});
|
||||||
|
const { list: infoList } = useListData(getIdentifyingPartsInfoList, {
|
||||||
|
otherParams: { CHECK_IDENTIFICATION_ID: IDENTIFICATIONPARTS_ID },
|
||||||
|
usePagination: false,
|
||||||
|
});
|
||||||
|
const fnGetData = async () => {
|
||||||
|
const resData = await getIdentifyingPartsInfo({
|
||||||
|
IDENTIFICATIONPARTS_ID,
|
||||||
|
});
|
||||||
|
info.value = resData.pd;
|
||||||
|
};
|
||||||
|
fnGetData();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
@ -1,49 +1,139 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="mobile">
|
<div class="mobile">
|
||||||
<van-search
|
<van-tabs v-model:active="tabsActive" type="card" sticky>
|
||||||
v-model="searchForm.KEYWORDS"
|
<van-tab title="辨别部位" name="1">
|
||||||
show-action
|
<van-search
|
||||||
:clearable="false"
|
v-model="searchForm.KEYWORDS"
|
||||||
placeholder="请输入搜索关键词"
|
show-action
|
||||||
@search="fnGetData"
|
:clearable="false"
|
||||||
>
|
placeholder="请输入搜索关键词"
|
||||||
<template #action>
|
@search="fnGetData"
|
||||||
<div @click="fnGetData">搜索</div>
|
>
|
||||||
</template>
|
<template #action>
|
||||||
</van-search>
|
<div @click="fnGetData">搜索</div>
|
||||||
<van-cell-group
|
</template>
|
||||||
v-for="(item, index) in list"
|
</van-search>
|
||||||
:key="index"
|
<van-cell-group
|
||||||
class="mt-10"
|
v-for="(item, index) in list"
|
||||||
@click="
|
:key="index"
|
||||||
$router.push({
|
class="mt-10"
|
||||||
path: '/mobile/risk_point/checklist',
|
@click="
|
||||||
query: {
|
$router.push({
|
||||||
IDENTIFICATIONPARTS_ID: item.IDENTIFICATIONPARTS_ID,
|
path: '/mobile/risk_point/checklist',
|
||||||
},
|
query: {
|
||||||
})
|
IDENTIFICATIONPARTS_ID: item.IDENTIFICATIONPARTS_ID,
|
||||||
"
|
},
|
||||||
>
|
})
|
||||||
<van-cell title="部位名称" :value="item.PARTSNAME" />
|
"
|
||||||
<van-cell title="风险等级">
|
>
|
||||||
<template #value>
|
<van-cell>
|
||||||
<span v-if="item.LEVELID === 'levelD'" class="text-blue">
|
<template #title>
|
||||||
低风险/D级
|
<div style="color: var(--van-cell-text-color)">
|
||||||
</span>
|
部位名称:{{ item.PARTSNAME }}
|
||||||
<span v-else-if="item.LEVELID === 'levelC'" class="text-yellow">
|
</div>
|
||||||
一般风险/C级
|
</template>
|
||||||
</span>
|
<template #value>
|
||||||
<span v-else-if="item.LEVELID === 'levelB'" class="text-orange">
|
<div style="font-size: 12px">
|
||||||
较大风险/B级
|
<span
|
||||||
</span>
|
v-if="item.LEVELID === 'levelD'"
|
||||||
<span v-else-if="item.LEVELID === 'levelA'" class="text-red">
|
class="background-blue p-5"
|
||||||
重大风险/A级
|
>
|
||||||
</span>
|
低风险/D级
|
||||||
</template>
|
</span>
|
||||||
</van-cell>
|
<span
|
||||||
<van-cell title="风险点(单元)" :value="item.RISKUNITNAME" />
|
v-else-if="item.LEVELID === 'levelC'"
|
||||||
<van-cell title="管控部门" :value="item.DEPT_NAME" />
|
class="background-yellow p-5"
|
||||||
</van-cell-group>
|
>
|
||||||
|
一般风险/C级
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-else-if="item.LEVELID === 'levelB'"
|
||||||
|
class="background-orange p-5"
|
||||||
|
>
|
||||||
|
较大风险/B级
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-else-if="item.LEVELID === 'levelA'"
|
||||||
|
class="background-red p-5"
|
||||||
|
>
|
||||||
|
重大风险/A级
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell>
|
||||||
|
<div class="tl">风险点(单元):{{ item.RISKUNITNAME }}</div>
|
||||||
|
<div class="tl">管控部门:{{ item.DEPT_NAME }}</div>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="风险分布" name="2" class="tags-view-container">
|
||||||
|
<van-search
|
||||||
|
v-model="searchForm.KEYWORDS"
|
||||||
|
show-action
|
||||||
|
:clearable="false"
|
||||||
|
placeholder="请输入搜索关键词"
|
||||||
|
@search="fnGetData"
|
||||||
|
>
|
||||||
|
<template #action>
|
||||||
|
<div @click="fnGetData">搜索</div>
|
||||||
|
</template>
|
||||||
|
</van-search>
|
||||||
|
<van-cell-group
|
||||||
|
v-for="(item, index) in list"
|
||||||
|
:key="index"
|
||||||
|
class="mt-10"
|
||||||
|
@click="
|
||||||
|
$router.push({
|
||||||
|
path: '/mobile/risk_point/hidden_danger_view',
|
||||||
|
query: {
|
||||||
|
IDENTIFICATIONPARTS_ID: item.IDENTIFICATIONPARTS_ID,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<van-cell>
|
||||||
|
<template #title>
|
||||||
|
<div style="color: var(--van-cell-text-color)">
|
||||||
|
部位名称:{{ item.PARTSNAME }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #value>
|
||||||
|
<div style="font-size: 12px">
|
||||||
|
<span
|
||||||
|
v-if="item.LEVELID === 'levelD'"
|
||||||
|
class="background-blue p-5"
|
||||||
|
>
|
||||||
|
低风险/D级
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-else-if="item.LEVELID === 'levelC'"
|
||||||
|
class="background-yellow p-5"
|
||||||
|
>
|
||||||
|
一般风险/C级
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-else-if="item.LEVELID === 'levelB'"
|
||||||
|
class="background-orange p-5"
|
||||||
|
>
|
||||||
|
较大风险/B级
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-else-if="item.LEVELID === 'levelA'"
|
||||||
|
class="background-red p-5"
|
||||||
|
>
|
||||||
|
重大风险/A级
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell>
|
||||||
|
<div class="tl">风险点(单元):{{ item.RISKUNITNAME }}</div>
|
||||||
|
<div class="tl">管控部门:{{ item.DEPT_NAME }}</div>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
</van-tab>
|
||||||
|
</van-tabs>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -51,9 +141,11 @@
|
||||||
import { getRiskPointList } from "@/request/mobile.js";
|
import { getRiskPointList } from "@/request/mobile.js";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
import useListData from "@/assets/js/useListData.js";
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { RISKUNIT_ID } = route.query;
|
const { RISKUNIT_ID } = route.query;
|
||||||
|
const tabsActive = ref("1");
|
||||||
const { list, fnGetData, searchForm } = useListData(getRiskPointList, {
|
const { list, fnGetData, searchForm } = useListData(getRiskPointList, {
|
||||||
otherParams: {
|
otherParams: {
|
||||||
RISK_UNIT_ID: RISKUNIT_ID,
|
RISK_UNIT_ID: RISKUNIT_ID,
|
||||||
|
@ -71,4 +163,23 @@ const { list, fnGetData, searchForm } = useListData(getRiskPointList, {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.background-blue {
|
||||||
|
background-color: #3b3bff;
|
||||||
|
color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-yellow {
|
||||||
|
background-color: #ddee33;
|
||||||
|
color: #1d1e23;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-orange {
|
||||||
|
background-color: #de9004;
|
||||||
|
color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-red {
|
||||||
|
background-color: #ff0000;
|
||||||
|
color: #fafafa;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,9 +1,133 @@
|
||||||
<template>
|
<template>
|
||||||
<inspection-record path="/mobile/risk_point/hidden_danger_view" />
|
<div class="mobile">
|
||||||
|
<van-cell-group v-for="(item, index) in list" :key="index" class="mt-10">
|
||||||
|
<van-cell title="存在风险" :label="item.RISK_DESCR" />
|
||||||
|
<van-cell title="检查内容">
|
||||||
|
<template #label>
|
||||||
|
{{ item.CHECK_CONTENT }}
|
||||||
|
<van-checkbox-group
|
||||||
|
:model-value="item.ISNORMAL"
|
||||||
|
direction="horizontal"
|
||||||
|
>
|
||||||
|
<van-checkbox :name="0">合格</van-checkbox>
|
||||||
|
<van-checkbox :name="1" checked-color="red"> 不合格 </van-checkbox>
|
||||||
|
<van-icon
|
||||||
|
v-if="item.ISNORMAL.includes(1)"
|
||||||
|
name="info-o"
|
||||||
|
color="blue"
|
||||||
|
@click="
|
||||||
|
$router.push({
|
||||||
|
path,
|
||||||
|
query: { HIDDEN_ID: item.HIDDEN_ID },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</van-checkbox-group>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
<div id="map_container" style="width: 100%; height: 500px" />
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="检查人" :value="info.USERS" />
|
||||||
|
<van-cell title="检查部位" :value="info.PARTSNAME" />
|
||||||
|
<van-cell title="检查时间" :value="info.CHECK_TIME" />
|
||||||
|
</van-cell-group>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import InspectionRecord from "../identifying_parts/inspection_record.vue";
|
import { onBeforeUnmount, onMounted, ref } from "vue";
|
||||||
|
import {
|
||||||
|
getRiskPointGoEditWeui,
|
||||||
|
getInspectionRecordMapInfo,
|
||||||
|
} from "@/request/mobile.js";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
path: {
|
||||||
|
type: String,
|
||||||
|
default: "/mobile/risk_point/hidden_danger_view",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const _50 = new URL("/src/assets/images/map/50.png", import.meta.url).href;
|
||||||
|
const _h = new URL("/src/assets/images/map/h.png", import.meta.url).href;
|
||||||
|
let mapInstance;
|
||||||
|
const route = useRoute();
|
||||||
|
const { CHECKRECORD_ID, IDENTIFICATIONPARTS_ID } = route.query;
|
||||||
|
const info = ref({});
|
||||||
|
const list = ref([]);
|
||||||
|
const fnGetData = async () => {
|
||||||
|
const resData = await getRiskPointGoEditWeui({
|
||||||
|
IDENTIFICATIONPARTS_ID,
|
||||||
|
CHECKRECORD_ID,
|
||||||
|
});
|
||||||
|
for (let i = 0; i < resData.varList.length; i++) {
|
||||||
|
resData.varList[i].ISNORMAL = [resData.varList[i].ISNORMAL];
|
||||||
|
}
|
||||||
|
resData.pd.PARTSNAME = resData.idData?.PARTSNAME;
|
||||||
|
info.value = resData.pd;
|
||||||
|
list.value = resData.varList;
|
||||||
|
};
|
||||||
|
const fnGetDataMap = async () => {
|
||||||
|
const resData = await getInspectionRecordMapInfo({
|
||||||
|
CHECKRECORD_ID,
|
||||||
|
loading: false,
|
||||||
|
});
|
||||||
|
fnMapInit(resData.cinfo.LONGITUDE, resData.cinfo.LATITUDE, resData);
|
||||||
|
};
|
||||||
|
const fnMapInit = (LONGITUDE, LATITUDE, resData) => {
|
||||||
|
mapInstance = new window.BMapGL.Map("map_container");
|
||||||
|
mapInstance.centerAndZoom(
|
||||||
|
new window.BMapGL.Point(
|
||||||
|
LONGITUDE || "116.3972282409668",
|
||||||
|
LATITUDE || "39.90960456049752"
|
||||||
|
),
|
||||||
|
16
|
||||||
|
);
|
||||||
|
mapInstance.enableScrollWheelZoom(true);
|
||||||
|
fnAddPoint(resData);
|
||||||
|
};
|
||||||
|
onMounted(async () => {
|
||||||
|
await fnGetData();
|
||||||
|
await fnGetDataMap();
|
||||||
|
});
|
||||||
|
const fnAddPoint = (resData) => {
|
||||||
|
for (let i = 0; i < resData.varList.length; i++) {
|
||||||
|
const myIcon = new window.BMapGL.Icon(_50, new window.BMapGL.Size(23, 25));
|
||||||
|
const pt = new window.BMapGL.Point(
|
||||||
|
resData.varList[i].LONGITUDE,
|
||||||
|
resData.varList[i].LATITUDE
|
||||||
|
);
|
||||||
|
const marker = new window.BMapGL.Marker(pt, {
|
||||||
|
icon: myIcon,
|
||||||
|
});
|
||||||
|
mapInstance.addOverlay(marker);
|
||||||
|
}
|
||||||
|
for (let i = 0; i < resData.hdList.length; i++) {
|
||||||
|
const myIcon = new window.BMapGL.Icon(_h, new window.BMapGL.Size(23, 25));
|
||||||
|
const pt = new window.BMapGL.Point(
|
||||||
|
resData.hdList[i].LONGITUDE,
|
||||||
|
resData.hdList[i].LATITUDE
|
||||||
|
);
|
||||||
|
const marker = new window.BMapGL.Marker(pt, {
|
||||||
|
icon: myIcon,
|
||||||
|
});
|
||||||
|
mapInstance.addOverlay(marker);
|
||||||
|
}
|
||||||
|
const myIcon4 = new window.BMapGL.Icon(_50, new window.BMapGL.Size(23, 25));
|
||||||
|
const pt4 = new window.BMapGL.Point(
|
||||||
|
resData.checkrecord.LONGITUDE,
|
||||||
|
resData.checkrecord.LATITUDE
|
||||||
|
);
|
||||||
|
const marker4 = new window.BMapGL.Marker(pt4, {
|
||||||
|
icon: myIcon4,
|
||||||
|
});
|
||||||
|
mapInstance.addOverlay(marker4);
|
||||||
|
};
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
mapInstance && mapInstance.destroy();
|
||||||
|
mapInstance = null;
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
import { defineStore } from "pinia";
|
||||||
|
|
||||||
|
export const useTagsViewStore = defineStore("useTagsViewStore", {
|
||||||
|
state() {
|
||||||
|
return {
|
||||||
|
tagsViewList: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getters: {
|
||||||
|
getTagsViewList: (state) => state.tagsViewList,
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
addTagsView(tabItem) {
|
||||||
|
const row = this.tagsViewList.find((v) => v.path === tabItem.path);
|
||||||
|
if (!row) this.tagsViewList.push(tabItem);
|
||||||
|
},
|
||||||
|
removeTagsView(path, isCurrent, callback) {
|
||||||
|
if (isCurrent) {
|
||||||
|
this.tagsViewList.forEach((item, index) => {
|
||||||
|
if (item.path === path) {
|
||||||
|
const navIndex =
|
||||||
|
this.tagsViewList[index + 1] || this.tagsViewList[index - 1];
|
||||||
|
if (navIndex) callback(navIndex.path);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.tagsViewList = this.tagsViewList.filter((v) => v.path !== path);
|
||||||
|
},
|
||||||
|
closeOtherTagsView(path) {
|
||||||
|
this.tagsViewList = this.tagsViewList.filter((item) => {
|
||||||
|
return item.meta.noClosable || item.path === path;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
closeAllTagsView() {
|
||||||
|
this.tagsViewList = this.tagsViewList.filter((item) => {
|
||||||
|
return item.meta.noClosable;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
|
@ -3,14 +3,24 @@ import { defineStore } from "pinia";
|
||||||
export const useUserStore = defineStore("userStore", {
|
export const useUserStore = defineStore("userStore", {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
userInfo: {},
|
userInfo: {},
|
||||||
|
videoPlayVerify: false,
|
||||||
|
qyRegister: true,
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
getUserInfo: (state) => state.userInfo,
|
getUserInfo: (state) => state.userInfo,
|
||||||
|
getVideoPlayVerify: (state) => state.videoPlayVerify,
|
||||||
|
getQyRegister: (state) => state.qyRegister,
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
setUserInfo(userInfo) {
|
setUserInfo(userInfo) {
|
||||||
this.userInfo = userInfo;
|
this.userInfo = userInfo;
|
||||||
},
|
},
|
||||||
|
setVideoPlayVerify(val) {
|
||||||
|
this.videoPlayVerify = val;
|
||||||
|
},
|
||||||
|
setQyRegister(val) {
|
||||||
|
this.qyRegister = val;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
persist: {
|
persist: {
|
||||||
storage: window.sessionStorage,
|
storage: window.sessionStorage,
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
import { post } from "@/request/axios.js";
|
import { post } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getPreviewDataStatisticsData = (params) =>
|
||||||
|
post("/positAlarm/previewDataStatisticsOfPersonnelLocationAlarms", params); // 告警记录首页统计
|
||||||
|
export const getAggregationAlarmAreaStatisticsData = (params) =>
|
||||||
|
post("/positAlarm/aggregationAlarmAreaStatisticsV2", params); // 聚集告警区域统计
|
||||||
|
export const getStatisticsAreCollectedBasedOnTheAlarmTypeData = (params) =>
|
||||||
|
post("/positAlarm/statisticsAreCollectedBasedOnTheAlarmTypeV2", params); // 告警类型占比情况
|
||||||
|
export const getAlarmDataYearData = (params) =>
|
||||||
|
post("/positAlarm/alarmDataYearV2", params); // 按照告警类型 数据统计
|
||||||
|
|
||||||
export const getGatheringAlarmRecordsList = (params) =>
|
export const getGatheringAlarmRecordsList = (params) =>
|
||||||
post("/positAlarm/getAlarmRecordList", params); // 聚集告警记录列表
|
post("/positAlarm/getAlarmRecordList", params); // 聚集告警记录列表
|
||||||
export const getGatheringAlarmRecordViewList = (params) =>
|
export const getGatheringAlarmRecordViewList = (params) =>
|
||||||
|
|
|
@ -4,6 +4,8 @@ export const getOtherAlarmConfigurationsList = (params) =>
|
||||||
post("/positAlarm/electronicFence/list", params); // 其他告警配置列表
|
post("/positAlarm/electronicFence/list", params); // 其他告警配置列表
|
||||||
export const getOtherAlarmConfigurationsView = (params) =>
|
export const getOtherAlarmConfigurationsView = (params) =>
|
||||||
post("/positAlarm/electronicFenceGoEdit", params); // 其他告警配置查看
|
post("/positAlarm/electronicFenceGoEdit", params); // 其他告警配置查看
|
||||||
|
export const getJjAlarmConfigurationsView = (params) =>
|
||||||
|
post("/positAlarm/electronicFenceJjGoEdit", params); // 聚集告警配置查看
|
||||||
export const setOtherAlarmConfigurationsDelete = (params) =>
|
export const setOtherAlarmConfigurationsDelete = (params) =>
|
||||||
post("/positAlarm/electronicFenceDelete", params); // 其他告警配置删除
|
post("/positAlarm/electronicFenceDelete", params); // 其他告警配置删除
|
||||||
export const setOtherAlarmConfigurationsDeactivateOrEnable = (params) =>
|
export const setOtherAlarmConfigurationsDeactivateOrEnable = (params) =>
|
||||||
|
|
|
@ -1,12 +1,18 @@
|
||||||
import { post, upload } from "./axios";
|
import { post, upload } from "./axios";
|
||||||
|
|
||||||
export const Login = (params) => post("/admin/check", params); // 登录
|
export const Login = (params) => post("/admin/check", params); // 登录
|
||||||
|
export const setResetPwd = (params) => post("/admin/resetPwd", params); // 登录
|
||||||
|
export const getVerificationImage = (params) =>
|
||||||
|
post("/app/getImages/loginImages", params); // 登录
|
||||||
|
|
||||||
export const logout = (params) => post("/main/logout", params); // 退出登录
|
export const logout = (params) => post("/main/logout", params); // 退出登录
|
||||||
export const getAsyncRouter = (params) => post("/main/index", params); // 获取动态路由
|
export const getAsyncRouter = (params) => post("/main/index", params); // 获取动态路由
|
||||||
export const getAllAppVersion = (params) =>
|
export const getAllAppVersion = (params) =>
|
||||||
post("/app/versionmanager/getAllAppVersion", params); // 获取动态路由
|
post("/app/versionmanager/getAllAppVersion", params); // 获取动态路由
|
||||||
export const getHasMenu = (params) =>
|
export const getHasMenu = (params) =>
|
||||||
post("/head/hasMenu", { loading: false, ...params }); // 获取有没有权限访问路由
|
post("/head/hasMenu", { loading: false, ...params }); // 获取有没有权限访问路由
|
||||||
|
|
||||||
|
export const getNavList = (params) => post("/head/getNavList", params);
|
||||||
export const getUserInfo = (params) => post("/user/goEditMyInfo", params); // 获取用户信息
|
export const getUserInfo = (params) => post("/user/goEditMyInfo", params); // 获取用户信息
|
||||||
export const setUserInfo = (params) => post("/user/editUserOwn", params); // 修改用户信息
|
export const setUserInfo = (params) => post("/user/editUserOwn", params); // 修改用户信息
|
||||||
export const getVerifyDuplicateEmail = (params) =>
|
export const getVerifyDuplicateEmail = (params) =>
|
||||||
|
@ -30,3 +36,6 @@ export const setVideo = (params) =>
|
||||||
post("/app/audioOrVideo/createUploadVideo", params); // 阿里云上传视频
|
post("/app/audioOrVideo/createUploadVideo", params); // 阿里云上传视频
|
||||||
export const setVideoRefresh = (params) =>
|
export const setVideoRefresh = (params) =>
|
||||||
post("/app/audioOrVideo/refreshUploadVideo", params); // 阿里云上传视频刷新凭证
|
post("/app/audioOrVideo/refreshUploadVideo", params); // 阿里云上传视频刷新凭证
|
||||||
|
|
||||||
|
export const getRydyWebsiteStatus = (params) =>
|
||||||
|
post("/corpplsinfo/refreshWebsiteStatus", params); // 刷新并获取定位系统状态
|
||||||
|
|
|
@ -2,8 +2,32 @@ import axios from "axios";
|
||||||
import { ElLoading, ElMessage } from "element-plus";
|
import { ElLoading, ElMessage } from "element-plus";
|
||||||
import router from "../router";
|
import router from "../router";
|
||||||
import QS from "qs";
|
import QS from "qs";
|
||||||
|
import CryptoJS from "crypto-js";
|
||||||
|
|
||||||
let loading = null;
|
let loading = null;
|
||||||
|
function encryption(params) {
|
||||||
|
const Timestamp = new Date().getTime();
|
||||||
|
|
||||||
|
const reqData = {
|
||||||
|
...params,
|
||||||
|
};
|
||||||
|
const keys = Object.keys(reqData).sort();
|
||||||
|
const sortData = {};
|
||||||
|
for (let i = 0; i < keys.length; i++) {
|
||||||
|
if (reqData[keys[i]] !== null) {
|
||||||
|
sortData[keys[i]] = reqData[keys[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const Sign = CryptoJS.MD5(
|
||||||
|
Timestamp +
|
||||||
|
JSON.stringify(sortData) +
|
||||||
|
"ab934679413c0fff22bb846365e14e00d8c504294760d21d660490bd43a69a90"
|
||||||
|
).toString();
|
||||||
|
return {
|
||||||
|
Sign,
|
||||||
|
Timestamp,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function startLoading() {
|
function startLoading() {
|
||||||
loading = ElLoading.service({
|
loading = ElLoading.service({
|
||||||
|
@ -74,10 +98,13 @@ axios.interceptors.response.use(
|
||||||
|
|
||||||
export function post(url, params) {
|
export function post(url, params) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
const { Timestamp, Sign } = encryption(params);
|
||||||
axios
|
axios
|
||||||
.post(url, QS.stringify(params), {
|
.post(url, QS.stringify(params), {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
|
Timestamp,
|
||||||
|
Sign,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
|
|
@ -28,9 +28,9 @@ export const getCameraAlarmSourceCount = (params) =>
|
||||||
export const getAiWarningList = (params) =>
|
export const getAiWarningList = (params) =>
|
||||||
post(
|
post(
|
||||||
"/aiwarning/list?currentPage=" +
|
"/aiwarning/list?currentPage=" +
|
||||||
params.currentPage +
|
params.currentPage +
|
||||||
"&showCount=" +
|
"&showCount=" +
|
||||||
params.showCount,
|
params.showCount,
|
||||||
params
|
params
|
||||||
); // ai报警列表
|
); // ai报警列表
|
||||||
export const getCameraTopToShow = (params) =>
|
export const getCameraTopToShow = (params) =>
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
import { post } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getCheckTaskList = (params) =>
|
||||||
|
post("/speCheck/getCheckTask", params); // 专项检查任务列表
|
||||||
|
export const getCheckSourceList = (params) =>
|
||||||
|
post("/speCheck/getCheckSourceList", params); // 专项检查危险源
|
||||||
|
export const getSyncCheckTaskList = (params) =>
|
||||||
|
post("/speCheck/syncTaskNow", params); // 专项检查任务立即同步
|
||||||
|
export const getCheckItemList = (params) =>
|
||||||
|
post("/speCheck/getCheckItem", params); // 专项检查任务项
|
||||||
|
export const getCheckScoreList = (params) =>
|
||||||
|
post("/speCheck/getCheckScore", params); // 获取扣分项
|
||||||
|
|
||||||
|
export const getRecordInfoView = (params) =>
|
||||||
|
post("/speCheck/getRecordInfo", params); // 获取检查记录
|
||||||
|
|
||||||
|
export const saveSpeCheckHidden = (params) =>
|
||||||
|
post("/speCheck/saveSpeCheckHidden", params); // 新增隐患上报
|
||||||
|
export const editSpeCheckHidden = (params) =>
|
||||||
|
post("/speCheck/editSpeCheckHidden", params); // 修改隐患上报
|
||||||
|
|
||||||
|
export const editReceiveCheckRecordList = (params) =>
|
||||||
|
post("/speCheck/editReceiveCheckRecordList", params); // 修改上报记录
|
||||||
|
export const receiveCheckRecordList = (params) =>
|
||||||
|
post("/speCheck/receiveCheckRecordList", params); // 上报检查情况记录
|
||||||
|
export const reportCurrentRecord = (params) =>
|
||||||
|
post("/speCheck/reportCurrentRecord", params); // 上报当前记录
|
||||||
|
export const getHiddenInfo = (params) =>
|
||||||
|
post("/speCheck/getHiddenInfo", params); // 隐患记录
|
|
@ -3,6 +3,8 @@ import { post, upload } from "@/request/axios.js";
|
||||||
export const getLedgerList = (params) => post("/limitspace/list", params); // 台账列表
|
export const getLedgerList = (params) => post("/limitspace/list", params); // 台账列表
|
||||||
export const setLedgerImport = (params) =>
|
export const setLedgerImport = (params) =>
|
||||||
upload("/limitspace/readExcel2", params); // 台账导入
|
upload("/limitspace/readExcel2", params); // 台账导入
|
||||||
export const setLedgerAdd = (params) => post("/limitspace/add", params); // 台账添加
|
export const setLedgerAdd = (params) => upload("/limitspace/add", params); // 台账添加
|
||||||
export const setLedgerEdit = (params) => post("/limitspace/edit", params); // 台账修改
|
export const setLedgerEdit = (params) => upload("/limitspace/edit", params); // 台账修改
|
||||||
export const setLedgerDelete = (params) => post("/limitspace/delete", params); // 台账删除
|
export const setLedgerDelete = (params) => post("/limitspace/delete", params); // 台账删除
|
||||||
|
export const setLedgerBatchDelete = (params) =>
|
||||||
|
post("/limitspace/deleteAll", params); // 台账批量删除
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
import { post, upload } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getDoublePreventionList = (params) =>
|
||||||
|
post("/prevention/list", params); // 双重预防评估列表
|
||||||
|
export const getDoublePreventionView = (params) =>
|
||||||
|
post("/prevention/goEdit", params); // 双重预防评估查看
|
||||||
|
export const setDoublePreventionDelete = (params) =>
|
||||||
|
post("/prevention/delete", params); // 双重预防评估删除
|
||||||
|
export const setDoublePreventionDeleteBatch = (params) =>
|
||||||
|
post("/prevention/deleteAll", params); // 双重预防评估批量删除
|
||||||
|
export const setDoublePreventionAdd = (params) =>
|
||||||
|
upload("/prevention/add", params); // 双重预防评估添加
|
||||||
|
export const setDoublePreventionEdit = (params) =>
|
||||||
|
upload("/prevention/edit", params); // 双重预防评估修改
|
|
@ -49,3 +49,9 @@ export const getTemporaryElectricityUsageView = (params) =>
|
||||||
post("/electricity/findById", params);
|
post("/electricity/findById", params);
|
||||||
export const getTemporaryElectricityUsageFlow = (params) =>
|
export const getTemporaryElectricityUsageFlow = (params) =>
|
||||||
post("/electricity/getFlowList", params);
|
post("/electricity/getFlowList", params);
|
||||||
|
// 删除作业票
|
||||||
|
export const setEightWorkRemove = (params) =>
|
||||||
|
post("/eightWork/removeWorkById", params);
|
||||||
|
// 作废作业票
|
||||||
|
export const setEightWorkInvalid = (params) =>
|
||||||
|
post("/eightWork/invalidWorkById", params);
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
import { post, upload } from "@/request/axios";
|
import { post, upload } from "@/request/axios";
|
||||||
|
|
||||||
|
export const getEmergencyIndexData = (params) =>
|
||||||
|
post("/emergencyteam/emergencyIndex", params); // 应急预案首页
|
||||||
|
|
||||||
export const getEmergencyPlanManagementList = (params) =>
|
export const getEmergencyPlanManagementList = (params) =>
|
||||||
post("/emergencyplan/list", params); // 应急预案管理列表
|
post("/emergencyplan/list", params); // 应急预案管理列表
|
||||||
export const getEmergencyPlanManagementView = (params) =>
|
export const getEmergencyPlanManagementView = (params) =>
|
||||||
|
@ -24,6 +27,7 @@ export const setEmergencyEquipmentManagementEdit = (params) =>
|
||||||
post("/emergencyequipment/edit", params); // 应急装备管理修改
|
post("/emergencyequipment/edit", params); // 应急装备管理修改
|
||||||
export const setEmergencyEquipmentManagementAdd = (params) =>
|
export const setEmergencyEquipmentManagementAdd = (params) =>
|
||||||
post("/emergencyequipment/add", params); // 应急装备管理添加
|
post("/emergencyequipment/add", params); // 应急装备管理添加
|
||||||
|
|
||||||
export const getEmergencyRescueTeamManagementList = (params) =>
|
export const getEmergencyRescueTeamManagementList = (params) =>
|
||||||
upload("/emergencyteam/list", params); // 应急救援队伍管理列表
|
upload("/emergencyteam/list", params); // 应急救援队伍管理列表
|
||||||
export const getEmergencyRescueTeamManagementView = (params) =>
|
export const getEmergencyRescueTeamManagementView = (params) =>
|
||||||
|
@ -36,6 +40,38 @@ export const setEmergencyRescueTeamManagementEdit = (params) =>
|
||||||
post("/emergencyteam/edit", params); // 应急救援队伍管理修改
|
post("/emergencyteam/edit", params); // 应急救援队伍管理修改
|
||||||
export const setEmergencyRescueTeamManagementAdd = (params) =>
|
export const setEmergencyRescueTeamManagementAdd = (params) =>
|
||||||
post("/emergencyteam/add", params); // 应急救援队伍管理添加
|
post("/emergencyteam/add", params); // 应急救援队伍管理添加
|
||||||
|
|
||||||
|
export const getEmergencyNewTeamManagementList = (params) =>
|
||||||
|
upload("/emergencynewteam/list", params); // 应急队伍管理列表
|
||||||
|
export const getEmergencyNewTeamManagementView = (params) =>
|
||||||
|
post("/emergencynewteam/goEdit", params); // 应急队伍管理查看
|
||||||
|
export const setEmergencyNewTeamManagementDelete = (params) =>
|
||||||
|
post("/emergencynewteam/delete", params); // 应急队伍管理删除
|
||||||
|
export const setEmergencyNewTeamManagementDeleteMultiple = (params) =>
|
||||||
|
post("/emergencynewteam/deleteAll", params); // 应急队伍管理删除多选
|
||||||
|
export const setEmergencyNewTeamManagementAdd = (params) =>
|
||||||
|
post("/emergencynewteam/add", params); // 应急队伍管理添加
|
||||||
|
export const setEmergencyNewTeamManagementGet = (params) =>
|
||||||
|
post("/emergencynewteam/getById", params); // 应急队伍管理查询总指挥队伍
|
||||||
|
export const setEmergencyNewTeamManagementGetE = (params) =>
|
||||||
|
post("/emergencynewteam/getEById", params); // 应急队伍管理查询领导
|
||||||
|
export const setEmergencyNewTeamManagementGetS = (params) =>
|
||||||
|
post("/emergencynewteam/getSById", params); // 应急队伍管理查询组员
|
||||||
|
export const setEmergencyNewTeamManagementAddE = (params) =>
|
||||||
|
post("/emergencynewteam/addE", params); // 应急队伍管理新增领导
|
||||||
|
export const setEmergencyNewTeamManagementAddS = (params) =>
|
||||||
|
post("/emergencynewteam/addS", params); // 应急队伍管理新增组员
|
||||||
|
export const setEmergencyNewTeamManagementDeleteItem = (params) =>
|
||||||
|
post("/emergencynewteam/deleteItem", params); // 应急队伍管理删除
|
||||||
|
export const setEmergencyNewTeamManagementDeleteItemMultiple = (params) =>
|
||||||
|
post("/emergencynewteam/deleteItemAll", params); // 应急队伍管理删除多选
|
||||||
|
export const setEmergencyTeamManagementEditS = (params) =>
|
||||||
|
post("/emergencynewteam/editS", params); // 应急救援队伍管理修改
|
||||||
|
export const setEmergencyTeamManagementEditE = (params) =>
|
||||||
|
post("/emergencynewteam/editE", params); // 应急救援队伍管理修改
|
||||||
|
export const setEmergencyTeamManagementEdit = (params) =>
|
||||||
|
post("/emergencynewteam/edit", params); // 应急救援队伍管理修改
|
||||||
|
|
||||||
export const getEmergencyDrillManagementList = (params) =>
|
export const getEmergencyDrillManagementList = (params) =>
|
||||||
upload("/emergencydrillbasic/list", params); // 应急演练管理列表
|
upload("/emergencydrillbasic/list", params); // 应急演练管理列表
|
||||||
export const setEmergencyDrillManagementDelete = (params) =>
|
export const setEmergencyDrillManagementDelete = (params) =>
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
import { post, upload } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getEvaluationReportList = (params) =>
|
||||||
|
post("/evaluation/list", params); // 动态评估报告列表
|
||||||
|
export const getEvaluationReportView = (params) =>
|
||||||
|
post("/evaluation/goEdit", params); // 动态评估报告查看
|
||||||
|
export const setEvaluationReportDelete = (params) =>
|
||||||
|
post("/evaluation/delete", params); // 动态评估报告删除
|
||||||
|
export const setEvaluationReportDeleteBatch = (params) =>
|
||||||
|
post("/evaluation/deleteAll", params); // 动态评估报告批量删除
|
||||||
|
export const setEvaluationReportAdd = (params) =>
|
||||||
|
upload("/evaluation/add", params); // 动态评估报告添加
|
||||||
|
export const setEvaluationReportEdit = (params) =>
|
||||||
|
post("/evaluation/edit", params); // 动态评估报告修改
|
|
@ -1,5 +1,15 @@
|
||||||
import { post, upload } from "@/request/axios.js";
|
import { post, upload } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getStudyIndexData = (params) =>
|
||||||
|
post("/studytask/studyIndex", params); // 首页统计
|
||||||
|
export const getTrainingIndexData = (params) =>
|
||||||
|
post("/studytask/trainingIndex", params); // 首页统计->培训计划
|
||||||
|
export const getPostTypeIndexData = (params) =>
|
||||||
|
post("/studytask/postTypeIndex", params); // 首页统计->岗位培训类型统计
|
||||||
|
|
||||||
|
export const getStudyStartIndexData = (params) =>
|
||||||
|
post("/studytask/getStudyStartIndexData", params); // 首页统计->学习之星
|
||||||
|
|
||||||
export const getPersonnelTaskDetailsList = (params) =>
|
export const getPersonnelTaskDetailsList = (params) =>
|
||||||
post("/studytask/userlist", params); // 一人一档任务详情列表
|
post("/studytask/userlist", params); // 一人一档任务详情列表
|
||||||
export const getStudyTaskCoursewareList = (params) =>
|
export const getStudyTaskCoursewareList = (params) =>
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
import { post } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getGateMachineAreaList = (params) =>
|
||||||
|
post("/gateMachineArea/list", params); // 列表
|
||||||
|
export const setGateMachineAreaSave = (params) =>
|
||||||
|
post("/gateMachineArea/add", params); // 新增
|
||||||
|
export const setGateMachineAreaRemove = (params) =>
|
||||||
|
post("/gateMachineArea/delete", params); // 删除多选
|
||||||
|
export const getGateMachineAreaView = (params) =>
|
||||||
|
post("/gateMachineArea/goEdit", params); // 查看
|
||||||
|
export const setGateMachineAreaData = (params) =>
|
||||||
|
post("/gateMachineArea/edit", params); // 修改
|
||||||
|
|
||||||
|
export const getGateMachineList = (params) =>
|
||||||
|
post("/gateMachineAreaGate/list", params); // 闸机列表
|
||||||
|
export const setGateMachineSave = (params) =>
|
||||||
|
post("/gateMachineAreaGate/add", params); // 闸机新增
|
||||||
|
export const setGateMachineRemove = (params) =>
|
||||||
|
post("/gateMachineAreaGate/delete", params); // 闸机删除多选
|
||||||
|
export const getGateMachineView = (params) =>
|
||||||
|
post("/gateMachineAreaGate/goEdit", params); // 闸机查看
|
||||||
|
export const setGateMachineEdit = (params) =>
|
||||||
|
post("/gateMachineAreaGate/edit", params); // 闸机修改
|
||||||
|
|
||||||
|
export const getGateMachineInit = (params) =>
|
||||||
|
post("/gateMachineAreaGate/initGateMachine", params);
|
||||||
|
|
||||||
|
export const getgetPeopleAndVehiclesRecordData = (params) =>
|
||||||
|
post("/gateMachineEntryExitLog/getPeopleAndVehiclesRecord", params); // 人、车 首页进出记录
|
||||||
|
|
||||||
|
export const getEntryExitPeoLogList = (params) =>
|
||||||
|
post("/gateMachineEntryExitLog/peoList", params); // 人进出记录
|
||||||
|
export const getEntryExitCarLogList = (params) =>
|
||||||
|
post("/gateMachineEntryExitLog/carList", params); // 车进出记录
|
||||||
|
|
||||||
|
export const getBIPeopleFieldCondition = () =>
|
||||||
|
post("/gateMachineEntryExitLog/getBIPeopleFieldCondition");
|
||||||
|
export const getBIEntryExitPeoLogList = (params) =>
|
||||||
|
post("/gateMachineEntryExitLog/getBIEntryExitPeoLogList", params); // BI人员闸机记录
|
||||||
|
export const getBIEntryExitCarLogList = (params) =>
|
||||||
|
post("/gateMachineEntryExitLog/getBIEntryExitCarLogList", params); // BI人员闸机记录
|
||||||
|
export const getGateMachineCountByCid = (params) =>
|
||||||
|
post("/gateMachineEntryExitLog/getGateMachineCountByCid", params); // bi 页上统计闸机数量
|
|
@ -12,6 +12,8 @@ export const setInventoryManagementBatchDeleteTemporary = (params) =>
|
||||||
post("/listmanager/deleteAlltemp", params); // 清单管理批量删除临时清单
|
post("/listmanager/deleteAlltemp", params); // 清单管理批量删除临时清单
|
||||||
export const setInventoryManagementBatchDelete = (params) =>
|
export const setInventoryManagementBatchDelete = (params) =>
|
||||||
post("/listmanager/deleteAll", params); // 清单管理批量删除
|
post("/listmanager/deleteAll", params); // 清单管理批量删除
|
||||||
|
export const setInventoryManagementBatchDeleteThorough = (params) =>
|
||||||
|
post("/listmanager/deleteAllthorough", params); // 清单管理彻底删除
|
||||||
export const getInventoryManagementRouteView = (params) =>
|
export const getInventoryManagementRouteView = (params) =>
|
||||||
post("/listmanager/getRoute", params); // 清单管理查看巡检路线
|
post("/listmanager/getRoute", params); // 清单管理查看巡检路线
|
||||||
export const setInventoryManagementRoute = (params) =>
|
export const setInventoryManagementRoute = (params) =>
|
||||||
|
@ -106,6 +108,8 @@ export const setDeleteCustomRecovery = (params) =>
|
||||||
post("/customStop/restore", params); // 删除清单管理恢复
|
post("/customStop/restore", params); // 删除清单管理恢复
|
||||||
export const setCustomBatchDelete = (params) =>
|
export const setCustomBatchDelete = (params) =>
|
||||||
post("/customStop/deleteAll", params); // 清单管理批量删除
|
post("/customStop/deleteAll", params); // 清单管理批量删除
|
||||||
|
export const setCustomBatchDeleteThorough = (params) =>
|
||||||
|
post("/customStop/deleteAllthorough", params); // 清单管理彻底删除
|
||||||
export const getCustomStopView = (params) => post("/customStop/goEdit", params); // 清单管理查看
|
export const getCustomStopView = (params) => post("/customStop/goEdit", params); // 清单管理查看
|
||||||
export const getCustomCheckRecordList = (params) =>
|
export const getCustomCheckRecordList = (params) =>
|
||||||
post("/customCheckrecord/list", params); // 隐患清单排查列表
|
post("/customCheckrecord/list", params); // 隐患清单排查列表
|
||||||
|
@ -130,3 +134,5 @@ export const setCustomInsuranceCoverageSave = (params) =>
|
||||||
post("/hiddenstandardCustom/saveBaoBaoType", params); // 清单管理设置包保责任类型提交
|
post("/hiddenstandardCustom/saveBaoBaoType", params); // 清单管理设置包保责任类型提交
|
||||||
export const getCustomCheckListOtherHiddenList = (params) =>
|
export const getCustomCheckListOtherHiddenList = (params) =>
|
||||||
post("/customHidden/getCheckHidden", params); // 隐患清单检查情况检查记录查看其它隐患列表
|
post("/customHidden/getCheckHidden", params); // 隐患清单检查情况检查记录查看其它隐患列表
|
||||||
|
|
||||||
|
export const getDictionaries = (params) => post("/dictionaries/goEdit", params); // 获取数据字典
|
||||||
|
|
|
@ -21,3 +21,14 @@ export const getCalendarAdd = (params) => post("/schedule/add", params); // 日
|
||||||
export const getCalendarEdit = (params) => post("/schedule/edit", params); // 日历修改
|
export const getCalendarEdit = (params) => post("/schedule/edit", params); // 日历修改
|
||||||
export const getWorkReminder = (params) =>
|
export const getWorkReminder = (params) =>
|
||||||
post("/listmanager/checkListIndex", params); // 工作提醒
|
post("/listmanager/checkListIndex", params); // 工作提醒
|
||||||
|
|
||||||
|
export const getCheckListCount = (params) =>
|
||||||
|
post("/listmanager/checkListCount", params); // 首页清单统计
|
||||||
|
|
||||||
|
export const getCheckListCountByPeriod = (params) =>
|
||||||
|
post("/listmanager/checkListCountByPeriod", params); // 首页清单统计
|
||||||
|
|
||||||
|
export const getEightWorkCount = (params) =>
|
||||||
|
post("/eightWork/eightWorkIndex", params); // 首页八项作业统计
|
||||||
|
export const getInspectionCheckCount = (params) =>
|
||||||
|
post("/safetyenvironmental/inspectionIndex", params); // 首页八项作业统计
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
import { post, upload } from "@/request/axios.js";
|
import { post, upload } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getDangerSourceIndexData = (params) =>
|
||||||
|
post("/majordangersource/dangerSourceIndex", params); // 重大危险源首页统计
|
||||||
|
|
||||||
export const getMajorHazardManagementList = (params) =>
|
export const getMajorHazardManagementList = (params) =>
|
||||||
post("/majordangersource/list", params); // 重大危险源管理列表
|
post("/majordangersource/list", params); // 重大危险源管理列表
|
||||||
export const setMajorHazardManagementDelete = (params) =>
|
export const setMajorHazardManagementDelete = (params) =>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { post } from "./axios";
|
import { post } from "./axios";
|
||||||
|
|
||||||
export const getPing = (params) => post("/head/ping", params); // 保活
|
export const getPing = (params) => post("/head/ping", params); // 保活
|
||||||
|
export const getBiMapModelType = (params) => post("/head/ping", params); // 保活
|
||||||
export const getRealTimeList = (params) => post("/map/getRealTimeList", params); // 获取在线人员列表
|
export const getRealTimeList = (params) => post("/map/getRealTimeList", params); // 获取在线人员列表
|
||||||
export const getFenceList = (params) => post("/map/getFenceList", params); // 获取围栏列表
|
export const getFenceList = (params) => post("/map/getFenceList", params); // 获取围栏列表
|
||||||
export const getFenceInfo = (params) => post("/map/getFenceListInfo", params); // 获取围栏详情
|
export const getFenceInfo = (params) => post("/map/getFenceListInfo", params); // 获取围栏详情
|
||||||
|
@ -19,8 +20,12 @@ export const getHotworkList = (params) => post("/map/getHotworkList", params);
|
||||||
export const getEightWorksByType = (params) =>
|
export const getEightWorksByType = (params) =>
|
||||||
post("/map/getEightWorksByType", params);
|
post("/map/getEightWorksByType", params);
|
||||||
export const getCameraList = (params) => post("/map/getCameraList", params);
|
export const getCameraList = (params) => post("/map/getCameraList", params);
|
||||||
|
export const getGateMachineList = (params) =>
|
||||||
|
post("/map/getGateMachineList", params);
|
||||||
export const getConfinedspaceWorkList = (params) =>
|
export const getConfinedspaceWorkList = (params) =>
|
||||||
post("/map/getConfinedspaceWorkList", params);
|
post("/map/getConfinedspaceWorkList", params);
|
||||||
|
|
||||||
export const getHighWorkList = (params) => post("/map/getHighWorkList", params);
|
export const getHighWorkList = (params) => post("/map/getHighWorkList", params);
|
||||||
|
// 地图上获取电子围栏下人数
|
||||||
|
export const getPeopleCountByLayId = (params) =>
|
||||||
|
post("/map/getElectronicFencePerCount", params);
|
||||||
|
|
|
@ -14,6 +14,8 @@ export const getInspectionRecordMapInfo = (params) =>
|
||||||
post("/app/checkrecord/goMapWeui", params); // 检查记录地图
|
post("/app/checkrecord/goMapWeui", params); // 检查记录地图
|
||||||
export const geHiddenDangerView = (params) =>
|
export const geHiddenDangerView = (params) =>
|
||||||
post("/app/hidden/goEditWeui", params); // 隐患详情
|
post("/app/hidden/goEditWeui", params); // 隐患详情
|
||||||
export const getRiskPointList = (params) => post("/app/riskpoint/list", params); // 风险点单元列表
|
export const getRiskPointList = (params) => post("/app/riskpoint/list", params); // 风险点单元列表,检查记录的list页面
|
||||||
export const getRiskPointCheckList = (params) =>
|
export const getRiskPointCheckList = (params) =>
|
||||||
post("/app/checkrecord/recordByIde", params); // 风险点单元检查清单列表
|
post("/app/checkrecord/recordByIde", params); // 风险点单元检查清单列表
|
||||||
|
export const getRiskPointGoEditWeui = (params) =>
|
||||||
|
post("/app/checkrecord/goEditWeui", params); // 风险点隐患详情
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import { post, upload } from "@/request/axios.js";
|
import { post, upload } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getVideocourSewareCountIndexList = (params) =>
|
||||||
|
post("/videocourseware/getCountIndex", params); // 首页展示
|
||||||
export const getVideoCoursewareList = (params) =>
|
export const getVideoCoursewareList = (params) =>
|
||||||
post("/videocourseware/list", params); // 视频课件维护列表
|
post("/videocourseware/list", params); // 视频课件维护列表
|
||||||
export const getVideoCoursewareView = (params) =>
|
export const getVideoCoursewareView = (params) =>
|
||||||
|
|