diff --git a/.env.production b/.env.production index 772274e..11d9e2e 100644 --- a/.env.production +++ b/.env.production @@ -3,8 +3,8 @@ NODE_ENV = "production" # 线上环境接口地址(easymock) # VITE_API_URL = "http://139.9.66.234:6688" -# VITE_API_URL = "http://182.90.224.147:6688" -VITE_API_URL = "http://101.43.164.214:6688" +VITE_API_URL = "http://182.90.224.147:6688" +# VITE_API_URL = "http://101.43.164.214:6688" # 打包 VITE_ULD_API_URL = 'http://182.90.224.147:8012/onlinePreview?url=' diff --git a/src/api/modules/common.ts b/src/api/modules/common.ts index bc748b1..08df82a 100644 --- a/src/api/modules/common.ts +++ b/src/api/modules/common.ts @@ -58,6 +58,10 @@ export const getpreviewURLS = (params: { cameraIndexCode: string | null }) => { export const getmanualCaptureL = (params: {}) => { return http.post(BASEURL + `/xmgl/video/manualCapture`, params); }; +// 海康视频配置信息 +export const getConfigInfo = (params: {}) => { + return http.get(BASEURL + `/xmgl/video/getConfig`, params); +}; // 通知公告!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // 新建通知 diff --git a/src/api/modules/project.ts b/src/api/modules/project.ts index a130cbb..70f2d22 100644 --- a/src/api/modules/project.ts +++ b/src/api/modules/project.ts @@ -334,3 +334,13 @@ export const addMember = (params: FormData) => { export const getMemberList = (params: FormData) => { return http.post(BASEURL + `/project/workerInfo/page`, params); }; + +// 人员管理详情 +export const memberInfo = (params: any) => { + return http.post(BASEURL + `/project/workerInfo/queryById`, params); +}; + +// 人员管理编辑 +export const updateMember = (params: any) => { + return http.post(BASEURL + `/project/workerInfo/edit`, params); +}; diff --git a/src/assets/images/dialogIcon/tipIcon.png b/src/assets/images/dialogIcon/tipIcon.png new file mode 100644 index 0000000..40b9fc6 Binary files /dev/null and b/src/assets/images/dialogIcon/tipIcon.png differ diff --git a/src/components/ProTable/index.vue b/src/components/ProTable/index.vue index a933f32..60946ff 100644 --- a/src/components/ProTable/index.vue +++ b/src/components/ProTable/index.vue @@ -12,7 +12,7 @@ v-show="isShowSearch" > diff --git a/src/views/enterprise/videoMonitor/realtimeVideo/index.vue b/src/views/enterprise/videoMonitor/realtimeVideo/index.vue index c5cf0d1..7076e20 100644 --- a/src/views/enterprise/videoMonitor/realtimeVideo/index.vue +++ b/src/views/enterprise/videoMonitor/realtimeVideo/index.vue @@ -23,7 +23,7 @@ import { ref, reactive, onMounted, onBeforeUnmount, getCurrentInstance, nextTick import { ElMessage } from "element-plus"; import { getvideoEngTreeList } from "@/api/modules/enterpriseApi"; -import { getpreviewURL } from "@/api/modules/common"; +import { getpreviewURL, getConfigInfo } from "@/api/modules/common"; import TreeFilter from "@/components/TreeFilter/index.vue"; import { GlobalStore } from "@/stores"; @@ -41,10 +41,10 @@ let initCount = ref(0); let oWebControl = ref(null); let cameraIndexCode = ref>([]); let objData = ref({ - appkey: "21582859", //海康提供的appkey - ip: "120.236.122.37", //海康提供的ip - secret: "CfxWWzB9MEC5y6R5CmWI", //海康提供的secret - port: 81, + appkey: "24017757", //海康提供的appkey + ip: "182.101.141.23", //海康提供的ip + secret: "VJz0FbzmE6drPQ7egsBi", //海康提供的secret + port: 18443, playMode: 0, // 0 预览 1回放 layout: "4x6" //页面展示的模块数【16】 }); @@ -87,10 +87,26 @@ const getVideo = async () => { // await sendRequest({ code: cameraIndexCode.value }); await getpreviewURL({ cameraIndexCode: cameraIndexCode.value }); }; +// 获取视频配置信息 +const getVideoConfig = async () => { + // await sendRequest({ code: cameraIndexCode.value }); + const res = await getConfigInfo({}); + // objData.value = ref({ + // appkey: res.result.appKey, //海康提供的appkey + // ip: res.result.ip, //海康提供的ip + // secret: res.result.appSecret, //海康提供的secret + // port: +res.result.port, + // playMode: 0, // 0 预览 1回放 + // layout: "4x6" //页面展示的模块数【16】 + // }); + // console.log(objData.value); +}; /** 设备列表的点击操作 */ onMounted(async () => { + // 获取配置信息 + getVideoConfig(); // 获取页面的实例对象 ee const pageInstance = getCurrentInstance(); // 获取dom节点对象 diff --git a/src/views/goverment/videoMonitor/index.vue b/src/views/goverment/videoMonitor/index.vue index 8d176e9..dd32ba4 100644 --- a/src/views/goverment/videoMonitor/index.vue +++ b/src/views/goverment/videoMonitor/index.vue @@ -159,7 +159,7 @@ import { ref, reactive, onMounted, onBeforeUnmount, getCurrentInstance, nextTick import { ElMessage, ElMessageBox, ElStep } from "element-plus"; import { getVideoQuestionPage, getvideoProTreeList, getvideoEngTreeList, addmonitorQuestion } from "@/api/modules/goverment"; -import { getpreviewURL, getmanualCaptureL, getpreviewURLS } from "@/api/modules/common"; +import { getpreviewURL, getmanualCaptureL, getpreviewURLS, getConfigInfo } from "@/api/modules/common"; import TreeFilter from "@/components/TreeFilter/index.vue"; import { GlobalStore } from "@/stores"; import Pagination from "@/components/ProTable/components/Pagination.vue"; @@ -219,10 +219,10 @@ let initCount = ref(0); let oWebControl = ref(null); let cameraIndexCode = ref>([]); let objData = ref({ - appkey: "21582859", //海康提供的appkey - ip: "120.236.122.37", //海康提供的ip - secret: "CfxWWzB9MEC5y6R5CmWI", //海康提供的secret - port: 81, + appkey: "24017757", //海康提供的appkey + ip: "182.101.141.23", //海康提供的ip + secret: "VJz0FbzmE6drPQ7egsBi", //海康提供的secret + port: 18443, playMode: 0, // 0 预览 1回放 layout: "4x6" //页面展示的模块数【16】 }); @@ -400,6 +400,20 @@ const getVideo = async () => { // await sendRequest({ code: cameraIndexCode.value }); await getpreviewURL({ cameraIndexCode: cameraIndexCode.value }); }; +// 获取视频配置信息 +const getVideoConfig = async () => { + // await sendRequest({ code: cameraIndexCode.value }); + const res = await getConfigInfo({}); + // objData.value = ref({ + // appkey: res.result.appKey, //海康提供的appkey + // ip: res.result.ip, //海康提供的ip + // secret: res.result.appSecret, //海康提供的secret + // port: +res.result.port, + // playMode: 0, // 0 预览 1回放 + // layout: "4x6" //页面展示的模块数【16】 + // }); + // console.log(objData.value); +}; // form日期选择后改变入参 const onDatePicker = () => { @@ -450,6 +464,8 @@ watch( // }); onMounted(async () => { + // 获取配置信息 + getVideoConfig(); // 获取页面的实例对象 ee const pageInstance = getCurrentInstance(); // 获取dom节点对象 diff --git a/src/views/project/laborRealName/memberManage/components/addMemberForm.vue b/src/views/project/laborRealName/memberManage/components/addMemberForm.vue index c14b77e..6ed76f6 100644 --- a/src/views/project/laborRealName/memberManage/components/addMemberForm.vue +++ b/src/views/project/laborRealName/memberManage/components/addMemberForm.vue @@ -1,6 +1,6 @@ diff --git a/src/views/project/laborRealName/memberManage/index.vue b/src/views/project/laborRealName/memberManage/index.vue index be68b2d..cdc5414 100644 --- a/src/views/project/laborRealName/memberManage/index.vue +++ b/src/views/project/laborRealName/memberManage/index.vue @@ -2,7 +2,7 @@
+ @@ -81,14 +124,14 @@ import { editRolePermissions, getSystemRole, getTreemRoleList, getTreeByIdList } import { addClassGroup, updateClassGroup, - deleteClassGroup, + getClassGroupAll, getMemberList, - classGroupInfo, - addMember + memberInfo, + addMember, + updateMember } from "@/api/modules/project"; import DialogForm from "@/components/DialogForm/index.vue"; import addMemberForm from "./components/addMemberForm.vue"; -import { Delete } from "@element-plus/icons-vue"; import { GlobalStore } from "@/stores"; @@ -104,66 +147,109 @@ const defaultProps = { const router = useRouter(); const store = GlobalStore(); const drawerVisible = ref(false); -const visible = ref(false); +const moveVisible = ref(false); +const exitVisible = ref(false); const newMemberDialog = ref(false); const title = ref(""); +const objRow = ref({}); // 如果表格需要初始化请求参数,直接定义传给 ProTable(之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据) const initParam = reactive({ solveFlag: 1, engineeringSn: "" }); -const formData = ref({}); -// 弹窗中的配置 -const formConfig = { +// 调动-表单 +const moveFormData = ref({}); +// 离场-表单 +const exitFormData = ref({}); +const formData = ref({ + personName: "", + sex: 1, + birthday: "", + nation: "", + registerAddress: "", + idCard: "", + issuingAuthorityForIdCard: "", + idCardExpireDate: "", + idCardFront: "", + idCardBack: "", + portrait: "", + phone: "", + address: "", + companySn: "", + teamSn: "", + workerType: null, + personType: 1, + safetyEducation: 1, + isPurchaseInsurance: 1, + isContract: 1, + contractImage: "", + isPhysicalExamination: 1, + bankType: null, + bankCard: "", + realNameCardNumber: "", + bankName: "", + bankCode: "", + politicsStatus: null, + educationLevel: null, + academicDegree: null, + haveMedicalHistory: 1, + natureOfAccount: 1, + maritalStatus: null, + contacts: "", + contactsTel: "", + entryTime: "", + trainingTime: "", + personEmail: "" +}); +// 调动-弹窗中的配置 +const moveFormConfig = { formItemConfig: [ { - label: "参建单位", - prop: "companySn", + label: "班组", + prop: "teamSn", type: "select", data: [] - }, - { - label: "班组名称", - prop: "teamName", - type: "input" - }, - { - label: "班组长", - prop: "leaderName", - type: "input" - }, - { - label: "班组长电话", - prop: "leaderTel", - type: "input" - }, - { - label: "进场时间", - prop: "entryTime", - type: "date", - format: "YYYY-MM-DD", - valueFormat: "YYYY-MM-DD" } ], rules: { - companySn: [ + teamSn: [ { required: true, message: "请选择", trigger: "change" } - ], - teamName: [ + ] + } +}; +// 离场-弹窗中的配置 +const exitFormConfig = { + formItemConfig: [ + { + label: "离场人员", + prop: "ids", + type: "input" + }, + { + label: "离场时间", + prop: "ids", + type: "radio", + data: [ + { + label: "立即离场", + value: 1 + }, + { + label: "延时离场", + value: 2 + } + ] + } + ], + rules: { + teamSn: [ { required: true, - message: "请输入", - trigger: "blur" - } - ], - leaderTel: [ - { - pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/, - message: "请输入合法手机号", + message: "请选择", trigger: "change" } ] @@ -176,11 +262,14 @@ const getId = ref(undefined); // 表格配置项 const columns: ColumnProps[] = [ - { type: "index", label: "序号", width: 80 }, + { type: "selection", width: 80, fixed: "left" }, + { type: "index", label: "序号", width: 80, fixed: "left" }, { - prop: "companyName", - label: "工程名称" + prop: "portrait", + label: "照片", + fixed: "left" }, + { prop: "personName", label: "姓名", fixed: "left", search: { el: "input" } }, { prop: "personType", label: "人员类别", @@ -190,8 +279,6 @@ const columns: ColumnProps[] = [ { label: "工人", value: 2 } ] }, - { prop: "teamName", label: "姓名", search: { el: "input" } }, - { prop: "teamName", label: "身份证号", search: { el: "input" } }, { prop: "inServiceType", label: "人员状态", @@ -201,8 +288,15 @@ const columns: ColumnProps[] = [ { label: "离场", value: 2 } ] }, - { prop: "leaderName", label: "班组长" }, - { prop: "leaderTel", label: "班组长电话" }, + { prop: "phone", label: "手机号" }, + { prop: "idCard", label: "身份证号", search: { el: "input" } }, + { prop: "companyName", label: "参建单位" }, + { prop: "companyType", label: "参建单位类型" }, + { prop: "teamName", label: "班组" }, + { prop: "workerTypeName", label: "工种" }, + { prop: "entryTime", label: "进场时间" }, + { prop: "exitTime", label: "离场时间" }, + { prop: "age", label: "年龄" }, { prop: "operation", label: "操作", fixed: "right", width: 260 } ]; @@ -218,6 +312,21 @@ const dataCallback = (data: any) => { }; }; +// 批量操作 +const batchOperate = (index: number, ids: []) => { + console.log(666); + console.log(index, ids); + // if(index == 1) { + // await useHandleData(deleteUser, { id }, "删除所选用户信息"); + // proTable.value?.clearSelection(); + // proTable.value?.getTableList(); + // } else if(index == 2){ + // await useHandleData(deleteUser, { id }, "删除所选用户信息"); + // proTable.value?.clearSelection(); + // proTable.value?.getTableList(); + // } +}; + const closeDrawer = (done: () => void) => { datas.length = 0; done(); @@ -266,32 +375,86 @@ const getTableList = (params: any) => { const handleAddItem = async (index: number, row: any) => { if (index === 1) { - title.value = "新增班组"; - formData.value = reactive({}); + title.value = "新增人员"; + formData.value = reactive({ + personName: "", + sex: 1, + birthday: "", + nation: "", + registerAddress: "", + idCard: "", + issuingAuthorityForIdCard: "", + idCardExpireDate: "", + idCardFront: "", + idCardBack: "", + portrait: "", + phone: "", + address: "", + companySn: "", + teamSn: "", + workerType: null, + personType: 1, + safetyEducation: 1, + isPurchaseInsurance: 1, + isContract: 1, + contractImage: "", + isPhysicalExamination: 1, + bankType: null, + bankCard: "", + realNameCardNumber: "", + bankName: "", + bankCode: "", + politicsStatus: null, + educationLevel: null, + academicDegree: null, + haveMedicalHistory: 1, + natureOfAccount: 1, + maritalStatus: null, + contacts: "", + contactsTel: "", + entryTime: "", + trainingTime: "", + personEmail: "" + }); } else { - title.value = "编辑班组"; + title.value = "查看人员"; console.log(row); - const res: any = await classGroupInfo({ id: row.id }); + const res: any = await memberInfo({ id: row.id }); + res.result.idCardExpireDate = res.result.idCardExpireDate.split(","); formData.value = reactive({ ...res.result }); } newMemberDialog.value = true; }; -// 修改数据按钮 -const handleEditItem = async (row: any) => { - getId.value = row.roleId; - - drawerVisible.value = true; - const { result = [] } = await getTreemRoleList(); - // console.log("test", result); - datas.push(...result); - - const res = await getTreeByIdList({ roleId: row.roleId }); - // 打开弹窗时调用上面的接口勾选 - nextTick(() => { - treeRef.value.setCheckedKeys(res.result.map((item: { authorityId: any }) => item.authorityId)); +// 获取班组管理列表 +const getGroupList = async () => { + const res = await getClassGroupAll({}); + console.log(res); + moveFormConfig.formItemConfig[0].data = res.result.map(item => { + console.log(item); + return { + label: item.teamName, + value: item.teamSn + }; }); }; + +// 修改状态按钮 +const handleEditItem = async (index: number, row: any) => { + if (index == 1) { + moveVisible.value = true; + } else if (index == 2) { + exitVisible.value = true; + } + objRow.value = row; +}; +// 调动表单提交 +const saveMoveItem = async (form: any) => { + const res = await updateMember(form); + proTable.value.getTableList(); + ElMessage.success("编辑成功"); + newMemberDialog.value = false; +}; // TODO: 提交表单操作 const saveItem = async (form: any) => { form.engineeringSn = initParam.engineeringSn; @@ -307,12 +470,6 @@ const saveItem = async (form: any) => { } newMemberDialog.value = false; }; - -// 删除用户信息 -const deleteGroup = async (params: any) => { - await useHandleData(deleteClassGroup, { id: params.id }, `删除【${params.teamName}】`); - proTable.value.getTableList(); -}; // 点击抽屉的工程名称更新页面 const onUpdate = async row => { initParam.engineeringSn = row.engineeringSn; @@ -322,5 +479,50 @@ const getengineering = (params: any) => { // let newParams = JSON.parse(JSON.stringify(params)); return getRelevanceList(); }; +onMounted(() => { + getGroupList(); +}); - + diff --git a/src/views/project/videoMonitor/realtimeVideo/index.vue b/src/views/project/videoMonitor/realtimeVideo/index.vue index 05f72d6..c80e3fd 100644 --- a/src/views/project/videoMonitor/realtimeVideo/index.vue +++ b/src/views/project/videoMonitor/realtimeVideo/index.vue @@ -24,7 +24,7 @@ import { ref, reactive, onMounted, onBeforeUnmount, getCurrentInstance, nextTick import { ElMessage } from "element-plus"; import { getvideoEngTreeList } from "@/api/modules/project"; -import { getpreviewURL } from "@/api/modules/common"; +import { getpreviewURL, getConfigInfo } from "@/api/modules/common"; import TreeFilter from "@/components/TreeFilter/index.vue"; import { GlobalStore } from "@/stores"; @@ -41,10 +41,10 @@ let initCount = ref(0); let oWebControl = ref(null); let cameraIndexCode = ref>([]); let objData = ref({ - appkey: "21582859", //海康提供的appkey - ip: "120.236.122.37", //海康提供的ip - secret: "CfxWWzB9MEC5y6R5CmWI", //海康提供的secret - port: 81, + appkey: "24017757", //海康提供的appkey + ip: "182.101.141.23", //海康提供的ip + secret: "VJz0FbzmE6drPQ7egsBi", //海康提供的secret + port: 18443, playMode: 0, // 0 预览 1回放 layout: "4x6" //页面展示的模块数【16】 }); @@ -80,6 +80,20 @@ const getVideo = async () => { // await sendRequest({ code: cameraIndexCode.value }); await getpreviewURL({ cameraIndexCode: cameraIndexCode.value }); }; +// 获取视频配置信息 +const getVideoConfig = async () => { + // await sendRequest({ code: cameraIndexCode.value }); + const res = await getConfigInfo({}); + // objData.value = ref({ + // appkey: res.result.appKey, //海康提供的appkey + // ip: res.result.ip, //海康提供的ip + // secret: res.result.appSecret, //海康提供的secret + // port: +res.result.port, + // playMode: 0, // 0 预览 1回放 + // layout: "4x6" //页面展示的模块数【16】 + // }); + // console.log(objData.value); +}; watch( () => store.editPassword, @@ -91,6 +105,8 @@ watch( /** 设备列表的点击操作 */ onMounted(async () => { + // 获取配置信息 + getVideoConfig(); // 获取页面的实例对象 ee const pageInstance = getCurrentInstance(); // 获取dom节点对象