版本同步
|
@ -1,8 +1,7 @@
|
|||
VITE_BASE=/
|
||||
VITE_BASE_URL=http://192.168.0.79:8095/
|
||||
VITE_BASE_URL=http://192.168.0.138:8199/
|
||||
|
||||
#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 在线学习
|
||||
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_URL=http://192.168.0.31:8095/integrated_whb/
|
||||
#VITE_BASE_URL=http://47.92.102.56:8080/integrated_whb/
|
||||
# VITE_BASE_URL=https://qaaqwh.qhdsafety.com/integrated_whb/
|
||||
|
||||
VITE_BASE_URL=http://47.92.102.56:8080/integrated_whb/
|
||||
#websocket t掉线
|
||||
VITE_ON_LINE_WEB_SOCKET_URL=ws://47.92.102.56:8869
|
||||
# VITE_ON_LINE_WEB_SOCKET_URL=wss://qaaqwh.qhdsafety.com/disconnected/
|
||||
|
||||
#websocket 在线学习
|
||||
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/
|
||||
|
|
|
@ -5,10 +5,6 @@ interface ImportMetaEnv {
|
|||
readonly VITE_TEMPLATE_URL: string
|
||||
readonly VITE_BASE: string
|
||||
readonly VITE_BASE_URL: string
|
||||
/**
|
||||
* websocket t掉线
|
||||
*/
|
||||
readonly VITE_ON_LINE_WEB_SOCKET_URL: string
|
||||
/**
|
||||
* websocket 在线学习
|
||||
*/
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
"animate.css": "^4.1.1",
|
||||
"autofit.js": "^3.0.7",
|
||||
"axios": "^1.6.3",
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"echarts": "^5.4.3",
|
||||
"element-plus": "^2.6.1",
|
||||
|
@ -25,6 +26,7 @@
|
|||
"jspdf": "^2.5.1",
|
||||
"lodash-es": "^4.17.21",
|
||||
"mitt": "^3.0.1",
|
||||
"mp4box": "^0.5.2",
|
||||
"nanoid": "^5.0.4",
|
||||
"normalize.css": "^8.0.1",
|
||||
"pako": "^2.1.0",
|
||||
|
@ -67,7 +69,7 @@
|
|||
"unplugin-vue-components": "^0.22.12",
|
||||
"vite": "^4.5.1",
|
||||
"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-remove-console": "^2.2.0",
|
||||
"vue-eslint-parser": "^9.3.2"
|
||||
|
|
|
@ -407,7 +407,7 @@ var CustomCesium;
|
|||
}
|
||||
},
|
||||
minimumLevel: 3,
|
||||
maximumLevel: 19
|
||||
maximumLevel: 18
|
||||
});
|
||||
static gaode_mapResources = new Cesium.UrlTemplateImageryProvider({
|
||||
url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
|
||||
|
@ -425,7 +425,7 @@ var CustomCesium;
|
|||
url: r,
|
||||
fileExtension: "png",
|
||||
minimumLevel: 0,
|
||||
maximumLevel: 19,
|
||||
maximumLevel: 18,
|
||||
tilingScheme: new Cesium.WebMercatorTilingScheme
|
||||
});
|
||||
this.init(e, t, 50)
|
||||
|
@ -684,14 +684,13 @@ var CustomCesium;
|
|||
|
||||
class d {
|
||||
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({
|
||||
url: t,
|
||||
show: !0,
|
||||
})),
|
||||
this.tileset.readyPromise.then((e => {
|
||||
this.tileset = e,
|
||||
this.setHeight(i)
|
||||
this.tileset = e, this.setHeight(i)
|
||||
}
|
||||
)),
|
||||
this.polygon = []
|
||||
|
@ -700,63 +699,59 @@ var CustomCesium;
|
|||
show(e) {
|
||||
this.tileset.show = e
|
||||
}
|
||||
|
||||
cancelClipping() {//取消裁剪
|
||||
this.tileset._clippingPlanes = new Cesium.ClippingPlaneCollection({
|
||||
//一组ClippingPlane对象,用于选择性地禁用每个平面外部的渲染。
|
||||
planes: [
|
||||
// 裁剪面两个参数的:第一个为平面法向量,第二个为原点到平面的垂直距离
|
||||
new Cesium.ClippingPlane(
|
||||
//笛卡尔3:表示为三维空间的平面的法向量,x表示为该法向量在x轴上的分量,y表示为该法向量在y轴上的分量,z表示为该法向量在z轴上的分量
|
||||
new Cesium.Cartesian3(0.0, 0.0, -1.0),
|
||||
2000
|
||||
),
|
||||
],
|
||||
});
|
||||
init(e) {
|
||||
return new Promise((t => {
|
||||
new Cesium.Resource.fetchJson({url: e}).then((e => {
|
||||
let i = [];
|
||||
i = e.scenes, i[0].children.forEach(((e, t) => {
|
||||
e.children && this.buildingArr.push(e)
|
||||
})), this.buildingArr.forEach(((e, t) => {
|
||||
i[0].children.forEach(((i, r) => {
|
||||
"ground_000001" == i.name && e.name.split("F")[0] > 0 && (this.buildingArr[t].children.push(i), this.ground_arr = i)
|
||||
}))
|
||||
})), 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})
|
||||
}))
|
||||
}))
|
||||
}
|
||||
|
||||
clipTileset(polygon) {//裁剪
|
||||
this.tileset._clippingPlanes = null;
|
||||
this.polygon = polygon;
|
||||
const transform = this.tileset.root.transform;
|
||||
const inverseTransform = Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4());
|
||||
const clippingPlanes = new Cesium.ClippingPlaneCollection({
|
||||
//一组ClippingPlane对象,用于选择性地禁用每个平面外部的渲染。
|
||||
planes: [
|
||||
// 裁剪面两个参数的:第一个为平面法向量,第二个为原点到平面的垂直距离
|
||||
new Cesium.ClippingPlane(
|
||||
//笛卡尔3:表示为三维空间的平面的法向量,x表示为该法向量在x轴上的分量,y表示为该法向量在y轴上的分量,z表示为该法向量在z轴上的分量
|
||||
new Cesium.Cartesian3(0.0, 0.0, -1.0),
|
||||
1.2//裁剪平面距地面的距离
|
||||
),
|
||||
],
|
||||
});
|
||||
for (let i = 0; i < polygon.length - 1; i++) {
|
||||
const plane = this.createClippingPlane(polygon[i], polygon[i + 1], inverseTransform);
|
||||
clippingPlanes.add(plane);
|
||||
showTilesFloor(e) {
|
||||
let t = {name: null, children: 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);
|
||||
const i = [];
|
||||
t.children && t.children.forEach((e => {
|
||||
const t = ["${name} === '" + e.name + "'", "rgba(255,255,255,1)"];
|
||||
i.push(t)
|
||||
})), "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}})
|
||||
}
|
||||
clipTileset(e) {
|
||||
this.tileset._clippingPlanes = null, this.polygon = e;
|
||||
const t = this.tileset.root.transform,
|
||||
i = Cesium.Matrix4.inverseTransformation(t, new Cesium.Matrix4),
|
||||
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++) {
|
||||
const n = this.createClippingPlane(e[t], e[t + 1], i);
|
||||
r.add(n)
|
||||
}
|
||||
this.tileset.clippingPlanes = clippingPlanes;
|
||||
this.tileset.clippingPlanes = r
|
||||
}
|
||||
|
||||
createClippingPlane(p1, p2, inverseTransform) {
|
||||
const p1C3 = this.getOriginCoordinateSystemPoint(p1, inverseTransform);
|
||||
const p2C3 = this.getOriginCoordinateSystemPoint(p2, inverseTransform);
|
||||
const up = new Cesium.Cartesian3(0, 0, -1);
|
||||
|
||||
const direction = new Cesium.Cartesian3();
|
||||
Cesium.Cartesian3.subtract(p2C3, p1C3, direction);
|
||||
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);
|
||||
createClippingPlane(e, t, i) {
|
||||
const r = this.getOriginCoordinateSystemPoint(e, i), n = this.getOriginCoordinateSystemPoint(t, i),
|
||||
s = new Cesium.Cartesian3(0, 0, -1), a = new Cesium.Cartesian3;
|
||||
Cesium.Cartesian3.subtract(n, r, a);
|
||||
const o = new Cesium.Cartesian3;
|
||||
Cesium.Cartesian3.cross(s, a, o), Cesium.Cartesian3.normalize(o, o);
|
||||
const l = -Cesium.Cartesian3.dot(o, r);
|
||||
return new Cesium.ClippingPlane(o, l)
|
||||
}
|
||||
|
||||
getOriginCoordinateSystemPoint(point, inverseTransform) {
|
||||
const cartesian = Cesium.Cartesian3.fromDegrees(point[0], point[1]);
|
||||
return Cesium.Matrix4.multiplyByPoint(inverseTransform, cartesian, new Cesium.Cartesian3());
|
||||
getOriginCoordinateSystemPoint(e, t) {
|
||||
const i = Cesium.Cartesian3.fromDegrees(e[0], e[1]);
|
||||
return Cesium.Matrix4.multiplyByPoint(t, i, new Cesium.Cartesian3)
|
||||
}
|
||||
|
||||
setHeight(e = 0) {
|
||||
const t = this.tileset.boundingSphere
|
||||
, i = Cesium.Cartographic.fromCartesian(t.center)
|
||||
|
@ -771,8 +766,7 @@ var CustomCesium;
|
|||
}
|
||||
|
||||
destroy() {
|
||||
this.tileset.destroy(),
|
||||
this.tileset = void 0
|
||||
this.tileset.destroy(), this.tileset = void 0
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -794,7 +788,6 @@ var CustomCesium;
|
|||
}
|
||||
|
||||
mouseLeft(e) {
|
||||
let xx = [];
|
||||
new Cesium.ScreenSpaceEventHandler(this.icy.viewer.scene.canvas).setInputAction((t => {
|
||||
let i = this.icy.viewer.camera.getPickRay(t.position)
|
||||
, r = this.icy.viewer.scene.globe.pick(i, this.icy.viewer.scene)
|
||||
|
@ -807,9 +800,14 @@ var CustomCesium;
|
|||
latitude: Number(a.toFixed(8)),
|
||||
altitude: Number(o.toFixed(5))
|
||||
};
|
||||
// console.log("鼠标获取经纬高", s, a, o, l);
|
||||
xx.push([s, a, o]);
|
||||
console.log(JSON.stringify(xx));
|
||||
console.log("鼠标获取经纬高", s, a, o, l);
|
||||
//方向 围绕Z轴旋转
|
||||
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);
|
||||
// console.log(h);
|
||||
if (!h)
|
||||
|
@ -1432,7 +1430,7 @@ var CustomCesium;
|
|||
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,
|
||||
!t && !h)
|
||||
return console.error("传参有问题");
|
||||
|
@ -1484,6 +1482,7 @@ var CustomCesium;
|
|||
this.entity.peoName = k
|
||||
this.entity.floor = f
|
||||
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 asyncRouter from "@/assets/js/asyncRouter";
|
||||
import { getAsyncRouter } from "@/request/api";
|
||||
import { useTagsViewStore } from "@/pinia/tagsView.js";
|
||||
|
||||
const modules = import.meta.glob([
|
||||
"./views/**/*.vue",
|
||||
|
@ -19,6 +20,7 @@ router.beforeEach(async (to, from, next) => {
|
|||
const routerStore = useRouterStore(pinia);
|
||||
const menuStore = useMenuStore(pinia);
|
||||
const userStore = useUserStore(pinia);
|
||||
const tagsViewStore = useTagsViewStore(pinia);
|
||||
// 需要登陆
|
||||
if (to.meta.isLogin !== false) {
|
||||
if (!userStore.getUserInfo.USER_ID) {
|
||||
|
@ -30,7 +32,13 @@ router.beforeEach(async (to, from, next) => {
|
|||
// pinia里没有储存路由,去后台获取路由
|
||||
if (routerStore.getRouters.length === 0) {
|
||||
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; // 死路由
|
||||
routerStore.setRouters(storageRouter); // 存储路由
|
||||
routerGo(to, next); // 执行路由跳转方法
|
||||
|
@ -47,11 +55,26 @@ router.beforeEach(async (to, from, next) => {
|
|||
storageRouter = null;
|
||||
routerStore.$reset();
|
||||
menuStore.$reset();
|
||||
tagsViewStore.$reset();
|
||||
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) {
|
||||
const menuStore = useMenuStore(pinia);
|
||||
const userStore = useUserStore(pinia);
|
||||
storageRouter = filterAsyncRouter(cloneDeep(storageRouter)); // 过滤路由
|
||||
for (let i = 0; i < storageRouter.length; i++) {
|
||||
router.addRoute("app", storageRouter[i]); // 动态添加路由
|
||||
|
@ -63,7 +86,14 @@ function routerGo(to, next) {
|
|||
router.options.routes[i].children.concat(storageRouter)
|
||||
); // 将路由数据存到一个新的pinia里,做菜单渲染
|
||||
if (!menuStore.getModel) {
|
||||
menuStore.setModel(MODEL["1"]);
|
||||
if (
|
||||
userStore.getUserInfo.CORPINFO_ID ===
|
||||
"467088695e1340b2897c264bb8100766"
|
||||
) {
|
||||
menuStore.setModel(MODEL["7"]);
|
||||
} else {
|
||||
menuStore.setModel(MODEL["1"]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
:root {
|
||||
--el-header-height: 69px;
|
||||
--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-text-color-regular: #fff !important;
|
||||
--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",
|
||||
5: "educationAndTraining",
|
||||
6: "comprehensive",
|
||||
// 东方石油专用 企业管理
|
||||
7: "dfPre",
|
||||
};
|
||||
// 头部导航条
|
||||
export const MENU = [
|
||||
{ title: "双重预防", model: MODEL["1"] },
|
||||
{ title: "双重预防", model: MODEL["1"], url: "/index" },
|
||||
{ title: "特殊作业", model: MODEL["2"] },
|
||||
{ title: "人员定位", model: MODEL["3"] },
|
||||
{ title: "人员定位", model: MODEL["3"], url: "/location_index" },
|
||||
{ title: "监测预警", model: MODEL["4"] },
|
||||
{ title: "教育培训", model: MODEL["5"] },
|
||||
{ title: "教育培训", model: MODEL["5"], url: "/education_index" },
|
||||
{ title: "综合管理", model: MODEL["6"] },
|
||||
];
|
||||
export const MENU_DF = [
|
||||
{ title: "企业管理", model: MODEL["7"] },
|
||||
{ title: "特殊作业", model: MODEL["2"] },
|
||||
];
|
||||
export const PRINT_STYLE =
|
||||
'<style type="text/css" media="print">\n' +
|
||||
" @page { size: landscape; }\n" +
|
||||
|
|
|
@ -420,3 +420,10 @@ export const layoutFnGetPersonnelManagementJobType = async () => {
|
|||
});
|
||||
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
|
||||
v-model="modelValue"
|
||||
:data="departmentTree"
|
||||
:disabled="disabled"
|
||||
node-key="id"
|
||||
:props="{
|
||||
children: 'nodes',
|
||||
|
@ -38,6 +39,10 @@ const props = defineProps({
|
|||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
|
@ -60,6 +65,9 @@ const modelValue = useVModel(props, "modelValue", emits);
|
|||
const departmentTree = await layoutFnGetDepartmentzTree({
|
||||
rootDisabled: props.rootDisabled,
|
||||
});
|
||||
if (props.multiple) {
|
||||
modelValue.value = [];
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
<template>
|
||||
<el-drawer v-model="visible" title="电子围栏台账" direction="rtl" size="50%">
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="20px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-form :model="searchForm" label-width="20px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="关键字" prop="KEYWORDS" label-width="60px">
|
||||
|
@ -17,10 +13,8 @@
|
|||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label-width="30px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" @click="fnSearch">搜索</el-button>
|
||||
<el-button @click="fnResetPaginationd">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -50,13 +44,14 @@
|
|||
</layout-card>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { getRyRegionList } from "@/request/risk_control.js";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getRyRegionList);
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
|
||||
// 父组件传入的 props
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
|
@ -66,14 +61,68 @@ const props = defineProps({
|
|||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => {},
|
||||
default: () => ({
|
||||
ELECTRONIC_FENCE_NAME: "",
|
||||
ELECTRONIC_FENCE_ID: "",
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
const emits = defineEmits(["update:visible", "update:form"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
// 重置分页
|
||||
const fnResetPaginationd = () => {
|
||||
searchForm.value = {};
|
||||
fnResetPagination();
|
||||
};
|
||||
|
||||
// 搜索功能
|
||||
const fnSearch = () => {
|
||||
fnGetData();
|
||||
};
|
||||
|
||||
// 绑定行数据
|
||||
const handleJoin = (row) => {
|
||||
form.value.ELECTRONIC_FENCE_NAME = row.regName;
|
||||
form.value.ELECTRONIC_FENCE_ID = row.id;
|
||||
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>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -7,6 +7,36 @@
|
|||
>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<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-form-item label="检查内容" prop="CHECK_CONTENT">
|
||||
<el-input
|
||||
|
@ -86,6 +116,39 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</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-form-item label="隐患视频" prop="videoFiles">
|
||||
<layout-upload
|
||||
|
@ -227,6 +290,11 @@ const props = defineProps({
|
|||
type: Object,
|
||||
default: () => ({}),
|
||||
},
|
||||
checkScoreList: {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: () => [],
|
||||
},
|
||||
// unqualified 清单检查不合格隐患
|
||||
// otherHidden 清单检查其他隐患
|
||||
// ledger 隐患台账
|
||||
|
@ -265,6 +333,7 @@ const rules = {
|
|||
RECTIFICATIONDEADLINE: [
|
||||
{ required: true, message: "请选择整改期限", trigger: "change" },
|
||||
],
|
||||
HARM_TYPE: [{ required: true, message: "请选择危害类型", trigger: "change" }],
|
||||
RECTIFICATIONDEPT: [
|
||||
{ required: true, message: "请选择整改部门", trigger: "change" },
|
||||
],
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<span v-if="data.info.SOURCE === '1'"> 隐患快报 </span>
|
||||
<span v-if="data.info.SOURCE === '2'"> 风险管控清单检查 </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>
|
||||
</el-descriptions-item>
|
||||
<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 === '101'"> 待指派 </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 label="隐患描述">
|
||||
{{ data.info.HIDDENDESCR }}
|
||||
|
|
|
@ -15,14 +15,16 @@
|
|||
</div>
|
||||
<div class="label">清除绘制</div>
|
||||
</div>
|
||||
<div class="option" @click="reduction">
|
||||
<div v-if="maptype === 0" class="option" @click="reduction">
|
||||
<div>
|
||||
<img src="/src/assets/images/map_tools/icon3.png" alt="" />
|
||||
</div>
|
||||
<div class="label">还原建筑</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="id">当前选中楼层id:{{ model_id }}</div>
|
||||
<div v-if="type === 1 && maptype === 0" class="id">
|
||||
当前选中楼层id:{{ model_id }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -48,6 +50,11 @@ const props = defineProps({
|
|||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
// '0可点击模型,1倾斜模型',
|
||||
maptype: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
positions: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
|
@ -70,13 +77,24 @@ const emits = defineEmits([
|
|||
"update:position",
|
||||
"update:modUuid",
|
||||
]);
|
||||
const { positions, position, modUuid } = useVModels(props, emits);
|
||||
const { positions, position, modUuid, maptype } = useVModels(props, emits);
|
||||
|
||||
const confrim = () => {
|
||||
if (model_id.value === 0) {
|
||||
ElMessage.error("未选择建筑,或者未扎点");
|
||||
if (maptype.value === 0) {
|
||||
if (model_id.value === 0) {
|
||||
ElMessage.error("未选择建筑,或者未扎点");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (data.length === 0) {
|
||||
ElMessage.error("右键点击选择点位");
|
||||
return;
|
||||
}
|
||||
if (data.length <= 2) {
|
||||
ElMessage.error("最少选择三个点位");
|
||||
return;
|
||||
}
|
||||
console.log(data);
|
||||
showEnclosure(data);
|
||||
positions.value = [...data];
|
||||
modUuid.value = model_id.value;
|
||||
|
|
|
@ -32,7 +32,7 @@ export class Loadglb {
|
|||
try {
|
||||
const response = await axios.get(
|
||||
pls_ip.replace("8084", "9000").replace("18084", "19000") +
|
||||
"/buildr/public/models/scene_000001.json"
|
||||
"/buildr/public/models/scene_000001.json"
|
||||
);
|
||||
// const response = await getSceneJson();
|
||||
// 将获取的数据保存到实例的属性中
|
||||
|
@ -165,7 +165,7 @@ export class Loadglb {
|
|||
lon: unit.lon,
|
||||
lat: unit.lat,
|
||||
scale: unit.scale,
|
||||
angle: [90, 0, 0]
|
||||
angle: [90, 0, 0],
|
||||
// angle: [97.4843053, 0, 0]
|
||||
});
|
||||
this.entityList.push(m);
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
import { Loadglb } from "./loadglb.js";
|
||||
import { ref } from "vue";
|
||||
|
||||
const loadMap = 3;
|
||||
let $entityTransparent = [];
|
||||
const clickModel = new Map();
|
||||
|
||||
const tiles3D = ref({});
|
||||
const tiles3DfloorArr = ref([]);
|
||||
let enclosure = null;
|
||||
let entities = null;
|
||||
let centerLon = 0;
|
||||
let centerLat = 0;
|
||||
let centerHig = 0;
|
||||
let viewArr = [];
|
||||
|
||||
export const initMap = (corp) => {
|
||||
window.$scene = new window.CustomCesium.Scene(
|
||||
"map",
|
||||
|
@ -24,6 +31,10 @@ export const initMap = (corp) => {
|
|||
),
|
||||
});
|
||||
const [wgsLat, wgsLon] = bd09ToWgs84(corp.LATITUDE, corp.LONGITUDE);
|
||||
centerLat = wgsLat;
|
||||
centerLon = wgsLon;
|
||||
centerHig = corp.map_hight;
|
||||
viewArr = corp.view_arr.split(",");
|
||||
flyTo(wgsLon, wgsLat);
|
||||
// 亮度设置
|
||||
const stages = window.$icy.viewer.scene.postProcessStages;
|
||||
|
@ -32,9 +43,20 @@ export const initMap = (corp) => {
|
|||
stages.add(window.Cesium.PostProcessStageLibrary.createBrightnessStage());
|
||||
window.$icy.viewer.scene.brightness.enabled = true;
|
||||
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 x_pi = (Math.PI * 3000.0) / 180.0;
|
||||
const x = bdLon - 0.0065;
|
||||
|
@ -115,13 +137,13 @@ const transformlng = (lng, lat) => {
|
|||
};
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const flyTo = (lng, lat) => {
|
||||
const flyTo = () => {
|
||||
window.$carmer.flyTo({
|
||||
// 视角飞入
|
||||
maxHeight: 1500,
|
||||
time: 1,
|
||||
position: [lng, lat - 0.001, 200],
|
||||
angle: [0, -60, 0],
|
||||
position: [centerLon, centerLat - 0.0001, parseInt(centerHig)],
|
||||
angle: viewArr,
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -62,6 +62,8 @@
|
|||
<el-input
|
||||
v-model="form.RISK_DESCR"
|
||||
type="textarea"
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
:autosize="{
|
||||
minRows: 3,
|
||||
}"
|
||||
|
@ -135,6 +137,8 @@
|
|||
<el-input
|
||||
v-model="form.MEASURES"
|
||||
type="textarea"
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
:autosize="{
|
||||
minRows: 3,
|
||||
}"
|
||||
|
@ -158,6 +162,8 @@
|
|||
<el-input
|
||||
v-model="form.EME_MEASURES"
|
||||
type="textarea"
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
:autosize="{
|
||||
minRows: 3,
|
||||
}"
|
||||
|
@ -197,6 +203,8 @@
|
|||
<el-input
|
||||
v-model="form.MANAGEMENT_CONTROL_THREE"
|
||||
type="textarea"
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
:autosize="{
|
||||
minRows: 3,
|
||||
}"
|
||||
|
@ -249,7 +257,67 @@ const props = defineProps({
|
|||
});
|
||||
const emits = defineEmits(["update:form"]);
|
||||
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 infoIsEmpty = ref(isEmpty(props.info));
|
||||
const unitList = ref([]);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div>
|
||||
<el-button type="primary" @click="fnOpen">手写签字</el-button>
|
||||
</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%" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -103,6 +103,9 @@ if (props.type === "label") {
|
|||
const resData = await getThreeInstitutionalLibrariesLabel({ loading: false });
|
||||
tree = resData.tree;
|
||||
}
|
||||
if (props.collapseTags) {
|
||||
modelValue.value = [];
|
||||
}
|
||||
</script>
|
||||
|
||||
<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 = () => {
|
||||
if (img.width !== +ratio[0] && img.height !== +ratio[1]) {
|
||||
ElMessage.warning(`只能上传${props.ratio}分辨率的图片`);
|
||||
uploadRef.value.handleRemove(uploadFile);
|
||||
uploadRef.value.handleRemove(uploadFile.raw);
|
||||
}
|
||||
};
|
||||
}
|
||||
if (size) {
|
||||
if (uploadFile.size > size) {
|
||||
ElMessage.warning(`文件大小不能超过${props.size}M`);
|
||||
uploadRef.value.handleRemove(uploadFile);
|
||||
uploadRef.value.handleRemove(uploadFile.raw);
|
||||
}
|
||||
}
|
||||
if (accept) {
|
||||
|
@ -147,7 +147,7 @@ const onChange = (uploadFile, uploadFiles) => {
|
|||
emits("update:file-list", uploadFiles);
|
||||
} else {
|
||||
ElMessage.warning(`只能上传${props.accept}格式的文件`);
|
||||
uploadRef.value.handleRemove(uploadFile);
|
||||
uploadRef.value.handleRemove(uploadFile.raw);
|
||||
}
|
||||
} else {
|
||||
emits("update:file-list", uploadFiles);
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
</div>
|
||||
<verification
|
||||
:show="verificationShow"
|
||||
:imgs="[verificationUrl]"
|
||||
@success="verificationSuccess"
|
||||
@close="verificationClose"
|
||||
/>
|
||||
|
@ -59,6 +60,9 @@
|
|||
<script setup>
|
||||
import Verification from "vue3-puzzle-vcode";
|
||||
import { ref } from "vue";
|
||||
import { getVerificationImage } from "@/request/api.js";
|
||||
import dayjs from "dayjs";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
|
||||
defineOptions({
|
||||
name: "LayoutVerification",
|
||||
|
@ -69,6 +73,7 @@ defineProps({
|
|||
default: false,
|
||||
},
|
||||
});
|
||||
const verificationUrl = ref("");
|
||||
const emits = defineEmits(["update:verificationPass"]);
|
||||
const verificationShow = ref(false);
|
||||
const verificationClose = () => {
|
||||
|
@ -78,6 +83,24 @@ const verificationSuccess = () => {
|
|||
emits("update:verificationPass", true);
|
||||
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>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
@ -205,9 +228,11 @@ const verificationSuccess = () => {
|
|||
background: #2e63d8 !important;
|
||||
border: 1px solid #2752b3 !important;
|
||||
}
|
||||
|
||||
.mi-captcha-radar-pass .mi-captcha-radar-tip {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.mi-captcha-radar-success-icon {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
|
|
@ -31,9 +31,11 @@
|
|||
v-for="(item, index) in data.breadcrumbList"
|
||||
: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 }}
|
||||
</router-link>
|
||||
<!-- </router-link>-->
|
||||
</span>
|
||||
<span v-else-if="index !== data.breadcrumbList.length - 1">
|
||||
{{ item.meta.title }}
|
||||
</span>
|
||||
|
|
|
@ -102,6 +102,11 @@ const rules = {
|
|||
],
|
||||
newpwd: [
|
||||
{ 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" },
|
||||
],
|
||||
newpassword1: [{ required: false, validator: validatePass, trigger: "blur" }],
|
||||
|
|
|
@ -4,15 +4,12 @@
|
|||
<div class="logo" />
|
||||
<div class="menu">
|
||||
<ul>
|
||||
<li @click="fnNavigationBI">
|
||||
<div class="title">可视化</div>
|
||||
</li>
|
||||
<template v-for="(item, index) in MENU" :key="index">
|
||||
<template v-for="(item, index) in data.navData" :key="index">
|
||||
<li
|
||||
:class="{ active: item.model === menuStore.getModel }"
|
||||
@click="switchMenu(item.model)"
|
||||
:class="{ active: item.MODEL === menuStore.getModel }"
|
||||
@click="switchMenu(item)"
|
||||
>
|
||||
<div class="title">{{ item.title }}</div>
|
||||
<div class="title">{{ item.TITLE }}</div>
|
||||
</li>
|
||||
</template>
|
||||
</ul>
|
||||
|
@ -26,7 +23,9 @@
|
|||
>
|
||||
<div class="user_info">
|
||||
<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
|
||||
theme="filled"
|
||||
size="16"
|
||||
|
@ -61,12 +60,11 @@
|
|||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive } from "vue";
|
||||
import { reactive, h } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useMenuStore } from "@/pinia/menu";
|
||||
import { useUserStore } from "@/pinia/user";
|
||||
import { MENU } from "@/assets/js/constant";
|
||||
import { getInfo, getUserInfo, logout } from "@/request/api";
|
||||
import { getInfo, getUserInfo, logout, getNavList } from "@/request/api";
|
||||
import { getSpecialOperationsWarnAmount } from "@/request/special_operations";
|
||||
import UpdateInfo from "./components/update_info.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 { nanoid } from "nanoid";
|
||||
import { ElNotification } from "element-plus";
|
||||
import { getRydyWebsiteStatus } from "@/request/api.js";
|
||||
|
||||
defineOptions({
|
||||
name: "LayoutHeader",
|
||||
|
@ -93,6 +92,7 @@ const data = reactive({
|
|||
visible: false,
|
||||
form: {},
|
||||
},
|
||||
navData: [],
|
||||
});
|
||||
const dropdownCommand = async (command) => {
|
||||
if (command === "signOut") {
|
||||
|
@ -115,8 +115,38 @@ const fnGetUserInfo = async () => {
|
|||
data.userDialog.visible = true;
|
||||
data.userDialog.form = resData.pd;
|
||||
};
|
||||
const switchMenu = (model) => {
|
||||
menuStore.setModel(model);
|
||||
const getMenuData = async () => {
|
||||
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 { send } = useWebSocket(
|
||||
|
@ -151,8 +181,15 @@ const fnGetInfo = async () => {
|
|||
fnGetInfo();
|
||||
const fnSignOut = async () => {
|
||||
await logout();
|
||||
userStore.$reset();
|
||||
await router.replace("/login");
|
||||
if (
|
||||
userStore.getUserInfo.CORPINFO_ID === "c6b69927126348ef987118165eb62659"
|
||||
) {
|
||||
userStore.$reset();
|
||||
await router.replace("/login/custom");
|
||||
} else {
|
||||
userStore.$reset();
|
||||
await router.replace("/login");
|
||||
}
|
||||
};
|
||||
const fnSpecialOperationsWarnAmount = async () => {
|
||||
const resData = await getSpecialOperationsWarnAmount({ loading: false });
|
||||
|
@ -167,8 +204,22 @@ const fnSpecialOperationsWarnAmount = async () => {
|
|||
}
|
||||
};
|
||||
fnSpecialOperationsWarnAmount();
|
||||
const fnNavigationBI = () => {
|
||||
const fnNavigationBI = async () => {
|
||||
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" });
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
</el-aside>
|
||||
<el-main>
|
||||
<layout-breadcrumb v-if="route.meta.isBreadcrumb !== false" />
|
||||
<layout-tags-view />
|
||||
<el-scrollbar style="height: var(--el-main-scrollbar-height)">
|
||||
<router-view v-slot="{ Component }">
|
||||
<transition name="view" mode="out-in">
|
||||
|
@ -35,6 +36,7 @@
|
|||
import LayoutBreadcrumb from "./breadcrumb/index";
|
||||
import LayoutHeader from "./header/index";
|
||||
import LayoutMenu from "./menu/index";
|
||||
import LayoutTagsView from "./tags_view/index.vue";
|
||||
import { computed } from "vue";
|
||||
import { useMenuStore } from "@/pinia/menu";
|
||||
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>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -1,49 +1,139 @@
|
|||
<template>
|
||||
<div class="mobile">
|
||||
<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/checklist',
|
||||
query: {
|
||||
IDENTIFICATIONPARTS_ID: item.IDENTIFICATIONPARTS_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
<van-cell title="部位名称" :value="item.PARTSNAME" />
|
||||
<van-cell title="风险等级">
|
||||
<template #value>
|
||||
<span v-if="item.LEVELID === 'levelD'" class="text-blue">
|
||||
低风险/D级
|
||||
</span>
|
||||
<span v-else-if="item.LEVELID === 'levelC'" class="text-yellow">
|
||||
一般风险/C级
|
||||
</span>
|
||||
<span v-else-if="item.LEVELID === 'levelB'" class="text-orange">
|
||||
较大风险/B级
|
||||
</span>
|
||||
<span v-else-if="item.LEVELID === 'levelA'" class="text-red">
|
||||
重大风险/A级
|
||||
</span>
|
||||
</template>
|
||||
</van-cell>
|
||||
<van-cell title="风险点(单元)" :value="item.RISKUNITNAME" />
|
||||
<van-cell title="管控部门" :value="item.DEPT_NAME" />
|
||||
</van-cell-group>
|
||||
<van-tabs v-model:active="tabsActive" type="card" sticky>
|
||||
<van-tab title="辨别部位" name="1">
|
||||
<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/checklist',
|
||||
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-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>
|
||||
</template>
|
||||
|
||||
|
@ -51,9 +141,11 @@
|
|||
import { getRiskPointList } from "@/request/mobile.js";
|
||||
import { useRoute } from "vue-router";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { ref } from "vue";
|
||||
|
||||
const route = useRoute();
|
||||
const { RISKUNIT_ID } = route.query;
|
||||
const tabsActive = ref("1");
|
||||
const { list, fnGetData, searchForm } = useListData(getRiskPointList, {
|
||||
otherParams: {
|
||||
RISK_UNIT_ID: RISKUNIT_ID,
|
||||
|
@ -71,4 +163,23 @@ const { list, fnGetData, searchForm } = useListData(getRiskPointList, {
|
|||
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>
|
||||
|
|
|
@ -1,9 +1,133 @@
|
|||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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", {
|
||||
state: () => ({
|
||||
userInfo: {},
|
||||
videoPlayVerify: false,
|
||||
qyRegister: true,
|
||||
}),
|
||||
getters: {
|
||||
getUserInfo: (state) => state.userInfo,
|
||||
getVideoPlayVerify: (state) => state.videoPlayVerify,
|
||||
getQyRegister: (state) => state.qyRegister,
|
||||
},
|
||||
actions: {
|
||||
setUserInfo(userInfo) {
|
||||
this.userInfo = userInfo;
|
||||
},
|
||||
setVideoPlayVerify(val) {
|
||||
this.videoPlayVerify = val;
|
||||
},
|
||||
setQyRegister(val) {
|
||||
this.qyRegister = val;
|
||||
},
|
||||
},
|
||||
persist: {
|
||||
storage: window.sessionStorage,
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
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) =>
|
||||
post("/positAlarm/getAlarmRecordList", params); // 聚集告警记录列表
|
||||
export const getGatheringAlarmRecordViewList = (params) =>
|
||||
|
|
|
@ -4,6 +4,8 @@ export const getOtherAlarmConfigurationsList = (params) =>
|
|||
post("/positAlarm/electronicFence/list", params); // 其他告警配置列表
|
||||
export const getOtherAlarmConfigurationsView = (params) =>
|
||||
post("/positAlarm/electronicFenceGoEdit", params); // 其他告警配置查看
|
||||
export const getJjAlarmConfigurationsView = (params) =>
|
||||
post("/positAlarm/electronicFenceJjGoEdit", params); // 聚集告警配置查看
|
||||
export const setOtherAlarmConfigurationsDelete = (params) =>
|
||||
post("/positAlarm/electronicFenceDelete", params); // 其他告警配置删除
|
||||
export const setOtherAlarmConfigurationsDeactivateOrEnable = (params) =>
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
import { post, upload } from "./axios";
|
||||
|
||||
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 getAsyncRouter = (params) => post("/main/index", params); // 获取动态路由
|
||||
export const getAllAppVersion = (params) =>
|
||||
post("/app/versionmanager/getAllAppVersion", params); // 获取动态路由
|
||||
export const getHasMenu = (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 setUserInfo = (params) => post("/user/editUserOwn", params); // 修改用户信息
|
||||
export const getVerifyDuplicateEmail = (params) =>
|
||||
|
@ -30,3 +36,6 @@ export const setVideo = (params) =>
|
|||
post("/app/audioOrVideo/createUploadVideo", params); // 阿里云上传视频
|
||||
export const setVideoRefresh = (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 router from "../router";
|
||||
import QS from "qs";
|
||||
import CryptoJS from "crypto-js";
|
||||
|
||||
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() {
|
||||
loading = ElLoading.service({
|
||||
|
@ -74,10 +98,13 @@ axios.interceptors.response.use(
|
|||
|
||||
export function post(url, params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const { Timestamp, Sign } = encryption(params);
|
||||
axios
|
||||
.post(url, QS.stringify(params), {
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
Timestamp,
|
||||
Sign,
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
|
|
|
@ -28,9 +28,9 @@ export const getCameraAlarmSourceCount = (params) =>
|
|||
export const getAiWarningList = (params) =>
|
||||
post(
|
||||
"/aiwarning/list?currentPage=" +
|
||||
params.currentPage +
|
||||
"&showCount=" +
|
||||
params.showCount,
|
||||
params.currentPage +
|
||||
"&showCount=" +
|
||||
params.showCount,
|
||||
params
|
||||
); // ai报警列表
|
||||
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 setLedgerImport = (params) =>
|
||||
upload("/limitspace/readExcel2", params); // 台账导入
|
||||
export const setLedgerAdd = (params) => post("/limitspace/add", params); // 台账添加
|
||||
export const setLedgerEdit = (params) => post("/limitspace/edit", params); // 台账修改
|
||||
export const setLedgerAdd = (params) => upload("/limitspace/add", params); // 台账添加
|
||||
export const setLedgerEdit = (params) => upload("/limitspace/edit", 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);
|
||||
export const getTemporaryElectricityUsageFlow = (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";
|
||||
|
||||
export const getEmergencyIndexData = (params) =>
|
||||
post("/emergencyteam/emergencyIndex", params); // 应急预案首页
|
||||
|
||||
export const getEmergencyPlanManagementList = (params) =>
|
||||
post("/emergencyplan/list", params); // 应急预案管理列表
|
||||
export const getEmergencyPlanManagementView = (params) =>
|
||||
|
@ -24,6 +27,7 @@ export const setEmergencyEquipmentManagementEdit = (params) =>
|
|||
post("/emergencyequipment/edit", params); // 应急装备管理修改
|
||||
export const setEmergencyEquipmentManagementAdd = (params) =>
|
||||
post("/emergencyequipment/add", params); // 应急装备管理添加
|
||||
|
||||
export const getEmergencyRescueTeamManagementList = (params) =>
|
||||
upload("/emergencyteam/list", params); // 应急救援队伍管理列表
|
||||
export const getEmergencyRescueTeamManagementView = (params) =>
|
||||
|
@ -36,6 +40,38 @@ export const setEmergencyRescueTeamManagementEdit = (params) =>
|
|||
post("/emergencyteam/edit", params); // 应急救援队伍管理修改
|
||||
export const setEmergencyRescueTeamManagementAdd = (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) =>
|
||||
upload("/emergencydrillbasic/list", 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";
|
||||
|
||||
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) =>
|
||||
post("/studytask/userlist", 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); // 清单管理批量删除临时清单
|
||||
export const setInventoryManagementBatchDelete = (params) =>
|
||||
post("/listmanager/deleteAll", params); // 清单管理批量删除
|
||||
export const setInventoryManagementBatchDeleteThorough = (params) =>
|
||||
post("/listmanager/deleteAllthorough", params); // 清单管理彻底删除
|
||||
export const getInventoryManagementRouteView = (params) =>
|
||||
post("/listmanager/getRoute", params); // 清单管理查看巡检路线
|
||||
export const setInventoryManagementRoute = (params) =>
|
||||
|
@ -106,6 +108,8 @@ export const setDeleteCustomRecovery = (params) =>
|
|||
post("/customStop/restore", params); // 删除清单管理恢复
|
||||
export const setCustomBatchDelete = (params) =>
|
||||
post("/customStop/deleteAll", params); // 清单管理批量删除
|
||||
export const setCustomBatchDeleteThorough = (params) =>
|
||||
post("/customStop/deleteAllthorough", params); // 清单管理彻底删除
|
||||
export const getCustomStopView = (params) => post("/customStop/goEdit", params); // 清单管理查看
|
||||
export const getCustomCheckRecordList = (params) =>
|
||||
post("/customCheckrecord/list", params); // 隐患清单排查列表
|
||||
|
@ -130,3 +134,5 @@ export const setCustomInsuranceCoverageSave = (params) =>
|
|||
post("/hiddenstandardCustom/saveBaoBaoType", params); // 清单管理设置包保责任类型提交
|
||||
export const getCustomCheckListOtherHiddenList = (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 getWorkReminder = (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";
|
||||
|
||||
export const getDangerSourceIndexData = (params) =>
|
||||
post("/majordangersource/dangerSourceIndex", params); // 重大危险源首页统计
|
||||
|
||||
export const getMajorHazardManagementList = (params) =>
|
||||
post("/majordangersource/list", params); // 重大危险源管理列表
|
||||
export const setMajorHazardManagementDelete = (params) =>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { post } from "./axios";
|
||||
|
||||
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 getFenceList = (params) => post("/map/getFenceList", 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) =>
|
||||
post("/map/getEightWorksByType", params);
|
||||
export const getCameraList = (params) => post("/map/getCameraList", params);
|
||||
|
||||
export const getGateMachineList = (params) =>
|
||||
post("/map/getGateMachineList", params);
|
||||
export const getConfinedspaceWorkList = (params) =>
|
||||
post("/map/getConfinedspaceWorkList", 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); // 检查记录地图
|
||||
export const geHiddenDangerView = (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) =>
|
||||
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";
|
||||
|
||||
export const getVideocourSewareCountIndexList = (params) =>
|
||||
post("/videocourseware/getCountIndex", params); // 首页展示
|
||||
export const getVideoCoursewareList = (params) =>
|
||||
post("/videocourseware/list", params); // 视频课件维护列表
|
||||
export const getVideoCoursewareView = (params) =>
|
||||
|
|