Compare commits
7 Commits
477b1c3b22
...
main
Author | SHA1 | Date | |
---|---|---|---|
210f9cc44e | |||
3c9d244817 | |||
a2b8cd74e9 | |||
ad1b52a960 | |||
30d5a663ef | |||
1b567a8e75 | |||
e54185f48b |
136
package-lock.json
generated
136
package-lock.json
generated
@ -2043,51 +2043,6 @@
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"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": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
|
||||
@ -2096,28 +2051,6 @@
|
||||
"requires": {
|
||||
"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": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
|
||||
|
@ -157,7 +157,7 @@ export const jczdeleteList = (id) => {
|
||||
return request({
|
||||
// url: api + "/tbQwXfll/deleteList",
|
||||
url: api + `/tbQwXfll/delXfll/${id}`,
|
||||
method: "post"
|
||||
method: "delete"
|
||||
});
|
||||
};
|
||||
/*
|
||||
@ -306,7 +306,7 @@ export const Ttbgetupdate = (data) => {
|
||||
// 新增人员、车辆布控
|
||||
export const BkrwinsertEntity = (data) => {
|
||||
return request({
|
||||
url: api + `/jczBkrw/insertEntity`,
|
||||
url: api + `/jczBkry/insertEntity`,
|
||||
method: "POST",
|
||||
data
|
||||
});
|
||||
@ -314,7 +314,7 @@ export const BkrwinsertEntity = (data) => {
|
||||
// 查询人员、车辆布控
|
||||
export const BkrwselectPage = (params) => {
|
||||
return request({
|
||||
url: api + `/jczBkrw/selectPage`,
|
||||
url: api + `/jczBkry/selectPage`,
|
||||
method: "get",
|
||||
params
|
||||
});
|
||||
@ -322,19 +322,55 @@ export const BkrwselectPage = (params) => {
|
||||
// 修改查询人员、车辆布控
|
||||
export const BkrweditEntity = (data) => {
|
||||
return request({
|
||||
url: api + `/jczBkrw/editEntity`,
|
||||
url: api + `/jczBkry/editEntity`,
|
||||
method: "post",
|
||||
data
|
||||
});
|
||||
};
|
||||
// 删除查询人员、车辆布控
|
||||
export const BkrwdeleteById = (data) => {
|
||||
export const BkrwdeleteById = (id) => {
|
||||
return request({
|
||||
url: api + `/jczBkrw/deleteById`,
|
||||
url: api + `/jczBkry/deleteById/${id}`,
|
||||
method: "delete",
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export const jczBkclInsertEntity = (data) => {
|
||||
return request({
|
||||
url: api + `/jczBkcl/insertEntity`,
|
||||
method: "POST",
|
||||
data
|
||||
});
|
||||
};
|
||||
// 查询人员、车辆布控
|
||||
export const jczBkclSelectPage = (params) => {
|
||||
return request({
|
||||
url: api + `/jczBkcl/selectPage`,
|
||||
method: "get",
|
||||
params
|
||||
});
|
||||
};
|
||||
// 修改查询人员、车辆布控
|
||||
export const jczBkclEntity = (data) => {
|
||||
return request({
|
||||
url: api + `/jczBkcl/editEntity`,
|
||||
method: "post",
|
||||
data
|
||||
});
|
||||
};
|
||||
// 删除查询人员、车辆布控
|
||||
export const jczBkclDeleteById = (id) => {
|
||||
return request({
|
||||
url: api + `/jczBkcl/deleteById/${id}`,
|
||||
method: "delete",
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
// 检查站
|
||||
|
||||
// 查询检查站
|
||||
@ -368,6 +404,18 @@ export const JczdeleteById = (id) => {
|
||||
method: "delete"
|
||||
});
|
||||
};
|
||||
|
||||
// 检查站详情
|
||||
export const JczselectById = (params) => {
|
||||
return request({
|
||||
url: api + `/jcz/selectById`,
|
||||
method: "get",
|
||||
params
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
//盘查管理
|
||||
// 人
|
||||
export const BpcryselectCrewList = (params) => {
|
||||
@ -402,11 +450,11 @@ export const GjrytxeditEntity = (data) => {
|
||||
});
|
||||
};
|
||||
// 查询过检人员图像
|
||||
export const GjrytxselectPage = (data) => {
|
||||
export const GjrytxselectPage = (params) => {
|
||||
return request({
|
||||
url: api + `/jczGjrytx/selectPage`,
|
||||
method: "get",
|
||||
data
|
||||
params
|
||||
});
|
||||
};
|
||||
// 删除过检人员图像
|
||||
@ -634,3 +682,35 @@ export const tbJczXfbbdeleteJyQxzb = (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
|
||||
export const unifiedLogin = (data) => {
|
||||
return request({
|
||||
url: api + `/unifiedLogin`,
|
||||
url: api + `/ssoLogin`,
|
||||
method: "POST",
|
||||
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 {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.absolute {
|
||||
position: absolute;
|
||||
}
|
||||
@ -159,9 +160,11 @@
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-grow1 {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.shrink0 {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
@ -169,6 +172,7 @@
|
||||
.flex-warp {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.flex-nowrap {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
@ -180,6 +184,7 @@
|
||||
.just-between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.just-around {
|
||||
justify-content: space-around;
|
||||
}
|
||||
@ -207,11 +212,13 @@
|
||||
.align-bottom {
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.flexcc {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.flexcb {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@ -317,11 +324,11 @@
|
||||
}
|
||||
|
||||
.ww#{$i} {
|
||||
width: #{$i}+ "%";
|
||||
width: #{$i}+"%";
|
||||
}
|
||||
|
||||
.hh#{$i} {
|
||||
height: #{$i}+ "%";
|
||||
height: #{$i}+"%";
|
||||
}
|
||||
|
||||
//高度
|
||||
@ -333,26 +340,32 @@
|
||||
.lh#{$i} {
|
||||
line-height: #{$i}px;
|
||||
}
|
||||
|
||||
//自适应大号字体(通常为统计数字 18-30)
|
||||
.font_size_big {
|
||||
font-size: clamp(1.125rem, -0.894rem + 2.31vw, 1.875rem);
|
||||
}
|
||||
|
||||
//自适应一号字体(通常为一级标题 14-18)
|
||||
.font_size_title {
|
||||
font-size: clamp(0.875rem, 0.37rem + 0.58vw, 1.063rem);
|
||||
}
|
||||
|
||||
//自适应统计字体(通常为统计数字 14-22)
|
||||
.font_size1 {
|
||||
font-size: clamp(0.875rem, -0.471rem + 1.54vw, 1.375rem);
|
||||
}
|
||||
|
||||
//自适应二号字体(通常为二级标题 14-16)
|
||||
.font_size2 {
|
||||
font-size: clamp(0.75rem, 0.077rem + 0.77vw, 1rem);
|
||||
}
|
||||
|
||||
//自适应普通字体(通常为默认大小 10-14)
|
||||
.font_size_default {
|
||||
font-size: clamp(0.625rem, -0.048rem + 0.77vw, 0.875rem);
|
||||
}
|
||||
|
||||
.flex#{$i} {
|
||||
flex: #{$i};
|
||||
}
|
||||
@ -364,9 +377,29 @@
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "HANYILINGXINTIJIAN";
|
||||
src: url("~@/assets/font/HANYILINGXINTIJIAN-1.TTF");
|
||||
font-weight: 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>
|
||||
<div :id="mapid" class="map"></div>
|
||||
<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-item>
|
||||
<div class="mapImageItem">
|
||||
@ -74,7 +75,7 @@ const props = defineProps({
|
||||
});
|
||||
try {
|
||||
const userInfo = getItem("deptId")[0].deptCode;
|
||||
} catch (error) {}
|
||||
} catch (error) { }
|
||||
let map;
|
||||
let mapLayer;
|
||||
let mapLayer1;
|
||||
@ -88,27 +89,32 @@ onMounted(() => {
|
||||
|
||||
map = new EliMap({
|
||||
id: props.mapid,
|
||||
crs: "EPSG:3857",
|
||||
crs: "EPSG:4490",
|
||||
style: {
|
||||
glyphs: "./fonts/{fontstack}/{range}.pbf",
|
||||
center: [94.36,29.65],
|
||||
zoom: 10
|
||||
center: [94.36057012, 29.64276831],
|
||||
zoom: 15
|
||||
},
|
||||
transformRequest: (url) => {
|
||||
if (url.indexOf("TileMatrix=") != -1) {
|
||||
const arr = url.split("TileMatrix=");
|
||||
const arr1 = arr[1].split("&");
|
||||
const nurl = `${arr[0]}&TileMatrix=${Number(arr1[0])}&${arr1[1]}&${arr1[2]}`;
|
||||
|
||||
}
|
||||
}
|
||||
minZoom: 7,
|
||||
maxZoom: 18,
|
||||
});
|
||||
|
||||
window.map = map;
|
||||
map.mapboxGLMap.on("load", () => {
|
||||
map.addGaudLayer({
|
||||
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
|
||||
})
|
||||
map.addWMTSLayer(
|
||||
"/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();
|
||||
});
|
||||
mapUtil.value = new MapUtil(map);
|
||||
@ -128,8 +134,6 @@ onMounted(() => {
|
||||
});
|
||||
// 撒点
|
||||
emitter.on("addPointArea", (obj) => {
|
||||
console.log(obj);
|
||||
|
||||
mapUtil.value.makerSki(obj);
|
||||
});
|
||||
// 鼠标滑过提示文字的点位
|
||||
@ -168,7 +172,7 @@ onMounted(() => {
|
||||
});
|
||||
// 回显线
|
||||
emitter.on("echoLine", (res) => {
|
||||
mapUtil.value.createLine(res);
|
||||
mapUtil.value.createLine(res, res.flag);
|
||||
});
|
||||
//创建边界面(geojson)
|
||||
emitter.on("setBoundarys", (res) => {
|
||||
@ -199,11 +203,6 @@ onMounted(() => {
|
||||
mapUtil.value.diffusionCircle(res);
|
||||
});
|
||||
|
||||
// 清除全部覆盖物
|
||||
emitter.on("removeElementAll", () => {
|
||||
mapUtil.value.removeElementAll();
|
||||
});
|
||||
|
||||
// 展示盘曲
|
||||
emitter.on("showGapText", (obj) => {
|
||||
mapUtil.value.gapText(obj);
|
||||
@ -302,7 +301,6 @@ onUnmounted(() => {
|
||||
emitter.off("diffusionCircle");
|
||||
emitter.off("SsCircle");
|
||||
emitter.off("ClearssCircle");
|
||||
emitter.off("removeElementAll");
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -325,29 +323,35 @@ onUnmounted(() => {
|
||||
right: 398px;
|
||||
bottom: 4px;
|
||||
z-index: 9;
|
||||
|
||||
.mapImageItem {
|
||||
border: 1px solid #08aae8;
|
||||
background: rgb(9, 26, 70);
|
||||
& > img {
|
||||
|
||||
&>img {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
}
|
||||
& > div {
|
||||
|
||||
&>div {
|
||||
text-align: center;
|
||||
position: relative;
|
||||
top: -3px;
|
||||
}
|
||||
}
|
||||
|
||||
.zoomTargetBox {
|
||||
margin-top: 10px;
|
||||
margin-left: 23px;
|
||||
}
|
||||
|
||||
::v-deep .el-input-number__decrease,
|
||||
::v-deep .el-input-number__increase {
|
||||
background: #133362;
|
||||
color: #fff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
::v-deep .el-input__inner {
|
||||
background: #0c1641;
|
||||
}
|
||||
|
@ -101,8 +101,7 @@ onMounted(() => {
|
||||
window.map = map;
|
||||
map.mapboxGLMap.on("load", () => {
|
||||
map.addWMTSLayer(
|
||||
"http://89.0.23.24/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap"
|
||||
,
|
||||
"/PGIS_S_TileMapServer/Maps/XZDJ_SL/EzMap",
|
||||
{
|
||||
Service: "getImage",
|
||||
Type: "RGB",
|
@ -1,39 +1,26 @@
|
||||
<template>
|
||||
<!-- :class="{show:listImg.length==limit}" -->
|
||||
<div class="form-item-box" :style="{ width: width }">
|
||||
<el-upload
|
||||
v-bind="$attrs"
|
||||
:headers="headers"
|
||||
:multiple="false"
|
||||
:disabled="disableds"
|
||||
class="avatar-uploader"
|
||||
:limit="props.limit"
|
||||
:action="actionUrl"
|
||||
list-type="picture-card"
|
||||
:file-list="fileList"
|
||||
show-file-list
|
||||
:on-exceed="handleExceed"
|
||||
:on-success="handlerSuccess"
|
||||
:before-upload="beforeImgUpload"
|
||||
>
|
||||
<template #default v-if="props.limit>=fileList.length">
|
||||
<el-icon> <Plus /> </el-icon>
|
||||
<el-upload :class="{ 'hide-upload': fileList.length == limit }" v-bind="$attrs" :headers="headers" :multiple="false"
|
||||
:disabled="disableds" class="avatar-uploader" :limit="props.limit" :action="actionUrl" list-type="picture-card"
|
||||
:file-list="fileList" show-file-list :on-exceed="handleExceed" :on-success="handlerSuccess"
|
||||
:before-upload="beforeImgUpload">
|
||||
<template #default>
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</template>
|
||||
<template #file="{ file }">
|
||||
<div v-if="props.isImg">
|
||||
<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
||||
<span class="el-upload-list__item-actions">
|
||||
<span
|
||||
class="el-upload-list__item-preview"
|
||||
@click="handlePictureCardPreview(file)"
|
||||
>
|
||||
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
|
||||
<el-icon> <zoom-in /> </el-icon>
|
||||
</span>
|
||||
<span
|
||||
v-if="!disabled"
|
||||
class="el-upload-list__item-delete"
|
||||
@click="handleRemove(file, fileList)"
|
||||
>
|
||||
<el-icon><Delete /></el-icon>
|
||||
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file, fileList)">
|
||||
<el-icon>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
@ -43,19 +30,15 @@
|
||||
<span class="file-name">{{ file.name }}</span>
|
||||
</div>
|
||||
<span class="el-upload-list__item-actions">
|
||||
<span
|
||||
v-if="!disabled"
|
||||
class="el-upload-list__item-delete"
|
||||
@click="handleDownload(file)"
|
||||
>
|
||||
<el-icon> <Download /> </el-icon>
|
||||
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
|
||||
<el-icon>
|
||||
<Download />
|
||||
</el-icon>
|
||||
</span>
|
||||
<span
|
||||
v-if="!disabled"
|
||||
class="el-upload-list__item-delete"
|
||||
@click="handleRemove(file, fileList)"
|
||||
>
|
||||
<el-icon> <Delete /> </el-icon>
|
||||
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file, fileList)">
|
||||
<el-icon>
|
||||
<Delete />
|
||||
</el-icon>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
@ -181,13 +164,19 @@ const headers = ref({
|
||||
});
|
||||
const listImg = ref([]);
|
||||
onMounted(() => {
|
||||
console.log(props.modelValue);
|
||||
|
||||
if (props.modelValue) {
|
||||
if (props.modelValue&&props.modelValue.length>0) {
|
||||
if (Array.isArray(props.modelValue)) {
|
||||
listImg.value = props.modelValue;
|
||||
fileList.value = props.modelValue.map((el) => {
|
||||
return { url: `/mosty-api/mosty-base/minio/image/download/` + el };
|
||||
});
|
||||
} else {
|
||||
listImg.value = props.modelValue.split(",");
|
||||
fileList.value = props.modelValue.split(",").map((el) => {
|
||||
return { url: `/mosty-api/mosty-base/minio/image/download/` + el };
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
listImg.value = [];
|
||||
fileList.value = [];
|
||||
@ -199,10 +188,10 @@ const handlerSuccess = (res, file) => {
|
||||
file.url = `/mosty-api/mosty-base/minio/image/download/` + res.data;
|
||||
fileList.value.push(file);
|
||||
listImg.value.push(res.data);
|
||||
emits("handleChange", listImg.value);
|
||||
emits("update:modelValue", listImg.value);
|
||||
emits("handleChange", listImg.value.toString());
|
||||
emits("update:modelValue", listImg.value.toString());
|
||||
};
|
||||
const handlePreview = (file) => {};
|
||||
const handlePreview = (file) => { };
|
||||
const handleExceed = (files, fileList) => {
|
||||
ElMessage.warning(`限制,只能上传${props.limit}个文件或图片`);
|
||||
};
|
||||
@ -242,14 +231,18 @@ const handleRemove = (file) => {
|
||||
});
|
||||
fileList.value.splice(index, 1);
|
||||
listImg.value.splice(index, 1);
|
||||
emits("handleChange", listImg.value);
|
||||
emits("update:modelValue", listImg.value);
|
||||
emits("handleChange", listImg.value.toString());
|
||||
emits("update:modelValue", listImg.value.toString());
|
||||
};
|
||||
onUnmounted(() => {
|
||||
listImg.value = [];
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.hide-upload .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
.avatar-uploader .el-upload {
|
||||
border: 1px dashed #d9d9d9;
|
||||
|
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="work">单位:{{ deptName }}</div>
|
||||
</div>
|
||||
<el-dropdown :hide-on-click="false">
|
||||
<!-- <el-dropdown :hide-on-click="false">
|
||||
<span class="el-dropdown-link">
|
||||
<el-icon :size="20" color="#fff"> <CaretBottom /> </el-icon>
|
||||
</span>
|
||||
@ -17,7 +17,7 @@
|
||||
<el-dropdown-item command="logout">退出登录</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</el-dropdown> -->
|
||||
</div>
|
||||
<div @click="goToHome">
|
||||
<img src="@/assets/images/meun.png" />
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dropdown class="avatar-container" trigger="click">
|
||||
<!-- <el-dropdown class="avatar-container" trigger="click">
|
||||
<div class="avatar-wrapper">
|
||||
<el-avatar
|
||||
shape="circle"
|
||||
@ -12,7 +12,7 @@
|
||||
<el-dropdown-item divided @click="logout()">退出登录</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</el-dropdown> -->
|
||||
<UpdatePwdDialog v-model="UpdatePwdVisible"></UpdatePwdDialog>
|
||||
</template>
|
||||
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
removeAllItem
|
||||
} from "@/utils/storage";
|
||||
// 白名单
|
||||
const whiteList = ['/login','/','/StationLevel', '/oatuh_login','/editPassword', '/404', '/401']
|
||||
const whiteList = ['/login','/oatuh_login','/','/StationLevel','/editPassword', '/404', '/401']
|
||||
/**
|
||||
* 路由前置守卫
|
||||
* to 去哪里
|
||||
@ -14,42 +14,45 @@ const whiteList = ['/login','/','/StationLevel', '/oatuh_login','/editPassword',
|
||||
* next 往下走
|
||||
*/
|
||||
let onRun = true;
|
||||
// router.beforeEach(async (to, from, next) => {
|
||||
// // 存在 token ,进入主页
|
||||
// // if (store.state.user.token) {
|
||||
// // 快捷访问
|
||||
// if (store.getters.token) {
|
||||
// // 判断用户资料是否获取
|
||||
// // 若不存在用户信息,则需要获取用户信息
|
||||
// // 触发获取用户信息的 action,并获取用户当前权限
|
||||
// await store.commit('permission/setRouteReady', true)
|
||||
// // 添加完动态路由之后,需要在进行一次主动跳转
|
||||
// const afterMenuList = await getItem('menusPermission');
|
||||
// // 处理用户权限,筛选出需要添加的权限
|
||||
// if (store.state.permission.routes == 0) {
|
||||
// const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
|
||||
// filterRoutes.forEach(item => {
|
||||
// router.addRoute(item)
|
||||
// })
|
||||
// next({
|
||||
// ...to,
|
||||
// replace: true
|
||||
// })
|
||||
// } else {
|
||||
// next()
|
||||
// }
|
||||
// // 利用 addRoute 循环添加
|
||||
// } else {
|
||||
// const isOatuh = getItem('isOatuh')
|
||||
// // 没有token的情况下,可以进入白名单
|
||||
// if (whiteList.indexOf(to.path) > -1) {
|
||||
// next()
|
||||
// } else {
|
||||
// if (isOatuh) {
|
||||
// next('/oatuh_login')
|
||||
// } else {
|
||||
// next('/login')
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
// 存在 token ,进入主页
|
||||
console.log(store.getters.token,'===store.getters.token');
|
||||
|
||||
// if (store.state.user.token) {
|
||||
// 快捷访问
|
||||
if (store.getters.token) {
|
||||
// 判断用户资料是否获取
|
||||
// 若不存在用户信息,则需要获取用户信息
|
||||
// 触发获取用户信息的 action,并获取用户当前权限
|
||||
await store.commit('permission/setRouteReady', true)
|
||||
// 添加完动态路由之后,需要在进行一次主动跳转
|
||||
const afterMenuList = await getItem('menusPermission');
|
||||
// 处理用户权限,筛选出需要添加的权限
|
||||
if (store.state.permission.routes == 0) {
|
||||
const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
|
||||
filterRoutes.forEach(item => {
|
||||
router.addRoute(item)
|
||||
})
|
||||
next({
|
||||
...to,
|
||||
replace: true
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
// 利用 addRoute 循环添加
|
||||
} else {
|
||||
const isOatuh = getItem('isOatuh')
|
||||
// 没有token的情况下,可以进入白名单
|
||||
if (whiteList.indexOf(to.path) > -1) {
|
||||
next()
|
||||
} else {
|
||||
next('/oatuh_login')
|
||||
// if (isOatuh) {
|
||||
// next('/oatuh_login')
|
||||
// } else {
|
||||
// next('/login')
|
||||
// }
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -21,6 +21,11 @@ export const privateRoutes = [];
|
||||
* 公开路由表
|
||||
*/
|
||||
export const publicRoutes = [
|
||||
{
|
||||
path: "/oatuh_login",
|
||||
name: "oatuh_login",
|
||||
component: () => import("@/views/login/oatuh_login")
|
||||
},
|
||||
{
|
||||
path: "/login",
|
||||
name: "login",
|
||||
@ -353,7 +358,7 @@ export const publicRoutes = [
|
||||
"@/views/backOfficeSystem/peopleManag/InspectedVehicle/index"
|
||||
),
|
||||
meta: {
|
||||
title: "过检车辆图管理",
|
||||
title: "过检车辆管理",
|
||||
icon: "article"
|
||||
}
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ export default {
|
||||
systemId,
|
||||
})
|
||||
.then((data) => {
|
||||
|
||||
debugger
|
||||
if (data.deptList.length === 1) {
|
||||
this.commit("user/setToken", data.jwtToken);
|
||||
this.commit("user/setDeptId", data.deptList);
|
||||
@ -240,7 +240,7 @@ export default {
|
||||
removeAllItem();
|
||||
// 待补充 清理权限相关的配置
|
||||
if (isOatuh) {
|
||||
window.location.href = `http://80.149.27.78:8001/login`;
|
||||
window.location.href = `http://155.240.22.188:9020`;
|
||||
} else {
|
||||
router.push("/login");
|
||||
}
|
||||
|
@ -38,7 +38,6 @@ service.interceptors.response.use(
|
||||
// 请求成功的处理
|
||||
(response) => {
|
||||
const { success, code, msg, message, data } = response.data;
|
||||
console.log("data", code, response.data);
|
||||
// 需要判断当前请求是否成功
|
||||
if (success && code === 10000) {
|
||||
return data; // 成功后返回解析后的数据
|
||||
|
@ -48,6 +48,19 @@
|
||||
车牌号:{{ item.cph }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="line mt6 mb6"></div>
|
||||
<div class="warning-card">
|
||||
<div class="title flex align-center">
|
||||
<img src="@/assets/images/icon_06.png" alt="" /> 智能设备
|
||||
</div>
|
||||
<div
|
||||
class="cardItem"
|
||||
v-for="(item, index) in warningList.sbList"
|
||||
:key="index"
|
||||
>
|
||||
名称:{{ item.sbmc }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Empty :show="warningList == null && show == 2" />
|
||||
<div class="warning-list" v-if="show == 1 && warningList">
|
||||
@ -74,12 +87,16 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { onMounted, ref } from "vue";
|
||||
import Empty from "@/components/MyComponents/Empty/index.vue";
|
||||
import { jczqueryById } from "@/api/mosty-jcz";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
const warningList = ref({ qxList: [], ryList: [], clList: [] });
|
||||
|
||||
let warningList = ref({ qxList: [], ryList: [], clList: [] ,sbList:[]});
|
||||
onMounted(() => {
|
||||
emitter.on("getjczqueryById", (res) => {
|
||||
warningListValue(res)
|
||||
})
|
||||
});
|
||||
const show = ref(1);
|
||||
const props = defineProps({
|
||||
jczId: {
|
||||
@ -94,18 +111,23 @@ const showchenge = (val) => {
|
||||
|
||||
const getjczqueryById = () => {
|
||||
jczqueryById({ jczid: props.jczId }).then((res) => {
|
||||
warningListValue(res)
|
||||
});
|
||||
};
|
||||
const warningListValue = (res) => {
|
||||
if (res) {
|
||||
emitter.emit("chengZ", res);
|
||||
warningList.value.qxList = res.qxList
|
||||
warningList.value={}
|
||||
warningList.value.qxList =res.qxList&&res.qxList.length>0
|
||||
? res.qxList.filter((item) => item.qxsl > 0)
|
||||
: [];
|
||||
warningList.value.ryList = res.ryList ? res.ryList : [];
|
||||
warningList.value.clList = res.clList ? res.clList : [];
|
||||
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;
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
getjczqueryById();
|
||||
</script>
|
||||
|
||||
@ -226,4 +248,5 @@ getjczqueryById();
|
||||
font-size: 12px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -1,49 +1,64 @@
|
||||
<template>
|
||||
<div class="image-carousel">
|
||||
<div class="control-button prev" @click="prevImage">
|
||||
<img src="@/assets/images/icon_08.png" alt="">
|
||||
<el-carousel style="height: 100%;" motion-blur indicator-position="none" @change="handleCarouselChange"
|
||||
:autoplay="false">
|
||||
<el-carousel-item v-for="(item, index) in listSxt" :key="index">
|
||||
<div class="video-grid" v-if="activeIndex == index">
|
||||
<div v-for="(items,indexs) in item" :key="indexs" class="video-cell">
|
||||
<div class="iconFont" @click.stop="showchenge(items)">
|
||||
<el-icon :size="20"><UploadFilled /></el-icon>
|
||||
</div>
|
||||
<div class="carousel-container">
|
||||
<div class="hh100" :style="{transform: `translateX(-${currentIndex * 100}%)`}">
|
||||
<ul class="image-wrapper" style="margin-bottom:1%;">
|
||||
<li v-for="(image, index) in images" :key="index" class="image-item">
|
||||
<img :src="image" alt="carousel image">
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="image-wrapper">
|
||||
<li v-for="(image, index) in images" :key="index" class="image-item">
|
||||
<img :src="image" alt="carousel image">
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="control-button next" @click="nextImage">
|
||||
<img src="@/assets/images/icon_07.png" alt="">
|
||||
<WsIframe :sbbh="items.sbbh" />
|
||||
</div>
|
||||
</div>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
currentIndex: 0,
|
||||
images: [
|
||||
require('@/assets/images/person.png'),
|
||||
require('@/assets/images/person.png'),
|
||||
require('@/assets/images/person.png'),
|
||||
require('@/assets/images/person.png')
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
prevImage() {
|
||||
this.currentIndex = this.currentIndex > 0 ? this.currentIndex - 1 : this.images.length - 1
|
||||
},
|
||||
nextImage() {
|
||||
this.currentIndex = this.currentIndex < this.images.length - 1 ? this.currentIndex + 1 : 0
|
||||
<script setup>
|
||||
import { ref, watch, computed, onMounted, onUnmounted, reactive,nextTick } from 'vue'
|
||||
import WsIframe from '@/components/wsIframe/index.vue'
|
||||
import { useRoute } from "vue-router"
|
||||
import { sxtGetList } from '@/api/mosty-jcz.js'
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
const activeIndex = ref(0)
|
||||
const cdList=ref([])
|
||||
const listSxt=ref([1])
|
||||
const handleCarouselChange = (index) => {
|
||||
activeIndex.value = index
|
||||
}
|
||||
|
||||
const getSxtGetList = (id) => {
|
||||
const jczid = {
|
||||
jczid: id
|
||||
}
|
||||
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>
|
||||
|
||||
@ -54,6 +69,7 @@ export default {
|
||||
position: relative;
|
||||
padding: 30px 20px;
|
||||
box-sizing: border-box;
|
||||
|
||||
.carousel-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@ -71,6 +87,7 @@ export default {
|
||||
width: 24%;
|
||||
margin: 0 1%;
|
||||
height: 100%;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@ -86,12 +103,58 @@ export default {
|
||||
transition: all 0.3s;
|
||||
color: #fff;
|
||||
z-index: 1;
|
||||
|
||||
&.prev {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
&.next {
|
||||
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>
|
@ -1,53 +1,35 @@
|
||||
<template>
|
||||
<div class="video-more-container">
|
||||
<div class="switch-btn prev" @click="handlePrev">
|
||||
<img src="@/assets/images/icon_08.png" alt="">
|
||||
</div>
|
||||
<div class="video-grid">
|
||||
<div v-for="index in 4" :key="index" class="video-cell">
|
||||
<div class="video-wrapper">
|
||||
<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>
|
||||
<el-carousel style="height: 100%;" motion-blur indicator-position="none" :autoplay="false"
|
||||
@change="handleCarouselChange">
|
||||
<el-carousel-item v-for="(item,index) in sbList" :key="index" >
|
||||
<div class="video-grid" v-if="activeIndex==index">
|
||||
<div v-for="(items,indexs) in item" :key="indexs" class="video-cell">
|
||||
<WsIframe :sbbh="items.sbbh" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="switch-btn next" @click="handleNext">
|
||||
<img src="@/assets/images/icon_07.png" alt="">
|
||||
</div>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'VideoMore',
|
||||
data() {
|
||||
return {
|
||||
currentPage: 1,
|
||||
totalPages: 3
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handlePrev() {
|
||||
if (this.currentPage > 1) {
|
||||
this.currentPage--
|
||||
}
|
||||
},
|
||||
handleNext() {
|
||||
if (this.currentPage < this.totalPages) {
|
||||
this.currentPage++
|
||||
}
|
||||
}
|
||||
}
|
||||
<script setup>
|
||||
import { ref ,onMounted} from 'vue'
|
||||
import WsIframe from '@/components/wsIframe/index.vue'
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
const activeIndex = ref(0)
|
||||
const handleCarouselChange = (index) => {
|
||||
activeIndex.value=index
|
||||
}
|
||||
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>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@ -79,14 +61,16 @@ export default {
|
||||
}
|
||||
|
||||
.video-grid {
|
||||
padding: 10px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-template-rows: repeat(2, 1fr);
|
||||
gap: 20px;
|
||||
gap: 10px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.video-cell {
|
||||
|
||||
position: relative;
|
||||
background: url('~@/assets/images/bg13.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
@ -132,10 +116,15 @@ export default {
|
||||
i {
|
||||
cursor: pointer;
|
||||
font-size: 20px;
|
||||
|
||||
&:hover {
|
||||
color: #409EFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-carousel__container {
|
||||
height: 100% !important;
|
||||
}
|
||||
</style>
|
@ -10,7 +10,7 @@
|
||||
<div class="cntinfo">
|
||||
<div class="flex align-center">
|
||||
报备单位:
|
||||
<MOSTY.Department v-model="listQuery.ssbmdm" placeholder="请选择部门" @getDepValue="changeDep" />
|
||||
<MOSTY.Department v-model="listQuery.ssbmdm" placeholder="请选择部门" @getDepValue="changeDep" v-if="!showDetails" />
|
||||
</div>
|
||||
|
||||
<el-form ref="formRef" class="info" :model="listQuery" :inline="true" :rules="rules">
|
||||
@ -43,7 +43,7 @@
|
||||
value-format="HH:mm:ss" />
|
||||
</el-form-item>
|
||||
<el-form-item prop="bcKts">
|
||||
<el-select clearable v-model="listQuery.bcKtsDict" placeholder="请选择" style="width: 100%">
|
||||
<el-select clearable v-model="listQuery.bcKtsDict" placeholder="请选择" style="width: 100%" :disabled="isDetail">
|
||||
<el-option v-for="(item, index) in dic.D_QW_BC_KTS" :key="index" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
@ -204,7 +204,7 @@
|
||||
<div v-for="(item, index) in listQuery.qxList" :key="index" style="width: 30%; margin-bottom: 10px">
|
||||
<div class="flex">
|
||||
<div style="width: 30%">{{ item.qxmc }}:</div>
|
||||
<el-input-number v-model="item.qxsl" :step="1" />
|
||||
<el-input-number :disabled="isDetail" v-model="item.qxsl" :step="1" />
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
@ -227,10 +227,10 @@ const props = defineProps({
|
||||
type: Object,
|
||||
default: () => { }
|
||||
},
|
||||
isDetail: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
// isDetail: {
|
||||
// type: Boolean,
|
||||
// default: true
|
||||
// }
|
||||
});
|
||||
const emit = defineEmits(["getjczgetXfllList"]);
|
||||
const formRef = ref(null);
|
||||
@ -252,11 +252,13 @@ const pageInfo = {
|
||||
let pageType = ref("add");
|
||||
const mjData = ref([]);
|
||||
const fjData = ref([]);
|
||||
const isDetail=ref(false)
|
||||
// 初始化数据
|
||||
const init = (type, row) => {
|
||||
pageType.value = type;
|
||||
dialogForm.value = true;
|
||||
// 根据type和row初始化表单数据
|
||||
isDetail.value=type=="detail"
|
||||
if (row) {
|
||||
listQuery.value = { ...row };
|
||||
if (row.ryList.length > 0) {
|
||||
@ -291,8 +293,6 @@ const rules = ref({
|
||||
|
||||
const _onSave = () => {
|
||||
const data = [...mjData.value, ...fjData.value];
|
||||
console.log(data, "-------------------------------------");
|
||||
|
||||
listQuery.value.ryList = ChegeMj(data);
|
||||
const time = new Date();
|
||||
listQuery.value.bbSjBbrq = timeValidate(time);
|
||||
@ -302,16 +302,22 @@ const _onSave = () => {
|
||||
break;
|
||||
case "02":
|
||||
listQuery.value.bcKts = 2;
|
||||
break;
|
||||
case "03":
|
||||
listQuery.value.bcKts = 4;
|
||||
break;
|
||||
case "04":
|
||||
listQuery.value.bcKts = 5;
|
||||
break;
|
||||
case "05":
|
||||
listQuery.value.bcKts = 6;
|
||||
break;
|
||||
case "06":
|
||||
listQuery.value.bcKts = 7;
|
||||
break;
|
||||
case "07":
|
||||
listQuery.value.bcKts = 8;
|
||||
break;
|
||||
}
|
||||
if (listQuery.value.jczList) {
|
||||
listQuery.value.jczid = listQuery.value.jczList.id;
|
||||
@ -361,6 +367,8 @@ const fz = (val) => {
|
||||
//
|
||||
const close = () => {
|
||||
dialogForm.value = false;
|
||||
mjData.value = [];
|
||||
fjData.value = [];
|
||||
listQuery.value = {};
|
||||
};
|
||||
|
||||
|
@ -24,6 +24,8 @@
|
||||
<template #controls="{ row }">
|
||||
<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="addEdit('detail', row)">详情</el-link>
|
||||
<el-link type="primary" @click="endreporting( row.id)" v-if="row.bbZt !== '03'">结束报备</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
@ -43,7 +45,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import { XfbbselectPage, JczXfbb } from "@/api/mosty-jcz.js";
|
||||
import { XfbbselectPage, JczXfbb,finishEntity } from "@/api/mosty-jcz.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const {
|
||||
@ -133,6 +135,7 @@ const getjczgetXfllList = () => {
|
||||
XfbbselectPage(params).then((res) => {
|
||||
pageData.tableData = res.records || [];
|
||||
pageData.total = res.total;
|
||||
}).finally(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
});
|
||||
};
|
||||
@ -150,6 +153,21 @@ const delDictItem = (ids) => {
|
||||
})
|
||||
.catch(() => { });
|
||||
};
|
||||
const endreporting = (id) => {
|
||||
proxy
|
||||
.$confirm("确定要结束报备", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
finishEntity(id).then(res => {
|
||||
proxy.$message({ type: "success", message: "报备结束" });
|
||||
getjczgetXfllList();
|
||||
|
||||
})
|
||||
})
|
||||
.catch(() => { });
|
||||
|
||||
}
|
||||
|
||||
|
||||
getjczgetXfllList();
|
||||
// 新增
|
||||
const addEdit = (type, row) => {
|
||||
|
@ -49,6 +49,7 @@ import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import { GjcltxselectPage, GjcltxdeleteById } from "@/api/mosty-jcz.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { isAuth } from '@/utils/tools.js'
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
@ -80,7 +81,7 @@ const searchConfiger = ref([
|
||||
},
|
||||
{
|
||||
label: "车前部物品特征代码",
|
||||
prop: "zqlx",
|
||||
prop: "cqbwptzdm",
|
||||
placeholder: "车前部物品特征代码",
|
||||
showType: "input"
|
||||
},
|
||||
@ -88,7 +89,7 @@ const searchConfiger = ref([
|
||||
{
|
||||
label: "车辆异常痕迹代码",
|
||||
prop: "clychjdm",
|
||||
placeholder: "请选择环林卡口类型",
|
||||
placeholder: "请输入车辆异常痕迹代码",
|
||||
showType: "input"
|
||||
}
|
||||
]);
|
||||
|
@ -89,7 +89,8 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import {isAuth }from '@/utils/tools.js'
|
||||
import { isAuth } from '@/utils/tools.js'
|
||||
import { ElMessage } from "element-plus";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import { GjrytxselectPage, GjrytxdeleteById } from "@/api/mosty-jcz.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
@ -116,7 +117,7 @@ const searchConfiger = ref([
|
||||
},
|
||||
{
|
||||
label: "过检人员身份证号",
|
||||
prop: "zqlx",
|
||||
prop: "gjrysfzh",
|
||||
placeholder: "请输入过检人员身份证号",
|
||||
showType: "input"
|
||||
}
|
||||
|
@ -36,7 +36,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="sydwdm" label="使用单位">
|
||||
<MOSTY.Department :disabled="sydwmc"
|
||||
<MOSTY.Department :disabled="forbidden"
|
||||
:placeholder="listQuery.ssbm"
|
||||
style="width: 100%"
|
||||
ref="cascader"
|
||||
@ -45,6 +45,7 @@
|
||||
filterable
|
||||
:options="depList"
|
||||
:props="props"
|
||||
|
||||
v-model:modelValue="listQuery.sydwdm"
|
||||
/>
|
||||
</el-form-item>
|
||||
@ -86,7 +87,7 @@
|
||||
<el-form-item label="关联GPSID" prop="glgpsid">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.glgpsid"
|
||||
placeholder="请输入装备型号"
|
||||
placeholder="请输入关联GPSID"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
@ -94,7 +95,7 @@
|
||||
<el-form-item label="设备sim卡号" prop="sbsim">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.sbsim"
|
||||
placeholder="请输入装备型号"
|
||||
placeholder="请输入设备sim卡号"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
|
@ -71,7 +71,7 @@ const searchConfiger = ref([
|
||||
{
|
||||
label: "身份证号",
|
||||
prop: "sfzh",
|
||||
placeholder: "请输入预警对象",
|
||||
placeholder: "请输入身份证号",
|
||||
showType: "input"
|
||||
},
|
||||
{
|
||||
|
@ -83,7 +83,7 @@
|
||||
clearable
|
||||
/>
|
||||
</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"
|
||||
v-model="listQuery.sklList"
|
||||
placeholder="请选择标签"
|
||||
@ -96,8 +96,13 @@
|
||||
:label="dict.label"
|
||||
></el-option>
|
||||
</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 style="width: 85%" prop="jd" label="坐标位置">
|
||||
<div class="latlng flex">
|
||||
<el-input :disabled="true"
|
||||
@ -122,6 +127,7 @@
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@ -129,6 +135,7 @@ import { ref, reactive, onMounted } from "vue";
|
||||
import { TtbJczSxtAdd, Ttbgetupdate } from "@/api/mosty-jcz.js";
|
||||
import * as MOSTY from "@/components/MyComponents/index";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
import Jczloder from "@/components/loder/Jczloder.vue";
|
||||
import GdMap from "@/components/GdMap/index.vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
const props = defineProps({
|
||||
@ -216,6 +223,8 @@ const init = (type, row) => {
|
||||
//保存
|
||||
const _onSave = () => {
|
||||
if (!formRef) return;
|
||||
console.log(listQuery.value);
|
||||
|
||||
formRef.value.validate((valid, fields) => {
|
||||
if (valid) {
|
||||
if (pageType.value == "add") {
|
||||
@ -226,6 +235,7 @@ const _onSave = () => {
|
||||
});
|
||||
} else {
|
||||
Ttbgetupdate(listQuery.value).then((res) => {
|
||||
|
||||
ElMessage({ message: "修改成功", type: "success" });
|
||||
emit("getjczgetXfllList");
|
||||
close();
|
||||
@ -235,7 +245,6 @@ const _onSave = () => {
|
||||
console.log("error submit!", fields);
|
||||
}
|
||||
});
|
||||
console.log();
|
||||
};
|
||||
//选择定位地图
|
||||
const selectLocation = () => {
|
||||
@ -269,7 +278,12 @@ const tableHeight1 = ref();
|
||||
const tabHeightFn = () => {
|
||||
tableHeight1.value = window.innerHeight - 450;
|
||||
};
|
||||
const showJcz = ref(false);
|
||||
|
||||
const JczMsg = (val) => {
|
||||
listQuery.value.jczmc = val.jczmc;
|
||||
listQuery.value.jczid = val.id;
|
||||
};
|
||||
defineExpose({ init });
|
||||
</script>
|
||||
|
||||
@ -357,4 +371,20 @@ defineExpose({ init });
|
||||
box-sizing: border-box;
|
||||
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>
|
||||
|
@ -2,6 +2,12 @@
|
||||
<div>
|
||||
<div class="titleBox">
|
||||
<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-icon style="vertical-align: middle">
|
||||
<CirclePlus />
|
||||
@ -87,7 +93,7 @@ const searchConfiger = ref([
|
||||
prop: "sblx",
|
||||
placeholder: "感知源类型",
|
||||
showType: "select",
|
||||
options: D_BZ_GZSBLX
|
||||
options: D_BZ_SBLX
|
||||
}
|
||||
]);
|
||||
|
||||
@ -97,7 +103,7 @@ const pageData = reactive({
|
||||
keyCount: 0,
|
||||
tableConfiger: {
|
||||
rowHieght: 61,
|
||||
showSelectType: "null",
|
||||
showSelectType: "checkBox",
|
||||
loading: false
|
||||
},
|
||||
total: 0,
|
||||
@ -107,9 +113,7 @@ const pageData = reactive({
|
||||
}, //分页
|
||||
controlsWidth: 250, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ label: "感知源名称", prop: "sbmc", showOverflowTooltip: true },
|
||||
{ label: "编号", prop: "sbbh", showOverflowTooltip: true },
|
||||
{ label: "地址", prop: "dzmc", showOverflowTooltip: true },
|
||||
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
|
||||
{
|
||||
label: "感知源类型",
|
||||
prop: "sblx",
|
||||
@ -122,7 +126,10 @@ const pageData = reactive({
|
||||
showSolt: 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)
|
||||
@ -159,15 +166,21 @@ const changeNo = (val) => {
|
||||
const changeSize = (val) => {
|
||||
pageData.pageConfiger.pageSize = val;
|
||||
};
|
||||
|
||||
const ids=ref([])
|
||||
// 获取列表
|
||||
// 删除
|
||||
const delDictItem = (ids) => {
|
||||
proxy
|
||||
.$confirm("确定删除该数据?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
gzydeleteList(ids).then((res) => {
|
||||
// ElMessage({ message: "删除成功", type: "success" });
|
||||
let idsList
|
||||
if (Array.isArray(ids)) {
|
||||
idsList=ids
|
||||
}else{
|
||||
idsList=[ids]
|
||||
}
|
||||
gzydeleteList(idsList).then((res) => {
|
||||
ElMessage({ message: "删除成功", type: "success" });
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getjczgetXfllList();
|
||||
});
|
||||
@ -191,6 +204,9 @@ const tabHeightFn = () => {
|
||||
tabHeightFn();
|
||||
};
|
||||
};
|
||||
const chooseData = (val) => {
|
||||
ids.value=val.map(item=>item.id)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
@ -9,45 +9,31 @@
|
||||
</div>
|
||||
<div class="cntinfo">
|
||||
<el-form ref="formRef" :model="listQuery" :inline="true" label-position="top" :rules="rules">
|
||||
<div style="
|
||||
width: 25%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 10px;
|
||||
">
|
||||
<div style="position: relative; width: 90px; height: 100px">
|
||||
<el-upload :disabled="forbidden" action="/mosty-api/mosty-base/minio/image/upload/id" :on-success="upImg"
|
||||
:show-file-list="false">
|
||||
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
|
||||
<el-icon v-else>
|
||||
<Plus></Plus>
|
||||
</el-icon>
|
||||
<span v-if="imgUrl" style="position: absolute; top: -52px; right: -20px">
|
||||
<el-icon size="20" @click.stop="deletImg">
|
||||
<Close />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-upload>
|
||||
<div style=" width: 100%; ">
|
||||
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="listQuery.zp" :disableds="forbidden"/>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item style="width: 20%" prop="ssbmdm" label="所属部门">
|
||||
<MOSTY.Department :disabled="forbidden" width="100%" clearable v-model="listQuery.ssbmdm"
|
||||
:placeholder="listQuery.ssbm ? listQuery.ssbm : '请选择所属部门'" />
|
||||
<el-form-item style="width: 40%" prop="xm" label="姓名">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.xm" placeholder="请输入姓名" style="width: 100%" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkmc" label="布控名称">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bkmc" placeholder="请输入布控名称" style="width: 100%"
|
||||
<el-form-item style="width: 40%" prop="zjhm" label="身份证号">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.zjhm" placeholder="请输入布控人身份证号" style="width: 100%"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bksfzh" label="身份证号">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bksfzh" placeholder="请输入布控人身份证号" style="width: 100%"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bklb" label="布控类别">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.bklb" placeholder="请选择布控类别">
|
||||
<el-option v-for="dict in dict.D_BZ_RYBKLX" :key="dict.value" :value="dict.value"
|
||||
<el-form-item style="width: 40%" prop="yjys" label="布控颜色">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.yjys" placeholder="请选择布控颜色">
|
||||
<el-option v-for="dict in dict.D_BZ_BKYS" :key="dict.value" :value="dict.value"
|
||||
:label="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkyy" label="布控原因">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bkyy" type="textarea" placeholder="请输入布控原因" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width:100%" prop="bkfs" label="布控方式">
|
||||
<el-radio-group v-model="listQuery.bkfs">
|
||||
<el-radio label="01">全省布控</el-radio>
|
||||
<el-radio label="02">精准布控</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkkssj" label="开始时间">
|
||||
<el-date-picker :disabled="forbidden" v-model="listQuery.bkkssj" type="datetime" placeholder="请选中开始时间"
|
||||
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
||||
@ -56,50 +42,29 @@
|
||||
<el-date-picker :disabled="forbidden" v-model="listQuery.bkjssj" type="datetime" placeholder="请选中结束时间"
|
||||
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="width: 40%" prop="bkqy" label="布控区域">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bkqy" placeholder="请输入布控区域" style="width: 100%"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkzt" label="布控状态">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.bkzt" placeholder="请选择布控状态">
|
||||
<el-option v-for="dict in dict.D_BZ_RCBKZT" :key="dict.value" :value="dict.value"
|
||||
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
|
||||
<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"
|
||||
:label="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkfw" label="布控范围">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.bkfw" placeholder="请选择布控状态">
|
||||
<el-option v-for="dict in dict.D_BZ_RCBKFW" :key="dict.value" :value="dict.value"
|
||||
:label="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkczlx" label="布控操作类型">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bkczlx" placeholder="请输入布控区域" style="width: 100%"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkdxtzm" label="布控对象特征码">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bkdxtzm" placeholder="请输入布控区域" style="width: 100%"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkkk" label="布控卡口">
|
||||
<el-form-item style="width: 40%" prop="jczid" label="布控卡口" v-if="listQuery.bkfs=='02'">
|
||||
<div class="diviput" @click="openJcz">
|
||||
<span v-if="listQuery.bkkk">{{ listQuery.bkkk }}</span>
|
||||
<span v-if="listQuery.jczid">{{ listQuery.jczmc }}</span>
|
||||
<span class="placeholder" v-else> 请选择布控卡口</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
|
||||
<Jczloder v-model="showJcz" :Single="false" @choosedJcz="JczMsg" :data="[]" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import { BkrwinsertEntity, BkrweditEntity } from "@/api/mosty-jcz.js";
|
||||
import * as MOSTY from "@/components/MyComponents/index";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
import { BkrwinsertEntity, BkrweditEntity } from "@/api/mosty-jcz.js";
|
||||
import Jczloder from "@/components/loder/Jczloder.vue";
|
||||
import GdMap from "@/components/GdMap/index.vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
const props = defineProps({
|
||||
dict: {
|
||||
@ -108,16 +73,16 @@ const props = defineProps({
|
||||
}
|
||||
});
|
||||
const rules = reactive({
|
||||
bkdxtzm: [
|
||||
xm: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控对象特征码"
|
||||
message: "请输入布控姓名"
|
||||
}
|
||||
],
|
||||
bkbsm: [
|
||||
zjhm: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控标识码"
|
||||
message: "请输入布控人身份证号"
|
||||
}
|
||||
],
|
||||
bkkk: [
|
||||
@ -126,10 +91,10 @@ const rules = reactive({
|
||||
message: "请选择布控卡口"
|
||||
}
|
||||
],
|
||||
bkjssj: [
|
||||
yjys: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择布控结束时间"
|
||||
message: "请选择预警颜色"
|
||||
}
|
||||
],
|
||||
bkkssj: [
|
||||
@ -138,37 +103,28 @@ const rules = reactive({
|
||||
message: "请选择布控开始时间"
|
||||
}
|
||||
],
|
||||
bkzt: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择布控状态"
|
||||
}
|
||||
],
|
||||
bksfzh: [
|
||||
|
||||
bkjssj: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控身份证号"
|
||||
}
|
||||
],
|
||||
bkqy: [
|
||||
bkfs: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控区域",
|
||||
trigger: "change"
|
||||
message: "请输入布控方式"
|
||||
}
|
||||
], bkcs: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输选择布控措施"
|
||||
}
|
||||
],
|
||||
bkmc: [
|
||||
{
|
||||
bkyy: {
|
||||
required: true,
|
||||
message: "请输入布控名称"
|
||||
message: "请输入布控原因"
|
||||
}
|
||||
],
|
||||
bklb: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择布控类别"
|
||||
}
|
||||
]
|
||||
});
|
||||
const formRef = ref(null);
|
||||
const emit = defineEmits(["getjczgetXfllList"]);
|
||||
@ -198,7 +154,7 @@ const init = (type, row) => {
|
||||
// 根据type和row初始化表单数据
|
||||
tabHeightFn();
|
||||
if (type == "edit" || type == "detail") {
|
||||
listQuery.value = { ...row };
|
||||
listQuery.value = { ...row};
|
||||
if (type == "detail") {
|
||||
forbidden.value = true
|
||||
}
|
||||
@ -211,7 +167,8 @@ const _onSave = () => {
|
||||
if (!formRef) return;
|
||||
formRef.value.validate((valid, fields) => {
|
||||
if (valid) {
|
||||
const promes = { ...listQuery.value, bklx: "01" };
|
||||
const promes = { ...listQuery.value };
|
||||
// promes.zp=listQuery.value.zp&&Array.isArray(listQuery.value.zp)? listQuery.value.zp.join(","):""
|
||||
if (pageType.value == "add") {
|
||||
BkrwinsertEntity(promes).then((res) => {
|
||||
ElMessage({ message: "新增成功", type: "success" });
|
||||
@ -231,25 +188,21 @@ const _onSave = () => {
|
||||
});
|
||||
console.log();
|
||||
};
|
||||
// 图片上传
|
||||
const imgUrl = ref();
|
||||
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
|
||||
const upImg = (row) => {
|
||||
listQuery.value.bkzp = row.data;
|
||||
imgUrl.value = urlImg + row.data;
|
||||
|
||||
};
|
||||
|
||||
//打开弹窗
|
||||
const showJcz = ref(false);
|
||||
const openJcz = () => {
|
||||
if (!forbidden) {
|
||||
if (!forbidden.value) {
|
||||
showJcz.value = true
|
||||
}
|
||||
};
|
||||
const JczMsg = (val) => {
|
||||
listQuery.value.bkkk = val.jczmc;
|
||||
listQuery.value.kkId = val.id;
|
||||
listQuery.value.jczmc = val.map(item => {
|
||||
return item.jczmc
|
||||
}).toString()
|
||||
listQuery.value.jczid =val.map(item => {
|
||||
return item.id
|
||||
}).toString()
|
||||
};
|
||||
//页面关闭
|
||||
const close = () => {
|
||||
|
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="titleBox" >
|
||||
<div class="titleBox">
|
||||
<PageTitle title="人员布控">
|
||||
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
|
||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||
<span style="vertical-align: middle" @click="addEdit('add', row)"
|
||||
>新增</span
|
||||
>
|
||||
<el-icon style="vertical-align: middle">
|
||||
<CirclePlus />
|
||||
</el-icon>
|
||||
<span style="vertical-align: middle" @click="addEdit('add', row)">新增</span>
|
||||
</el-button>
|
||||
</PageTitle>
|
||||
</div>
|
||||
@ -15,24 +15,24 @@
|
||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||
</div>
|
||||
<div class="tabBox">
|
||||
<MyTable
|
||||
:tableData="pageData.tableData"
|
||||
:tableColumn="pageData.tableColumn"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount"
|
||||
:tableConfiger="pageData.tableConfiger"
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData"
|
||||
>
|
||||
<template #bklb="{ row }">
|
||||
<dict-tag :value="row.bklb" :options="D_BZ_RYBKLX" :tag="false" />
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData">
|
||||
<template #yjys="{ row }">
|
||||
<dict-tag :value="row.yjys" :options="D_BZ_BKYS" :tag="false" />
|
||||
</template>
|
||||
<template #bkzt="{ row }">
|
||||
<template #bkfs="{ row }">
|
||||
{{ row.bkfs=='01'?"全省布控":"精准布控" }}
|
||||
</template>
|
||||
<template #czcs="{ row }">
|
||||
<dict-tag :value="row.czcs" :options="D_BZ_CZCS" :tag="false" />
|
||||
</template>
|
||||
<!-- <template #bkzt="{ row }">
|
||||
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
|
||||
</template>
|
||||
<template #bkfw="{ row }">
|
||||
<dict-tag :value="row.bkfw" :options="D_BZ_RCBKFW" :tag="false" />
|
||||
</template>
|
||||
</template> -->
|
||||
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
@ -43,26 +43,15 @@
|
||||
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"
|
||||
></Pages>
|
||||
}"></Pages>
|
||||
</div>
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm
|
||||
ref="detailDiloag"
|
||||
:dict="{
|
||||
D_BZ_RCBKZT,
|
||||
D_BZ_RCBKFW,
|
||||
D_BZ_RYBKLX
|
||||
}"
|
||||
@getjczgetXfllList="getjczgetXfllList"
|
||||
/>
|
||||
<EditAddForm ref="detailDiloag" :dict="{
|
||||
D_BZ_BKYS,D_BZ_CZCS
|
||||
}" @getjczgetXfllList="getjczgetXfllList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -71,50 +60,38 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import { BkrwselectPage, BkrwdeleteById } from "@/api/mosty-jcz.js";
|
||||
import {isAuth} from '@/utils/tools.js'
|
||||
import { isAuth } from '@/utils/tools.js'
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
|
||||
const { D_BZ_RCBKZT, D_BZ_RCBKFW, D_BZ_RYBKLX } = proxy.$dict(
|
||||
"D_BZ_RCBKZT",
|
||||
"D_BZ_RCBKFW",
|
||||
"D_BZ_RYBKLX"
|
||||
const { D_BZ_BKYS,D_BZ_CZCS } = proxy.$dict(
|
||||
"D_BZ_BKYS","D_BZ_CZCS"
|
||||
);
|
||||
const searchConfiger = ref([
|
||||
{
|
||||
label: "布控名称",
|
||||
prop: "bkmc",
|
||||
placeholder: "请输入布控名称",
|
||||
label: "姓名",
|
||||
prop: "xm",
|
||||
placeholder: "请输入姓名",
|
||||
showType: "input"
|
||||
},
|
||||
{
|
||||
label: "证件号码",
|
||||
prop: "bksfzh",
|
||||
prop: "zjhm",
|
||||
placeholder: "请输入证件号码",
|
||||
showType: "input"
|
||||
},
|
||||
|
||||
{
|
||||
label: "布控状态",
|
||||
prop: "bkzt",
|
||||
placeholder: "布控状态",
|
||||
label: "布控颜色",
|
||||
prop: "yjys",
|
||||
placeholder: "布控颜色",
|
||||
showType: "select",
|
||||
options: D_BZ_RCBKZT
|
||||
options: D_BZ_BKYS
|
||||
},
|
||||
{
|
||||
label: "布控类别",
|
||||
prop: "bklb",
|
||||
placeholder: "布控类别",
|
||||
showType: "select",
|
||||
options: D_BZ_RYBKLX
|
||||
},
|
||||
{
|
||||
showType: "department",
|
||||
prop: "ssbmdm",
|
||||
placeholder: "请选择所属部门",
|
||||
label: "所属部门"
|
||||
}
|
||||
|
||||
]);
|
||||
|
||||
const detailDiloag = ref();
|
||||
@ -133,52 +110,48 @@ const pageData = reactive({
|
||||
}, //分页
|
||||
controlsWidth: 250, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
|
||||
{
|
||||
label: "布控区域",
|
||||
prop: "bkqy",
|
||||
label: "布控姓名",
|
||||
prop: "xm",
|
||||
showOverflowTooltip: true
|
||||
// showSolt: true
|
||||
},
|
||||
|
||||
{
|
||||
label: "布控名称",
|
||||
prop: "bkmc",
|
||||
label: "布控人身份证号",
|
||||
prop: "zjhm",
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控类别",
|
||||
prop: "bklb",
|
||||
label: "预警颜色",
|
||||
prop: "yjys",
|
||||
showSolt: true,
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控状态",
|
||||
prop: "bkzt",
|
||||
showSolt: true,
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控范围",
|
||||
prop: "bkfw",
|
||||
showSolt: true,
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{ label: "布控开始时间", prop: "bkkssj", showOverflowTooltip: true },
|
||||
{
|
||||
label: "布控结束时间",
|
||||
prop: "bkjssj",
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控方式",
|
||||
prop: "bkfs",
|
||||
showSolt: true,
|
||||
},
|
||||
{
|
||||
label: "布控措施",
|
||||
prop: "czcs",
|
||||
showSolt: true,
|
||||
}
|
||||
]
|
||||
});
|
||||
const Auth = ref(false)
|
||||
onMounted(() => {
|
||||
tabHeightFn();
|
||||
Auth.value=isAuth()
|
||||
Auth.value = isAuth()
|
||||
});
|
||||
|
||||
//查询条件
|
||||
const queryCondition = ref({ bklx: "01" });
|
||||
const queryCondition = ref();
|
||||
// 获取数据
|
||||
const getjczgetXfllList = () => {
|
||||
pageData.tableConfiger.loading = true;
|
||||
@ -195,7 +168,7 @@ const getjczgetXfllList = () => {
|
||||
getjczgetXfllList();
|
||||
// 搜索
|
||||
const onSearch = (val) => {
|
||||
queryCondition.value = { ...queryCondition.value, ...val };
|
||||
queryCondition.value = { ...val };
|
||||
getjczgetXfllList();
|
||||
};
|
||||
|
||||
@ -212,7 +185,7 @@ const delDictItem = (ids) => {
|
||||
proxy
|
||||
.$confirm("确定删除该数据?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
BkrwdeleteById({ ids: ids })
|
||||
BkrwdeleteById( ids)
|
||||
.then((res) => {
|
||||
ElMessage({ message: "删除成功", type: "success" });
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
|
@ -3,192 +3,95 @@
|
||||
<div class="head_box">
|
||||
<span class="title">{{ pageInfo[pageType].title }}</span>
|
||||
<div>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
v-if="['add', 'edit'].includes(pageType)"
|
||||
@click="_onSave"
|
||||
>保存</el-button
|
||||
>
|
||||
<el-button size="small" type="primary" v-if="['add', 'edit'].includes(pageType)" @click="_onSave">保存</el-button>
|
||||
<el-button size="small" @click="close">关闭</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cntinfo">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="listQuery"
|
||||
:inline="true"
|
||||
label-position="top"
|
||||
:rules="rules"
|
||||
>
|
||||
<div
|
||||
style="
|
||||
width: 25%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 10px;
|
||||
"
|
||||
>
|
||||
<div style="position: relative; width: 90px; height: 100px">
|
||||
<el-upload :disabled="forbidden"
|
||||
action="/mosty-api/mosty-base/minio/image/upload/id"
|
||||
:on-change="upImgFile"
|
||||
:on-success="upImg"
|
||||
:show-file-list="false"
|
||||
>
|
||||
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
|
||||
<el-icon v-else>
|
||||
<Plus></Plus>
|
||||
</el-icon>
|
||||
<span
|
||||
v-if="imgUrl"
|
||||
style="position: absolute; top: -52px; right: -20px"
|
||||
>
|
||||
<el-icon size="20" @click.stop="deletImg">
|
||||
<Close />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-upload>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item style="width: 20%" prop="ssbmdm" label="所属部门">
|
||||
<MOSTY.Department
|
||||
width="100%" :disabled="forbidden"
|
||||
clearable
|
||||
v-model="listQuery.ssbmdm"
|
||||
:placeholder="listQuery.ssbm ? listQuery.ssbm : '请选择所属部门'"
|
||||
/>
|
||||
<el-form ref="formRef" :model="listQuery" :inline="true" label-position="top" :rules="rules">
|
||||
<el-form-item style="width: 40%" prop="cph" label="车牌号">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.cph" placeholder="请输入车牌号" style="width: 100%" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bklb" label="布控类别">
|
||||
<el-select v-model="listQuery.bklb" placeholder="请选择布控类别">
|
||||
<el-option :disabled="forbidden"
|
||||
v-for="dict in dict.D_BZ_CLBKLX"
|
||||
:key="dict.value"
|
||||
:value="dict.value"
|
||||
:label="dict.label"
|
||||
></el-option>
|
||||
<el-form-item style="width: 40%" prop="cpys" label="车牌颜色">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.cpys" placeholder="请选择车牌颜色" filterable>
|
||||
<el-option v-for="dict in dict.D_BZ_CPHYS" :key="dict.value" :value="dict.value"
|
||||
:label="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkcph" label="车牌号">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.bkcph"
|
||||
placeholder="请输入布控车辆车牌号"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
/>
|
||||
<el-form-item style="width: 40%" prop="yjys" label="布控颜色">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.yjys" placeholder="请选择布控颜色" filterable>
|
||||
<el-option v-for="dict in dict.D_BZ_BKYS" :key="dict.value" :value="dict.value"
|
||||
:label="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkyy" label="布控原因">
|
||||
<el-input :disabled="forbidden" v-model="listQuery.bkyy" type="textarea" placeholder="请输入布控原因" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item style="width:100%" prop="bkfs" label="布控方式">
|
||||
<el-radio-group v-model="listQuery.bkfs">
|
||||
<el-radio label="01">全省布控</el-radio>
|
||||
<el-radio label="02">精准布控</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="width: 40%" prop="bkkssj" label="开始时间">
|
||||
<el-date-picker :disabled="forbidden"
|
||||
v-model="listQuery.bkkssj"
|
||||
type="datetime"
|
||||
placeholder="请选中开始时间"
|
||||
format="YYYY-MM-DD hh:mm:ss"
|
||||
value-format="YYYY-MM-DD hh:mm:ss"
|
||||
/>
|
||||
<el-date-picker :disabled="forbidden" v-model="listQuery.bkkssj" type="datetime" placeholder="请选中开始时间"
|
||||
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkjssj" label="结束时间">
|
||||
<el-date-picker :disabled="forbidden"
|
||||
v-model="listQuery.bkjssj"
|
||||
type="datetime"
|
||||
placeholder="请选中结束时间"
|
||||
format="YYYY-MM-DD hh:mm:ss"
|
||||
value-format="YYYY-MM-DD hh:mm:ss"
|
||||
/>
|
||||
<el-date-picker :disabled="forbidden" v-model="listQuery.bkjssj" type="datetime" placeholder="请选中结束时间"
|
||||
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="width: 40%" prop="bkqy" label="布控区域">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.bkqy"
|
||||
placeholder="请输入布控区域"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkzt" label="布控状态">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.bkzt" placeholder="请选择布控状态">
|
||||
<el-option
|
||||
v-for="dict in dict.D_BZ_RCBKZT"
|
||||
:key="dict.value"
|
||||
:value="dict.value"
|
||||
:label="dict.label"
|
||||
></el-option>
|
||||
<el-form-item style="width: 40%" prop="czcs" label="处置措施">
|
||||
<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"
|
||||
:label="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkfw" label="布控范围">
|
||||
<el-select :disabled="forbidden" v-model="listQuery.bkfw" placeholder="请选择布控状态">
|
||||
<el-option
|
||||
v-for="dict in dict.D_BZ_RCBKFW"
|
||||
:key="dict.value"
|
||||
:value="dict.value"
|
||||
:label="dict.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkczlx" label="布控操作类型">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.bkczlx"
|
||||
placeholder="请输入布控区域"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkdxtzm" label="布控对象特征码">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.bkdxtzm"
|
||||
placeholder="请输入布控区域"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 40%" prop="bkkk" label="布控卡口">
|
||||
<div class="diviput" @click="forbidden ? '' : showJcz = true">
|
||||
<span v-if="listQuery.bkkk">{{ listQuery.bkkk }}</span>
|
||||
<el-form-item style="width: 40%" prop="jczid" label="布控卡口" v-if="listQuery.bkfs=='02'">
|
||||
<div class="diviput" @click="openJcz">
|
||||
<span v-if="listQuery.jczid">{{ listQuery.jczmc }}</span>
|
||||
<span class="placeholder" v-else> 请选择布控卡口</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<Jczloder v-model="showJcz" :Single="true" @choosedJcz="JczMsg" :data="[]" />
|
||||
<Jczloder v-model="showJcz" :Single="false" @choosedJcz="JczMsg" :data="[]" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import { BkrwinsertEntity, BkrweditEntity } from "@/api/mosty-jcz.js";
|
||||
import * as MOSTY from "@/components/MyComponents/index";
|
||||
import { jczBkclEntity, jczBkclInsertEntity } from "@/api/mosty-jcz.js";
|
||||
import Jczloder from "@/components/loder/Jczloder.vue";
|
||||
|
||||
import { ElMessage } from "element-plus";
|
||||
const props = defineProps({
|
||||
dict: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
default: () => { }
|
||||
}
|
||||
});
|
||||
const rules = reactive({
|
||||
bkdxtzm: [
|
||||
cph: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控对象特征码"
|
||||
}
|
||||
],
|
||||
bkbsm: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控标识码"
|
||||
message: "请输入布控姓名"
|
||||
}
|
||||
],
|
||||
|
||||
bkkk: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择布控卡口"
|
||||
}
|
||||
],
|
||||
bkjssj: [
|
||||
],cpys:[{
|
||||
required: true,
|
||||
message: "请选择车牌颜色"
|
||||
}],
|
||||
yjys: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择布控结束时间"
|
||||
message: "请选择预警颜色"
|
||||
}
|
||||
],
|
||||
bkkssj: [
|
||||
@ -197,38 +100,28 @@ const rules = reactive({
|
||||
message: "请选择布控开始时间"
|
||||
}
|
||||
],
|
||||
bkzt: [
|
||||
|
||||
bkjssj: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择布控状态"
|
||||
message: "请输入布控身份证号"
|
||||
}
|
||||
],
|
||||
bkcph: [
|
||||
bkfs: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控车辆车牌号"
|
||||
message: "请输入布控方式"
|
||||
}
|
||||
], czcs: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输选择布控措施"
|
||||
}
|
||||
],
|
||||
bkqy: [
|
||||
{
|
||||
bkyy: {
|
||||
required: true,
|
||||
message: "请输入布控区域",
|
||||
trigger: "change"
|
||||
message: "请输入布控原因"
|
||||
}
|
||||
],
|
||||
bklb: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控类别",
|
||||
trigger: "change"
|
||||
}
|
||||
],
|
||||
bkmc: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入布控名称"
|
||||
}
|
||||
]
|
||||
});
|
||||
const formRef = ref(null);
|
||||
const emit = defineEmits(["getjczgetXfllList"]);
|
||||
@ -249,17 +142,18 @@ const pageInfo = {
|
||||
};
|
||||
|
||||
let pageType = ref("add");
|
||||
const forbidden=ref(false);
|
||||
|
||||
// 初始化数据
|
||||
const forbidden = ref(false)
|
||||
const init = (type, row) => {
|
||||
pageType.value = type;
|
||||
dialogForm.value = true;
|
||||
// 根据type和row初始化表单数据
|
||||
tabHeightFn();
|
||||
if (type == "edit"||type == "detail") {
|
||||
listQuery.value = { ...row };
|
||||
if (type == "edit" || type == "detail") {
|
||||
listQuery.value = { ...row};
|
||||
if (type == "detail") {
|
||||
forbidden.value=true
|
||||
forbidden.value = true
|
||||
}
|
||||
} else {
|
||||
listQuery.value = {};
|
||||
@ -270,15 +164,15 @@ const _onSave = () => {
|
||||
if (!formRef) return;
|
||||
formRef.value.validate((valid, fields) => {
|
||||
if (valid) {
|
||||
const promes = { ...listQuery.value, bklx: "02" };
|
||||
const promes = { ...listQuery.value };
|
||||
if (pageType.value == "add") {
|
||||
BkrwinsertEntity(promes).then((res) => {
|
||||
jczBkclInsertEntity(promes).then((res) => {
|
||||
ElMessage({ message: "新增成功", type: "success" });
|
||||
emit("getjczgetXfllList");
|
||||
close();
|
||||
});
|
||||
} else {
|
||||
BkrweditEntity(promes).then((res) => {
|
||||
jczBkclEntity(promes).then((res) => {
|
||||
ElMessage({ message: "修改成功", type: "success" });
|
||||
emit("getjczgetXfllList");
|
||||
close();
|
||||
@ -290,27 +184,27 @@ const _onSave = () => {
|
||||
});
|
||||
console.log();
|
||||
};
|
||||
// 图片上传
|
||||
const imgUrl = ref();
|
||||
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
|
||||
const upImg = (row) => {
|
||||
listQuery.value.bkzp = row.data;
|
||||
imgUrl.value = urlImg.value + row.data;
|
||||
};
|
||||
|
||||
//打开弹窗
|
||||
const showJcz = ref(false);
|
||||
|
||||
const openJcz = () => {
|
||||
if (!forbidden.value) {
|
||||
showJcz.value = true
|
||||
}
|
||||
};
|
||||
const JczMsg = (val) => {
|
||||
listQuery.value.bkkk = val.jczmc;
|
||||
listQuery.value.kkId = val.id;
|
||||
listQuery.value.jczmc = val.map(item => {
|
||||
return item.jczmc
|
||||
}).toString()
|
||||
listQuery.value.jczid =val.map(item => {
|
||||
return item.id
|
||||
}).toString()
|
||||
};
|
||||
//页面关闭
|
||||
const close = () => {
|
||||
dialogForm.value = false;
|
||||
forbidden.value=false;
|
||||
forbidden.value = false
|
||||
listQuery.value = {};
|
||||
|
||||
};
|
||||
// 表格高度计算
|
||||
const tableHeight1 = ref();
|
||||
@ -324,21 +218,25 @@ defineExpose({ init });
|
||||
<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;
|
||||
@ -346,58 +244,71 @@ defineExpose({ init });
|
||||
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 {
|
||||
>.el-form--inline {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
> .el-form-item--default {
|
||||
|
||||
>.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;
|
||||
@ -405,6 +316,7 @@ defineExpose({ init });
|
||||
box-sizing: border-box;
|
||||
background: #000;
|
||||
}
|
||||
|
||||
.diviput {
|
||||
width: 100%;
|
||||
background-color: #ffffff;
|
||||
@ -414,10 +326,12 @@ defineExpose({ init });
|
||||
line-height: 32px;
|
||||
padding: 0 10px;
|
||||
border-radius: 5px;
|
||||
|
||||
.placeholder {
|
||||
color: #b5b5b5;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-icon svg {
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
@ -3,10 +3,10 @@
|
||||
<div class="titleBox">
|
||||
<PageTitle title="车辆布控">
|
||||
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
|
||||
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
|
||||
<span style="vertical-align: middle" @click="addEdit('add', row)"
|
||||
>新增</span
|
||||
>
|
||||
<el-icon style="vertical-align: middle">
|
||||
<CirclePlus />
|
||||
</el-icon>
|
||||
<span style="vertical-align: middle" @click="addEdit('add', row)">新增</span>
|
||||
</el-button>
|
||||
</PageTitle>
|
||||
</div>
|
||||
@ -15,24 +15,27 @@
|
||||
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||
</div>
|
||||
<div class="tabBox">
|
||||
<MyTable
|
||||
:tableData="pageData.tableData"
|
||||
:tableColumn="pageData.tableColumn"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount"
|
||||
:tableConfiger="pageData.tableConfiger"
|
||||
:controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData"
|
||||
>
|
||||
<template #bklb="{ row }">
|
||||
<dict-tag :value="row.bklb" :options="D_BZ_CLBKLX" :tag="false" />
|
||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
|
||||
@chooseData="chooseData">
|
||||
<template #yjys="{ row }">
|
||||
<dict-tag :value="row.yjys" :options="D_BZ_BKYS" :tag="false" />
|
||||
</template>
|
||||
<template #bkzt="{ row }">
|
||||
<template #cpys="{ row }">
|
||||
<dict-tag :value="row.cpys" :options="D_BZ_CPHYS" :tag="false" />
|
||||
</template>
|
||||
<template #bkfs="{ row }">
|
||||
{{ row.bkfs == '01' ? "全省布控" : "精准布控" }}
|
||||
</template>
|
||||
<template #bkcs="{ row }">
|
||||
<dict-tag :value="row.czcs" :options="D_BZ_CZCS" :tag="false" />
|
||||
</template>
|
||||
<!-- <template #bkzt="{ row }">
|
||||
<dict-tag :value="row.bkzt" :options="D_BZ_RCBKZT" :tag="false" />
|
||||
</template>
|
||||
<template #bkfw="{ row }">
|
||||
<dict-tag :value="row.bkfw" :options="D_BZ_RCBKFW" :tag="false" />
|
||||
</template>
|
||||
</template> -->
|
||||
|
||||
<!-- 操作 -->
|
||||
<template #controls="{ row }">
|
||||
@ -40,30 +43,18 @@
|
||||
<el-link type="primary" @click="addEdit('edit', row)">修改</el-link>
|
||||
<el-link type="primary" @click="delDictItem(row.id)">删除</el-link>
|
||||
</template>
|
||||
|
||||
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
||||
</template>
|
||||
</MyTable>
|
||||
<Pages
|
||||
@changeNo="changeNo"
|
||||
@changeSize="changeSize"
|
||||
:tableHeight="pageData.tableHeight"
|
||||
:pageConfiger="{
|
||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||
...pageData.pageConfiger,
|
||||
total: pageData.total
|
||||
}"
|
||||
></Pages>
|
||||
}"></Pages>
|
||||
</div>
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm
|
||||
ref="detailDiloag"
|
||||
:dict="{
|
||||
D_BZ_RCBKZT,
|
||||
D_BZ_RCBKFW,
|
||||
D_BZ_CLBKLX
|
||||
}"
|
||||
@getjczgetXfllList="getjczgetXfllList"
|
||||
/>
|
||||
<EditAddForm ref="detailDiloag" :dict="{
|
||||
D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS
|
||||
}" @getjczgetXfllList="getjczgetXfllList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -73,36 +64,32 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import{isAuth} from '@/utils/tools.js'
|
||||
import { BkrwselectPage, BkrwdeleteById } from "@/api/mosty-jcz.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { jczBkclSelectPage, jczBkclDeleteById } from "@/api/mosty-jcz.js";
|
||||
import { isAuth } from '@/utils/tools.js'
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
|
||||
const { D_BZ_RCBKZT, D_BZ_RCBKFW, D_BZ_CLBKLX } = proxy.$dict(
|
||||
"D_BZ_RCBKZT",
|
||||
"D_BZ_RCBKFW",
|
||||
"D_BZ_CLBKLX"
|
||||
const { D_BZ_BKYS, D_BZ_CZCS, D_BZ_CPHYS } = proxy.$dict(
|
||||
"D_BZ_BKYS", "D_BZ_CZCS", "D_BZ_CPHYS"
|
||||
);
|
||||
const searchConfiger = ref([
|
||||
|
||||
{
|
||||
label: "车牌号",
|
||||
prop: "bkcph",
|
||||
placeholder: "请输入车牌号",
|
||||
label: "车牌号码",
|
||||
prop: "cph",
|
||||
placeholder: "请输入车牌号码",
|
||||
showType: "input"
|
||||
},
|
||||
|
||||
{
|
||||
label: "布控状态",
|
||||
prop: "bkzt",
|
||||
placeholder: "布控状态",
|
||||
label: "布控颜色",
|
||||
prop: "yjys",
|
||||
placeholder: "布控颜色",
|
||||
showType: "select",
|
||||
options: D_BZ_RCBKZT
|
||||
options: D_BZ_BKYS
|
||||
},
|
||||
{
|
||||
showType: "department",
|
||||
prop: "ssbmdm",
|
||||
placeholder: "请选择所属部门",
|
||||
label: "所属部门"
|
||||
}
|
||||
|
||||
]);
|
||||
|
||||
const detailDiloag = ref();
|
||||
@ -121,60 +108,59 @@ const pageData = reactive({
|
||||
}, //分页
|
||||
controlsWidth: 250, //操作栏宽度
|
||||
tableColumn: [
|
||||
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
|
||||
{
|
||||
label: "布控区域",
|
||||
prop: "bkqy",
|
||||
showOverflowTooltip: true
|
||||
// showSolt: true
|
||||
},
|
||||
{
|
||||
label: "布控车牌号",
|
||||
prop: "bkcph",
|
||||
label: "车牌号",
|
||||
prop: "cph",
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
|
||||
{
|
||||
label: "布控类别",
|
||||
prop: "bklb",
|
||||
label: "车牌颜色",
|
||||
prop: "cpys",
|
||||
showSolt: true,
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控状态",
|
||||
prop: "bkzt",
|
||||
label: "预警颜色",
|
||||
prop: "yjys",
|
||||
showSolt: true,
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控范围",
|
||||
prop: "bkfw",
|
||||
showSolt: true,
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{ label: "布控开始时间", prop: "bkkssj", showOverflowTooltip: true },
|
||||
{
|
||||
label: "布控结束时间",
|
||||
prop: "bkjssj",
|
||||
showOverflowTooltip: true
|
||||
},
|
||||
{
|
||||
label: "布控方式",
|
||||
prop: "bkfs",
|
||||
showSolt: true,
|
||||
},
|
||||
{
|
||||
label: "布控措施",
|
||||
prop: "bkcs",
|
||||
showSolt: true,
|
||||
}
|
||||
]
|
||||
});
|
||||
const Auth=ref(true)
|
||||
const Auth = ref(false)
|
||||
onMounted(() => {
|
||||
Auth.value=isAuth()
|
||||
tabHeightFn();
|
||||
Auth.value = isAuth()
|
||||
});
|
||||
|
||||
//查询条件
|
||||
const queryCondition = ref({ bklx: "02" });
|
||||
const queryCondition = ref();
|
||||
// 获取数据
|
||||
const getjczgetXfllList = () => {
|
||||
pageData.tableConfiger.loading = true;
|
||||
const promes = { ...queryCondition.value, ...pageData.pageConfiger };
|
||||
BkrwselectPage(promes)
|
||||
jczBkclSelectPage(promes)
|
||||
.then((res) => {
|
||||
pageData.tableData = res.records;
|
||||
pageData.total = res.total;
|
||||
}).catch((err) => {
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
pageData.tableConfiger.loading = false;
|
||||
@ -183,7 +169,7 @@ const getjczgetXfllList = () => {
|
||||
getjczgetXfllList();
|
||||
// 搜索
|
||||
const onSearch = (val) => {
|
||||
queryCondition.value = { ...queryCondition.value, ...val };
|
||||
queryCondition.value = { ...val };
|
||||
getjczgetXfllList();
|
||||
};
|
||||
|
||||
@ -200,8 +186,7 @@ const delDictItem = (ids) => {
|
||||
proxy
|
||||
.$confirm("确定删除该数据?", "警告", { type: "warning" })
|
||||
.then(() => {
|
||||
BkrwdeleteById({ ids: ids })
|
||||
.then((res) => {
|
||||
jczBkclDeleteById(ids).then((res) => {
|
||||
ElMessage({ message: "删除成功", type: "success" });
|
||||
pageData.pageConfiger.pageCurrent = 1;
|
||||
getjczgetXfllList();
|
||||
@ -229,6 +214,7 @@ const tabHeightFn = () => {
|
||||
tabHeightFn();
|
||||
};
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
@ -8,28 +8,30 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="cntinfo">
|
||||
<el-form ref="formRef" :model="listQuery" :rules="rules" :inline="true" label-position="top">
|
||||
<div style="
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="listQuery"
|
||||
:rules="rules"
|
||||
:inline="true"
|
||||
label-position="top"
|
||||
>
|
||||
<!-- <div
|
||||
style="
|
||||
width: 25%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 10px;
|
||||
">
|
||||
<div style="position: relative; width: 90px; height: 100px">
|
||||
<el-upload action="/mosty-api/mosty-base/minio/image/upload/id" :on-change="upImgFile" :on-success="upImg"
|
||||
:show-file-list="false">
|
||||
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
|
||||
<el-icon v-else>
|
||||
<Plus></Plus>
|
||||
</el-icon>
|
||||
<span v-if="imgUrl" style="position: absolute; top: -52px; right: -20px">
|
||||
<el-icon size="20" @click.stop="deletImg">
|
||||
<Close />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-upload>
|
||||
</div>
|
||||
"
|
||||
>
|
||||
<div >
|
||||
|
||||
</div>
|
||||
</div> -->
|
||||
<el-form-item>
|
||||
{{ listQuery.tp }}
|
||||
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="listQuery.tp" :disableds="forbidden"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="身份证号码" prop="sfzh">
|
||||
<el-input v-model="listQuery.sfzh" placeholder="请输入身份证号码" clearable style="width: 100%" />
|
||||
</el-form-item>
|
||||
@ -139,6 +141,7 @@ import { jcztbQwXfll, jcztbQwXfllUpdete } from "@/api/mosty-jcz.js";
|
||||
import { Right, Back } from "@element-plus/icons-vue";
|
||||
import { baseselectPage } from "@/api/mosty-base";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const props = defineProps({
|
||||
dict: {
|
||||
type: Object,
|
||||
@ -182,6 +185,11 @@ const rules = reactive({
|
||||
required: true,
|
||||
message: "请选择婚姻状况"
|
||||
}
|
||||
],jh:[
|
||||
{
|
||||
required: true,
|
||||
message: "请填写辅警编号"
|
||||
}
|
||||
],
|
||||
whcddm: [
|
||||
{
|
||||
@ -236,16 +244,18 @@ const init = (type, row) => {
|
||||
//保存
|
||||
const _onSave = () => {
|
||||
if (!formRef) return;
|
||||
const promes = { ...listQuery.value ,fl:'02'};
|
||||
// promes.tp=listQuery.value.tp&&Array.isArray(listQuery.value.tp)? listQuery.value.tp.join(","):""
|
||||
formRef.value.validate((valid, fields) => {
|
||||
if (valid) {
|
||||
if (pageType.value == "add") {
|
||||
jcztbQwXfll(listQuery.value).then((res) => {
|
||||
jcztbQwXfll(promes).then((res) => {
|
||||
ElMessage({ message: "新增成功", type: "success" });
|
||||
emit("getjczgetXfllList");
|
||||
close();
|
||||
});
|
||||
} else {
|
||||
jcztbQwXfllUpdete(listQuery.value).then((res) => {
|
||||
jcztbQwXfllUpdete(promes).then((res) => {
|
||||
ElMessage({ message: "修改成功", type: "success" });
|
||||
emit("getjczgetXfllList");
|
||||
close();
|
||||
@ -257,17 +267,10 @@ const _onSave = () => {
|
||||
});
|
||||
console.log();
|
||||
};
|
||||
// 图片上传
|
||||
const imgUrl = ref();
|
||||
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
|
||||
const upImg = (row) => {
|
||||
listQuery.value.tp = row.data;
|
||||
imgUrl.value = urlImg.value + row.data;
|
||||
};
|
||||
|
||||
//页面关闭
|
||||
const close = () => {
|
||||
dialogForm.value = false;
|
||||
|
||||
listQuery.value = {};
|
||||
};
|
||||
// 表格高度计算
|
||||
@ -355,16 +358,15 @@ defineExpose({ init });
|
||||
max-height: 120px;
|
||||
}
|
||||
}
|
||||
// ::v-deep .el-upload {
|
||||
// width: 90px;
|
||||
// height: 100px;
|
||||
// border: 1px dashed #000000 !important;
|
||||
// margin-bottom: 14px;
|
||||
|
||||
::v-deep .el-upload {
|
||||
width: 90px;
|
||||
height: 100px;
|
||||
border: 1px dashed #000000 !important;
|
||||
margin-bottom: 14px;
|
||||
|
||||
.el-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
// .el-image {
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// }
|
||||
// }
|
||||
</style>
|
||||
|
@ -52,6 +52,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
import EditAddForm from "./components/editAddForm.vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { jczgetXfllList, jczdeleteList } from "@/api/mosty-jcz.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
const { proxy } = getCurrentInstance();
|
||||
@ -64,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_WHCD"
|
||||
);
|
||||
const searchConfiger = ref([
|
||||
const searchConfiger = ref([ {
|
||||
showType: "department",
|
||||
prop: "ssbmdm",
|
||||
placeholder: "请选择所属部门",
|
||||
label: "所属部门"
|
||||
},
|
||||
{
|
||||
label: "姓名",
|
||||
prop: "xm",
|
||||
@ -84,12 +90,7 @@ const searchConfiger = ref([
|
||||
showType: "select",
|
||||
options: D_BZ_SF
|
||||
},
|
||||
{
|
||||
showType: "department",
|
||||
prop: "ssbmdm",
|
||||
placeholder: "请选择所属部门",
|
||||
label: "所属部门"
|
||||
}
|
||||
|
||||
]);
|
||||
|
||||
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>
|
@ -2,7 +2,6 @@
|
||||
<div>
|
||||
<div class="titleBox">
|
||||
<PageTitle title="环林卡口管理">
|
||||
{{ Auth }}
|
||||
<el-button type="primary" @click="addEdit('add', '')" v-if="Auth">
|
||||
<el-icon style="vertical-align: middle">
|
||||
<CirclePlus />
|
||||
@ -33,6 +32,7 @@
|
||||
<template v-if="Auth">
|
||||
<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="perceptionAdd(row)">新增感知源</el-link>
|
||||
</template>
|
||||
|
||||
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
|
||||
@ -46,12 +46,14 @@
|
||||
<!-- 编辑详情 -->
|
||||
<EditAddForm ref="detailDiloag" :dict="{ D_BZ_JCZLX, D_BZ_ZQLX, D_BZ_DLLX, D_BZ_JCZJB }"
|
||||
@getjczgetXfllList="getjczgetXfllList" />
|
||||
<PerceptionSource ref="perceptionSource" @getjczgetXfllList="getjczgetXfllList"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ElMessage } from "element-plus";
|
||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||
import PerceptionSource from './components/perceptionSource.vue'
|
||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||
import Pages from "@/components/aboutTable/Pages.vue";
|
||||
import Search from "@/components/aboutTable/Search.vue";
|
||||
@ -201,6 +203,10 @@ const tabHeightFn = () => {
|
||||
tabHeightFn();
|
||||
};
|
||||
};
|
||||
const perceptionSource = ref()
|
||||
const perceptionAdd = (row) => {
|
||||
perceptionSource.value.init(row)
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
@ -74,7 +74,9 @@ import EditAddForm from "./components/editAddForm.vue";
|
||||
import { isAuth } from '@/utils/tools.js'
|
||||
import { WjwpselectPage, WjwpdeleteById } from "@/api/mosty-jcz.js";
|
||||
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
const urlImg = "/mosty-api/mosty-base/minio/image/download/";
|
||||
const { D_BZ_SBLX, D_BZ_SF, D_BZ_DWFL, D_BZ_GZSBLX } = proxy.$dict(
|
||||
"D_BZ_SBLX",
|
||||
|
@ -127,7 +127,14 @@ const getjczgetXfllList = () => {
|
||||
getjczgetXfllList();
|
||||
// 搜索
|
||||
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();
|
||||
};
|
||||
|
||||
|
@ -10,56 +10,125 @@
|
||||
<div class="cntinfo">
|
||||
<el-form ref="formRef" :model="listQuery" :rules="rules" :inline="true" label-position="top">
|
||||
<el-form-item prop="ssbmdm" label="所属部门">
|
||||
<MOSTY.Department :placeholder="listQuery.ssbm" style="width: 100%" ref="cascader" clearable filterable
|
||||
:props="props" v-model:modelValue="listQuery.ssbmdm" />
|
||||
<MOSTY.Department
|
||||
:placeholder="listQuery.ssbm"
|
||||
style="width: 100%"
|
||||
ref="cascader"
|
||||
clearable
|
||||
:disabled="forbidden"
|
||||
filterable
|
||||
:props="props"
|
||||
v-model:modelValue="listQuery.ssbmdm"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备编号" prop="qxbh">
|
||||
<el-input v-model="listQuery.qxbh" placeholder="请输入设备编号" clearable style="width: 100%" />
|
||||
<el-form-item label="器械编号" prop="qxbh">
|
||||
<el-input
|
||||
:disabled="forbidden"
|
||||
v-model="listQuery.qxbh"
|
||||
placeholder="请输入器械编号"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="装备类型" prop="qxlx">
|
||||
<el-select v-model="listQuery.qxlx" placeholder="请选择性别">
|
||||
<el-option v-for="item in dict.D_JCGL_JYQX_QXLX" :key="item" :label="item.zdmc"
|
||||
:value="item.dm"></el-option>
|
||||
<el-form-item label="器械类型" prop="qxlx">
|
||||
<el-select v-model="listQuery.qxlx" placeholder="请选择器械类型" :disabled="forbidden">
|
||||
<el-option
|
||||
v-for="item in dict.D_JCGL_JYQX_QXLX"
|
||||
:key="item"
|
||||
:label="item.zdmc"
|
||||
:value="item.dm"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="设备分类" prop="scode">
|
||||
<el-select v-model="listQuery.scode" placeholder="请选择设备分类">
|
||||
<el-option v-for="item in dict.D_BZ_JYQXFL" :key="item" :label="item.label" :value="item.dm"></el-option>
|
||||
<el-form-item label="器械分类" prop="scode">
|
||||
<el-select v-model="listQuery.scode" placeholder="请选择器械分类" :disabled="forbidden">
|
||||
<el-option
|
||||
v-for="item in dict.D_BZ_JYQXFL"
|
||||
:key="item"
|
||||
:label="item.label"
|
||||
:value="item.dm"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item prop="qxMc" label="装备名称">
|
||||
<el-input v-model="listQuery.qxMc" placeholder="请输入装备名称" clearable style="width: 100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="装备型号">
|
||||
<el-input v-model="listQuery.xh" placeholder="请输入装备型号" clearable style="width: 100%" />
|
||||
<el-form-item prop="qxMc" label="器械名称">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.qxMc"
|
||||
placeholder="请输入器械名称"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="器械型号">
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.xh"
|
||||
placeholder="请输入器械型号"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="sl">
|
||||
<el-input-number v-model="listQuery.sl" :step="1" :min="0" />
|
||||
<el-input-number v-model="listQuery.sl" :step="1" :min="0" :disabled="forbidden"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="计量单位" prop="jsdw">
|
||||
<el-input v-model="listQuery.jsdw" placeholder="请输入单位" clearable style="width: 100%" />
|
||||
<el-input :disabled="forbidden"
|
||||
v-model="listQuery.jsdw"
|
||||
placeholder="请输入单位"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="装备状态">
|
||||
<el-select clearable v-model="listQuery.zbzt" placeholder="请选择" style="width: 100%">
|
||||
<el-option v-for="(item, index) in dict.D_ZDY_SBZT" :key="index" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
<el-form-item label="器械状态">
|
||||
<el-select :disabled="forbidden"
|
||||
clearable
|
||||
v-model="listQuery.zbzt"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in dict.D_ZDY_SBZT"
|
||||
:key="index"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="装备厂商">
|
||||
<el-input v-model="listQuery.sccs" placeholder="请输入装备厂商" clearable style="width: 100%" />
|
||||
<el-form-item label="器械厂商">
|
||||
<el-input
|
||||
v-model="listQuery.sccs" :disabled="forbidden"
|
||||
placeholder="请输入器械厂商"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="cgrq" label="购置日期">
|
||||
<el-date-picker style="width: 100%" format="YYYY/MM/DD" value-format="YYYY-MM-DD" v-model="listQuery.cgrq"
|
||||
type="date" placeholder="请选择日期" />
|
||||
<el-date-picker :disabled="forbidden"
|
||||
style="width: 100%"
|
||||
format="YYYY/MM/DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
v-model="listQuery.cgrq"
|
||||
type="date"
|
||||
placeholder="请选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="dqsj" label="到期日期">
|
||||
<el-date-picker format="YYYY/MM/DD" value-format="YYYY-MM-DD" v-model="listQuery.dqsj" type="date"
|
||||
placeholder="请选择日期" style="width: 100%" />
|
||||
<el-date-picker :disabled="forbidden"
|
||||
format="YYYY/MM/DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
v-model="listQuery.dqsj"
|
||||
type="date"
|
||||
placeholder="请选择日期"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注" style="width: 100%">
|
||||
<el-input v-model="listQuery.bz" placeholder="请输入关键字" show-word-limit type="textarea" />
|
||||
<el-input
|
||||
v-model="listQuery.bz" :disabled="forbidden"
|
||||
placeholder="请输入备注"
|
||||
show-word-limit
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -94,7 +163,7 @@ const rules = reactive({
|
||||
], qxbh: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入设备编号",
|
||||
message: "请输入器械编号",
|
||||
trigger: "change"
|
||||
}
|
||||
],
|
||||
@ -125,7 +194,7 @@ const rules = reactive({
|
||||
], scode: [
|
||||
{
|
||||
required: true,
|
||||
message: "请选择设备分类",
|
||||
message: "请选择器械分类",
|
||||
trigger: "change"
|
||||
}
|
||||
],
|
||||
@ -160,14 +229,18 @@ const propsTree = ref({
|
||||
emitPath: false,
|
||||
multiple: false
|
||||
});
|
||||
const forbidden=ref(false)
|
||||
// 初始化数据
|
||||
const init = (type, row) => {
|
||||
pageType.value = type;
|
||||
dialogForm.value = true;
|
||||
// 根据type和row初始化表单数据
|
||||
tabHeightFn();
|
||||
if (type == "edit") {
|
||||
if (type == "edit"||type == "detail") {
|
||||
listQuery.value = { ...row };
|
||||
if (type == "detail") {
|
||||
forbidden.value=true
|
||||
}
|
||||
} else {
|
||||
listQuery.value = {};
|
||||
}
|
||||
|
@ -83,9 +83,9 @@ const searchConfiger = ref([
|
||||
label: "所属部门"
|
||||
},
|
||||
{
|
||||
label: "设备名称",
|
||||
prop: "sbmc",
|
||||
placeholder: "请输入设备名称",
|
||||
label: "器械名称",
|
||||
prop: "qxMc",
|
||||
placeholder: "请输入器械名称",
|
||||
showType: "input"
|
||||
}
|
||||
// {
|
||||
|
@ -50,7 +50,10 @@
|
||||
display: flex;
|
||||
margin-bottom: 10px;
|
||||
">
|
||||
<div style="position: relative; height: 100px">
|
||||
<div style=" width: 100%; ">
|
||||
<MOSTY.Upload width="100%" :limit="1" :isImg="true" v-model="addForm.tp" :disableds="forbidden"/>
|
||||
</div>
|
||||
<!-- <div style="position: relative; height: 100px">
|
||||
<el-upload class="avatar-uploader" action="/mosty-api/mosty-base/minio/image/upload/id" :on-success="upImg"
|
||||
:show-file-list="false">
|
||||
<el-image v-if="imgUrl" :src="imgUrl" fit="cover" />
|
||||
@ -63,7 +66,7 @@
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-upload>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<el-form-item label="民警姓名" prop="xm">
|
||||
<el-input v-model="addForm.xm" placeholder="请输入民警姓名" clearable style="width: 100%" />
|
||||
@ -156,7 +159,12 @@ const urlImg = ref("/mosty-api/mosty-base/minio/image/download/");
|
||||
const imgUrl = ref("");
|
||||
const dialogFormVisible = ref(false);
|
||||
const searchConfiger = ref([
|
||||
{
|
||||
{
|
||||
showType: "department",
|
||||
prop: "ssbmdm",
|
||||
placeholder: "请选择所属部门",
|
||||
label: "所属部门"
|
||||
},{
|
||||
label: "姓名",
|
||||
prop: "xm",
|
||||
placeholder: "请输入姓名",
|
||||
@ -168,19 +176,14 @@ const searchConfiger = ref([
|
||||
placeholder: "请输入证件号码",
|
||||
showType: "input"
|
||||
},
|
||||
{
|
||||
label: "是否离职",
|
||||
prop: "xtSjzt",
|
||||
placeholder: "是否离职",
|
||||
showType: "select",
|
||||
options: D_BZ_SF
|
||||
},
|
||||
{
|
||||
showType: "department",
|
||||
prop: "ssbmdm",
|
||||
placeholder: "请选择所属部门",
|
||||
label: "所属部门"
|
||||
}
|
||||
// {
|
||||
// label: "是否离职",
|
||||
// prop: "xtSjzt",
|
||||
// placeholder: "是否离职",
|
||||
// showType: "select",
|
||||
// options: D_BZ_SF
|
||||
// },
|
||||
|
||||
]);
|
||||
const elform = ref(null)
|
||||
const detailDiloag = ref();
|
||||
|
@ -86,7 +86,8 @@ const searchConfiger = ref([
|
||||
label: "车辆品牌",
|
||||
prop: "clpp",
|
||||
placeholder: "请输入车辆品牌",
|
||||
showType: "input"
|
||||
showType: "select",
|
||||
options: D_BZ_CLPP
|
||||
}
|
||||
]);
|
||||
|
||||
|
@ -19,12 +19,12 @@
|
||||
<span class="tag">{{ item.yjBt }}</span>
|
||||
</div>
|
||||
<div class="info-item flex">
|
||||
<span class="label">性别:</span>
|
||||
<dict-tag
|
||||
<span class="label">性别:{{ IdCard(item.yjRysfzh, 'all').sex }}</span>
|
||||
<!-- <dict-tag
|
||||
:options="D_BZ_XB"
|
||||
:value="IdCard(item.yjRysfzh, 3)"
|
||||
:value="IdCard(item.yjRysfzh, 'all').sex"
|
||||
:tag="false"
|
||||
></dict-tag>
|
||||
></dict-tag> -->
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">相似度:</span>
|
||||
|
@ -15,7 +15,7 @@
|
||||
</div>
|
||||
<div class="leftMag">
|
||||
<div class="ld">值班领导</div>
|
||||
<div class="name">{{ BbMag.fzrXm }}</div>
|
||||
<div class="name">{{ BbMag?.fzrXm }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex">
|
||||
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="leftMag">
|
||||
<div class="ld">联系电话</div>
|
||||
<div class="name">{{ BbMag.fzrLxdh }}</div>
|
||||
<div class="name">{{ BbMag?.fzrLxdh }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dutyList flex just-between align-center">
|
||||
@ -32,7 +32,7 @@
|
||||
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
|
||||
</div>
|
||||
<div class="occupation">
|
||||
值班民警:<span class="number">{{ BbMag.ryList.length }}</span>
|
||||
值班民警:<span class="number">{{ BbMag?.ryList.length }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dutyList flex just-between align-center">
|
||||
@ -40,7 +40,7 @@
|
||||
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
|
||||
</div>
|
||||
<div class="occupation">
|
||||
值班武警:<span class="number">{{ BbMag.ryList.length }}</span>
|
||||
值班武警:<span class="number">{{ BbMag?.ryList.length }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dutyList flex just-between align-center">
|
||||
@ -48,7 +48,7 @@
|
||||
<img src="@/assets/images/tc/zbfj.png" alt="" srcset="" />
|
||||
</div>
|
||||
<div class="occupation">
|
||||
值班民警:<span class="number">{{ BbMag.ryList.length }}</span>
|
||||
值班民警:<span class="number">{{ BbMag?.ryList.length }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -21,14 +21,13 @@ const vehicleChartRef = ref(null);
|
||||
const personChartRef = ref(null);
|
||||
let vehicleChart = null;
|
||||
let personChart = null;
|
||||
|
||||
const createChartOption = (data, colors) => {
|
||||
const createChartOption = (data, colors, total) => {
|
||||
return {
|
||||
title: {
|
||||
text: "100",
|
||||
text: `${total}`,
|
||||
subtext: "总数",
|
||||
left: "20%",
|
||||
top: "center",
|
||||
left: 'center',
|
||||
top: 'center', //top待调整
|
||||
textStyle: {
|
||||
color: "#fff",
|
||||
fontSize: 24,
|
||||
@ -43,9 +42,9 @@ const createChartOption = (data, colors) => {
|
||||
trigger: "item"
|
||||
},
|
||||
legend: {
|
||||
orient: "vertical",
|
||||
left: "60%",
|
||||
top: "center",
|
||||
orient: "horizontal",
|
||||
top: 0,
|
||||
bottom: '50px',
|
||||
textStyle: {
|
||||
color: "#fff",
|
||||
rich: {
|
||||
@ -71,14 +70,14 @@ const createChartOption = (data, colors) => {
|
||||
},
|
||||
formatter: (name) => {
|
||||
const item = data.find((d) => d.name === name);
|
||||
return `${name} ${item.value} {${item.colorType}|(${item.value}%)}`;
|
||||
return `${name} ${item.value}`;
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: "pie",
|
||||
radius: ["55%", "70%"],
|
||||
center: ["28%", "50%"],
|
||||
center: ["50%", "55%"],
|
||||
data: data.map((item) => ({
|
||||
...item,
|
||||
itemStyle: {
|
||||
@ -100,7 +99,7 @@ const createChartOption = (data, colors) => {
|
||||
{
|
||||
type: "pie",
|
||||
radius: ["65%", "85%"],
|
||||
center: ["28%", "50%"],
|
||||
center: ["50%", "55%"],
|
||||
data: data.map((item) => ({
|
||||
...item,
|
||||
itemStyle: {
|
||||
@ -128,13 +127,20 @@ const randomHexColor = () => {
|
||||
};
|
||||
|
||||
const initCharts = async () => {
|
||||
let clTotal = 0;
|
||||
let ryTotal = 0;
|
||||
vehicleChart = echarts.init(vehicleChartRef.value);
|
||||
personChart = echarts.init(personChartRef.value);
|
||||
const colors = ["#00f0ff", "#0066ff", "#ff9900", "#00cc66"];
|
||||
// 车辆预警数据
|
||||
const res = await jczgetYjbqtj({ yjLx: 1 });
|
||||
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 color = 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 color = randomHexColor();
|
||||
@ -220,8 +195,8 @@ const initCharts = async () => {
|
||||
// color1: [choseRbgb("#00cc66", 0.3), choseRbgb("#009944", 0.3)]
|
||||
// }
|
||||
// ];
|
||||
vehicleChart.setOption(createChartOption(vehicleData, colors));
|
||||
personChart.setOption(createChartOption(personData, colors));
|
||||
vehicleChart.setOption(createChartOption(vehicleData, colors, ryTotal));
|
||||
personChart.setOption(createChartOption(personData, colors, clTotal));
|
||||
};
|
||||
|
||||
const handleResize = () => {
|
||||
@ -253,7 +228,7 @@ onUnmounted(() => {
|
||||
|
||||
.section-title {
|
||||
font-size: 18px;
|
||||
margin-bottom: 20px;
|
||||
// margin-bottom: 20px;
|
||||
position: relative;
|
||||
padding-left: 12px;
|
||||
background: linear-gradient(0deg, #59a6f4 0%, #ffffff 90%);
|
||||
|
@ -49,13 +49,13 @@
|
||||
import GdMap from "@/components/GdMap/index.vue";
|
||||
import Head from "./layout/head.vue";
|
||||
import Collection from "./components/collection.vue";
|
||||
// import Warning from "./components/warning.vue";
|
||||
import CarWarning from "./components/CarWarning.vue";
|
||||
import PeoWarning from "./components/PeoWarning.vue";
|
||||
import BeOnDuty from "./components/beonDuty.vue";
|
||||
import Entrance from "./components/entrance.vue";
|
||||
import WanringAnyse from "./components/wanringAnyse.vue";
|
||||
import { jczgetJczList } from "@/api/mosty-jcz";
|
||||
import {ysSxtGetList} from '@/api/yszx.js'
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
|
||||
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>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@ -146,4 +157,5 @@ onMounted(() => {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -5,14 +5,14 @@
|
||||
<div class="f18 pl104">{{ hour + ":" + minute + ":" + second }}</div>
|
||||
</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>
|
||||
<span> 温度 1~7°C </span>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="zbbb" v-if="query" @click="show = true">值班报备</div>
|
||||
</div>
|
||||
<el-dialog v-model="show" title="Shipping address">
|
||||
<div style="height: 50vh; overflow: auto">
|
||||
<div style="height: 50vh; overflow: auto" v-if="show">
|
||||
<zbbb
|
||||
:row="row"
|
||||
@close="close"
|
||||
|
@ -1,6 +1,4 @@
|
||||
<template>
|
||||
<div></div>
|
||||
|
||||
<div class="cntinfo">
|
||||
<div class="flex align-center just-between box">
|
||||
<div class="flex align-center">
|
||||
@ -12,7 +10,7 @@
|
||||
/>
|
||||
</div>
|
||||
<!-- 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>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
@ -21,7 +19,7 @@
|
||||
:inline="true"
|
||||
:rules="rules"
|
||||
>
|
||||
<div class="bblxItem">
|
||||
<!-- <div class="bblxItem">
|
||||
<div class="btItem">环林卡口设置</div>
|
||||
<div class="info">
|
||||
<el-form-item>
|
||||
@ -47,11 +45,11 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="bblxItem">
|
||||
<div class="btItem">班次设置</div>
|
||||
<div class="info">
|
||||
<el-form-item prop="kssj">
|
||||
<el-form-item prop="bcKssj" label=" ">
|
||||
<el-time-picker
|
||||
v-model="listQuery.bcKssj"
|
||||
:disabled="isDetail"
|
||||
@ -60,7 +58,7 @@
|
||||
value-format="HH:mm:ss"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="bcKts">
|
||||
<el-form-item prop="bcKtsDict" label=" ">
|
||||
<el-select
|
||||
clearable
|
||||
v-model="listQuery.bcKtsDict"
|
||||
@ -75,7 +73,7 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="jssj">
|
||||
<el-form-item prop="bcJssj" label=" ">
|
||||
<el-time-picker
|
||||
v-model="listQuery.bcJssj"
|
||||
:disabled="isDetail"
|
||||
@ -103,7 +101,7 @@
|
||||
:dic="props.dic"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="fzrXm">
|
||||
<el-form-item prop="fzrXm" label=" ">
|
||||
<el-input
|
||||
readonly
|
||||
v-model="listQuery.fzrXm"
|
||||
@ -111,7 +109,7 @@
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="fzrSfzh">
|
||||
<el-form-item prop="fzrSfzh" label=" ">
|
||||
<el-input
|
||||
readonly
|
||||
v-model="listQuery.fzrSfzh"
|
||||
@ -119,7 +117,7 @@
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="fzrLxdh">
|
||||
<el-form-item prop="fzrLxdh" label=" ">
|
||||
<el-input
|
||||
readonly
|
||||
v-model="listQuery.fzrLxdh"
|
||||
@ -307,10 +305,13 @@
|
||||
<script setup>
|
||||
import { ref, reactive, getCurrentInstance, onMounted, watch } from "vue";
|
||||
import * as MOSTY from "@/components/MyComponents/index";
|
||||
import { jczqueryById } from "@/api/mosty-jcz";
|
||||
import { jczsavel, Xfbbupdate } from "@/api/mosty-jcz.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import ChooseTable from "@/components/chooseList/chooseTable.vue";
|
||||
import { timeValidate } from "@/utils/tools.js";
|
||||
import { useRoute } from "vue-router";
|
||||
import emitter from "@/utils/eventBus.js";
|
||||
const { proxy } = getCurrentInstance();
|
||||
// const { D_BZ_JYQXFL } = proxy.$dict("D_BZ_JYQXFL");
|
||||
const props = defineProps({
|
||||
@ -324,7 +325,7 @@ const props = defineProps({
|
||||
},
|
||||
row: { type: Object, default: () => {} }
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
const emit = defineEmits(["close"]);
|
||||
const formRef = ref(null);
|
||||
const dialogForm = ref(false);
|
||||
@ -371,6 +372,7 @@ const fz = (val) => {
|
||||
});
|
||||
return data;
|
||||
};
|
||||
|
||||
// 初始化数据
|
||||
const init = (type) => {
|
||||
pageType.value = type;
|
||||
@ -392,7 +394,6 @@ const init = (type) => {
|
||||
}
|
||||
} else {
|
||||
pageType.value = "add";
|
||||
|
||||
listQuery.value.qxList = props.dic.D_BZ_JYQXFL.map((item) => {
|
||||
return { qxmc: item.label, qxsl: 0 };
|
||||
});
|
||||
@ -405,22 +406,52 @@ watch(
|
||||
},
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
const routerList=ref({})
|
||||
onMounted(() => {
|
||||
init();
|
||||
console.log(route.query );
|
||||
|
||||
routerList.value=route.query
|
||||
});
|
||||
// 验证规则
|
||||
const rules = ref({
|
||||
spbt: [
|
||||
bcKtsDict: [
|
||||
{
|
||||
required: true,
|
||||
message: "请输入标题",
|
||||
message: "请选择班次",
|
||||
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 = () => {
|
||||
formRef.value.validate().then( async() => {
|
||||
const data = [...mjData.value, ...fjData.value];
|
||||
|
||||
listQuery.value.ryList = ChegeMj(data);
|
||||
@ -432,35 +463,61 @@ const _onSave = () => {
|
||||
break;
|
||||
case "02":
|
||||
listQuery.value.bcKts = 2;
|
||||
break;
|
||||
case "03":
|
||||
listQuery.value.bcKts = 4;
|
||||
break;
|
||||
case "04":
|
||||
listQuery.value.bcKts = 5;
|
||||
break;
|
||||
case "05":
|
||||
listQuery.value.bcKts = 6;
|
||||
break;
|
||||
case "06":
|
||||
listQuery.value.bcKts = 7;
|
||||
break;
|
||||
case "07":
|
||||
listQuery.value.bcKts = 8;
|
||||
break;
|
||||
}
|
||||
if (listQuery.value.jczList) {
|
||||
listQuery.value.jczid = listQuery.value.jczList.id;
|
||||
listQuery.value.jczmc = listQuery.value.jczList.jczmc;
|
||||
}
|
||||
|
||||
listQuery.value.jczid = routerList.value.id?routerList.value.id:"";
|
||||
listQuery.value.jczmc = routerList.value.name?routerList.value.name:"";
|
||||
if (pageType.value == "add") {
|
||||
jczsavel(listQuery.value).then((res) => {
|
||||
ElMessage({ message: "新增成功", type: "success" });
|
||||
getjczqueryById()
|
||||
emit("close");
|
||||
}).finally(()=>{
|
||||
loding.value=false
|
||||
});
|
||||
} else {
|
||||
Xfbbupdate(listQuery.value).then((res) => {
|
||||
ElMessage({ message: "修改成功", type: "success" });
|
||||
getjczqueryById()
|
||||
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 = () => {
|
||||
dialogForm.value = false;
|
||||
@ -617,4 +674,7 @@ const changeJCZ = (val) => {
|
||||
.box {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
::v-deep .el-form-item__label{
|
||||
padding: 0;
|
||||
}
|
||||
</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"
|
||||
module.exports = {
|
||||
publicPath: "./",
|
||||
outputDir: "ylth",
|
||||
outputDir: "jcz",
|
||||
assetsDir: "static",
|
||||
lintOnSave: false, //process.env.NODE_ENV === 'development',
|
||||
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.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user