Compare commits
5 Commits
1b567a8e75
...
main
Author | SHA1 | Date | |
---|---|---|---|
210f9cc44e | |||
3c9d244817 | |||
a2b8cd74e9 | |||
ad1b52a960 | |||
30d5a663ef |
136
package-lock.json
generated
136
package-lock.json
generated
@ -2043,51 +2043,6 @@
|
|||||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ansi-styles": {
|
|
||||||
"version": "4.3.0",
|
|
||||||
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
|
||||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"color-convert": "^2.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chalk": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"ansi-styles": "^4.1.0",
|
|
||||||
"supports-color": "^7.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"color-convert": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"color-name": "~1.1.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"color-name": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
|
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"has-flag": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"ssri": {
|
"ssri": {
|
||||||
"version": "8.0.1",
|
"version": "8.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
|
||||||
@ -2096,28 +2051,6 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"minipass": "^3.1.1"
|
"minipass": "^3.1.1"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"supports-color": {
|
|
||||||
"version": "7.2.0",
|
|
||||||
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
|
|
||||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"has-flag": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vue-loader-v16": {
|
|
||||||
"version": "npm:vue-loader@16.8.3",
|
|
||||||
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
|
|
||||||
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
|
|
||||||
"dev": true,
|
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
|
||||||
"chalk": "^4.1.0",
|
|
||||||
"hash-sum": "^2.0.0",
|
|
||||||
"loader-utils": "^2.0.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -14617,6 +14550,75 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue-loader-v16": {
|
||||||
|
"version": "npm:vue-loader@16.8.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
|
||||||
|
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^4.1.0",
|
||||||
|
"hash-sum": "^2.0.0",
|
||||||
|
"loader-utils": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.1.0",
|
||||||
|
"supports-color": "^7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^4.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"vue-router": {
|
"vue-router": {
|
||||||
"version": "4.1.3",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
|
||||||
|
@ -404,6 +404,18 @@ export const JczdeleteById = (id) => {
|
|||||||
method: "delete"
|
method: "delete"
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 检查站详情
|
||||||
|
export const JczselectById = (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/jcz/selectById`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//盘查管理
|
//盘查管理
|
||||||
// 人
|
// 人
|
||||||
export const BpcryselectCrewList = (params) => {
|
export const BpcryselectCrewList = (params) => {
|
||||||
@ -438,11 +450,11 @@ export const GjrytxeditEntity = (data) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
// 查询过检人员图像
|
// 查询过检人员图像
|
||||||
export const GjrytxselectPage = (data) => {
|
export const GjrytxselectPage = (params) => {
|
||||||
return request({
|
return request({
|
||||||
url: api + `/jczGjrytx/selectPage`,
|
url: api + `/jczGjrytx/selectPage`,
|
||||||
method: "get",
|
method: "get",
|
||||||
data
|
params
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
// 删除过检人员图像
|
// 删除过检人员图像
|
||||||
@ -670,3 +682,35 @@ export const tbJczXfbbdeleteJyQxzb = (data) => {
|
|||||||
data
|
data
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增摄像头
|
||||||
|
*/
|
||||||
|
export const sxtBatch = (data) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/tbJczSxt/batch`,
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 完成报备
|
||||||
|
*/
|
||||||
|
export const finishEntity = (id) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/tbJczXfbb/finishEntity/${id}`,
|
||||||
|
method: "get",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 获取摄像头列表
|
||||||
|
*/
|
||||||
|
export const sxtGetList = (data) => {
|
||||||
|
return request({
|
||||||
|
url: api + `/tbJczSxt/getList`,
|
||||||
|
method: "POST",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
330
src/api/service.js
Normal file
330
src/api/service.js
Normal file
@ -0,0 +1,330 @@
|
|||||||
|
import request from "@/utils/request";
|
||||||
|
const api = "/mosty-api/mosty-jmxf";
|
||||||
|
const apibase = "/mosty-api/mosty-jmxf";
|
||||||
|
|
||||||
|
|
||||||
|
export const http = {
|
||||||
|
// 获取视频ws地址
|
||||||
|
getSpWs: (params) => {
|
||||||
|
return request({
|
||||||
|
url: "/jcApi/api/haikang/cameras/getws",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力 全部list
|
||||||
|
getJlAllList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/jmjl/qbList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力 在岗list
|
||||||
|
getJlZgList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/jmjl/zgList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 街面警力 - 民警辅警统计
|
||||||
|
getJmjlDate: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwXfbb/selectMfjCount",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 街面警力 - 民警list
|
||||||
|
getJmjlDateMJList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/jmjl/mjlb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 街面警力 - fu警list
|
||||||
|
getJmjlDateFJList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/jmjl/fjlb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 警力情况 - 警力全部
|
||||||
|
getJlAll: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/jmjl/qb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 警力在岗
|
||||||
|
getJlZg: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/jmjl/zg",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 民警全部
|
||||||
|
getMjAll: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/mj/qbmj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 民警在岗
|
||||||
|
getMjZg: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/mj/zgmj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 民警全部
|
||||||
|
getMjAllList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/mj/qbmj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 民警在岗
|
||||||
|
getMjZgList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/mj/zgmj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 辅警全部
|
||||||
|
getFjAll: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/fj/qbfj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 -辅警在岗
|
||||||
|
getFjZg: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/fj/zgfj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 可抽调 -民警 - 辅警
|
||||||
|
getKcd(params) {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/kcd/zbtj",
|
||||||
|
method: "GET",
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 警力情况 - 辅警全部列表
|
||||||
|
getFjAllList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/fj/qblb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 - 辅警在岗列表
|
||||||
|
getFjAllListZG: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/fj/zglb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 -请休假Mj-FJ
|
||||||
|
getRest: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/qxj/mjfjtj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 街面警力统计 app查询界面警力民警辅警数量
|
||||||
|
getJmjlTj: (data) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwXfbb/selectMfjCount",
|
||||||
|
method: "GET",
|
||||||
|
params: data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 请休假
|
||||||
|
getQxj: (data) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/qxj/mjfjtj",
|
||||||
|
method: "GET",
|
||||||
|
params: data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 警力情况 -请休假Mj
|
||||||
|
getRestMj: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/qxj/mjlb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 警力情况 -请休假FJ
|
||||||
|
getRestFj: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/qxj/fjlb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 勤务列表 - 警力清单
|
||||||
|
getJlList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwBmjlbb/getJlqdList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 勤务列表 - 不在岗警力清单
|
||||||
|
getBZGlist: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/qwlb/bzgjlqd",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 大屏首页统计 - 在岗警力 - 民警
|
||||||
|
getJlmj: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/mj/zglb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getJlfj: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/fj/zglb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getJlqbmj: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/mj/qblb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 大屏首页统计 - 街面巡组 - 计划 列表
|
||||||
|
getJMXZ: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwXfbb/selectJhjmxzList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 大屏首页统计 - 街面巡组 - 实际 列表
|
||||||
|
selectSjjmxzList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwXfbb/selectSjjmxzList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 大屏首页统计 - 街面力量 - 计划、实际
|
||||||
|
getJMLL: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwXfbb/selectJmllList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 大屏首页统计 - 街面警力- 民警
|
||||||
|
getjMJLmj: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbQwXfbb/selectJmllList",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
// 大屏首页统计- 可抽查 - 值班
|
||||||
|
getZB: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/kcd/zbtj",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 大屏首页统计- 可抽查 - 辅警列表
|
||||||
|
getKccFjList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/kcd/fjlb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 大屏首页统计- 可抽查 - 民警列表
|
||||||
|
getKccMjList: (params) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/jlqk/kcd/mjlb",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 根据监控点编号进行云台操作
|
||||||
|
controllingSbbh: (data) => {
|
||||||
|
return request({
|
||||||
|
url: apibase + "/tbYsSxt/controlling",
|
||||||
|
method: "POST",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取HLS地址
|
||||||
|
getGbHls: (params) => {
|
||||||
|
return request({
|
||||||
|
url: apibase + "/tbYsSxt/getGbHls",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取HLS地址
|
||||||
|
previewURLs: (params) => {
|
||||||
|
return request({
|
||||||
|
url: apibase + "/tbYsSxt/previewURLs",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取回放地址
|
||||||
|
rebackURLs: (params) => {
|
||||||
|
return request({
|
||||||
|
url: apibase + "/tbYsSxt/playbackURLs",
|
||||||
|
method: "GET",
|
||||||
|
params
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -599,7 +599,7 @@ export const selectUserDeptPage = (data = {}) => {
|
|||||||
///unifiedLogin
|
///unifiedLogin
|
||||||
export const unifiedLogin = (data) => {
|
export const unifiedLogin = (data) => {
|
||||||
return request({
|
return request({
|
||||||
url: api + `/unifiedLogin`,
|
url: api + `/ssoLogin`,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
data
|
data
|
||||||
});
|
});
|
||||||
|
26
src/api/yszx.js
Normal file
26
src/api/yszx.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import request from "@/utils/request";
|
||||||
|
const api = "/mosty-api/mosty-yszx";
|
||||||
|
/*
|
||||||
|
* 查询摄像头列表
|
||||||
|
* return promise 查询摄像头列表
|
||||||
|
*/
|
||||||
|
export const ysSxtGetList = (data = {}) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbYsSxt/getList",
|
||||||
|
method: "POST",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取摄像头列表
|
||||||
|
* @param {*} data
|
||||||
|
*/
|
||||||
|
export const ysSxtgetPageList = (data = {}) => {
|
||||||
|
return request({
|
||||||
|
url: api + "/tbYsSxt/getPageList",
|
||||||
|
method: "POST",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -116,6 +116,7 @@
|
|||||||
.relative {
|
.relative {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.absolute {
|
.absolute {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
@ -159,9 +160,11 @@
|
|||||||
.flex {
|
.flex {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex-grow1 {
|
.flex-grow1 {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shrink0 {
|
.shrink0 {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
@ -169,6 +172,7 @@
|
|||||||
.flex-warp {
|
.flex-warp {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex-nowrap {
|
.flex-nowrap {
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
@ -180,6 +184,7 @@
|
|||||||
.just-between {
|
.just-between {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.just-around {
|
.just-around {
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
}
|
}
|
||||||
@ -207,11 +212,13 @@
|
|||||||
.align-bottom {
|
.align-bottom {
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexcc {
|
.flexcc {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexcb {
|
.flexcb {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@ -317,11 +324,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ww#{$i} {
|
.ww#{$i} {
|
||||||
width: #{$i}+ "%";
|
width: #{$i}+"%";
|
||||||
}
|
}
|
||||||
|
|
||||||
.hh#{$i} {
|
.hh#{$i} {
|
||||||
height: #{$i}+ "%";
|
height: #{$i}+"%";
|
||||||
}
|
}
|
||||||
|
|
||||||
//高度
|
//高度
|
||||||
@ -333,26 +340,32 @@
|
|||||||
.lh#{$i} {
|
.lh#{$i} {
|
||||||
line-height: #{$i}px;
|
line-height: #{$i}px;
|
||||||
}
|
}
|
||||||
|
|
||||||
//自适应大号字体(通常为统计数字 18-30)
|
//自适应大号字体(通常为统计数字 18-30)
|
||||||
.font_size_big {
|
.font_size_big {
|
||||||
font-size: clamp(1.125rem, -0.894rem + 2.31vw, 1.875rem);
|
font-size: clamp(1.125rem, -0.894rem + 2.31vw, 1.875rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
//自适应一号字体(通常为一级标题 14-18)
|
//自适应一号字体(通常为一级标题 14-18)
|
||||||
.font_size_title {
|
.font_size_title {
|
||||||
font-size: clamp(0.875rem, 0.37rem + 0.58vw, 1.063rem);
|
font-size: clamp(0.875rem, 0.37rem + 0.58vw, 1.063rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
//自适应统计字体(通常为统计数字 14-22)
|
//自适应统计字体(通常为统计数字 14-22)
|
||||||
.font_size1 {
|
.font_size1 {
|
||||||
font-size: clamp(0.875rem, -0.471rem + 1.54vw, 1.375rem);
|
font-size: clamp(0.875rem, -0.471rem + 1.54vw, 1.375rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
//自适应二号字体(通常为二级标题 14-16)
|
//自适应二号字体(通常为二级标题 14-16)
|
||||||
.font_size2 {
|
.font_size2 {
|
||||||
font-size: clamp(0.75rem, 0.077rem + 0.77vw, 1rem);
|
font-size: clamp(0.75rem, 0.077rem + 0.77vw, 1rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
//自适应普通字体(通常为默认大小 10-14)
|
//自适应普通字体(通常为默认大小 10-14)
|
||||||
.font_size_default {
|
.font_size_default {
|
||||||
font-size: clamp(0.625rem, -0.048rem + 0.77vw, 0.875rem);
|
font-size: clamp(0.625rem, -0.048rem + 0.77vw, 0.875rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex#{$i} {
|
.flex#{$i} {
|
||||||
flex: #{$i};
|
flex: #{$i};
|
||||||
}
|
}
|
||||||
@ -364,9 +377,29 @@
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "HANYILINGXINTIJIAN";
|
font-family: "HANYILINGXINTIJIAN";
|
||||||
src: url("~@/assets/font/HANYILINGXINTIJIAN-1.TTF");
|
src: url("~@/assets/font/HANYILINGXINTIJIAN-1.TTF");
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 自定义滚动条样式 */
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 0.5em;
|
||||||
|
height: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: #021b31;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: #011733cd;
|
||||||
|
}
|
@ -1,7 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :id="mapid" class="map"></div>
|
<div :id="mapid" class="map"></div>
|
||||||
<div class="changeMap_box" v-if="props.isShow">
|
<div class="changeMap_box" v-if="props.isShow">
|
||||||
<el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况" style="--el-switch-color:#13ce66;--el-switch-off-color:#ff4949;" />
|
<el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况"
|
||||||
|
style="--el-switch-color: #13ce66; --el-switch-off-color: #ff4949" />
|
||||||
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
|
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
|
||||||
<el-carousel-item>
|
<el-carousel-item>
|
||||||
<div class="mapImageItem">
|
<div class="mapImageItem">
|
||||||
@ -74,7 +75,7 @@ const props = defineProps({
|
|||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
const userInfo = getItem("deptId")[0].deptCode;
|
const userInfo = getItem("deptId")[0].deptCode;
|
||||||
} catch (error) {}
|
} catch (error) { }
|
||||||
let map;
|
let map;
|
||||||
let mapLayer;
|
let mapLayer;
|
||||||
let mapLayer1;
|
let mapLayer1;
|
||||||
@ -88,27 +89,32 @@ onMounted(() => {
|
|||||||
|
|
||||||
map = new EliMap({
|
map = new EliMap({
|
||||||
id: props.mapid,
|
id: props.mapid,
|
||||||
crs: "EPSG:3857",
|
crs: "EPSG:4490",
|
||||||
style: {
|
style: {
|
||||||
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
||||||
center: [94.36,29.65],
|
center: [94.36057012, 29.64276831],
|
||||||
zoom: 10
|
zoom: 15
|
||||||
},
|
},
|
||||||
transformRequest: (url) => {
|
minZoom: 7,
|
||||||
if (url.indexOf("TileMatrix=") != -1) {
|
maxZoom: 18,
|
||||||
const arr = url.split("TileMatrix=");
|
|
||||||
const arr1 = arr[1].split("&");
|
|
||||||
const nurl = `${arr[0]}&TileMatrix=${Number(arr1[0])}&${arr1[1]}&${arr1[2]}`;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
window.map = map;
|
window.map = map;
|
||||||
map.mapboxGLMap.on("load", () => {
|
map.mapboxGLMap.on("load", () => {
|
||||||
map.addGaudLayer({
|
map.addWMTSLayer(
|
||||||
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
|
"/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap",
|
||||||
})
|
{
|
||||||
|
Service: "getImage",
|
||||||
|
Type: "RGB",
|
||||||
|
ZoomOffset: "0",
|
||||||
|
V: "0.3",
|
||||||
|
Zoom: "{z}",
|
||||||
|
Row: "{y}",
|
||||||
|
Col: "{x}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tileSize: 300
|
||||||
|
}
|
||||||
|
);
|
||||||
zoomTarget.value = map.mapboxGLMap.getZoom();
|
zoomTarget.value = map.mapboxGLMap.getZoom();
|
||||||
});
|
});
|
||||||
mapUtil.value = new MapUtil(map);
|
mapUtil.value = new MapUtil(map);
|
||||||
@ -128,8 +134,6 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
// 撒点
|
// 撒点
|
||||||
emitter.on("addPointArea", (obj) => {
|
emitter.on("addPointArea", (obj) => {
|
||||||
console.log(obj);
|
|
||||||
|
|
||||||
mapUtil.value.makerSki(obj);
|
mapUtil.value.makerSki(obj);
|
||||||
});
|
});
|
||||||
// 鼠标滑过提示文字的点位
|
// 鼠标滑过提示文字的点位
|
||||||
@ -168,7 +172,7 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
// 回显线
|
// 回显线
|
||||||
emitter.on("echoLine", (res) => {
|
emitter.on("echoLine", (res) => {
|
||||||
mapUtil.value.createLine(res);
|
mapUtil.value.createLine(res, res.flag);
|
||||||
});
|
});
|
||||||
//创建边界面(geojson)
|
//创建边界面(geojson)
|
||||||
emitter.on("setBoundarys", (res) => {
|
emitter.on("setBoundarys", (res) => {
|
||||||
@ -199,11 +203,6 @@ onMounted(() => {
|
|||||||
mapUtil.value.diffusionCircle(res);
|
mapUtil.value.diffusionCircle(res);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 清除全部覆盖物
|
|
||||||
emitter.on("removeElementAll", () => {
|
|
||||||
mapUtil.value.removeElementAll();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 展示盘曲
|
// 展示盘曲
|
||||||
emitter.on("showGapText", (obj) => {
|
emitter.on("showGapText", (obj) => {
|
||||||
mapUtil.value.gapText(obj);
|
mapUtil.value.gapText(obj);
|
||||||
@ -302,7 +301,6 @@ onUnmounted(() => {
|
|||||||
emitter.off("diffusionCircle");
|
emitter.off("diffusionCircle");
|
||||||
emitter.off("SsCircle");
|
emitter.off("SsCircle");
|
||||||
emitter.off("ClearssCircle");
|
emitter.off("ClearssCircle");
|
||||||
emitter.off("removeElementAll");
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -325,29 +323,35 @@ onUnmounted(() => {
|
|||||||
right: 398px;
|
right: 398px;
|
||||||
bottom: 4px;
|
bottom: 4px;
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
|
|
||||||
.mapImageItem {
|
.mapImageItem {
|
||||||
border: 1px solid #08aae8;
|
border: 1px solid #08aae8;
|
||||||
background: rgb(9, 26, 70);
|
background: rgb(9, 26, 70);
|
||||||
& > img {
|
|
||||||
|
&>img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
& > div {
|
|
||||||
|
&>div {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -3px;
|
top: -3px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.zoomTargetBox {
|
.zoomTargetBox {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
margin-left: 23px;
|
margin-left: 23px;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-input-number__decrease,
|
::v-deep .el-input-number__decrease,
|
||||||
::v-deep .el-input-number__increase {
|
::v-deep .el-input-number__increase {
|
||||||
background: #133362;
|
background: #133362;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-input__inner {
|
::v-deep .el-input__inner {
|
||||||
background: #0c1641;
|
background: #0c1641;
|
||||||
}
|
}
|
||||||
|
@ -101,8 +101,7 @@ onMounted(() => {
|
|||||||
window.map = map;
|
window.map = map;
|
||||||
map.mapboxGLMap.on("load", () => {
|
map.mapboxGLMap.on("load", () => {
|
||||||
map.addWMTSLayer(
|
map.addWMTSLayer(
|
||||||
"http://89.0.23.24/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap"
|
"/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap",
|
||||||
,
|
|
||||||
{
|
{
|
||||||
Service: "getImage",
|
Service: "getImage",
|
||||||
Type: "RGB",
|
Type: "RGB",
|
334
src/components/loder/Gzyloder.vue
Normal file
334
src/components/loder/Gzyloder.vue
Normal file
@ -0,0 +1,334 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog
|
||||||
|
:title="titleValue"
|
||||||
|
width="1400px"
|
||||||
|
v-model="modelValue"
|
||||||
|
@close="closed"
|
||||||
|
>
|
||||||
|
<div v-if="modelValue">
|
||||||
|
<el-form :model="listQuery" class="mosty-from-wrap" :inline="true">
|
||||||
|
<el-form-item label="所属部门">
|
||||||
|
<MOSTY.Department
|
||||||
|
width="100%"
|
||||||
|
clearable
|
||||||
|
v-model="listQuery.ssbmdm"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="感知源名称">
|
||||||
|
<el-input
|
||||||
|
v-model="listQuery.sbmc"
|
||||||
|
placeholder="请输入感知源名称"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="success" @click="handleFilter">查询</el-button>
|
||||||
|
<el-button type="info" @click="reset()"> 重置 </el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div class="tabBox" style="margin-top: 0px" v-if="modelValue">
|
||||||
|
<el-table
|
||||||
|
ref="multipleUserRef"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
:data="tableData"
|
||||||
|
:highlight-current-row="props.Single"
|
||||||
|
border
|
||||||
|
v-loading="loading"
|
||||||
|
style="width: 100%"
|
||||||
|
:row-key="keyid"
|
||||||
|
height="450"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55"
|
||||||
|
:reserve-selection="true"
|
||||||
|
v-if="!props.Single"
|
||||||
|
/>
|
||||||
|
<el-table-column width="55" #default="{ row }" v-else>
|
||||||
|
<el-radio v-model="ridioIndex" :label="row.id"></el-radio>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="序号"
|
||||||
|
type="index"
|
||||||
|
align="center"
|
||||||
|
sortable
|
||||||
|
width="80"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
sortable
|
||||||
|
prop="ssbm"
|
||||||
|
label="所属部门"
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
sortable
|
||||||
|
prop="sbmc"
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
label="感知源名称"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
label="厂商名称"
|
||||||
|
prop="csmc"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="sbbh"
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
label="设备编号"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
sortable
|
||||||
|
prop="jd"
|
||||||
|
show-overflow-tooltip
|
||||||
|
label="经度"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
sortable
|
||||||
|
prop="wd"
|
||||||
|
show-overflow-tooltip
|
||||||
|
label="纬度"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="fenye">
|
||||||
|
<el-pagination
|
||||||
|
class="pagination"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page="listQuery.pageCurrent"
|
||||||
|
:page-sizes="[2, 5, 10, 20]"
|
||||||
|
:page-size="listQuery.pageSize"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="total"
|
||||||
|
></el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="closed">取消</el-button>
|
||||||
|
<el-button type="primary" @click="onComfirm">确认</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import * as rule from "@/utils/rules.js";
|
||||||
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import {ysSxtgetPageList} from '@/api/yszx.js'
|
||||||
|
import {
|
||||||
|
defineProps,
|
||||||
|
watch,
|
||||||
|
ref,
|
||||||
|
onMounted,
|
||||||
|
nextTick,
|
||||||
|
getCurrentInstance
|
||||||
|
} from "vue";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_JCZLX } = proxy.$dict("D_BZ_JCZLX");
|
||||||
|
const props = defineProps({
|
||||||
|
//是否显示
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
//标题
|
||||||
|
titleValue: {
|
||||||
|
type: String,
|
||||||
|
default: "选择环林卡口"
|
||||||
|
},
|
||||||
|
//是否单选
|
||||||
|
Single: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
//已经选中得数据回显
|
||||||
|
data: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const keyid = (row) => {
|
||||||
|
return row.id;
|
||||||
|
};
|
||||||
|
const ridioIndex = ref(null);
|
||||||
|
const total = ref(0);
|
||||||
|
const listQuery = ref({
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
jczmc: "",
|
||||||
|
ssbmdm: ""
|
||||||
|
});
|
||||||
|
const tableData = ref([]);
|
||||||
|
const loading = ref(false);
|
||||||
|
const emits = defineEmits(["update:modelValue", "choosedJcz"]);
|
||||||
|
const closed = () => {
|
||||||
|
listQuery.value.jczmc = "";
|
||||||
|
emits("update:modelValue", false);
|
||||||
|
};
|
||||||
|
const reset = () => {
|
||||||
|
listQuery.value = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
jczmc: "",
|
||||||
|
ssbmdm: ""
|
||||||
|
};
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
// 判断传进来的选中数据和加载的选中数据不满足的数据
|
||||||
|
const checkopenList = ref([]);
|
||||||
|
|
||||||
|
// 确定选中
|
||||||
|
const onComfirm = () => {
|
||||||
|
//单选
|
||||||
|
if (props.Single) {
|
||||||
|
if (![ridioIndex.value][0]) {
|
||||||
|
proxy.$message.warning("请选择环林卡口");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const info = tableData.value.find((item) => {
|
||||||
|
return item.id === ridioIndex.value;
|
||||||
|
});
|
||||||
|
emits("choosedJcz", JSON.parse(JSON.stringify(info)));
|
||||||
|
} else {
|
||||||
|
//多选
|
||||||
|
const jczList = JSON.parse(JSON.stringify(multipleSelectionUser.value));
|
||||||
|
if (jczList.length === 0) {
|
||||||
|
proxy.$message.warning("请选择环林卡口");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emits("choosedJcz", [...jczList, ...checkopenList.value]);
|
||||||
|
}
|
||||||
|
closed();
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
getListData();
|
||||||
|
});
|
||||||
|
/**
|
||||||
|
* pageSize 改变触发
|
||||||
|
*/
|
||||||
|
const handleSizeChange = (currentSize) => {
|
||||||
|
listQuery.value.pageSize = currentSize;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页码改变触发
|
||||||
|
*/
|
||||||
|
const handleCurrentChange = (currentPage) => {
|
||||||
|
listQuery.value.pageCurrent = currentPage;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
//检查站数据
|
||||||
|
const getListData = async () => {
|
||||||
|
loading.value = true;
|
||||||
|
ysSxtgetPageList(listQuery.value)
|
||||||
|
.then((res) => {
|
||||||
|
tableData.value = res?.records;
|
||||||
|
loading.value = false;
|
||||||
|
multipleUser(props.data, tableData.value);
|
||||||
|
total.value = Number(res.total);
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const handleFilter = () => {
|
||||||
|
listQuery.value.pageCurrent = 1;
|
||||||
|
getListData();
|
||||||
|
};
|
||||||
|
|
||||||
|
const multipleUserRef = ref(null);
|
||||||
|
const multipleSelectionUser = ref([]);
|
||||||
|
const handleSelectionChange = (val) => {
|
||||||
|
multipleSelectionUser.value = val;
|
||||||
|
if (checkopenList.value) {
|
||||||
|
for (let i = 0; i < multipleSelectionUser.value.length; i++) {
|
||||||
|
const l = multipleSelectionUser.value[i];
|
||||||
|
for (let j = 0; j < checkopenList.value.length; j++) {
|
||||||
|
const z = checkopenList.value[j];
|
||||||
|
if (l.id == z.id) {
|
||||||
|
checkopenList.value.splice(j, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//回显--用于多选表格
|
||||||
|
function multipleUser(row, list) {
|
||||||
|
if (row) {
|
||||||
|
if (props.Single) {
|
||||||
|
row.forEach((item) => {
|
||||||
|
list.forEach((select) => {
|
||||||
|
if (typeof item == "object") {
|
||||||
|
if (item.id == select.id) {
|
||||||
|
ridioIndex.value = item.id;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (item == select.id) {
|
||||||
|
ridioIndex.value = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
row.forEach((item) => {
|
||||||
|
list.forEach((select) => {
|
||||||
|
if (item.id == select.id) {
|
||||||
|
if (multipleUserRef.value) {
|
||||||
|
multipleUserRef.value.toggleRowSelection(select, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
(val) => {
|
||||||
|
if (val === true) {
|
||||||
|
ridioIndex.value = "";
|
||||||
|
handleFilter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
watch(
|
||||||
|
() => props.data,
|
||||||
|
(val) => {
|
||||||
|
if (multipleUserRef.value) multipleUser(val, tableData.value);
|
||||||
|
checkopenList.value = JSON.parse(JSON.stringify(val));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "@/assets/css/layout.scss";
|
||||||
|
@import "@/assets/css/element-plus.scss";
|
||||||
|
::v-deep .el-form--inline {
|
||||||
|
padding-left: 0 !important;
|
||||||
|
}
|
||||||
|
::v-deep .el-radio__label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table__body tr.current-row > td.el-table__cell {
|
||||||
|
// background: #106fdc;
|
||||||
|
}
|
||||||
|
</style>
|
48
src/components/wsIframe/index.vue
Normal file
48
src/components/wsIframe/index.vue
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<template>
|
||||||
|
<div style="width: 100%; height: 100%; overflow: hidden;">
|
||||||
|
<iframe v-if="urls" :src="'http://80.2.22.233:56233?sbbh=' + urls" style="border: none; width: 100%; height: 100%; "
|
||||||
|
allowfullscreen allowtransparency scrolling="no"></iframe>
|
||||||
|
<iframe v-else src="https://stream7.iqilu.com/10339/upload_transcode/202002/09/20200209105011F0zPoYzHry.mp4" style="border: none; width: 100%; height: 100%; "
|
||||||
|
allowfullscreen allowtransparency scrolling="no"></iframe>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { http } from "@/api/service";
|
||||||
|
import { ref, onMounted, onUnmounted, watch, getCurrentInstance } from "vue";
|
||||||
|
const props = defineProps({
|
||||||
|
sbbh: String
|
||||||
|
})
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const urls = ref(null)
|
||||||
|
watch(() => props.sbbh, (val) => {
|
||||||
|
if (!val) {
|
||||||
|
proxy.$message({
|
||||||
|
message: "获取不到视频流,播放失败!!!",
|
||||||
|
grouping: true,
|
||||||
|
type: "info"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
getUrl(val)
|
||||||
|
}
|
||||||
|
}, { immediate: true })
|
||||||
|
|
||||||
|
function getUrl(sbbh) {
|
||||||
|
http.previewURLs({ sbbh: sbbh, protocol: 'sbbh' }).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
|
||||||
|
let data = JSON.parse(res);
|
||||||
|
if (data && data.url) {
|
||||||
|
urls.value = data.data.url
|
||||||
|
} else {
|
||||||
|
proxy.$message({
|
||||||
|
message: "获取不到视频流,播放失败!!!",
|
||||||
|
grouping: true,
|
||||||
|
type: "info"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
@ -8,7 +8,7 @@
|
|||||||
<div class="name">姓名:{{ username }}</div>
|
<div class="name">姓名:{{ username }}</div>
|
||||||
<div class="work">单位:{{ deptName }}</div>
|
<div class="work">单位:{{ deptName }}</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown :hide-on-click="false">
|
<!-- <el-dropdown :hide-on-click="false">
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
<el-icon :size="20" color="#fff"> <CaretBottom /> </el-icon>
|
<el-icon :size="20" color="#fff"> <CaretBottom /> </el-icon>
|
||||||
</span>
|
</span>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<el-dropdown-item command="logout">退出登录</el-dropdown-item>
|
<el-dropdown-item command="logout">退出登录</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown> -->
|
||||||
</div>
|
</div>
|
||||||
<div @click="goToHome">
|
<div @click="goToHome">
|
||||||
<img src="@/assets/images/meun.png" />
|
<img src="@/assets/images/meun.png" />
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dropdown class="avatar-container" trigger="click">
|
<!-- <el-dropdown class="avatar-container" trigger="click">
|
||||||
<div class="avatar-wrapper">
|
<div class="avatar-wrapper">
|
||||||
<el-avatar
|
<el-avatar
|
||||||
shape="circle"
|
shape="circle"
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<el-dropdown-item divided @click="logout()">退出登录</el-dropdown-item>
|
<el-dropdown-item divided @click="logout()">退出登录</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown> -->
|
||||||
<UpdatePwdDialog v-model="UpdatePwdVisible"></UpdatePwdDialog>
|
<UpdatePwdDialog v-model="UpdatePwdVisible"></UpdatePwdDialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
removeAllItem
|
removeAllItem
|
||||||
} from "@/utils/storage";
|
} from "@/utils/storage";
|
||||||
// 白名单
|
// 白名单
|
||||||
const whiteList = ['/login','/','/StationLevel', '/oatuh_login','/editPassword', '/404', '/401']
|
const whiteList = ['/login','/oatuh_login','/','/StationLevel','/editPassword', '/404', '/401']
|
||||||
/**
|
/**
|
||||||
* 路由前置守卫
|
* 路由前置守卫
|
||||||
* to 去哪里
|
* to 去哪里
|
||||||
@ -14,42 +14,45 @@ const whiteList = ['/login','/','/StationLevel', '/oatuh_login','/editPassword',
|
|||||||
* next 往下走
|
* next 往下走
|
||||||
*/
|
*/
|
||||||
let onRun = true;
|
let onRun = true;
|
||||||
// router.beforeEach(async (to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
// // 存在 token ,进入主页
|
// 存在 token ,进入主页
|
||||||
// // if (store.state.user.token) {
|
console.log(store.getters.token,'===store.getters.token');
|
||||||
// // 快捷访问
|
|
||||||
// if (store.getters.token) {
|
// if (store.state.user.token) {
|
||||||
// // 判断用户资料是否获取
|
// 快捷访问
|
||||||
// // 若不存在用户信息,则需要获取用户信息
|
if (store.getters.token) {
|
||||||
// // 触发获取用户信息的 action,并获取用户当前权限
|
// 判断用户资料是否获取
|
||||||
// await store.commit('permission/setRouteReady', true)
|
// 若不存在用户信息,则需要获取用户信息
|
||||||
// // 添加完动态路由之后,需要在进行一次主动跳转
|
// 触发获取用户信息的 action,并获取用户当前权限
|
||||||
// const afterMenuList = await getItem('menusPermission');
|
await store.commit('permission/setRouteReady', true)
|
||||||
// // 处理用户权限,筛选出需要添加的权限
|
// 添加完动态路由之后,需要在进行一次主动跳转
|
||||||
// if (store.state.permission.routes == 0) {
|
const afterMenuList = await getItem('menusPermission');
|
||||||
// const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
|
// 处理用户权限,筛选出需要添加的权限
|
||||||
// filterRoutes.forEach(item => {
|
if (store.state.permission.routes == 0) {
|
||||||
// router.addRoute(item)
|
const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
|
||||||
// })
|
filterRoutes.forEach(item => {
|
||||||
// next({
|
router.addRoute(item)
|
||||||
// ...to,
|
})
|
||||||
// replace: true
|
next({
|
||||||
// })
|
...to,
|
||||||
// } else {
|
replace: true
|
||||||
// next()
|
})
|
||||||
// }
|
} else {
|
||||||
// // 利用 addRoute 循环添加
|
next()
|
||||||
// } else {
|
}
|
||||||
// const isOatuh = getItem('isOatuh')
|
// 利用 addRoute 循环添加
|
||||||
// // 没有token的情况下,可以进入白名单
|
} else {
|
||||||
// if (whiteList.indexOf(to.path) > -1) {
|
const isOatuh = getItem('isOatuh')
|
||||||
// next()
|
// 没有token的情况下,可以进入白名单
|
||||||
// } else {
|
if (whiteList.indexOf(to.path) > -1) {
|
||||||
// if (isOatuh) {
|
next()
|
||||||
// next('/oatuh_login')
|
} else {
|
||||||
// } else {
|
next('/oatuh_login')
|
||||||
// next('/login')
|
// if (isOatuh) {
|
||||||
// }
|
// next('/oatuh_login')
|
||||||
// }
|
// } else {
|
||||||
// }
|
// next('/login')
|
||||||
// })
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
@ -21,6 +21,11 @@ export const privateRoutes = [];
|
|||||||
* 公开路由表
|
* 公开路由表
|
||||||
*/
|
*/
|
||||||
export const publicRoutes = [
|
export const publicRoutes = [
|
||||||
|
{
|
||||||
|
path: "/oatuh_login",
|
||||||
|
name: "oatuh_login",
|
||||||
|
component: () => import("@/views/login/oatuh_login")
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/login",
|
path: "/login",
|
||||||
name: "login",
|
name: "login",
|
||||||
@ -353,7 +358,7 @@ export const publicRoutes = [
|
|||||||
"@/views/backOfficeSystem/peopleManag/InspectedVehicle/index"
|
"@/views/backOfficeSystem/peopleManag/InspectedVehicle/index"
|
||||||
),
|
),
|
||||||
meta: {
|
meta: {
|
||||||
title: "过检车辆图管理",
|
title: "过检车辆管理",
|
||||||
icon: "article"
|
icon: "article"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ export default {
|
|||||||
systemId,
|
systemId,
|
||||||
})
|
})
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
|
debugger
|
||||||
if (data.deptList.length === 1) {
|
if (data.deptList.length === 1) {
|
||||||
this.commit("user/setToken", data.jwtToken);
|
this.commit("user/setToken", data.jwtToken);
|
||||||
this.commit("user/setDeptId", data.deptList);
|
this.commit("user/setDeptId", data.deptList);
|
||||||
@ -240,7 +240,7 @@ export default {
|
|||||||
removeAllItem();
|
removeAllItem();
|
||||||
// 待补充 清理权限相关的配置
|
// 待补充 清理权限相关的配置
|
||||||
if (isOatuh) {
|
if (isOatuh) {
|
||||||
window.location.href = `http://80.149.27.78:8001/login`;
|
window.location.href = `http://155.240.22.188:9020`;
|
||||||
} else {
|
} else {
|
||||||
router.push("/login");
|
router.push("/login");
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,6 @@ service.interceptors.response.use(
|
|||||||
// 请求成功的处理
|
// 请求成功的处理
|
||||||
(response) => {
|
(response) => {
|
||||||
const { success, code, msg, message, data } = response.data;
|
const { success, code, msg, message, data } = response.data;
|
||||||
console.log("data", code, response.data);
|
|
||||||
// 需要判断当前请求是否成功
|
// 需要判断当前请求是否成功
|
||||||
if (success && code === 10000) {
|
if (success && code === 10000) {
|
||||||
return data; // 成功后返回解析后的数据
|
return data; // 成功后返回解析后的数据
|
||||||
|
@ -87,12 +87,16 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import Empty from "@/components/MyComponents/Empty/index.vue";
|
import Empty from "@/components/MyComponents/Empty/index.vue";
|
||||||
import { jczqueryById } from "@/api/mosty-jcz";
|
import { jczqueryById } from "@/api/mosty-jcz";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
const warningList = ref({ qxList: [], ryList: [], clList: [] ,sbList:[]});
|
let warningList = ref({ qxList: [], ryList: [], clList: [] ,sbList:[]});
|
||||||
|
onMounted(() => {
|
||||||
|
emitter.on("getjczqueryById", (res) => {
|
||||||
|
warningListValue(res)
|
||||||
|
})
|
||||||
|
});
|
||||||
const show = ref(1);
|
const show = ref(1);
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
jczId: {
|
jczId: {
|
||||||
@ -107,19 +111,23 @@ const showchenge = (val) => {
|
|||||||
|
|
||||||
const getjczqueryById = () => {
|
const getjczqueryById = () => {
|
||||||
jczqueryById({ jczid: props.jczId }).then((res) => {
|
jczqueryById({ jczid: props.jczId }).then((res) => {
|
||||||
if (res) {
|
warningListValue(res)
|
||||||
emitter.emit("chengZ", res);
|
});
|
||||||
warningList.value.qxList = res.qxList
|
};
|
||||||
|
const warningListValue = (res) => {
|
||||||
|
if (res) {
|
||||||
|
warningList.value={}
|
||||||
|
warningList.value.qxList =res.qxList&&res.qxList.length>0
|
||||||
? res.qxList.filter((item) => item.qxsl > 0)
|
? res.qxList.filter((item) => item.qxsl > 0)
|
||||||
: [];
|
: [];
|
||||||
warningList.value.ryList = res.ryList ? res.ryList : [];
|
warningList.value.ryList = res.ryList.length>0 ? res.ryList : [];
|
||||||
warningList.value.clList = res.clList ? res.clList : [];
|
warningList.value.clList = res.clList.length>0 ? res.clList : [];
|
||||||
warningList.value.sbList = [...res.tcList,...res.zdList]
|
warningList.value.sbList = [...res.tcList, ...res.zdList]
|
||||||
|
emitter.emit("chengZ", res);
|
||||||
} else {
|
} else {
|
||||||
warningList.value = res;
|
warningList.value = res;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
};
|
|
||||||
getjczqueryById();
|
getjczqueryById();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -240,4 +248,5 @@ getjczqueryById();
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,49 +1,64 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="image-carousel">
|
<div class="image-carousel">
|
||||||
<div class="control-button prev" @click="prevImage">
|
<el-carousel style="height: 100%;" motion-blur indicator-position="none" @change="handleCarouselChange"
|
||||||
<img src="@/assets/images/icon_08.png" alt="">
|
:autoplay="false">
|
||||||
</div>
|
<el-carousel-item v-for="(item, index) in listSxt" :key="index">
|
||||||
<div class="carousel-container">
|
<div class="video-grid" v-if="activeIndex == index">
|
||||||
<div class="hh100" :style="{transform: `translateX(-${currentIndex * 100}%)`}">
|
<div v-for="(items,indexs) in item" :key="indexs" class="video-cell">
|
||||||
<ul class="image-wrapper" style="margin-bottom:1%;">
|
<div class="iconFont" @click.stop="showchenge(items)">
|
||||||
<li v-for="(image, index) in images" :key="index" class="image-item">
|
<el-icon :size="20"><UploadFilled /></el-icon>
|
||||||
<img :src="image" alt="carousel image">
|
</div>
|
||||||
</li>
|
<WsIframe :sbbh="items.sbbh" />
|
||||||
</ul>
|
</div>
|
||||||
<ul class="image-wrapper">
|
</div>
|
||||||
<li v-for="(image, index) in images" :key="index" class="image-item">
|
</el-carousel-item>
|
||||||
<img :src="image" alt="carousel image">
|
</el-carousel>
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="control-button next" @click="nextImage">
|
|
||||||
<img src="@/assets/images/icon_07.png" alt="">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script setup>
|
||||||
export default {
|
import { ref, watch, computed, onMounted, onUnmounted, reactive,nextTick } from 'vue'
|
||||||
data() {
|
import WsIframe from '@/components/wsIframe/index.vue'
|
||||||
return {
|
import { useRoute } from "vue-router"
|
||||||
currentIndex: 0,
|
import { sxtGetList } from '@/api/mosty-jcz.js'
|
||||||
images: [
|
import emitter from "@/utils/eventBus.js";
|
||||||
require('@/assets/images/person.png'),
|
const activeIndex = ref(0)
|
||||||
require('@/assets/images/person.png'),
|
const cdList=ref([])
|
||||||
require('@/assets/images/person.png'),
|
const listSxt=ref([1])
|
||||||
require('@/assets/images/person.png')
|
const handleCarouselChange = (index) => {
|
||||||
]
|
activeIndex.value = index
|
||||||
}
|
}
|
||||||
},
|
|
||||||
methods: {
|
const getSxtGetList = (id) => {
|
||||||
prevImage() {
|
const jczid = {
|
||||||
this.currentIndex = this.currentIndex > 0 ? this.currentIndex - 1 : this.images.length - 1
|
jczid: id
|
||||||
},
|
|
||||||
nextImage() {
|
|
||||||
this.currentIndex = this.currentIndex < this.images.length - 1 ? this.currentIndex + 1 : 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
sxtGetList(jczid).then(res => {
|
||||||
|
listSxt.value= Array.from({ length:Math.ceil(res.length / 12)==0?1:Math.ceil(res.length / 12) }, (_, row) => {
|
||||||
|
return res.slice(row * 12, row * 12 + 12)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
cdList.value = listSxt.value[0].length < 4 ? listSxt.value[0]: listSxt.value[0].slice(0,4)
|
||||||
|
emitter.emit("getSxtGetList", cdList.value )
|
||||||
|
}).finally(()=>{
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const route = useRoute()
|
||||||
|
onMounted(() => {
|
||||||
|
const id = route.query.id
|
||||||
|
getSxtGetList(id)
|
||||||
|
})
|
||||||
|
const showchenge = (item) => {
|
||||||
|
const index = cdList.value.indexOf(item);
|
||||||
|
if (index !== -1) {
|
||||||
|
// 如果数字已存在,先移除它
|
||||||
|
cdList.value.splice(index, 1);
|
||||||
|
}
|
||||||
|
// 添加到最前面
|
||||||
|
cdList.value.unshift(item);
|
||||||
|
|
||||||
|
emitter.emit("getSxtGetList", cdList.value )
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -54,6 +69,7 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
padding: 30px 20px;
|
padding: 30px 20px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
.carousel-container {
|
.carousel-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -71,6 +87,7 @@ export default {
|
|||||||
width: 24%;
|
width: 24%;
|
||||||
margin: 0 1%;
|
margin: 0 1%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -86,12 +103,58 @@ export default {
|
|||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
|
||||||
&.prev {
|
&.prev {
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.next {
|
&.next {
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.video-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(6, 1fr);
|
||||||
|
/* 6列 */
|
||||||
|
grid-template-rows: repeat(2, auto);
|
||||||
|
/* 2行 */
|
||||||
|
gap: 10px;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-carousel__container {
|
||||||
|
height: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .image-carousel {
|
||||||
|
// padding: 0 !important;;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 自定义滚动条样式 */
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 0.5em;
|
||||||
|
height: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: #021b31;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: #011733cd;
|
||||||
|
}
|
||||||
|
.video-cell{
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.iconFont{
|
||||||
|
position: absolute; top: 10px; text-align: right; width: 100%;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@ -1,53 +1,35 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="video-more-container">
|
<div class="video-more-container">
|
||||||
<div class="switch-btn prev" @click="handlePrev">
|
<el-carousel style="height: 100%;" motion-blur indicator-position="none" :autoplay="false"
|
||||||
<img src="@/assets/images/icon_08.png" alt="">
|
@change="handleCarouselChange">
|
||||||
</div>
|
<el-carousel-item v-for="(item,index) in sbList" :key="index" >
|
||||||
<div class="video-grid">
|
<div class="video-grid" v-if="activeIndex==index">
|
||||||
<div v-for="index in 4" :key="index" class="video-cell">
|
<div v-for="(items,indexs) in item" :key="indexs" class="video-cell">
|
||||||
<div class="video-wrapper">
|
<WsIframe :sbbh="items.sbbh" />
|
||||||
<video class="video-player" controls>
|
|
||||||
<source src="" type="video/mp4">
|
|
||||||
</video>
|
|
||||||
<div class="video-controls">
|
|
||||||
<div class="time-display">01:32</div>
|
|
||||||
<div class="control-buttons">
|
|
||||||
<i class="el-icon-video-play"></i>
|
|
||||||
<i class="el-icon-refresh-right"></i>
|
|
||||||
<i class="el-icon-full-screen"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</el-carousel-item>
|
||||||
</div>
|
</el-carousel>
|
||||||
<div class="switch-btn next" @click="handleNext">
|
|
||||||
<img src="@/assets/images/icon_07.png" alt="">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script setup>
|
||||||
export default {
|
import { ref ,onMounted} from 'vue'
|
||||||
name: 'VideoMore',
|
import WsIframe from '@/components/wsIframe/index.vue'
|
||||||
data() {
|
import emitter from "@/utils/eventBus.js";
|
||||||
return {
|
const activeIndex = ref(0)
|
||||||
currentPage: 1,
|
const handleCarouselChange = (index) => {
|
||||||
totalPages: 3
|
activeIndex.value=index
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handlePrev() {
|
|
||||||
if (this.currentPage > 1) {
|
|
||||||
this.currentPage--
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleNext() {
|
|
||||||
if (this.currentPage < this.totalPages) {
|
|
||||||
this.currentPage++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
const sbList = ref([1])
|
||||||
|
onMounted(()=>{
|
||||||
|
emitter.on("getSxtGetList", (res) => {
|
||||||
|
sbList.value= Array.from({ length:Math.ceil(res.length / 4)==0?1:Math.ceil(res.length / 4) }, (_, row) => {
|
||||||
|
return res.slice(row * 4, row * 4 + 4)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -79,14 +61,16 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.video-grid {
|
.video-grid {
|
||||||
|
padding: 10px;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
grid-template-rows: repeat(2, 1fr);
|
grid-template-rows: repeat(2, 1fr);
|
||||||
gap: 20px;
|
gap: 10px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-cell {
|
.video-cell {
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
background: url('~@/assets/images/bg13.png') no-repeat;
|
background: url('~@/assets/images/bg13.png') no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
@ -132,10 +116,15 @@ export default {
|
|||||||
i {
|
i {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #409EFF;
|
color: #409EFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::v-deep .el-carousel__container {
|
||||||
|
height: 100% !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@ -302,16 +302,22 @@ const _onSave = () => {
|
|||||||
break;
|
break;
|
||||||
case "02":
|
case "02":
|
||||||
listQuery.value.bcKts = 2;
|
listQuery.value.bcKts = 2;
|
||||||
|
break;
|
||||||
case "03":
|
case "03":
|
||||||
listQuery.value.bcKts = 4;
|
listQuery.value.bcKts = 4;
|
||||||
|
break;
|
||||||
case "04":
|
case "04":
|
||||||
listQuery.value.bcKts = 5;
|
listQuery.value.bcKts = 5;
|
||||||
|
break;
|
||||||
case "05":
|
case "05":
|
||||||
listQuery.value.bcKts = 6;
|
listQuery.value.bcKts = 6;
|
||||||
|
break;
|
||||||
case "06":
|
case "06":
|
||||||
listQuery.value.bcKts = 7;
|
listQuery.value.bcKts = 7;
|
||||||
|
break;
|
||||||
case "07":
|
case "07":
|
||||||
listQuery.value.bcKts = 8;
|
listQuery.value.bcKts = 8;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (listQuery.value.jczList) {
|
if (listQuery.value.jczList) {
|
||||||
listQuery.value.jczid = listQuery.value.jczList.id;
|
listQuery.value.jczid = listQuery.value.jczList.id;
|
||||||
@ -361,6 +367,8 @@ const fz = (val) => {
|
|||||||
//
|
//
|
||||||
const close = () => {
|
const close = () => {
|
||||||
dialogForm.value = false;
|
dialogForm.value = false;
|
||||||
|
mjData.value = [];
|
||||||
|
fjData.value = [];
|
||||||
listQuery.value = {};
|
listQuery.value = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
<el-link type="primary" @click="addEdit('edit', row)">编辑</el-link>
|
<el-link type="primary" @click="addEdit('edit', row)">编辑</el-link>
|
||||||
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
|
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
|
||||||
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
||||||
|
<el-link type="primary" @click="endreporting( row.id)" v-if="row.bbZt !== '03'">结束报备</el-link>
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
@ -44,7 +45,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
|
|||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import EditAddForm from "./components/editAddForm.vue";
|
import EditAddForm from "./components/editAddForm.vue";
|
||||||
import { XfbbselectPage, JczXfbb } from "@/api/mosty-jcz.js";
|
import { XfbbselectPage, JczXfbb,finishEntity } from "@/api/mosty-jcz.js";
|
||||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const {
|
const {
|
||||||
@ -152,6 +153,21 @@ const delDictItem = (ids) => {
|
|||||||
})
|
})
|
||||||
.catch(() => { });
|
.catch(() => { });
|
||||||
};
|
};
|
||||||
|
const endreporting = (id) => {
|
||||||
|
proxy
|
||||||
|
.$confirm("确定要结束报备", "警告", { type: "warning" })
|
||||||
|
.then(() => {
|
||||||
|
finishEntity(id).then(res => {
|
||||||
|
proxy.$message({ type: "success", message: "报备结束" });
|
||||||
|
getjczgetXfllList();
|
||||||
|
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => { });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
getjczgetXfllList();
|
getjczgetXfllList();
|
||||||
// 新增
|
// 新增
|
||||||
const addEdit = (type, row) => {
|
const addEdit = (type, row) => {
|
||||||
|
@ -81,7 +81,7 @@ const searchConfiger = ref([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "车前部物品特征代码",
|
label: "车前部物品特征代码",
|
||||||
prop: "zqlx",
|
prop: "cqbwptzdm",
|
||||||
placeholder: "车前部物品特征代码",
|
placeholder: "车前部物品特征代码",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
},
|
},
|
||||||
@ -89,7 +89,7 @@ const searchConfiger = ref([
|
|||||||
{
|
{
|
||||||
label: "车辆异常痕迹代码",
|
label: "车辆异常痕迹代码",
|
||||||
prop: "clychjdm",
|
prop: "clychjdm",
|
||||||
placeholder: "请选择环林卡口类型",
|
placeholder: "请输入车辆异常痕迹代码",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
@ -117,7 +117,7 @@ const searchConfiger = ref([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "过检人员身份证号",
|
label: "过检人员身份证号",
|
||||||
prop: "zqlx",
|
prop: "gjrysfzh",
|
||||||
placeholder: "请输入过检人员身份证号",
|
placeholder: "请输入过检人员身份证号",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
<el-form-item label="关联GPSID" prop="glgpsid">
|
<el-form-item label="关联GPSID" prop="glgpsid">
|
||||||
<el-input :disabled="forbidden"
|
<el-input :disabled="forbidden"
|
||||||
v-model="listQuery.glgpsid"
|
v-model="listQuery.glgpsid"
|
||||||
placeholder="请输入装备型号"
|
placeholder="请输入关联GPSID"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@ -95,7 +95,7 @@
|
|||||||
<el-form-item label="设备sim卡号" prop="sbsim">
|
<el-form-item label="设备sim卡号" prop="sbsim">
|
||||||
<el-input :disabled="forbidden"
|
<el-input :disabled="forbidden"
|
||||||
v-model="listQuery.sbsim"
|
v-model="listQuery.sbsim"
|
||||||
placeholder="请输入装备型号"
|
placeholder="请输入设备sim卡号"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
|
@ -71,7 +71,7 @@ const searchConfiger = ref([
|
|||||||
{
|
{
|
||||||
label: "身份证号",
|
label: "身份证号",
|
||||||
prop: "sfzh",
|
prop: "sfzh",
|
||||||
placeholder: "请输入预警对象",
|
placeholder: "请输入身份证号",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -83,7 +83,7 @@
|
|||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="width: 100%" prop="sklList" label="标签">
|
<!-- <el-form-item style="width: 40%" prop="sklList" label="标签">
|
||||||
<el-select :disabled="forbidden"
|
<el-select :disabled="forbidden"
|
||||||
v-model="listQuery.sklList"
|
v-model="listQuery.sklList"
|
||||||
placeholder="请选择标签"
|
placeholder="请选择标签"
|
||||||
@ -96,8 +96,13 @@
|
|||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item style="width: 40%" label="环林卡口名称">
|
||||||
|
<div class="diviput" @click="!forbidden?showJcz = true:''">
|
||||||
|
<span v-if="listQuery.jczmc">{{ listQuery.jczmc }}</span>
|
||||||
|
<span class="placeholder" v-else> 请选择布控卡口</span>
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item style="width: 85%" prop="jd" label="坐标位置">
|
<el-form-item style="width: 85%" prop="jd" label="坐标位置">
|
||||||
<div class="latlng flex">
|
<div class="latlng flex">
|
||||||
<el-input :disabled="true"
|
<el-input :disabled="true"
|
||||||
@ -122,6 +127,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -129,6 +135,7 @@ import { ref, reactive, onMounted } from "vue";
|
|||||||
import { TtbJczSxtAdd, Ttbgetupdate } from "@/api/mosty-jcz.js";
|
import { TtbJczSxtAdd, Ttbgetupdate } from "@/api/mosty-jcz.js";
|
||||||
import * as MOSTY from "@/components/MyComponents/index";
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
import Jczloder from "@/components/loder/Jczloder.vue";
|
||||||
import GdMap from "@/components/GdMap/index.vue";
|
import GdMap from "@/components/GdMap/index.vue";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -216,6 +223,8 @@ const init = (type, row) => {
|
|||||||
//保存
|
//保存
|
||||||
const _onSave = () => {
|
const _onSave = () => {
|
||||||
if (!formRef) return;
|
if (!formRef) return;
|
||||||
|
console.log(listQuery.value);
|
||||||
|
|
||||||
formRef.value.validate((valid, fields) => {
|
formRef.value.validate((valid, fields) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (pageType.value == "add") {
|
if (pageType.value == "add") {
|
||||||
@ -226,6 +235,7 @@ const _onSave = () => {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Ttbgetupdate(listQuery.value).then((res) => {
|
Ttbgetupdate(listQuery.value).then((res) => {
|
||||||
|
|
||||||
ElMessage({ message: "修改成功", type: "success" });
|
ElMessage({ message: "修改成功", type: "success" });
|
||||||
emit("getjczgetXfllList");
|
emit("getjczgetXfllList");
|
||||||
close();
|
close();
|
||||||
@ -235,7 +245,6 @@ const _onSave = () => {
|
|||||||
console.log("error submit!", fields);
|
console.log("error submit!", fields);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log();
|
|
||||||
};
|
};
|
||||||
//选择定位地图
|
//选择定位地图
|
||||||
const selectLocation = () => {
|
const selectLocation = () => {
|
||||||
@ -269,7 +278,12 @@ const tableHeight1 = ref();
|
|||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
tableHeight1.value = window.innerHeight - 450;
|
tableHeight1.value = window.innerHeight - 450;
|
||||||
};
|
};
|
||||||
|
const showJcz = ref(false);
|
||||||
|
|
||||||
|
const JczMsg = (val) => {
|
||||||
|
listQuery.value.jczmc = val.jczmc;
|
||||||
|
listQuery.value.jczid = val.id;
|
||||||
|
};
|
||||||
defineExpose({ init });
|
defineExpose({ init });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -357,4 +371,20 @@ defineExpose({ init });
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background: #000;
|
background: #000;
|
||||||
}
|
}
|
||||||
|
.diviput {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #c0c4cc;
|
||||||
|
color: #000;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
.placeholder {
|
||||||
|
color: #b5b5b5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.divData {
|
||||||
|
background-color:#f5f7fa ;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -2,6 +2,12 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="titleBox">
|
<div class="titleBox">
|
||||||
<PageTitle title="感知源管理">
|
<PageTitle title="感知源管理">
|
||||||
|
<el-button :disabled="ids.length<=0" type="primary" @click="delDictItem(ids)" v-if="Auth">
|
||||||
|
<el-icon style="vertical-align: middle">
|
||||||
|
<CirclePlus />
|
||||||
|
</el-icon>
|
||||||
|
<span style="vertical-align: middle" >批量删除</span>
|
||||||
|
</el-button>
|
||||||
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
|
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
|
||||||
<el-icon style="vertical-align: middle">
|
<el-icon style="vertical-align: middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
@ -87,7 +93,7 @@ const searchConfiger = ref([
|
|||||||
prop: "sblx",
|
prop: "sblx",
|
||||||
placeholder: "感知源类型",
|
placeholder: "感知源类型",
|
||||||
showType: "select",
|
showType: "select",
|
||||||
options: D_BZ_GZSBLX
|
options: D_BZ_SBLX
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -97,7 +103,7 @@ const pageData = reactive({
|
|||||||
keyCount: 0,
|
keyCount: 0,
|
||||||
tableConfiger: {
|
tableConfiger: {
|
||||||
rowHieght: 61,
|
rowHieght: 61,
|
||||||
showSelectType: "null",
|
showSelectType: "checkBox",
|
||||||
loading: false
|
loading: false
|
||||||
},
|
},
|
||||||
total: 0,
|
total: 0,
|
||||||
@ -107,10 +113,8 @@ const pageData = reactive({
|
|||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 250, //操作栏宽度
|
controlsWidth: 250, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "感知源名称", prop: "sbmc", showOverflowTooltip: true },
|
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
|
||||||
{ label: "编号", prop: "sbbh", showOverflowTooltip: true },
|
{
|
||||||
{ label: "地址", prop: "dzmc", showOverflowTooltip: true },
|
|
||||||
{
|
|
||||||
label: "感知源类型",
|
label: "感知源类型",
|
||||||
prop: "sblx",
|
prop: "sblx",
|
||||||
showSolt: true,
|
showSolt: true,
|
||||||
@ -122,7 +126,10 @@ const pageData = reactive({
|
|||||||
showSolt: true,
|
showSolt: true,
|
||||||
showOverflowTooltip: true
|
showOverflowTooltip: true
|
||||||
},
|
},
|
||||||
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true }
|
{ label: "感知源名称", prop: "sbmc", showOverflowTooltip: true },
|
||||||
|
{ label: "编号", prop: "sbbh", showOverflowTooltip: true },
|
||||||
|
{ label: "地址", prop: "dzmc", showOverflowTooltip: true },
|
||||||
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
const Auth = ref(true)
|
const Auth = ref(true)
|
||||||
@ -159,15 +166,21 @@ const changeNo = (val) => {
|
|||||||
const changeSize = (val) => {
|
const changeSize = (val) => {
|
||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
};
|
};
|
||||||
|
const ids=ref([])
|
||||||
// 获取列表
|
// 获取列表
|
||||||
// 删除
|
// 删除
|
||||||
const delDictItem = (ids) => {
|
const delDictItem = (ids) => {
|
||||||
proxy
|
proxy
|
||||||
.$confirm("确定删除该数据?", "警告", { type: "warning" })
|
.$confirm("确定删除该数据?", "警告", { type: "warning" })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
gzydeleteList(ids).then((res) => {
|
let idsList
|
||||||
// ElMessage({ message: "删除成功", type: "success" });
|
if (Array.isArray(ids)) {
|
||||||
|
idsList=ids
|
||||||
|
}else{
|
||||||
|
idsList=[ids]
|
||||||
|
}
|
||||||
|
gzydeleteList(idsList).then((res) => {
|
||||||
|
ElMessage({ message: "删除成功", type: "success" });
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getjczgetXfllList();
|
getjczgetXfllList();
|
||||||
});
|
});
|
||||||
@ -191,6 +204,9 @@ const tabHeightFn = () => {
|
|||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
const chooseData = (val) => {
|
||||||
|
ids.value=val.map(item=>item.id)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
|
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
|
||||||
<el-select :disabled="forbidden" v-model="listQuery.czcs" placeholder="请选择布控颜色">
|
<el-select :disabled="forbidden" v-model="listQuery.czcs" placeholder="请选择处置措施">
|
||||||
<el-option v-for="dict in dict.D_BZ_CZCS" :key="dict.value" :value="dict.value"
|
<el-option v-for="dict in dict.D_BZ_CZCS" :key="dict.value" :value="dict.value"
|
||||||
:label="dict.label"></el-option>
|
:label="dict.label"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
@ -24,8 +24,8 @@
|
|||||||
<template #bkfs="{ row }">
|
<template #bkfs="{ row }">
|
||||||
{{ row.bkfs=='01'?"全省布控":"精准布控" }}
|
{{ row.bkfs=='01'?"全省布控":"精准布控" }}
|
||||||
</template>
|
</template>
|
||||||
<template #bkcs="{ row }">
|
<template #czcs="{ row }">
|
||||||
<dict-tag :value="row.yjys" :options="D_BZ_CZCS" :tag="false" />
|
<dict-tag :value="row.czcs" :options="D_BZ_CZCS" :tag="false" />
|
||||||
</template>
|
</template>
|
||||||
<!-- <template #bkzt="{ row }">
|
<!-- <template #bkzt="{ row }">
|
||||||
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
|
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
|
||||||
@ -72,14 +72,14 @@ const { D_BZ_BKYS,D_BZ_CZCS } = proxy.$dict(
|
|||||||
);
|
);
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{
|
{
|
||||||
label: "布控名称",
|
label: "姓名",
|
||||||
prop: "bkmc",
|
prop: "xm",
|
||||||
placeholder: "请输入布控名称",
|
placeholder: "请输入姓名",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "证件号码",
|
label: "证件号码",
|
||||||
prop: "bksfzh",
|
prop: "zjhm",
|
||||||
placeholder: "请输入证件号码",
|
placeholder: "请输入证件号码",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
},
|
},
|
||||||
@ -139,7 +139,7 @@ const pageData = reactive({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "布控措施",
|
label: "布控措施",
|
||||||
prop: "bkcs",
|
prop: "czcs",
|
||||||
showSolt: true,
|
showSolt: true,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
|
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
|
||||||
<el-select :disabled="forbidden" v-model="listQuery.czcs" placeholder="请选择布控颜色">
|
<el-select :disabled="forbidden" v-model="listQuery.czcs" placeholder="请选择处置措施">
|
||||||
<el-option v-for="dict in dict.D_BZ_CZCS" :key="dict.value" :value="dict.value"
|
<el-option v-for="dict in dict.D_BZ_CZCS" :key="dict.value" :value="dict.value"
|
||||||
:label="dict.label"></el-option>
|
:label="dict.label"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
{{ row.bkfs == '01' ? "全省布控" : "精准布控" }}
|
{{ row.bkfs == '01' ? "全省布控" : "精准布控" }}
|
||||||
</template>
|
</template>
|
||||||
<template #bkcs="{ row }">
|
<template #bkcs="{ row }">
|
||||||
<dict-tag :value="row.yjys" :options="D_BZ_CZCS" :tag="false" />
|
<dict-tag :value="row.czcs" :options="D_BZ_CZCS" :tag="false" />
|
||||||
</template>
|
</template>
|
||||||
<!-- <template #bkzt="{ row }">
|
<!-- <template #bkzt="{ row }">
|
||||||
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
|
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
|
||||||
@ -74,16 +74,11 @@ const { D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS } = proxy.$dict(
|
|||||||
"D_BZ_BKYS", "D_BZ_CZCS", "D_BZ_CPHYS"
|
"D_BZ_BKYS", "D_BZ_CZCS", "D_BZ_CPHYS"
|
||||||
);
|
);
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
|
|
||||||
{
|
{
|
||||||
label: "布控名称",
|
label: "车牌号码",
|
||||||
prop: "bkmc",
|
prop: "cph",
|
||||||
placeholder: "请输入布控名称",
|
placeholder: "请输入车牌号码",
|
||||||
showType: "input"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "证件号码",
|
|
||||||
prop: "bksfzh",
|
|
||||||
placeholder: "请输入证件号码",
|
|
||||||
showType: "input"
|
showType: "input"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -65,7 +65,12 @@ const { D_BZ_SF, D_BZ_MZ, D_BZ_XB, D_BZ_ZZMM,D_BZ_HYZK,D_BZ_WHCD } = proxy.$dict
|
|||||||
"D_BZ_HYZK",
|
"D_BZ_HYZK",
|
||||||
"D_BZ_WHCD"
|
"D_BZ_WHCD"
|
||||||
);
|
);
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([ {
|
||||||
|
showType: "department",
|
||||||
|
prop: "ssbmdm",
|
||||||
|
placeholder: "请选择所属部门",
|
||||||
|
label: "所属部门"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: "姓名",
|
label: "姓名",
|
||||||
prop: "xm",
|
prop: "xm",
|
||||||
@ -85,12 +90,7 @@ const searchConfiger = ref([
|
|||||||
showType: "select",
|
showType: "select",
|
||||||
options: D_BZ_SF
|
options: D_BZ_SF
|
||||||
},
|
},
|
||||||
{
|
|
||||||
showType: "department",
|
|
||||||
prop: "ssbmdm",
|
|
||||||
placeholder: "请选择所属部门",
|
|
||||||
label: "所属部门"
|
|
||||||
}
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const detailDiloag = ref();
|
const detailDiloag = ref();
|
||||||
|
@ -0,0 +1,246 @@
|
|||||||
|
<template>
|
||||||
|
<div class="dialog" v-if="dialogGzy">
|
||||||
|
<div class="head_box">
|
||||||
|
<span class="title">新增感知源</span>
|
||||||
|
<div>
|
||||||
|
<el-button size="small" type="primary" @click="_onSave">保存</el-button>
|
||||||
|
<el-button size="small" @click="close">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cntinfo">
|
||||||
|
<el-form ref="formRef" :model="listQuery" :rules="rules" :inline="true" label-position="top">
|
||||||
|
<el-form-item style="width: 40%" label="感知源">
|
||||||
|
<el-input v-model="JczMc" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item style="width: 40%" label="感知源">
|
||||||
|
<div class="diviput" @click="showJcz = true">
|
||||||
|
<span v-if="listQuery.sxtList&&listQuery.sxtList.length>0">
|
||||||
|
<el-tag closable @close="handleClose(index)" v-for="(item, index) in listQuery.sxtList" :key="index"> {{
|
||||||
|
item.sbmc }} </el-tag>
|
||||||
|
</span>
|
||||||
|
<span class="placeholder" v-else> 请选择感知源</span>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Gzyloder v-model="showJcz" :Single="false" @choosedJcz="GzyMsg" :data="data" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted } from "vue";
|
||||||
|
import Gzyloder from '@/components/loder/Gzyloder.vue'
|
||||||
|
import { sxtBatch,JczselectById } from '@/api/mosty-jcz'
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
const emit=defineEmits(['getjczgetXfllList'])
|
||||||
|
const search = ref(null)
|
||||||
|
|
||||||
|
const listQuery = ref({})
|
||||||
|
onMounted(() => {
|
||||||
|
tabHeightFn()
|
||||||
|
console.log("xxxx");
|
||||||
|
});
|
||||||
|
const data = ref([])
|
||||||
|
|
||||||
|
const dialogGzy = ref(false)
|
||||||
|
const JczMc = ref()
|
||||||
|
// 初始化数据
|
||||||
|
const init = (row) => {
|
||||||
|
dialogGzy.value = true;
|
||||||
|
listQuery.value.jczid = row.id
|
||||||
|
JczMc.value = row.jczmc
|
||||||
|
JczselectById({id:row.id}).then(res => {
|
||||||
|
if(res){
|
||||||
|
listQuery.value.sxtList = res.sxtList?res.sxtList:[];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
//保存
|
||||||
|
const _onSave = () => {
|
||||||
|
sxtBatch(listQuery.value).then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
ElMessage({ message: "新增成功", type: "success" });
|
||||||
|
emit("getjczgetXfllList");
|
||||||
|
close()
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const pageDatas = reactive({
|
||||||
|
tableData: [], //表格数据
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "null",
|
||||||
|
loading: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
}, //分页
|
||||||
|
controlsWidth: 250, //操作栏宽度
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
|
||||||
|
{ label: "环林卡口名称", prop: "jczmc", showOverflowTooltip: true },
|
||||||
|
{
|
||||||
|
label: "环林卡口类型",
|
||||||
|
prop: "jczlx",
|
||||||
|
showOverflowTooltip: true,
|
||||||
|
showSolt: true
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
label: "执勤类型",
|
||||||
|
prop: "zqlx",
|
||||||
|
showSolt: true,
|
||||||
|
showOverflowTooltip: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "环林卡口地址",
|
||||||
|
prop: "xxdz",
|
||||||
|
showOverflowTooltip: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
//页面关闭
|
||||||
|
const close = () => {
|
||||||
|
dialogGzy.value = false;
|
||||||
|
listQuery.value={}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
console.log(search.value);
|
||||||
|
pageDatas.tableHeight = window.innerHeight - 370
|
||||||
|
// - search.value.offsetHeight - 280;
|
||||||
|
window.onresize = function () {
|
||||||
|
tabHeightFn();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
defineExpose({ init });
|
||||||
|
const showJcz = ref(false)
|
||||||
|
const GzyMsg = (val) => {
|
||||||
|
listQuery.value.sxtList=val
|
||||||
|
}
|
||||||
|
const handleClose = (val) => {
|
||||||
|
listQuery.value.sxtList.splice(listQuery.value.sxtList.indexOf(val), 1)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.dialog {
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
.head_box {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cntinfo {
|
||||||
|
// height: calc(100% - 70px);
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.my_transfer {
|
||||||
|
height: calc(100% - 50px);
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
margin: 12px;
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.tableBox {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.serch {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
// height: 96px;
|
||||||
|
>.el-form--inline {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
>.el-form-item--default {
|
||||||
|
width: 31%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tableBox {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
width: 380px;
|
||||||
|
margin: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.phone {
|
||||||
|
width: 95px;
|
||||||
|
height: 120px;
|
||||||
|
|
||||||
|
.el-image {
|
||||||
|
width: 95px;
|
||||||
|
max-height: 120px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-upload {
|
||||||
|
width: 90px;
|
||||||
|
height: 100px;
|
||||||
|
border: 1px dashed #000000;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
|
||||||
|
.el-icon {
|
||||||
|
margin-top: 34px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mapbox {
|
||||||
|
width: 1000px;
|
||||||
|
padding: 0 10px;
|
||||||
|
height: 400px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.diviput {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #c0c4cc;
|
||||||
|
color: #000;
|
||||||
|
min-height: 32px;
|
||||||
|
// line-height: 32px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
.placeholder {
|
||||||
|
color: #b5b5b5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -32,6 +32,7 @@
|
|||||||
<template v-if="Auth">
|
<template v-if="Auth">
|
||||||
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
|
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
|
||||||
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
|
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
|
||||||
|
<el-link type="primary" @click="perceptionAdd(row)">新增感知源</el-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
||||||
@ -45,12 +46,14 @@
|
|||||||
<!-- 编辑详情 -->
|
<!-- 编辑详情 -->
|
||||||
<EditAddForm ref="detailDiloag" :dict="{ D_BZ_JCZLX, D_BZ_ZQLX, D_BZ_DLLX, D_BZ_JCZJB }"
|
<EditAddForm ref="detailDiloag" :dict="{ D_BZ_JCZLX, D_BZ_ZQLX, D_BZ_DLLX, D_BZ_JCZJB }"
|
||||||
@getjczgetXfllList="getjczgetXfllList" />
|
@getjczgetXfllList="getjczgetXfllList" />
|
||||||
|
<PerceptionSource ref="perceptionSource" @getjczgetXfllList="getjczgetXfllList"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
|
import PerceptionSource from './components/perceptionSource.vue'
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
@ -200,6 +203,10 @@ const tabHeightFn = () => {
|
|||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
const perceptionSource = ref()
|
||||||
|
const perceptionAdd = (row) => {
|
||||||
|
perceptionSource.value.init(row)
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@ -127,7 +127,14 @@ const getjczgetXfllList = () => {
|
|||||||
getjczgetXfllList();
|
getjczgetXfllList();
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
queryCondition.value = { ...queryCondition.value, ...val };
|
console.log(val);
|
||||||
|
|
||||||
|
const startTime = {
|
||||||
|
startTime : val.startTime[0],
|
||||||
|
endTime : val.startTime[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
queryCondition.value = { ...queryCondition.value,...startTime};
|
||||||
getjczgetXfllList();
|
getjczgetXfllList();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -21,18 +21,18 @@
|
|||||||
v-model:modelValue="listQuery.ssbmdm"
|
v-model:modelValue="listQuery.ssbmdm"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备编号" prop="qxbh">
|
<el-form-item label="器械编号" prop="qxbh">
|
||||||
<el-input
|
<el-input
|
||||||
:disabled="forbidden"
|
:disabled="forbidden"
|
||||||
v-model="listQuery.qxbh"
|
v-model="listQuery.qxbh"
|
||||||
placeholder="请输入设备编号"
|
placeholder="请输入器械编号"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="装备类型" prop="qxlx">
|
<el-form-item label="器械类型" prop="qxlx">
|
||||||
<el-select v-model="listQuery.qxlx" placeholder="请选择装备类型" :disabled="forbidden">
|
<el-select v-model="listQuery.qxlx" placeholder="请选择器械类型" :disabled="forbidden">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in dict.D_JCGL_JYQX_QXLX"
|
v-for="item in dict.D_JCGL_JYQX_QXLX"
|
||||||
:key="item"
|
:key="item"
|
||||||
@ -41,8 +41,8 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备分类" prop="scode">
|
<el-form-item label="器械分类" prop="scode">
|
||||||
<el-select v-model="listQuery.scode" placeholder="请选择设备分类" :disabled="forbidden">
|
<el-select v-model="listQuery.scode" placeholder="请选择器械分类" :disabled="forbidden">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in dict.D_BZ_JYQXFL"
|
v-for="item in dict.D_BZ_JYQXFL"
|
||||||
:key="item"
|
:key="item"
|
||||||
@ -51,18 +51,18 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="qxMc" label="装备名称">
|
<el-form-item prop="qxMc" label="器械名称">
|
||||||
<el-input :disabled="forbidden"
|
<el-input :disabled="forbidden"
|
||||||
v-model="listQuery.qxMc"
|
v-model="listQuery.qxMc"
|
||||||
placeholder="请输入装备名称"
|
placeholder="请输入器械名称"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装备型号">
|
<el-form-item label="器械型号">
|
||||||
<el-input :disabled="forbidden"
|
<el-input :disabled="forbidden"
|
||||||
v-model="listQuery.xh"
|
v-model="listQuery.xh"
|
||||||
placeholder="请输入装备型号"
|
placeholder="请输入器械型号"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装备状态">
|
<el-form-item label="器械状态">
|
||||||
<el-select :disabled="forbidden"
|
<el-select :disabled="forbidden"
|
||||||
clearable
|
clearable
|
||||||
v-model="listQuery.zbzt"
|
v-model="listQuery.zbzt"
|
||||||
@ -93,10 +93,10 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装备厂商">
|
<el-form-item label="器械厂商">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="listQuery.sccs" :disabled="forbidden"
|
v-model="listQuery.sccs" :disabled="forbidden"
|
||||||
placeholder="请输入装备厂商"
|
placeholder="请输入器械厂商"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@ -163,7 +163,7 @@ const rules = reactive({
|
|||||||
], qxbh: [
|
], qxbh: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入设备编号",
|
message: "请输入器械编号",
|
||||||
trigger: "change"
|
trigger: "change"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -194,7 +194,7 @@ const rules = reactive({
|
|||||||
], scode: [
|
], scode: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: "请选择设备分类",
|
message: "请选择器械分类",
|
||||||
trigger: "change"
|
trigger: "change"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -83,9 +83,9 @@ const searchConfiger = ref([
|
|||||||
label: "所属部门"
|
label: "所属部门"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "设备名称",
|
label: "器械名称",
|
||||||
prop: "sbmc",
|
prop: "qxMc",
|
||||||
placeholder: "请输入设备名称",
|
placeholder: "请输入器械名称",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
}
|
}
|
||||||
// {
|
// {
|
||||||
|
@ -159,7 +159,12 @@ const urlImg = ref("/mosty-api/mosty-base/minio/image/download/");
|
|||||||
const imgUrl = ref("");
|
const imgUrl = ref("");
|
||||||
const dialogFormVisible = ref(false);
|
const dialogFormVisible = ref(false);
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{
|
{
|
||||||
|
showType: "department",
|
||||||
|
prop: "ssbmdm",
|
||||||
|
placeholder: "请选择所属部门",
|
||||||
|
label: "所属部门"
|
||||||
|
},{
|
||||||
label: "姓名",
|
label: "姓名",
|
||||||
prop: "xm",
|
prop: "xm",
|
||||||
placeholder: "请输入姓名",
|
placeholder: "请输入姓名",
|
||||||
@ -171,19 +176,14 @@ const searchConfiger = ref([
|
|||||||
placeholder: "请输入证件号码",
|
placeholder: "请输入证件号码",
|
||||||
showType: "input"
|
showType: "input"
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
label: "是否离职",
|
// label: "是否离职",
|
||||||
prop: "xtSjzt",
|
// prop: "xtSjzt",
|
||||||
placeholder: "是否离职",
|
// placeholder: "是否离职",
|
||||||
showType: "select",
|
// showType: "select",
|
||||||
options: D_BZ_SF
|
// options: D_BZ_SF
|
||||||
},
|
// },
|
||||||
{
|
|
||||||
showType: "department",
|
|
||||||
prop: "ssbmdm",
|
|
||||||
placeholder: "请选择所属部门",
|
|
||||||
label: "所属部门"
|
|
||||||
}
|
|
||||||
]);
|
]);
|
||||||
const elform = ref(null)
|
const elform = ref(null)
|
||||||
const detailDiloag = ref();
|
const detailDiloag = ref();
|
||||||
|
@ -86,7 +86,8 @@ const searchConfiger = ref([
|
|||||||
label: "车辆品牌",
|
label: "车辆品牌",
|
||||||
prop: "clpp",
|
prop: "clpp",
|
||||||
placeholder: "请输入车辆品牌",
|
placeholder: "请输入车辆品牌",
|
||||||
showType: "input"
|
showType: "select",
|
||||||
|
options: D_BZ_CLPP
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -19,12 +19,12 @@
|
|||||||
<span class="tag">{{ item.yjBt }}</span>
|
<span class="tag">{{ item.yjBt }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item flex">
|
<div class="info-item flex">
|
||||||
<span class="label">性别:</span>
|
<span class="label">性别:{{ IdCard(item.yjRysfzh, 'all').sex }}</span>
|
||||||
<dict-tag
|
<!-- <dict-tag
|
||||||
:options="D_BZ_XB"
|
:options="D_BZ_XB"
|
||||||
:value="IdCard(item.yjRysfzh, 3)"
|
:value="IdCard(item.yjRysfzh, 'all').sex"
|
||||||
:tag="false"
|
:tag="false"
|
||||||
></dict-tag>
|
></dict-tag> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<span class="label">相似度:</span>
|
<span class="label">相似度:</span>
|
||||||
|
@ -21,14 +21,13 @@ const vehicleChartRef = ref(null);
|
|||||||
const personChartRef = ref(null);
|
const personChartRef = ref(null);
|
||||||
let vehicleChart = null;
|
let vehicleChart = null;
|
||||||
let personChart = null;
|
let personChart = null;
|
||||||
|
const createChartOption = (data, colors, total) => {
|
||||||
const createChartOption = (data, colors) => {
|
|
||||||
return {
|
return {
|
||||||
title: {
|
title: {
|
||||||
text: "100",
|
text: `${total}`,
|
||||||
subtext: "总数",
|
subtext: "总数",
|
||||||
left: "20%",
|
left: 'center',
|
||||||
top: "center",
|
top: 'center', //top待调整
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: "#fff",
|
color: "#fff",
|
||||||
fontSize: 24,
|
fontSize: 24,
|
||||||
@ -43,9 +42,9 @@ const createChartOption = (data, colors) => {
|
|||||||
trigger: "item"
|
trigger: "item"
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
orient: "vertical",
|
orient: "horizontal",
|
||||||
left: "60%",
|
top: 0,
|
||||||
top: "center",
|
bottom: '50px',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: "#fff",
|
color: "#fff",
|
||||||
rich: {
|
rich: {
|
||||||
@ -71,14 +70,14 @@ const createChartOption = (data, colors) => {
|
|||||||
},
|
},
|
||||||
formatter: (name) => {
|
formatter: (name) => {
|
||||||
const item = data.find((d) => d.name === name);
|
const item = data.find((d) => d.name === name);
|
||||||
return `${name} ${item.value} {${item.colorType}|(${item.value}%)}`;
|
return `${name} ${item.value}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: "pie",
|
type: "pie",
|
||||||
radius: ["55%", "70%"],
|
radius: ["55%", "70%"],
|
||||||
center: ["28%", "50%"],
|
center: ["50%", "55%"],
|
||||||
data: data.map((item) => ({
|
data: data.map((item) => ({
|
||||||
...item,
|
...item,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
@ -100,7 +99,7 @@ const createChartOption = (data, colors) => {
|
|||||||
{
|
{
|
||||||
type: "pie",
|
type: "pie",
|
||||||
radius: ["65%", "85%"],
|
radius: ["65%", "85%"],
|
||||||
center: ["28%", "50%"],
|
center: ["50%", "55%"],
|
||||||
data: data.map((item) => ({
|
data: data.map((item) => ({
|
||||||
...item,
|
...item,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
@ -128,13 +127,20 @@ const randomHexColor = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const initCharts = async () => {
|
const initCharts = async () => {
|
||||||
|
let clTotal = 0;
|
||||||
|
let ryTotal = 0;
|
||||||
vehicleChart = echarts.init(vehicleChartRef.value);
|
vehicleChart = echarts.init(vehicleChartRef.value);
|
||||||
personChart = echarts.init(personChartRef.value);
|
personChart = echarts.init(personChartRef.value);
|
||||||
const colors = ["#00f0ff", "#0066ff", "#ff9900", "#00cc66"];
|
const colors = ["#00f0ff", "#0066ff", "#ff9900", "#00cc66"];
|
||||||
// 车辆预警数据
|
// 车辆预警数据
|
||||||
const res = await jczgetYjbqtj({ yjLx: 1 });
|
const res = await jczgetYjbqtj({ yjLx: 1 });
|
||||||
const res2 = await jczgetYjbqtj({ yjLx: 2 });
|
const res2 = await jczgetYjbqtj({ yjLx: 2 });
|
||||||
console.log(res);
|
console.log(res, 'res');
|
||||||
|
console.log(res2, 'res2');
|
||||||
|
clTotal = res2.map((el) => el.sl).reduce((accumulator, currentValue) => accumulator + currentValue, 0);
|
||||||
|
ryTotal = res.map((el) => el.sl).reduce((accumulator, currentValue) => accumulator + currentValue, 0);
|
||||||
|
console.log(clTotal, 'clTotal');
|
||||||
|
|
||||||
const vehicleData = res.map((item) => {
|
const vehicleData = res.map((item) => {
|
||||||
const color = randomHexColor();
|
const color = randomHexColor();
|
||||||
const color2 = randomHexColor();
|
const color2 = randomHexColor();
|
||||||
@ -147,37 +153,6 @@ const initCharts = async () => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
// [
|
|
||||||
// {
|
|
||||||
// value: 25,
|
|
||||||
// name: "盗窃车辆",
|
|
||||||
// colorType: "blue",
|
|
||||||
// color: ["#00f0ff", "#00a0cc"],
|
|
||||||
// color1: [choseRbgb("#00f0ff", 0.3), choseRbgb("#00a0cc", 0.3)]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// value: 30,
|
|
||||||
// name: "车牌与车辆不符",
|
|
||||||
// colorType: "lightBlue",
|
|
||||||
// color: ["#0066ff", "#0044cc"],
|
|
||||||
// color1: [choseRbgb("#0066ff", 0.3), choseRbgb("#0044cc", 0.3)]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// value: 17,
|
|
||||||
// name: "车辆超高",
|
|
||||||
// colorType: "orange",
|
|
||||||
// color: ["#ff9900", "#cc7a00"],
|
|
||||||
// color1: [choseRbgb("#ff9900", 0.3), choseRbgb("#cc7a00", 0.3)]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// value: 28,
|
|
||||||
// name: "车辆超限",
|
|
||||||
// colorType: "green",
|
|
||||||
// color: ["#00cc66", "#009944"],
|
|
||||||
// color1: [choseRbgb("#00cc66", 0.3), choseRbgb("#009944", 0.3)]
|
|
||||||
// }
|
|
||||||
// ];
|
|
||||||
|
|
||||||
// 人员预警数据
|
// 人员预警数据
|
||||||
const personData = res2.map((item) => {
|
const personData = res2.map((item) => {
|
||||||
const color = randomHexColor();
|
const color = randomHexColor();
|
||||||
@ -220,8 +195,8 @@ const initCharts = async () => {
|
|||||||
// color1: [choseRbgb("#00cc66", 0.3), choseRbgb("#009944", 0.3)]
|
// color1: [choseRbgb("#00cc66", 0.3), choseRbgb("#009944", 0.3)]
|
||||||
// }
|
// }
|
||||||
// ];
|
// ];
|
||||||
vehicleChart.setOption(createChartOption(vehicleData, colors));
|
vehicleChart.setOption(createChartOption(vehicleData, colors, ryTotal));
|
||||||
personChart.setOption(createChartOption(personData, colors));
|
personChart.setOption(createChartOption(personData, colors, clTotal));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
@ -253,7 +228,7 @@ onUnmounted(() => {
|
|||||||
|
|
||||||
.section-title {
|
.section-title {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
margin-bottom: 20px;
|
// margin-bottom: 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 12px;
|
padding-left: 12px;
|
||||||
background: linear-gradient(0deg, #59a6f4 0%, #ffffff 90%);
|
background: linear-gradient(0deg, #59a6f4 0%, #ffffff 90%);
|
||||||
|
@ -49,13 +49,13 @@
|
|||||||
import GdMap from "@/components/GdMap/index.vue";
|
import GdMap from "@/components/GdMap/index.vue";
|
||||||
import Head from "./layout/head.vue";
|
import Head from "./layout/head.vue";
|
||||||
import Collection from "./components/collection.vue";
|
import Collection from "./components/collection.vue";
|
||||||
// import Warning from "./components/warning.vue";
|
|
||||||
import CarWarning from "./components/CarWarning.vue";
|
import CarWarning from "./components/CarWarning.vue";
|
||||||
import PeoWarning from "./components/PeoWarning.vue";
|
import PeoWarning from "./components/PeoWarning.vue";
|
||||||
import BeOnDuty from "./components/beonDuty.vue";
|
import BeOnDuty from "./components/beonDuty.vue";
|
||||||
import Entrance from "./components/entrance.vue";
|
import Entrance from "./components/entrance.vue";
|
||||||
import WanringAnyse from "./components/wanringAnyse.vue";
|
import WanringAnyse from "./components/wanringAnyse.vue";
|
||||||
import { jczgetJczList } from "@/api/mosty-jcz";
|
import { jczgetJczList } from "@/api/mosty-jcz";
|
||||||
|
import {ysSxtGetList} from '@/api/yszx.js'
|
||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
|
||||||
import { ref, onMounted } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
@ -80,6 +80,17 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
const sxtGetList = () => {
|
||||||
|
ysSxtGetList().then(res => {
|
||||||
|
emitter.emit("addPointArea", {
|
||||||
|
coords: res,
|
||||||
|
icon: require("@/assets/point/sp.png"),
|
||||||
|
flag: "jczMap_Gzy"
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
sxtGetList()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -146,4 +157,5 @@ onMounted(() => {
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
<div class="f18 pl104">{{ hour + ":" + minute + ":" + second }}</div>
|
<div class="f18 pl104">{{ hour + ":" + minute + ":" + second }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="title absolute" @click="goPath">{{ props.title }}</div>
|
<div class="title absolute" @click="goPath">{{ props.title }}</div>
|
||||||
<div class="wd absolute">
|
<!-- <div class="wd absolute">
|
||||||
<el-icon size="25px" style="top: 6px" color="#86C8EB"><Sunny /></el-icon>
|
<el-icon size="25px" style="top: 6px" color="#86C8EB"><Sunny /></el-icon>
|
||||||
<span> 温度 1~7°C </span>
|
<span> 温度 1~7°C </span>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="zbbb" v-if="query" @click="show = true">值班报备</div>
|
<div class="zbbb" v-if="query" @click="show = true">值班报备</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="show" title="Shipping address">
|
<el-dialog v-model="show" title="Shipping address">
|
||||||
<div style="height: 50vh; overflow: auto">
|
<div style="height: 50vh; overflow: auto" v-if="show">
|
||||||
<zbbb
|
<zbbb
|
||||||
:row="row"
|
:row="row"
|
||||||
@close="close"
|
@close="close"
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
<template>
|
<template>
|
||||||
<div></div>
|
|
||||||
|
|
||||||
<div class="cntinfo">
|
<div class="cntinfo">
|
||||||
<div class="flex align-center just-between box">
|
<div class="flex align-center just-between box">
|
||||||
<div class="flex align-center">
|
<div class="flex align-center">
|
||||||
@ -12,7 +10,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<!-- v-if="['add', 'edit'].includes(pageType)" -->
|
<!-- v-if="['add', 'edit'].includes(pageType)" -->
|
||||||
<el-button size="small" type="primary" @click="_onSave">保存</el-button>
|
<el-button size="small" type="primary" @click="_onSave" :disabled="loding">保存</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-form
|
<el-form
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
@ -51,7 +49,7 @@
|
|||||||
<div class="bblxItem">
|
<div class="bblxItem">
|
||||||
<div class="btItem">班次设置</div>
|
<div class="btItem">班次设置</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<el-form-item prop="kssj">
|
<el-form-item prop="bcKssj" label=" ">
|
||||||
<el-time-picker
|
<el-time-picker
|
||||||
v-model="listQuery.bcKssj"
|
v-model="listQuery.bcKssj"
|
||||||
:disabled="isDetail"
|
:disabled="isDetail"
|
||||||
@ -60,7 +58,7 @@
|
|||||||
value-format="HH:mm:ss"
|
value-format="HH:mm:ss"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="bcKts">
|
<el-form-item prop="bcKtsDict" label=" ">
|
||||||
<el-select
|
<el-select
|
||||||
clearable
|
clearable
|
||||||
v-model="listQuery.bcKtsDict"
|
v-model="listQuery.bcKtsDict"
|
||||||
@ -75,7 +73,7 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="jssj">
|
<el-form-item prop="bcJssj" label=" ">
|
||||||
<el-time-picker
|
<el-time-picker
|
||||||
v-model="listQuery.bcJssj"
|
v-model="listQuery.bcJssj"
|
||||||
:disabled="isDetail"
|
:disabled="isDetail"
|
||||||
@ -103,7 +101,7 @@
|
|||||||
:dic="props.dic"
|
:dic="props.dic"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="fzrXm">
|
<el-form-item prop="fzrXm" label=" ">
|
||||||
<el-input
|
<el-input
|
||||||
readonly
|
readonly
|
||||||
v-model="listQuery.fzrXm"
|
v-model="listQuery.fzrXm"
|
||||||
@ -111,7 +109,7 @@
|
|||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="fzrSfzh">
|
<el-form-item prop="fzrSfzh" label=" ">
|
||||||
<el-input
|
<el-input
|
||||||
readonly
|
readonly
|
||||||
v-model="listQuery.fzrSfzh"
|
v-model="listQuery.fzrSfzh"
|
||||||
@ -119,7 +117,7 @@
|
|||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="fzrLxdh">
|
<el-form-item prop="fzrLxdh" label=" ">
|
||||||
<el-input
|
<el-input
|
||||||
readonly
|
readonly
|
||||||
v-model="listQuery.fzrLxdh"
|
v-model="listQuery.fzrLxdh"
|
||||||
@ -307,11 +305,13 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, getCurrentInstance, onMounted, watch } from "vue";
|
import { ref, reactive, getCurrentInstance, onMounted, watch } from "vue";
|
||||||
import * as MOSTY from "@/components/MyComponents/index";
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
|
import { jczqueryById } from "@/api/mosty-jcz";
|
||||||
import { jczsavel, Xfbbupdate } from "@/api/mosty-jcz.js";
|
import { jczsavel, Xfbbupdate } from "@/api/mosty-jcz.js";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import ChooseTable from "@/components/chooseList/chooseTable.vue";
|
import ChooseTable from "@/components/chooseList/chooseTable.vue";
|
||||||
import { timeValidate } from "@/utils/tools.js";
|
import { timeValidate } from "@/utils/tools.js";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
// const { D_BZ_JYQXFL } = proxy.$dict("D_BZ_JYQXFL");
|
// const { D_BZ_JYQXFL } = proxy.$dict("D_BZ_JYQXFL");
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -394,7 +394,6 @@ const init = (type) => {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pageType.value = "add";
|
pageType.value = "add";
|
||||||
|
|
||||||
listQuery.value.qxList = props.dic.D_BZ_JYQXFL.map((item) => {
|
listQuery.value.qxList = props.dic.D_BZ_JYQXFL.map((item) => {
|
||||||
return { qxmc: item.label, qxsl: 0 };
|
return { qxmc: item.label, qxsl: 0 };
|
||||||
});
|
});
|
||||||
@ -416,17 +415,43 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
// 验证规则
|
// 验证规则
|
||||||
const rules = ref({
|
const rules = ref({
|
||||||
spbt: [
|
bcKtsDict: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入标题",
|
message: "请选择班次",
|
||||||
trigger: "blur"
|
trigger: "blur"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
bcKssj: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择开始时间",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
], bcJssj: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请选择结束时间",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
], fzrXm: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入负责人",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
], fzrSfzh: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "请输入身份证",
|
||||||
|
trigger: "blur"
|
||||||
|
}
|
||||||
|
],
|
||||||
});
|
});
|
||||||
//保存
|
//保存
|
||||||
|
const loding = ref(false);
|
||||||
const _onSave = () => {
|
const _onSave = () => {
|
||||||
|
formRef.value.validate().then( async() => {
|
||||||
const data = [...mjData.value, ...fjData.value];
|
const data = [...mjData.value, ...fjData.value];
|
||||||
|
|
||||||
listQuery.value.ryList = ChegeMj(data);
|
listQuery.value.ryList = ChegeMj(data);
|
||||||
@ -438,33 +463,61 @@ const _onSave = () => {
|
|||||||
break;
|
break;
|
||||||
case "02":
|
case "02":
|
||||||
listQuery.value.bcKts = 2;
|
listQuery.value.bcKts = 2;
|
||||||
|
break;
|
||||||
case "03":
|
case "03":
|
||||||
listQuery.value.bcKts = 4;
|
listQuery.value.bcKts = 4;
|
||||||
|
break;
|
||||||
case "04":
|
case "04":
|
||||||
listQuery.value.bcKts = 5;
|
listQuery.value.bcKts = 5;
|
||||||
|
break;
|
||||||
case "05":
|
case "05":
|
||||||
listQuery.value.bcKts = 6;
|
listQuery.value.bcKts = 6;
|
||||||
|
break;
|
||||||
case "06":
|
case "06":
|
||||||
listQuery.value.bcKts = 7;
|
listQuery.value.bcKts = 7;
|
||||||
|
break;
|
||||||
case "07":
|
case "07":
|
||||||
listQuery.value.bcKts = 8;
|
listQuery.value.bcKts = 8;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
listQuery.value.jczid = routerList.value.id?routerList.value.id:"";
|
listQuery.value.jczid = routerList.value.id?routerList.value.id:"";
|
||||||
listQuery.value.jczmc = routerList.value.name?routerList.value.name:"";
|
listQuery.value.jczmc = routerList.value.name?routerList.value.name:"";
|
||||||
if (pageType.value == "add") {
|
if (pageType.value == "add") {
|
||||||
jczsavel(listQuery.value).then((res) => {
|
jczsavel(listQuery.value).then((res) => {
|
||||||
ElMessage({ message: "新增成功", type: "success" });
|
ElMessage({ message: "新增成功", type: "success" });
|
||||||
|
getjczqueryById()
|
||||||
emit("close");
|
emit("close");
|
||||||
|
}).finally(()=>{
|
||||||
|
loding.value=false
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Xfbbupdate(listQuery.value).then((res) => {
|
Xfbbupdate(listQuery.value).then((res) => {
|
||||||
ElMessage({ message: "修改成功", type: "success" });
|
ElMessage({ message: "修改成功", type: "success" });
|
||||||
|
getjczqueryById()
|
||||||
emit("close");
|
emit("close");
|
||||||
|
}).finally(()=>{
|
||||||
|
loding.value=false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
|
}).catch(() => { });
|
||||||
|
};
|
||||||
|
const getjczqueryById = () => {
|
||||||
|
jczqueryById({ jczid: props.jczId }).then((res) => {
|
||||||
|
if (res) {
|
||||||
|
emitter.emit("getjczqueryById",res);
|
||||||
|
// warningList.value.qxList =res.qxList&&res.qxList.length>0
|
||||||
|
// ? res.qxList.filter((item) => item.qxsl > 0)
|
||||||
|
// : [];
|
||||||
|
// warningList.value.ryList = res.ryList.length>0 ? res.ryList : [];
|
||||||
|
// warningList.value.clList = res.clList.length>0 ? res.clList : [];
|
||||||
|
// warningList.value.sbList = [...res.tcList, ...res.zdList]
|
||||||
|
// emitter.emit("chengZ", res);
|
||||||
|
} else {
|
||||||
|
// warningList.value = res;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
//
|
//
|
||||||
const close = () => {
|
const close = () => {
|
||||||
dialogForm.value = false;
|
dialogForm.value = false;
|
||||||
@ -621,4 +674,7 @@ const changeJCZ = (val) => {
|
|||||||
.box {
|
.box {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
::v-deep .el-form-item__label{
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
42
src/views/login/oatuh_login.vue
Normal file
42
src/views/login/oatuh_login.vue
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<template></template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from "vue";
|
||||||
|
import { useStore } from "vuex";
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import {
|
||||||
|
setItem
|
||||||
|
} from "@/utils/storage";
|
||||||
|
const loginDialog = ref(false);
|
||||||
|
const deptList = ref([]);
|
||||||
|
const store = useStore();
|
||||||
|
function redirectAuth() {
|
||||||
|
|
||||||
|
let token = location.hash.slice(20) || null;
|
||||||
|
if (token != null) {
|
||||||
|
token = token.replace(/\ +/g, "");
|
||||||
|
setItem("SSOTOKEN", token)
|
||||||
|
handleLogin({ token: token});
|
||||||
|
} else {
|
||||||
|
window.location.href = `http://155.240.22.188:9020`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleLogin = (e) => {
|
||||||
|
store.dispatch("user/oatuhLogin", e).then((res) => {
|
||||||
|
// 登录后操作
|
||||||
|
if (res.deptList.length === 1) {
|
||||||
|
// window.location.hash = "/";
|
||||||
|
} else {
|
||||||
|
deptList.value = [...res.deptList];
|
||||||
|
loginDialog.value = true;
|
||||||
|
authorization.value = res.jwtToken;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
redirectAuth();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
@ -9,7 +9,7 @@ const serverHost = "http://192.168.1.32:8066"
|
|||||||
// const serverHost = "http://127.0.0.1:8006"
|
// const serverHost = "http://127.0.0.1:8006"
|
||||||
module.exports = {
|
module.exports = {
|
||||||
publicPath: "./",
|
publicPath: "./",
|
||||||
outputDir: "ylth",
|
outputDir: "jcz",
|
||||||
assetsDir: "static",
|
assetsDir: "static",
|
||||||
lintOnSave: false, //process.env.NODE_ENV === 'development',
|
lintOnSave: false, //process.env.NODE_ENV === 'development',
|
||||||
productionSourceMap: false,
|
productionSourceMap: false,
|
||||||
|
@ -1,738 +0,0 @@
|
|||||||
(function(b, c, a) {
|
|
||||||
c[b] = a()
|
|
||||||
})("h337", this, function() {
|
|
||||||
var c = {
|
|
||||||
defaultRadius: 40,
|
|
||||||
defaultRenderer: "canvas2d",
|
|
||||||
defaultGradient: {
|
|
||||||
0.35: "rgb(0,0,255)",
|
|
||||||
0.45: "rgb(0,255,255)",
|
|
||||||
0.75: "rgb(0,255,0)",
|
|
||||||
0.85: "yellow",
|
|
||||||
1: "rgb(255,0,0)"
|
|
||||||
},
|
|
||||||
defaultMaxOpacity: 1,
|
|
||||||
defaultMinOpacity: 0,
|
|
||||||
defaultBlur: 0.85,
|
|
||||||
defaultXField: "x",
|
|
||||||
defaultYField: "y",
|
|
||||||
defaultValueField: "value",
|
|
||||||
plugins: {}
|
|
||||||
};
|
|
||||||
var g = (function l() {
|
|
||||||
var n = function n(o) {
|
|
||||||
this._coordinator = {};
|
|
||||||
this._data = [];
|
|
||||||
this._radi = [];
|
|
||||||
this._min = 0;
|
|
||||||
this._max = 1;
|
|
||||||
this._xField = o.xField || o.defaultXField;
|
|
||||||
this._yField = o.yField || o.defaultYField;
|
|
||||||
this._valueField = o.valueField || o.defaultValueField;
|
|
||||||
if (o.radius) {
|
|
||||||
this._cfgRadius = o.radius
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var m = c.defaultRadius;
|
|
||||||
n.prototype = {
|
|
||||||
_organiseData: function(o, q) {
|
|
||||||
var u = o[this._xField];
|
|
||||||
var s = o[this._yField];
|
|
||||||
var z = this._radi;
|
|
||||||
var w = this._data;
|
|
||||||
var t = this._max;
|
|
||||||
var p = this._min;
|
|
||||||
var v = o[this._valueField] || 1;
|
|
||||||
var r = o.radius || this._cfgRadius || m;
|
|
||||||
if (!w[u]) {
|
|
||||||
w[u] = [];
|
|
||||||
z[u] = []
|
|
||||||
}
|
|
||||||
if (!w[u][s]) {
|
|
||||||
w[u][s] = v;
|
|
||||||
z[u][s] = r
|
|
||||||
} else {
|
|
||||||
w[u][s] += v
|
|
||||||
}
|
|
||||||
if (w[u][s] > t) {
|
|
||||||
if (!q) {
|
|
||||||
this._max = w[u][s]
|
|
||||||
} else {
|
|
||||||
this.setDataMax(w[u][s])
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
} else {
|
|
||||||
return {
|
|
||||||
x: u,
|
|
||||||
y: s,
|
|
||||||
value: v,
|
|
||||||
radius: r,
|
|
||||||
min: p,
|
|
||||||
max: t
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_unOrganizeData: function() {
|
|
||||||
var r = [];
|
|
||||||
var q = this._data;
|
|
||||||
var p = this._radi;
|
|
||||||
for (var o in q) {
|
|
||||||
for (var s in q[o]) {
|
|
||||||
r.push({
|
|
||||||
x: o,
|
|
||||||
y: s,
|
|
||||||
radius: p[o][s],
|
|
||||||
value: q[o][s]
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
min: this._min,
|
|
||||||
max: this._max,
|
|
||||||
data: r
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_onExtremaChange: function() {
|
|
||||||
this._coordinator.emit("extremachange", {
|
|
||||||
min: this._min,
|
|
||||||
max: this._max
|
|
||||||
})
|
|
||||||
},
|
|
||||||
addData: function() {
|
|
||||||
if (arguments[0].length > 0) {
|
|
||||||
var p = arguments[0];
|
|
||||||
var o = p.length;
|
|
||||||
while (o--) {
|
|
||||||
this.addData.call(this, p[o])
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var q = this._organiseData(arguments[0], true);
|
|
||||||
if (q) {
|
|
||||||
this._coordinator.emit("renderpartial", {
|
|
||||||
min: this._min,
|
|
||||||
max: this._max,
|
|
||||||
data: [q]
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
setData: function(q) {
|
|
||||||
var p = q.data;
|
|
||||||
var r = p.length;
|
|
||||||
this._data = [];
|
|
||||||
this._radi = [];
|
|
||||||
for (var o = 0; o < r; o++) {
|
|
||||||
this._organiseData(p[o], false)
|
|
||||||
}
|
|
||||||
this._max = q.max;
|
|
||||||
this._min = q.min || 0;
|
|
||||||
this._onExtremaChange();
|
|
||||||
this._coordinator.emit("renderall", this._getInternalData());
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
removeData: function() {},
|
|
||||||
setDataMax: function(o) {
|
|
||||||
this._max = o;
|
|
||||||
this._onExtremaChange();
|
|
||||||
this._coordinator.emit("renderall", this._getInternalData());
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
setDataMin: function(o) {
|
|
||||||
this._min = o;
|
|
||||||
this._onExtremaChange();
|
|
||||||
this._coordinator.emit("renderall", this._getInternalData());
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
setCoordinator: function(o) {
|
|
||||||
this._coordinator = o
|
|
||||||
},
|
|
||||||
_getInternalData: function() {
|
|
||||||
return {
|
|
||||||
max: this._max,
|
|
||||||
min: this._min,
|
|
||||||
data: this._data,
|
|
||||||
radi: this._radi
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getData: function() {
|
|
||||||
return this._unOrganizeData()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return n
|
|
||||||
})();
|
|
||||||
var h = (function j() {
|
|
||||||
var p = function(q) {
|
|
||||||
var s = q.gradient || q.defaultGradient;
|
|
||||||
var v = document.createElement("canvas");
|
|
||||||
var u = v.getContext("2d");
|
|
||||||
v.width = 256;
|
|
||||||
v.height = 1;
|
|
||||||
var t = u.createLinearGradient(0, 0, 256, 1);
|
|
||||||
for (var r in s) {
|
|
||||||
t.addColorStop(r, s[r])
|
|
||||||
}
|
|
||||||
u.fillStyle = t;
|
|
||||||
u.fillRect(0, 0, 256, 1);
|
|
||||||
return u.getImageData(0, 0, 256, 1).data
|
|
||||||
};
|
|
||||||
var o = function(s, t) {
|
|
||||||
var v = document.createElement("canvas");
|
|
||||||
var r = v.getContext("2d");
|
|
||||||
var q = s;
|
|
||||||
var w = s;
|
|
||||||
v.width = v.height = s * 2;
|
|
||||||
if (t == 1) {
|
|
||||||
r.beginPath();
|
|
||||||
r.arc(q, w, s, 0, 2 * Math.PI, false);
|
|
||||||
r.fillStyle = "rgba(0,0,0,1)";
|
|
||||||
r.fill()
|
|
||||||
} else {
|
|
||||||
var u = r.createRadialGradient(q, w, s * t, q, w, s);
|
|
||||||
u.addColorStop(0, "rgba(0,0,0,1)");
|
|
||||||
u.addColorStop(1, "rgba(0,0,0,0)");
|
|
||||||
r.fillStyle = u;
|
|
||||||
r.fillRect(0, 0, 2 * s, 2 * s)
|
|
||||||
}
|
|
||||||
return v
|
|
||||||
};
|
|
||||||
var n = function(u) {
|
|
||||||
var B = [];
|
|
||||||
var t = u.min;
|
|
||||||
var x = u.max;
|
|
||||||
var C = u.radi;
|
|
||||||
var u = u.data;
|
|
||||||
var q = Object.keys(u);
|
|
||||||
var r = q.length;
|
|
||||||
while (r--) {
|
|
||||||
var s = q[r];
|
|
||||||
var y = Object.keys(u[s]);
|
|
||||||
var A = y.length;
|
|
||||||
while (A--) {
|
|
||||||
var w = y[A];
|
|
||||||
var z = u[s][w];
|
|
||||||
var v = C[s][w];
|
|
||||||
B.push({
|
|
||||||
x: s,
|
|
||||||
y: w,
|
|
||||||
value: z,
|
|
||||||
radius: v
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
min: t,
|
|
||||||
max: x,
|
|
||||||
data: B
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function m(t) {
|
|
||||||
var q = t.element;
|
|
||||||
var u = this.shadowCanvas = document.createElement("canvas");
|
|
||||||
var s = this.canvas = t.canvas || document.createElement("canvas");
|
|
||||||
var r = this._renderBoundaries = [10000, 10000, 0, 0];
|
|
||||||
var v = getComputedStyle(t.element) || {};
|
|
||||||
s.className = "heatmap-canvas";
|
|
||||||
this._width = s.width = u.width = +(v.width.replace(/px/, ""));
|
|
||||||
this._height = s.height = u.height = +(v.height.replace(/px/, ""));
|
|
||||||
this.shadowCtx = u.getContext("2d");
|
|
||||||
this.ctx = s.getContext("2d");
|
|
||||||
s.style.cssText = u.style.cssText = "position:absolute;left:0;top:0;";
|
|
||||||
q.style.position = "relative";
|
|
||||||
q.appendChild(s);
|
|
||||||
this._palette = p(t);
|
|
||||||
this._templates = {};
|
|
||||||
this._setStyles(t)
|
|
||||||
}
|
|
||||||
m.prototype = {
|
|
||||||
renderPartial: function(q) {
|
|
||||||
this._drawAlpha(q);
|
|
||||||
this._colorize()
|
|
||||||
},
|
|
||||||
renderAll: function(q) {
|
|
||||||
this._clear();
|
|
||||||
this._drawAlpha(n(q));
|
|
||||||
this._colorize()
|
|
||||||
},
|
|
||||||
_updateGradient: function(q) {
|
|
||||||
this._palette = p(q)
|
|
||||||
},
|
|
||||||
updateConfig: function(q) {
|
|
||||||
if (q.gradient) {
|
|
||||||
this._updateGradient(q)
|
|
||||||
}
|
|
||||||
this._setStyles(q)
|
|
||||||
},
|
|
||||||
setDimensions: function(r, q) {
|
|
||||||
this._width = r;
|
|
||||||
this._height = q;
|
|
||||||
this.canvas.width = this.shadowCanvas.width = r;
|
|
||||||
this.canvas.height = this.shadowCanvas.height = q
|
|
||||||
},
|
|
||||||
_clear: function() {
|
|
||||||
this.shadowCtx.clearRect(0, 0, this._width, this._height);
|
|
||||||
this.ctx.clearRect(0, 0, this._width, this._height)
|
|
||||||
},
|
|
||||||
_setStyles: function(q) {
|
|
||||||
this._blur = (q.blur == 0) ? 0 : (q.blur || q.defaultBlur);
|
|
||||||
if (q.backgroundColor) {
|
|
||||||
this.canvas.style.backgroundColor = q.backgroundColor
|
|
||||||
}
|
|
||||||
this._opacity = (q.opacity || 0) * 255;
|
|
||||||
this._maxOpacity = (q.maxOpacity || q.defaultMaxOpacity) * 255;
|
|
||||||
this._minOpacity = (q.minOpacity || q.defaultMinOpacity) * 255;
|
|
||||||
this._useGradientOpacity = !!q.useGradientOpacity
|
|
||||||
},
|
|
||||||
_drawAlpha: function(v) {
|
|
||||||
var u = this._min = v.min;
|
|
||||||
var B = this._max = v.max;
|
|
||||||
var v = v.data || [];
|
|
||||||
var s = v.length;
|
|
||||||
var t = 1 - this._blur;
|
|
||||||
while (s--) {
|
|
||||||
var F = v[s];
|
|
||||||
var D = F.x;
|
|
||||||
var A = F.y;
|
|
||||||
var z = F.radius;
|
|
||||||
var E = Math.min(F.value, B);
|
|
||||||
var r = D - z;
|
|
||||||
var q = A - z;
|
|
||||||
var C = this.shadowCtx;
|
|
||||||
var w;
|
|
||||||
if (!this._templates[z]) {
|
|
||||||
this._templates[z] = w = o(z, t)
|
|
||||||
} else {
|
|
||||||
w = this._templates[z]
|
|
||||||
}
|
|
||||||
C.globalAlpha = (E - u) / (B - u);
|
|
||||||
C.drawImage(w, r, q);
|
|
||||||
if (r < this._renderBoundaries[0]) {
|
|
||||||
this._renderBoundaries[0] = r
|
|
||||||
}
|
|
||||||
if (q < this._renderBoundaries[1]) {
|
|
||||||
this._renderBoundaries[1] = q
|
|
||||||
}
|
|
||||||
if (r + 2 * z > this._renderBoundaries[2]) {
|
|
||||||
this._renderBoundaries[2] = r + 2 * z
|
|
||||||
}
|
|
||||||
if (q + 2 * z > this._renderBoundaries[3]) {
|
|
||||||
this._renderBoundaries[3] = q + 2 * z
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_colorize: function() {
|
|
||||||
var w = this._renderBoundaries[0];
|
|
||||||
var u = this._renderBoundaries[1];
|
|
||||||
var B = this._renderBoundaries[2] - w;
|
|
||||||
var z = this._renderBoundaries[3] - u;
|
|
||||||
var G = this._width;
|
|
||||||
var A = this._height;
|
|
||||||
var r = this._opacity;
|
|
||||||
var I = this._maxOpacity;
|
|
||||||
var C = this._minOpacity;
|
|
||||||
var v = this._useGradientOpacity;
|
|
||||||
if (w < 0) {
|
|
||||||
w = 0
|
|
||||||
}
|
|
||||||
if (u < 0) {
|
|
||||||
u = 0
|
|
||||||
}
|
|
||||||
if (w + B > G) {
|
|
||||||
B = G - w
|
|
||||||
}
|
|
||||||
if (u + z > A) {
|
|
||||||
z = A - u
|
|
||||||
}
|
|
||||||
var J = this.shadowCtx.getImageData(w, u, B, z);
|
|
||||||
var H = J.data;
|
|
||||||
var E = H.length;
|
|
||||||
var F = this._palette;
|
|
||||||
for (var D = 3; D < E; D += 4) {
|
|
||||||
var s = H[D];
|
|
||||||
var t = s * 4;
|
|
||||||
if (!t) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var q;
|
|
||||||
if (r > 0) {
|
|
||||||
q = r
|
|
||||||
} else {
|
|
||||||
if (s < I) {
|
|
||||||
if (s < C) {
|
|
||||||
q = C
|
|
||||||
} else {
|
|
||||||
q = s
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
q = I
|
|
||||||
}
|
|
||||||
}
|
|
||||||
H[D - 3] = F[t];
|
|
||||||
H[D - 2] = F[t + 1];
|
|
||||||
H[D - 1] = F[t + 2];
|
|
||||||
H[D] = v ? F[t + 3] : q
|
|
||||||
}
|
|
||||||
J.data = H;
|
|
||||||
this.ctx.putImageData(J, w, u);
|
|
||||||
this._renderBoundaries = [1000, 1000, 0, 0]
|
|
||||||
},
|
|
||||||
getValueAt: function(r) {
|
|
||||||
var w;
|
|
||||||
var t = this.shadowCtx;
|
|
||||||
var s = t.getImageData(r.x, r.y, 1, 1);
|
|
||||||
var v = s.data[3];
|
|
||||||
var q = this._max;
|
|
||||||
var u = this._min;
|
|
||||||
w = (Math.abs(q - u) * (v / 255)) >> 0;
|
|
||||||
return w
|
|
||||||
},
|
|
||||||
getDataURL: function() {
|
|
||||||
return this.canvas.toDataURL()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return m
|
|
||||||
})();
|
|
||||||
var e = (function b() {
|
|
||||||
var m = false;
|
|
||||||
if (c.defaultRenderer === "canvas2d") {
|
|
||||||
m = h
|
|
||||||
}
|
|
||||||
return m
|
|
||||||
})();
|
|
||||||
var i = {
|
|
||||||
merge: function() {
|
|
||||||
var m = {};
|
|
||||||
var n = arguments.length;
|
|
||||||
for (var p = 0; p < n; p++) {
|
|
||||||
var q = arguments[p];
|
|
||||||
for (var o in q) {
|
|
||||||
m[o] = q[o]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var f = (function k() {
|
|
||||||
var m = (function o() {
|
|
||||||
function q() {
|
|
||||||
this.cStore = {}
|
|
||||||
}
|
|
||||||
q.prototype = {
|
|
||||||
on: function(s, u, r) {
|
|
||||||
var t = this.cStore;
|
|
||||||
if (!t[s]) {
|
|
||||||
t[s] = []
|
|
||||||
}
|
|
||||||
t[s].push((function(v) {
|
|
||||||
return u.call(r, v)
|
|
||||||
}))
|
|
||||||
},
|
|
||||||
emit: function(u, t) {
|
|
||||||
var w = this.cStore;
|
|
||||||
if (w[u]) {
|
|
||||||
var r = w[u].length;
|
|
||||||
for (var s = 0; s < r; s++) {
|
|
||||||
var v = w[u][s];
|
|
||||||
v(t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return q
|
|
||||||
})();
|
|
||||||
var p = function(r) {
|
|
||||||
var s = r._renderer;
|
|
||||||
var t = r._coordinator;
|
|
||||||
var q = r._store;
|
|
||||||
t.on("renderpartial", s.renderPartial, s);
|
|
||||||
t.on("renderall", s.renderAll, s);
|
|
||||||
t.on("extremachange", function(u) {
|
|
||||||
r._config.onExtremaChange && r._config.onExtremaChange({
|
|
||||||
min: u.min,
|
|
||||||
max: u.max,
|
|
||||||
gradient: r._config.gradient || r._config.defaultGradient
|
|
||||||
})
|
|
||||||
});
|
|
||||||
q.setCoordinator(t)
|
|
||||||
};
|
|
||||||
|
|
||||||
function n() {
|
|
||||||
var q = this._config = i.merge(c, arguments[0] || {});
|
|
||||||
this._coordinator = new m();
|
|
||||||
if (q.plugin) {
|
|
||||||
var s = q.plugin;
|
|
||||||
if (!c.plugins[s]) {
|
|
||||||
throw new Error("Plugin '" + s + "' not found. Maybe it was not registered.")
|
|
||||||
} else {
|
|
||||||
var r = c.plugins[s];
|
|
||||||
this._renderer = new r.renderer(q);
|
|
||||||
this._store = new r.store(q)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this._renderer = new e(q);
|
|
||||||
this._store = new g(q)
|
|
||||||
}
|
|
||||||
p(this)
|
|
||||||
}
|
|
||||||
n.prototype = {
|
|
||||||
addData: function() {
|
|
||||||
this._store.addData.apply(this._store, arguments);
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
removeData: function() {
|
|
||||||
this._store.removeData && this._store.removeData.apply(this._store, arguments);
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
setData: function() {
|
|
||||||
this._store.setData.apply(this._store, arguments);
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
setDataMax: function() {
|
|
||||||
this._store.setDataMax.apply(this._store, arguments);
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
setDataMin: function() {
|
|
||||||
this._store.setDataMin.apply(this._store, arguments);
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
configure: function(q) {
|
|
||||||
this._config = i.merge(this._config, q);
|
|
||||||
this._renderer.updateConfig(this._config);
|
|
||||||
this._coordinator.emit("renderall", this._store._getInternalData());
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
repaint: function() {
|
|
||||||
this._coordinator.emit("renderall", this._store._getInternalData());
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
getData: function() {
|
|
||||||
return this._store.getData()
|
|
||||||
},
|
|
||||||
getDataURL: function() {
|
|
||||||
return this._renderer.getDataURL()
|
|
||||||
},
|
|
||||||
getValueAt: function(q) {
|
|
||||||
if (this._store.getValueAt) {
|
|
||||||
return this._store.getValueAt(q)
|
|
||||||
} else {
|
|
||||||
if (this._renderer.getValueAt) {
|
|
||||||
return this._renderer.getValueAt(q)
|
|
||||||
} else {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return n
|
|
||||||
})();
|
|
||||||
var a = {
|
|
||||||
create: function(m) {
|
|
||||||
return new f(m)
|
|
||||||
},
|
|
||||||
register: function(n, m) {
|
|
||||||
c.plugins[n] = m
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return a
|
|
||||||
});
|
|
||||||
var BMapLib = window.BMapLib = BMapLib || {};
|
|
||||||
(function() {
|
|
||||||
var a = BMapLib.HeatmapOverlay = function(c) {
|
|
||||||
this.conf = c;
|
|
||||||
this.conf.visible = c.visible === undefined ? true : c.visible;
|
|
||||||
this.heatmap = null;
|
|
||||||
this.latlngs = [];
|
|
||||||
this.bounds = null
|
|
||||||
};
|
|
||||||
a.prototype = new BMapGL.Overlay();
|
|
||||||
a.prototype.initialize = function(f) {
|
|
||||||
this._map = f;
|
|
||||||
var c = document.createElement("div");
|
|
||||||
c.style.position = "absolute";
|
|
||||||
c.style.top = 0;
|
|
||||||
c.style.left = 0;
|
|
||||||
c.style.border = 0;
|
|
||||||
c.style.width = this._map.getSize().width + "px";
|
|
||||||
c.style.height = this._map.getSize().height + "px";
|
|
||||||
this.conf.element = c;
|
|
||||||
if (!b()) {
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
f.getPanes().floatPane.appendChild(c);
|
|
||||||
this.conf.valueField = this.conf.valueField || "count";
|
|
||||||
this.heatmap = h337.create(this.conf);
|
|
||||||
var e = this;
|
|
||||||
f.addEventListener("resize", function(h) {
|
|
||||||
var g = h.size;
|
|
||||||
c.style.width = g.width + "px";
|
|
||||||
c.style.height = g.height + "px";
|
|
||||||
e.heatmap._renderer.setDimensions(g.width, g.height);
|
|
||||||
e.draw()
|
|
||||||
});
|
|
||||||
this._div = c;
|
|
||||||
return c
|
|
||||||
};
|
|
||||||
a.prototype.draw = function() {
|
|
||||||
if (!b()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var k = this._map.getBounds();
|
|
||||||
if (k.equals(this.bounds)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.bounds = k;
|
|
||||||
var j = this._map.pointToOverlayPixel(k.getNorthEast()),
|
|
||||||
p = this._map.pointToOverlayPixel(k.getSouthWest()),
|
|
||||||
c = j.y,
|
|
||||||
i = p.x,
|
|
||||||
l = p.y - j.y,
|
|
||||||
o = j.x - p.x;
|
|
||||||
this.conf.element.style.left = i + "px";
|
|
||||||
this.conf.element.style.top = c + "px";
|
|
||||||
this.conf.element.style.width = o + "px";
|
|
||||||
this.conf.element.style.height = l + "px";
|
|
||||||
if (this.latlngs.length > 0) {
|
|
||||||
this.heatmap.removeData();
|
|
||||||
var n = this.latlngs.length;
|
|
||||||
d = {
|
|
||||||
max: this.heatmap._store.getData().max,
|
|
||||||
data: []
|
|
||||||
};
|
|
||||||
while (n--) {
|
|
||||||
var f = this.latlngs[n].latlng;
|
|
||||||
if (!k.containsPoint(f)) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var g = this._map.pointToOverlayPixel(f),
|
|
||||||
i = this._map.pointToOverlayPixel(k.getSouthWest()).x,
|
|
||||||
c = this._map.pointToOverlayPixel(k.getNorthEast()).y,
|
|
||||||
e = new BMapGL.Pixel(g.x - i, g.y - c);
|
|
||||||
var m = this.pixelTransform(e);
|
|
||||||
d.data.push({
|
|
||||||
x: m.x,
|
|
||||||
y: m.y,
|
|
||||||
count: this.latlngs[n].c
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (this.conf.radiusChangeByZoom) {
|
|
||||||
this.heatmap._store._cfgRadius = this.conf.radiusChangeByZoom(this._map.getZoom())
|
|
||||||
}
|
|
||||||
this.heatmap.setData(d)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
a.prototype.pixelTransform = function(f) {
|
|
||||||
var c = this.heatmap.width,
|
|
||||||
e = this.heatmap.height;
|
|
||||||
while (f.x < 0) {
|
|
||||||
f.x += c
|
|
||||||
}
|
|
||||||
while (f.x > c) {
|
|
||||||
f.x -= c
|
|
||||||
}
|
|
||||||
while (f.y < 0) {
|
|
||||||
f.y += e
|
|
||||||
}
|
|
||||||
while (f.y > e) {
|
|
||||||
f.y -= e
|
|
||||||
}
|
|
||||||
f.x = (f.x >> 0);
|
|
||||||
f.y = (f.y >> 0);
|
|
||||||
return f
|
|
||||||
};
|
|
||||||
a.prototype.setDataSet = function(j) {
|
|
||||||
this.data = j;
|
|
||||||
if (!b()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var i = this._map.getBounds();
|
|
||||||
var l = {
|
|
||||||
max: j.max,
|
|
||||||
data: []
|
|
||||||
};
|
|
||||||
var m = j.data,
|
|
||||||
k = m.length;
|
|
||||||
this.latlngs = [];
|
|
||||||
this.heatmap.removeData();
|
|
||||||
if (this.conf.radiusChangeByZoom) {
|
|
||||||
this.heatmap._store._cfgRadius = this.conf.radiusChangeByZoom(this._map.getZoom())
|
|
||||||
}
|
|
||||||
while (k--) {
|
|
||||||
var f = new BMapGL.Point(m[k].lng, m[k].lat);
|
|
||||||
this.latlngs.push({
|
|
||||||
latlng: f,
|
|
||||||
c: m[k].count
|
|
||||||
});
|
|
||||||
if (!i.containsPoint(f)) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var g = this._map.pointToOverlayPixel(f),
|
|
||||||
h = this._map.pointToOverlayPixel(i.getSouthWest()).x,
|
|
||||||
c = this._map.pointToOverlayPixel(i.getNorthEast()).y,
|
|
||||||
e = new BMapGL.Pixel(g.x - h, g.y - c);
|
|
||||||
var n = this.pixelTransform(e);
|
|
||||||
l.data.push({
|
|
||||||
x: n.x,
|
|
||||||
y: n.y,
|
|
||||||
count: m[k].count
|
|
||||||
})
|
|
||||||
}
|
|
||||||
this.heatmap.setData(l)
|
|
||||||
};
|
|
||||||
a.prototype.addDataPoint = function(e, g, f) {
|
|
||||||
if (!b()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (this.data && this.data.data) {
|
|
||||||
this.data.data.push({
|
|
||||||
lng: e,
|
|
||||||
lat: g,
|
|
||||||
count: f
|
|
||||||
})
|
|
||||||
}
|
|
||||||
var h = new BMapGL.Point(e, g),
|
|
||||||
c = this.pixelTransform(this._map.pointToOverlayPixel(h));
|
|
||||||
this.heatmap.store.addDataPoint(c.x, c.y, f);
|
|
||||||
this.latlngs.push({
|
|
||||||
latlng: h,
|
|
||||||
c: f
|
|
||||||
})
|
|
||||||
};
|
|
||||||
a.prototype.toggle = function() {
|
|
||||||
if (!b()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (this.conf.visible === true) {
|
|
||||||
this.conf.visible = false
|
|
||||||
} else {
|
|
||||||
this.conf.visible = true
|
|
||||||
}
|
|
||||||
if (this.conf.visible) {
|
|
||||||
this.conf.element.style.display = "block"
|
|
||||||
} else {
|
|
||||||
this.conf.element.style.display = "none"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
a.prototype.setOptions = function(c) {
|
|
||||||
if (!b()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for (var e in c) {
|
|
||||||
if (e == "radius") {
|
|
||||||
this.heatmap._store._cfgRadius = c[e]
|
|
||||||
}
|
|
||||||
if (e == "opacity") {
|
|
||||||
c[e] = c[e] / 100
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.heatmap.configure(c);
|
|
||||||
if (this.data) {
|
|
||||||
this.setDataSet(this.data)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function b() {
|
|
||||||
var c = document.createElement("canvas");
|
|
||||||
return !!(c.getContext && c.getContext("2d"))
|
|
||||||
}
|
|
||||||
})();
|
|
BIN
ylth/favicon.ico
BIN
ylth/favicon.ico
Binary file not shown.
Before Width: | Height: | Size: 9.4 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei10240-10495
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei10496-10751
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei10752-11007
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei11008-11263
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei11264-11519
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei11520-11775
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei 1280-1535
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei 1536-1791
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei 1792-2047
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
Microsoft YaHei 2048-2303
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user