diff --git a/package.json b/package.json index a7b66b86..3d57cb90 100644 --- a/package.json +++ b/package.json @@ -1,106 +1,106 @@ { - "name": "zhgdyun", - "version": "0.1.0", - "private": true, - "scripts": { - "start": "npm run dev", - "dev": "vue-cli-service serve", - "build": "vue-cli-service build" - }, - "dependencies": { - "@microsoft/fetch-event-source": "^2.0.1", - "@turf/turf": "^7.1.0", - "axios": "^0.19.2", - "better-scroll": "^2.4.1", - "copy-webpack-plugin": "^6.3.2", - "core-js": "^3.6.5", - "crypto-js": "^4.2.0", - "css-declaration-sorter": "^6.3.1", - "dhtmlx-gantt": "^7.1.13", - "dom-to-image": "^2.6.0", - "dompurify": "^3.2.5", - "echarts": "^5.6.0", - "echarts4": "npm:echarts@^4.8.0", - "element-ui": "^2.13.2", - "ezuikit-js": "^7.7.8", - "fabric": "^3.6.3", - "flv.js": "^1.6.2", - "gantt-elastic": "^1.0.12", - "github-markdown-css": "^5.8.1", - "h5player": "^2.0.0", - "hls.js": "^1.4.3", - "html-entities": "^2.5.2", - "html2canvas": "^1.0.0-rc.7", - "jquery": "^3.6.3", - "jquery-ui-dist": "^1.13.2", - "js-base64": "^3.7.2", - "js-file-download": "^0.4.12", - "js-md5": "^0.7.3", - "konva": "^9.3.20", - "lrz": "^4.9.41", - "markdown-it": "^12.1.0", - "mars3d": "^3.3.4", - "mars3d-cesium": "^1.121.1", - "mitt": "^3.0.1", - "moment": "^2.29.1", - "monitorjs_horse": "^2.2.1", - "mqtt": "^4.2.6", - "node-polyfill-webpack-plugin": "^2.0.1", - "node-rsa": "^1.1.1", - "postcss-normalize-string": "^5.1.0", - "prismjs": "^1.30.0", - "qrcodejs2": "0.0.2", - "react": "^17.0.2", - "sortablejs": "^1.15.6", - "spark-md5": "^3.0.1", - "style-resources-loader": "^1.3.3", - "stylus-loader": "^3.0.2", - "swiper": "^5.4.5", - "turf": "^3.0.14", - "typed.js": "^2.1.0", - "vconsole": "^3.15.1", - "videojs-contrib-hls": "^5.15.0", - "vue": "^2.6.11", - "vue-awesome-swiper": "^4.1.1", - "vue-color": "^2.8.1", - "vue-count-to": "^1.0.13", - "vue-cropper": "^0.5.5", - "vue-esign": "^1.1.4", - "vue-matomo": "^4.1.0", - "vue-monoplasty-slide-verify": "^1.3.1", - "vue-photo-preview": "^1.1.3", - "vue-quill-editor": "^3.0.6", - "vue-router": "^3.2.0", - "vue-seamless-scroll": "^1.1.23", - "vue-simple-uploader": "^0.7.6", - "vue2-scale-box": "^0.1.7", - "vuedraggable": "^2.24.3", - "vuescroll": "^4.16.1", - "vuex": "^3.4.0", - "vuex-persistedstate": "^3.1.0", - "xhl-mqttx": "^1.0.4" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "~4.4.0", - "@vue/cli-plugin-router": "~4.4.0", - "@vue/cli-plugin-vuex": "~4.4.0", - "@vue/cli-service": "~4.4.0", - "compression-webpack-plugin": "^5.0.2", - "file-loader": "^6.2.0", - "less": "^3.0.4", - "less-loader": "^5.0.0", - "sass": "^1.75.0", - "sass-loader": "^7.3.1", - "stylus": "^0.54.8", - "terser-webpack-plugin": "^4.2.3", - "url-loader": "^4.1.1", - "vue-cli-plugin-element": "~1.0.1", - "vue-i18n": "^8.21.0", - "vue-template-compiler": "^2.6.11" - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead" - ] + "name": "zhgdyun", + "version": "0.1.0", + "private": true, + "scripts": { + "start": "npm run dev", + "dev": "vue-cli-service serve", + "build": "vue-cli-service build" + }, + "dependencies": { + "@microsoft/fetch-event-source": "^2.0.1", + "@turf/turf": "^7.1.0", + "axios": "^0.19.2", + "better-scroll": "^2.4.1", + "copy-webpack-plugin": "^6.3.2", + "core-js": "^3.6.5", + "crypto-js": "^4.2.0", + "css-declaration-sorter": "^6.3.1", + "dhtmlx-gantt": "^7.1.13", + "dom-to-image": "^2.6.0", + "dompurify": "^3.2.5", + "echarts": "^6.0.0", + "echarts4": "npm:echarts@^4.8.0", + "element-ui": "^2.13.2", + "ezuikit-js": "^7.7.8", + "fabric": "^3.6.3", + "flv.js": "^1.6.2", + "gantt-elastic": "^1.0.12", + "github-markdown-css": "^5.8.1", + "h5player": "^2.0.0", + "hls.js": "^1.4.3", + "html-entities": "^2.5.2", + "html2canvas": "^1.0.0-rc.7", + "jquery": "^3.6.3", + "jquery-ui-dist": "^1.13.2", + "js-base64": "^3.7.2", + "js-file-download": "^0.4.12", + "js-md5": "^0.7.3", + "konva": "^9.3.20", + "lrz": "^4.9.41", + "markdown-it": "^12.1.0", + "mars3d": "^3.3.4", + "mars3d-cesium": "^1.121.1", + "mitt": "^3.0.1", + "moment": "^2.29.1", + "monitorjs_horse": "^2.2.1", + "mqtt": "^4.2.6", + "node-polyfill-webpack-plugin": "^2.0.1", + "node-rsa": "^1.1.1", + "postcss-normalize-string": "^5.1.0", + "prismjs": "^1.30.0", + "qrcodejs2": "0.0.2", + "react": "^17.0.2", + "sortablejs": "^1.15.6", + "spark-md5": "^3.0.1", + "style-resources-loader": "^1.3.3", + "stylus-loader": "^3.0.2", + "swiper": "^5.4.5", + "turf": "^3.0.14", + "typed.js": "^2.1.0", + "vconsole": "^3.15.1", + "videojs-contrib-hls": "^5.15.0", + "vue": "^2.6.11", + "vue-awesome-swiper": "^4.1.1", + "vue-color": "^2.8.1", + "vue-count-to": "^1.0.13", + "vue-cropper": "^0.5.5", + "vue-esign": "^1.1.4", + "vue-matomo": "^4.1.0", + "vue-monoplasty-slide-verify": "^1.3.1", + "vue-photo-preview": "^1.1.3", + "vue-quill-editor": "^3.0.6", + "vue-router": "^3.2.0", + "vue-seamless-scroll": "^1.1.23", + "vue-simple-uploader": "^0.7.6", + "vue2-scale-box": "^0.1.7", + "vuedraggable": "^2.24.3", + "vuescroll": "^4.16.1", + "vuex": "^3.4.0", + "vuex-persistedstate": "^3.1.0", + "xhl-mqttx": "^1.0.4" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.4.0", + "@vue/cli-plugin-router": "~4.4.0", + "@vue/cli-plugin-vuex": "~4.4.0", + "@vue/cli-service": "~4.4.0", + "compression-webpack-plugin": "^5.0.2", + "file-loader": "^6.2.0", + "less": "^3.0.4", + "less-loader": "^5.0.0", + "sass": "^1.75.0", + "sass-loader": "^7.3.1", + "stylus": "^0.54.8", + "terser-webpack-plugin": "^4.2.3", + "url-loader": "^4.1.1", + "vue-cli-plugin-element": "~1.0.1", + "vue-i18n": "^8.21.0", + "vue-template-compiler": "^2.6.11" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] } diff --git a/src/assets/js/api/laborPerson.js b/src/assets/js/api/laborPerson.js index 19b0017c..709c2a07 100644 --- a/src/assets/js/api/laborPerson.js +++ b/src/assets/js/api/laborPerson.js @@ -35,7 +35,7 @@ export const regionViolationPageApi = data => post('xmgl/regionViolation/page', // 批量人员绑定设备 export const batchBindDevForWorkersApi = data => post('xmgl/workerInfo/batchBindDevForWorkers', data); //批量绑定设备 - +export const batchCancelDevForWorkersApi = data => post('/xmgl/workerApi/deleteFaceAuth', data); //批量取消绑定设备 //详情 @@ -300,6 +300,8 @@ export const checkfaceHikvisionApi = data => post('xmgl/recognition/checkFace', //人员管理批量删除 export const onBatchDeletionApi = data => post('xmgl/workerInfo/deleteBatch', data); +// 人员管理批量进场 +export const onBatchEntryApi = data => post('xmgl/workerInfo/batchEntry', data); // 分页列表查询人员考勤组信息 export const getWorkerAttendanceGroupV2PageApi = data => get('/xmgl/workerAttendanceGroupV2/page', data); diff --git a/src/views/projectFront/laborManage/personModule/administration.vue b/src/views/projectFront/laborManage/personModule/administration.vue index 61254392..b3c19515 100644 --- a/src/views/projectFront/laborManage/personModule/administration.vue +++ b/src/views/projectFront/laborManage/personModule/administration.vue @@ -359,12 +359,26 @@ menuPath: '/project/labor/personManage', }" size="medium" - @click="passEquipment()" + @click="onBatchBinddevice()" type="primary" style="margin-left: 5px" :disabled="checkedWorker.length <= 0" >下发通行设备 + 取消设备授权 + - 重试 - + --> @@ -2314,6 +2367,8 @@ import { xmglXzHikvisionSyncRetryAPI, checkfaceHikvisionApi, getWorkerAttendanceGroupV2ListApi, + batchBindDevForWorkersApi, + batchCancelDevForWorkersApi } from "@/assets/js/api/laborPerson"; import { selectUserDevAuthorityByUserIdApi } from "@/assets/js/api/configManage"; import { getProjectConfigListApi } from "@/assets/js/api/project.js"; @@ -2545,6 +2600,34 @@ export default { userId: "", workerNatureList: [], workerAttendanceGroupList: [], + batchCancelBindDialog: false, + batchCancelBindForm: { + ufaceDevId: [], + }, + batchCancelBindRules: { + ufaceDevId: [ + { + type: "array", + required: true, + message: "请选择设备", + trigger: "change", + }, + ], + }, + batchBindDialog: false, + batchBindForm: { + ufaceDevId: [], + }, + batchBindRules: { + ufaceDevId: [ + { + type: "array", + required: true, + message: "请选择设备", + trigger: "change", + }, + ], + }, }; }, created() { @@ -2605,6 +2688,79 @@ export default { }, }, methods: { + onBatchBindSubmit() { + this.$refs["batchBindForm"].validate((valid) => { + if (valid) { + let requestData = { + projectSn: this.projectSn, + personType: "1", + userId: this.$store.state.userInfo.userId, + ufaceDevId: this.batchBindForm.ufaceDevId.join(","), + enterpriseId: this.checkedId, + }; + if (this.checkedWorker.length > 0) { + // const ids = this.checkedWorker.map((item) => item.id).join(","); + // requestData.workerIds = ids; + const ids = this.checkedWorker.map((item) => item.id) + requestData.workerIdList = ids; + } + batchBindDevForWorkersApi(requestData).then((res) => { + if (res.code == 200) { + this.$message({ + message: "操作成功,已在后台下发,请稍后查看!", + type: "success", + }); + this.batchBindDialog = false; + } + }); + } + }); + }, + onBatchBinddevice() { + if (this.checkedWorker.length == 0) { + this.$message.warning("请选择需要批量绑定的数据!"); + return; + } + this.batchBindForm.ufaceDevId = []; + this.batchBindDialog = true; + // const ids = this.checkedWorker.map((item) => item.id).join(","); + }, + onBatchCancelDevice() { + if (this.checkedWorker.length == 0) { + this.$message.warning("请选择需要批量取消授权的数据!"); + return; + } + this.batchCancelBindForm.ufaceDevId = []; + this.batchCancelBindDialog = true; + // const ids = this.checkedWorker.map((item) => item.id).join(","); + }, + onBatchCancelBindSubmit() { + this.$refs["batchCancelBindForm"].validate((valid) => { + if (valid) { + let requestData = { + projectSn: this.projectSn, + personType: "1", + userId: this.$store.state.userInfo.userId, + ufaceDevIds: this.batchCancelBindForm.ufaceDevId.join(","), + enterpriseId: this.checkedId, + }; + if (this.checkedWorker.length > 0) { + const ids = this.checkedWorker.map((item) => item.id).join(","); + requestData.workerIdStr = ids; + } + batchCancelDevForWorkersApi(requestData).then((res) => { + if (res.code == 200) { + this.$message({ + message: "操作成功", + type: "success", + }); + this.batchCancelBindDialog = false; + this.getTableData(); + } + }); + } + }); + }, getWorkerAttendanceGroupV2List() { getWorkerAttendanceGroupV2ListApi({ projectSn: this.$store.state.projectSn, @@ -3070,6 +3226,7 @@ export default { if (result.result) { this.isUploadToHouse = result.result.housing ? true : false; this.isIscDevice = + result.result.supplierType == 11 || result.result.supplierType == 10 || result.result.supplierType == 9 || result.result.supplierType == 8 diff --git a/src/views/projectFront/laborManage/personModule/laborComponent.vue b/src/views/projectFront/laborManage/personModule/laborComponent.vue index ab16f3ad..98ef72c8 100644 --- a/src/views/projectFront/laborManage/personModule/laborComponent.vue +++ b/src/views/projectFront/laborManage/personModule/laborComponent.vue @@ -319,13 +319,14 @@ key: 'rygl_distributeAccessEquipment', menuPath: '/project/labor/personManage', }" + @click="onBatchBinddevice()" size="medium" - @click="passEquipment()" type="primary" style="margin-left: 5px" :disabled="checkedWorker.length <= 0" >下发通行设备 + 批量删除 + + @@ -2534,6 +2545,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2574,7 +2624,10 @@ import { getDangongWorkerFaceStatusPageList, checkfaceHikvisionApi, onBatchDeletionApi, - getWorkerAttendanceGroupV2ListApi + getWorkerAttendanceGroupV2ListApi, + onBatchEntryApi, + batchBindDevForWorkersApi, + batchCancelDevForWorkersApi } from "@/assets/js/api/laborPerson"; import { selectUserDevAuthorityByUserIdApi, @@ -2850,6 +2903,34 @@ export default { userId: "", workerNatureList: [], workerAttendanceGroupList: [], + batchCancelBindDialog: false, + batchCancelBindForm: { + ufaceDevId: [], + }, + batchCancelBindRules: { + ufaceDevId: [ + { + type: "array", + required: true, + message: "请选择设备", + trigger: "change", + }, + ], + }, + batchBindDialog: false, + batchBindForm: { + ufaceDevId: [], + }, + batchBindRules: { + ufaceDevId: [ + { + type: "array", + required: true, + message: "请选择设备", + trigger: "change", + }, + ], + }, }; }, created() { @@ -2909,6 +2990,79 @@ export default { }, }, methods: { + onBatchBindSubmit() { + this.$refs["batchBindForm"].validate((valid) => { + if (valid) { + let requestData = { + projectSn: this.projectSn, + personType: "1", + userId: this.$store.state.userInfo.userId, + ufaceDevId: this.batchBindForm.ufaceDevId.join(","), + enterpriseId: this.checkedId, + }; + if (this.checkedWorker.length > 0) { + // const ids = this.checkedWorker.map((item) => item.id).join(","); + // requestData.workerIds = ids; + const ids = this.checkedWorker.map((item) => item.id) + requestData.workerIdList = ids; + } + batchBindDevForWorkersApi(requestData).then((res) => { + if (res.code == 200) { + this.$message({ + message: "操作成功,已在后台下发,请稍后查看!", + type: "success", + }); + this.batchBindDialog = false; + } + }); + } + }); + }, + onBatchBinddevice() { + if (this.checkedWorker.length == 0) { + this.$message.warning("请选择需要批量绑定的数据!"); + return; + } + this.batchBindForm.ufaceDevId = []; + this.batchBindDialog = true; + // const ids = this.checkedWorker.map((item) => item.id).join(","); + }, + onBatchCancelDevice() { + if (this.checkedWorker.length == 0) { + this.$message.warning("请选择需要批量取消授权的数据!"); + return; + } + this.batchCancelBindForm.ufaceDevId = []; + this.batchCancelBindDialog = true; + // const ids = this.checkedWorker.map((item) => item.id).join(","); + }, + onBatchCancelBindSubmit() { + this.$refs["batchCancelBindForm"].validate((valid) => { + if (valid) { + let requestData = { + projectSn: this.projectSn, + personType: "1", + userId: this.$store.state.userInfo.userId, + ufaceDevIds: this.batchCancelBindForm.ufaceDevId.join(","), + enterpriseId: this.checkedId, + }; + if (this.checkedWorker.length > 0) { + const ids = this.checkedWorker.map((item) => item.id).join(","); + requestData.workerIdStr = ids; + } + batchCancelDevForWorkersApi(requestData).then((res) => { + if (res.code == 200) { + this.$message({ + message: "操作成功", + type: "success", + }); + this.batchCancelBindDialog = false; + this.getTableData(); + } + }); + } + }); + }, getWorkerAttendanceGroupV2List() { getWorkerAttendanceGroupV2ListApi({ projectSn: this.$store.state.projectSn, @@ -3093,6 +3247,48 @@ export default { // 全选按钮值切换 this.$refs.multipleTable.toggleAllSelection(); }, + // 批量进场 + onBatchEntry() { + if (this.checkedWorker.length == 0) { + this.$message.warning("请选择需要进场的数据!"); + return; + } + + this.$confirm("此操作将批量进场该数据, 是否继续?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + let data = { + ids: this.checkedWorker.map((item) => item.id).join(","), + projectSn: this.projectSn, + }; + onBatchEntryApi(data).then((res) => { + if (res.code == 200) { + this.$message({ + type: "success", + message: "批量进场成功!", + }); + // this.page = + // this.page > 1 && this.tableListData.length == 1 + // ? this.page - 1 + // : this.page; + this.getTeamList(1); + let tempArr = []; + this.checkedWorker = tempArr; + this.$refs.multipleTable.clearSelection(); + console.log("this.checkedWorker", this.checkedWorker); + } + }); + }) + .catch(() => { + this.$message({ + type: "info", + message: "已取消批量进场", + }); + }); + }, // 批量删除 onBatchDeletion() { if (this.checkedWorker.length == 0) { @@ -3366,6 +3562,7 @@ export default { if (result.result) { this.isUploadToHouse = result.result.housing ? true : false; this.isIscDevice = + result.result.supplierType == 11 || result.result.supplierType == 10 || result.result.supplierType == 9 || result.result.supplierType == 8 diff --git a/src/views/projectFront/laborManage/rosterNew.vue b/src/views/projectFront/laborManage/rosterNew.vue index ca6a1a09..8fbedc24 100644 --- a/src/views/projectFront/laborManage/rosterNew.vue +++ b/src/views/projectFront/laborManage/rosterNew.vue @@ -1026,7 +1026,7 @@ export default { }).then((result) => { if (result.success) { if (result.result) { - this.isIscDevice = result.result.supplierType == 9 ? true : false; + this.isIscDevice = [9, 11].includes(result.result.supplierType) ? true : false; this.isDangong = result.result.supplierType == 8 ? true : false; } }