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 @@
新增
- 批量复职
- 批量离场
+ 批量复职
+ 批量离场
-
- 编辑
+
+ 查看
- 删除
+
+
+ 调动
+
+
+
+ 离场
+
+
+
+
{{ row.state == 1 ? "启用" : "禁用" }}
@@ -49,19 +61,50 @@
+
+
+
+
+
+
+
+
+

+
+

+
温馨提示:人员到离职时间后不可通过像识别
+
+
+
@@ -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节点对象