forked from integrated_whb/integrated_whb_vue
Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # src/assets/js/asyncRouter.jspull/1/head
commit
bd76ab2a39
|
@ -11,6 +11,7 @@
|
|||
--el-fill-color-blank: #081435 !important; // 背景色
|
||||
--el-border-color-lighter: var(--el-border-color) !important;
|
||||
--el-bullet-frame-bg-color: #08163b !important;
|
||||
--el-text-color-primary: #fff !important;
|
||||
}
|
||||
|
||||
.el-button:focus, .el-button:hover {
|
||||
|
|
|
@ -112,6 +112,74 @@ export default [
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/troubleshooting_statistics",
|
||||
redirect: "/troubleshooting_statistics/day_inspection",
|
||||
meta: { title: "排查统计", model: MODEL["1"] },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "/troubleshooting_statistics/day_inspection",
|
||||
meta: { title: "清单检查记录(日检)", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "troubleshooting_statistics/day_inspection/index",
|
||||
},
|
||||
{
|
||||
path: "/troubleshooting_statistics/day_inspection/inspection_records",
|
||||
meta: {
|
||||
title: "检查记录",
|
||||
activeMenu: "/troubleshooting_statistics/day_inspection",
|
||||
},
|
||||
component:
|
||||
"troubleshooting_statistics/day_inspection/inspection_records",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/troubleshooting_statistics/week_inspection",
|
||||
meta: { title: "清单检查记录(周检)", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "troubleshooting_statistics/week_inspection/index",
|
||||
},
|
||||
{
|
||||
path: "/troubleshooting_statistics/week_inspection/inspection_records",
|
||||
meta: {
|
||||
title: "检查记录",
|
||||
activeMenu: "/troubleshooting_statistics/week_inspection",
|
||||
},
|
||||
component:
|
||||
"troubleshooting_statistics/week_inspection/inspection_records",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/troubleshooting_statistics/ten_day_inspection",
|
||||
meta: { title: "清单检查记录(旬检)", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "troubleshooting_statistics/ten_day_inspection/index",
|
||||
},
|
||||
{
|
||||
path: "/troubleshooting_statistics/ten_day_inspection/inspection_records",
|
||||
meta: {
|
||||
title: "检查记录",
|
||||
activeMenu: "/troubleshooting_statistics/ten_day_inspection",
|
||||
},
|
||||
component:
|
||||
"troubleshooting_statistics/ten_day_inspection/inspection_records",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/system_operation",
|
||||
redirect: "/system_operation/system_documents",
|
||||
|
@ -664,17 +732,211 @@ export default [
|
|||
meta: { title: "排班管理", model: MODEL["1"], isSubMenu: false },
|
||||
component: "workforce_management/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects",
|
||||
redirect: "/keyprojects/units",
|
||||
meta: { title: "重点工程", model: MODEL["1"] },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "/keyprojects/units",
|
||||
meta: { title: "相关方管理", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/units/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/units/add",
|
||||
meta: {
|
||||
title: "新增",
|
||||
activeMenu: "/keyprojects/units",
|
||||
},
|
||||
component: "keyprojects/units/add",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/units/edit",
|
||||
meta: {
|
||||
title: "修改",
|
||||
activeMenu: "/keyprojects/units",
|
||||
},
|
||||
component: "keyprojects/units/add",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/personnelmanagement",
|
||||
meta: { title: "相关方人员管理", isSubMenu: false },
|
||||
component: "keyprojects/personnelmanagement/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/outsourced",
|
||||
meta: { title: "重点工程管理", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/outsourced/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/outsourced/add",
|
||||
meta: {
|
||||
title: "新增",
|
||||
activeMenu: "/keyprojects/outsourced",
|
||||
},
|
||||
component: "keyprojects/outsourced/add",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/outsourced/add",
|
||||
meta: {
|
||||
title: "编辑",
|
||||
activeMenu: "/keyprojects/outsourced",
|
||||
},
|
||||
component: "keyprojects/outsourced/add",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/outsourced/view",
|
||||
meta: {
|
||||
title: "查看",
|
||||
activeMenu: "/keyprojects/outsourced",
|
||||
},
|
||||
component: "keyprojects/outsourced/view",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/inspection",
|
||||
meta: { title: "安全、环保检查", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/inspection/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/inspection/record_list",
|
||||
meta: {
|
||||
title: "查看列表",
|
||||
activeMenu: "/keyprojects/inspection"
|
||||
},
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/inspection/record_list"
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/inspection/record_view",
|
||||
meta: {
|
||||
title: "查看详情",
|
||||
activeMenu: "/keyprojects/inspection",
|
||||
},
|
||||
component: "keyprojects/inspection/record_view",
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/hidden",
|
||||
meta: { title: "隐患排查", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/hidden/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/hidden/record_list",
|
||||
meta: {
|
||||
title: "查看列表",
|
||||
activeMenu: "/keyprojects/hidden"
|
||||
},
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/hidden/record_list"
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/hidden/record_view",
|
||||
meta: {
|
||||
title: "查看详情",
|
||||
activeMenu: "/keyprojects/hidden",
|
||||
},
|
||||
component: "keyprojects/hidden/record_view",
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/punish",
|
||||
meta: { title: "处罚管理", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/punish/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/punish/record_list",
|
||||
meta: {
|
||||
title: "查看列表",
|
||||
activeMenu: "/keyprojects/punish"
|
||||
},
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "keyprojects/punish/record_list"
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/punish/record_view",
|
||||
meta: {
|
||||
title: "查看详情",
|
||||
activeMenu: "/keyprojects/punish",
|
||||
},
|
||||
component: "keyprojects/punish/record_view",
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/aiwarning",
|
||||
meta: { title: "AI报警", isSubMenu: false },
|
||||
component: "keyprojects/aiwarning/index",
|
||||
},
|
||||
{
|
||||
path: "/keyprojects/videomanager",
|
||||
meta: { title: "视频监控", isSubMenu: false },
|
||||
component: "keyprojects/videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/off_duty_management",
|
||||
redirect: "/off_duty_management/leave",
|
||||
meta: { title: "离岗管理", model: MODEL["1"] },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "/off_duty_management/setting",
|
||||
meta: { title: "离岗设置", isSubMenu: false },
|
||||
component: "off_duty_management/setting/index",
|
||||
},
|
||||
{
|
||||
path: "/off_duty_management/leave",
|
||||
meta: { title: "离岗管理", isSubMenu: false },
|
||||
component: "off_duty_management/leave/index",
|
||||
},
|
||||
{
|
||||
path: "/off_duty_management/record",
|
||||
meta: { title: "离岗记录", isSubMenu: false },
|
||||
component: "off_duty_management/record/index",
|
||||
},
|
||||
{
|
||||
path: "/off_duty_management/login_record",
|
||||
meta: { title: "登录记录", isSubMenu: false },
|
||||
|
@ -1220,14 +1482,6 @@ export default [
|
|||
},
|
||||
component: "confined_space/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/confined_space/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/confined_space/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1273,14 +1527,6 @@ export default [
|
|||
},
|
||||
component: "blind_plate_plugging/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/blind_plate_plugging/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/blind_plate_plugging/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1321,14 +1567,6 @@ export default [
|
|||
},
|
||||
component: "groundbreaking/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/groundbreaking/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/groundbreaking/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1369,14 +1607,6 @@ export default [
|
|||
},
|
||||
component: "high/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/high/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/high/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1417,14 +1647,6 @@ export default [
|
|||
},
|
||||
component: "hoisting/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/hoisting/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/hoisting/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1465,14 +1687,6 @@ export default [
|
|||
},
|
||||
component: "open_circuit/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/open_circuit/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/open_circuit/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1513,14 +1727,6 @@ export default [
|
|||
},
|
||||
component: "temporary_electricity_usage/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/temporary_electricity_usage/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/temporary_electricity_usage/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1561,14 +1767,6 @@ export default [
|
|||
},
|
||||
component: "hot_work/job_data/view",
|
||||
},
|
||||
{
|
||||
path: "/hot_work/job_data/add_video",
|
||||
meta: {
|
||||
title: "添加监控",
|
||||
activeMenu: "/hot_work/job_data",
|
||||
},
|
||||
component: "eightwork_videomanager/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1682,6 +1880,84 @@ export default [
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro",
|
||||
redirect: "/security_commitment_pro/template",
|
||||
meta: { title: "安全承诺Pro", model: MODEL["4"] },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "/security_commitment_pro/template",
|
||||
meta: { title: "安全承诺书模板", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "security_commitment_pro/template/index",
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/template/add",
|
||||
meta: {
|
||||
title: "新增",
|
||||
activeMenu: "/security_commitment_pro/template",
|
||||
},
|
||||
component: "security_commitment_pro/template/add",
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/template/edit",
|
||||
meta: {
|
||||
title: "编辑",
|
||||
activeMenu: "/security_commitment_pro/template",
|
||||
},
|
||||
component: "security_commitment_pro/template/add",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/administration",
|
||||
meta: { title: "安全承诺书管理", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "security_commitment_pro/administration/index",
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/administration/add",
|
||||
meta: {
|
||||
title: "新增",
|
||||
activeMenu: "/security_commitment_pro/administration",
|
||||
},
|
||||
component: "security_commitment_pro/administration/add",
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/administration/edit",
|
||||
meta: {
|
||||
title: "编辑",
|
||||
activeMenu: "/security_commitment_pro/administration",
|
||||
},
|
||||
component: "security_commitment_pro/administration/add",
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/administration/view",
|
||||
meta: {
|
||||
title: "查看",
|
||||
activeMenu: "/security_commitment_pro/administration",
|
||||
},
|
||||
component: "security_commitment_pro/administration/view",
|
||||
},
|
||||
{
|
||||
path: "/security_commitment_pro/administration/details",
|
||||
meta: {
|
||||
title: "详情",
|
||||
activeMenu: "/security_commitment_pro/administration",
|
||||
},
|
||||
component: "security_commitment_pro/administration/details",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/video_manager",
|
||||
redirect: "/video_manager/video_manager",
|
||||
|
|
|
@ -97,13 +97,6 @@ export const layoutFnGetRiskCauses = async () => {
|
|||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 部门级别
|
||||
export const layoutFnGetDepartmentLevel = async () => {
|
||||
const resData = await getLevels({
|
||||
DICTIONARIES_ID: "4a661fa8aedc4d158c9cddaa9d2ec47e",
|
||||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 民族
|
||||
export const layoutFnGetNation = async () => {
|
||||
const resData = await getLevels({
|
||||
|
@ -237,6 +230,13 @@ export const layoutFnGetRiskClassification = async () => {
|
|||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 承诺书级别
|
||||
export const layoutFnGetCommitmentLevel = async () => {
|
||||
const resData = await getLevels({
|
||||
DICTIONARIES_ID: "8c5064693fba4dbca1cbfea631cd097a",
|
||||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 部门树
|
||||
export const layoutFnGetDepartmentTree = async (params) => {
|
||||
const resData = await getDepartmentTree(params);
|
||||
|
@ -252,3 +252,11 @@ export const layoutFnGetLevelsAndChildrenNumber = async (DICTIONARIES_ID) => {
|
|||
const resData = await getLevelsAndChildrenNumber({ DICTIONARIES_ID });
|
||||
return ref(resData.list);
|
||||
};
|
||||
|
||||
// 相关方作业类别
|
||||
export const layoutFnGetPersonnelmanagementJobType = async () => {
|
||||
const resData = await getLevels({
|
||||
DICTIONARIES_ID: "a8bfd4554af54ee2b816f3007d8baea6",
|
||||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
|
|
|
@ -288,12 +288,17 @@ export function addingPrefixToFile(list) {
|
|||
* @param {string} key 验证的字段
|
||||
* @param {string} id 验证的值
|
||||
**/
|
||||
export function verifyDuplicateSelection(list, index, key, id) {
|
||||
if (list.some((item) => item[key] === id)) {
|
||||
ElMessage.warning("不能重复选择");
|
||||
} else {
|
||||
list[index][key] = id;
|
||||
}
|
||||
export async function verifyDuplicateSelection(list, index, key, id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (list.some((item) => item[key] === id)) {
|
||||
ElMessage.warning("不能重复选择");
|
||||
// eslint-disable-next-line prefer-promise-reject-errors
|
||||
reject();
|
||||
} else {
|
||||
list[index][key] = id;
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
import { post, upload } from "@/request/axios.js";
|
||||
|
||||
export const getUnitsListAll = () => post("/units/listAll"); // 施工相关方全部
|
||||
export const getUnitsList = (params) => post("/units/list", params); // 相关方列表
|
||||
export const setUnitsAdd = (params) => upload("/units/add", params); // 相关方添加
|
||||
export const setUnitsGoEdit = (params) => post("/units/goEdit", params); // 相关方修改获取
|
||||
export const setUnitsEdit = (params) => upload("/units/edit", params); // 相关方修改
|
||||
export const setUnitsDelete = (params) => post("/units/delete", params); // 相关方删除
|
||||
export const setUnitsDeleteAll = (params) => post("/units/deleteAll", params); // 相关方删除(多选)
|
||||
|
||||
export const setIsTrueDelete = (params) =>
|
||||
post("/personnelmanagement/isTrueDelete", params); // 查看是否可删除
|
||||
export const setIsTrueDeleteAll = (params) =>
|
||||
post("/personnelmanagement/isTrueDeleteAll", params); // 查看是否可删除(全部)
|
||||
export const getPersonnelmanagementList = (params) =>
|
||||
post("/personnelmanagement/list", params); // 相关方人员列表
|
||||
export const setPersonnelmanagementResetPwd = (params) =>
|
||||
post("/personnelmanagement/resetPwd", params); // 相关方人员重置密码
|
||||
export const setPersonnelmanagementAdd = (params) =>
|
||||
post("/personnelmanagement/add", params); // 相关方人员添加
|
||||
export const setPersonnelmanagementEdit = (params) =>
|
||||
post("/personnelmanagement/edit", params); // 相关方人员编辑
|
||||
export const setPersonnelmanagementGoEdit = (params) =>
|
||||
post("/personnelmanagement/goEdit", params); // 相关方人员编辑获取
|
||||
export const setPersonnelmanagementDelete = (params) =>
|
||||
post("/personnelmanagement/delete", params); // 相关方人员删除
|
||||
export const setPersonnelmanagementDeleteAll = (params) =>
|
||||
post("/personnelmanagement/deleteAll", params); // 相关方人员批量删除
|
||||
export const setPersonnelmanagementListAll = (params) =>
|
||||
post("/personnelmanagement/listAll", params); // 相关方人员列表
|
||||
|
||||
export const getOutsourcedList = (params) => post("/outsourced/list", params); // 重点工程列表
|
||||
export const setOutsourcedAdd = (params) => upload("/outsourced/add", params); // 重点工程添加
|
||||
export const setOutsourcedEdit = (params) => upload("/outsourced/edit", params); // 重点工程修改
|
||||
export const setOutsourcedGoEdit = (params) =>
|
||||
post("/outsourced/goEdit", params); // 重点工程修改获取
|
||||
export const setOutsourcedDelete = (params) =>
|
||||
post("/outsourced/delete", params); // 重点工程修改获取
|
||||
|
||||
export const getKeyprojectcheckList = (params) =>
|
||||
post("/keyprojectcheck/list", params); // 安全环保检查列表
|
||||
export const getKeyprojectcheckGoEdit = (params) =>
|
||||
post("/keyprojectcheck/goEdit", params); // 安全环保检查详情
|
||||
export const getKeyprojectcheckListHidden = (params) =>
|
||||
post("/keyprojectcheck/listHidden", params); // 安全环保检查隐患列表
|
||||
export const getKeyprojectcheckFindHidden = (params) =>
|
||||
post("/keyprojectcheck/findHidden", params); // 安全环保检查隐患详情
|
||||
export const getKeyprojectpunishList = (params) =>
|
||||
post("/keyprojectpunish/list", params); // 处罚列表
|
||||
export const getKeyprojectpunishGoEdit = (params) =>
|
||||
post("/keyprojectpunish/goEdit", params); // 处罚列表详情
|
||||
|
|
@ -7,4 +7,8 @@ export const getApprovedByList = (params) =>
|
|||
post("/app/sys/listUserLeader", params); // 离岗管理获取审批人
|
||||
export const setLeaveReview = (params) => post("/offduty/review", params); // 离岗管理审批
|
||||
export const setLeaveCancel = (params) => post("/offduty/cancel", params); // 离岗管理取消
|
||||
export const getSettingList = (params) => post("/offdutySetup/list", params); // 离岗设置列表
|
||||
export const setSettingChange = (params) =>
|
||||
post("/offdutySetup/editSetup", params); // 离岗设置切换
|
||||
export const getRecordList = (params) => post("/offduty/list", params); // 离岗记录列表
|
||||
export const getLoginRecordList = (params) => post("/fhlog/getList", params); // 登录记录列表
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
import { post } from "@/request/axios.js";
|
||||
|
||||
export const getTemplateList = (params) => post("/promise/list", params); // 安全承诺书模板列表
|
||||
export const getTemplateView = (params) => post("/promise/goEdit", params); // 安全承诺书模板查看
|
||||
export const setTemplateEnableOrDisable = (params) =>
|
||||
post("/promise/editdelete", params); // 安全承诺书模板启用禁用
|
||||
export const setTemplateDelete = (params) => post("/promise/delete", params); // 安全承诺书模板删除
|
||||
export const setTemplateEdit = (params) => post("/promise/edit", params); // 安全承诺书模板修改
|
||||
export const setTemplateAdd = (params) => post("/promise/add", params); // 安全承诺书模板新增
|
||||
export const getAdministrationList = (params) =>
|
||||
post("/corppromise/list", params); // 安全承诺书模板列表
|
||||
export const getAdministrationView = (params) =>
|
||||
post("/corppromise/goEdit", params); // 安全承诺书模板查看
|
||||
export const setAdministrationEnableOrDisable = (params) =>
|
||||
post("/corppromise/editdelete", params); // 安全承诺书管理启用禁用
|
||||
export const setAdministrationEdit = (params) =>
|
||||
post("/corppromise/edit_II", params); // 安全承诺书管理修改
|
||||
export const setAdministrationAdd = (params) =>
|
||||
post("/corppromise/add_II", params); // 安全承诺书管理新增
|
||||
export const getAdministrationDetailsList = (params) =>
|
||||
post("/corppromise/peopledetails", params); // 安全承诺书模板详情列表
|
||||
export const getAdministrationDetailsView = (params) =>
|
||||
post("/corppromise/peopleview", params); // 安全承诺书模板详情查看
|
||||
export const getAdministrationSelectTemplateList = (params) =>
|
||||
post("/corppromise/showtemplatetext", params); // 安全承诺书选择模板列表
|
||||
export const getAdministrationSelectTemplateCheck = (params) =>
|
||||
post("/corppromise/collateral", params); // 安全承诺书选择模板选择
|
|
@ -0,0 +1,10 @@
|
|||
import { post } from "@/request/axios.js";
|
||||
|
||||
export const getChecklistInspectionRecordList = (params) =>
|
||||
post("/listmanager/recordList", params); // 清单检查记录列表
|
||||
export const getChecklistInspectionRecordDayInspectionList = (params) =>
|
||||
post("/listmanager/statisticsListCheckDay", params); // 清单检查记录日检列表
|
||||
export const getChecklistInspectionRecordWeekInspectionList = (params) =>
|
||||
post("/listmanager/statisticsListCheckWeek", params); // 清单检查记录周检列表
|
||||
export const getChecklistInspectionRecordTenDayInspectionList = (params) =>
|
||||
post("/listmanager/statisticsListCheckTenday", params); // 清单检查记录旬检列表
|
|
@ -14,7 +14,7 @@
|
|||
<el-form-item label="部门级别" prop="LEVEL">
|
||||
<el-select v-model="form.LEVEL">
|
||||
<el-option
|
||||
v-for="item in departmentLevel"
|
||||
v-for="item in inventoryLevel"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
|
@ -84,7 +84,7 @@ import { useVModels } from "@vueuse/core";
|
|||
import { ref } from "vue";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { layoutFnGetDepartmentLevel } from "@/assets/js/data_dictionary.js";
|
||||
import { layoutFnGetInventoryLevel } from "@/assets/js/data_dictionary.js";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
import {
|
||||
|
@ -137,7 +137,7 @@ const rules = {
|
|||
};
|
||||
const userStore = useUserStore();
|
||||
const formRef = ref(null);
|
||||
const departmentLevel = await layoutFnGetDepartmentLevel();
|
||||
const inventoryLevel = await layoutFnGetInventoryLevel();
|
||||
const fnChangeRegulatoryAuthorities = (event) => {
|
||||
if (event === "1" && form.value.checkedIds.length === 0) {
|
||||
if (props.type === "add")
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATOR_CORP_NAME" label="添加单位" />
|
||||
<el-table-column prop="CREATOR_NAME" label="添加人" width="200" />
|
||||
<el-table-column prop="UNITS_NAME" label="单位名称" width="150" />
|
||||
<el-table-column prop="JOBTYPE" label="作业类别" width="100" />
|
||||
<el-table-column prop="OPERATIONITEM" label="操作项目" />
|
||||
<el-table-column prop="NAME" label="姓名" />
|
||||
<el-table-column prop="SEX" label="性别" />
|
||||
<el-table-column prop="CERTIFICATE_NUM" label="作业证书编号" />
|
||||
<el-table-column prop="REVIEWTIME" label="复审时间" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnView(row.PERSONNELMANAGEMENT_ID)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getPersonnelmanagementList,
|
||||
setPersonnelmanagementGoEdit,
|
||||
} from "@/request/keyprojects.js";
|
||||
import { reactive } from "vue";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getPersonnelmanagementList);
|
||||
const data = reactive({
|
||||
type: "",
|
||||
title: "",
|
||||
editDialog: {
|
||||
visible: false,
|
||||
form: {},
|
||||
},
|
||||
});
|
||||
|
||||
const fnGoEdit = async (id) => {
|
||||
const resData = await setPersonnelmanagementGoEdit({
|
||||
PERSONNELMANAGEMENT_ID: id,
|
||||
});
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
|
||||
const fnView = async (id) => {
|
||||
data.editDialog.form = {};
|
||||
data.editDialog.visible = true;
|
||||
data.editDialog.type = "view";
|
||||
data.editDialog.title = "查看";
|
||||
fnGoEdit(id);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,91 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
|
||||
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" width="250" />
|
||||
<el-table-column
|
||||
prop="MANAGE_CORPS_NAME"
|
||||
label="监理单位"
|
||||
width="250"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UNITS_PIC_NAME"
|
||||
label="相关方单位负责人"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column prop="UNITS_PHONE" label="电话" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/hidden/record_list',
|
||||
query: {
|
||||
OUTSOURCED_ID: row.OUTSOURCED_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getOutsourcedList } from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getOutsourcedList);
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,128 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="验收状态" prop="KEYWORDS">
|
||||
<el-select v-model="searchForm.ISCHECK">
|
||||
<el-option label="待验收隐患" value="1" />
|
||||
<el-option label="已验收隐患" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="重点工程名称">
|
||||
<template v-slot="{ row }">
|
||||
{{
|
||||
row.OUTSOURCED_NAME ? row.OUTSOURCED_NAME : row.AIOUTSOURCED_NAME
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="隐患来源" width="200">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.SOURCE === 1">AI报警</span>
|
||||
<span v-if="row.SOURCE === 2">AI报警</span>
|
||||
<span v-if="row.SOURCE === 3">安全环保检查(监管端)</span>
|
||||
<span v-if="row.SOURCE === 4">安全环保检查(企业端)</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="隐患发现人" width="150">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.CREATOR_NAME || row.CREATOR_NAMES }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATTIME" label="隐患发现时间" width="100" />
|
||||
<el-table-column prop="RECTIFICATIONOR_NAME" label="隐患整改人" />
|
||||
<el-table-column prop="RECTIFICATIONTIME" label="整改时间" />
|
||||
<el-table-column prop="CREATOR_NAME" label="隐患验收人" width="100" />
|
||||
<el-table-column prop="CHECKTIME" label="验收时间" width="100" />
|
||||
<el-table-column label="隐患状态" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.SOURCE === 1">未整改</span>
|
||||
<span v-if="row.SOURCE === 2">已整改</span>
|
||||
<span v-if="row.SOURCE === 4">已验收</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否处罚" width="100">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.ISPUNISH && (row.ISPUNISH === "1" ? "是" : "否") }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/hidden/record_view',
|
||||
query: {
|
||||
HIDDEN_ID: row.HIDDEN_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getKeyprojectcheckListHidden } from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const { OUTSOURCED_ID } = route.query;
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getKeyprojectcheckListHidden, {
|
||||
otherParams: { OUTSOURCED_ID },
|
||||
});
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,71 @@
|
|||
<template>
|
||||
<div>
|
||||
<layout-card>
|
||||
<div id="printContent">
|
||||
<el-divider content-position="left">检查信息</el-divider>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="隐患照片 ">
|
||||
{{ data.info.INSPECTION_CATEGORY }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="隐患描述">
|
||||
{{ data.info.HIDDENDESCR }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="隐患部位 ">
|
||||
{{ data.info.HIDDENPART }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="隐患级别">
|
||||
{{ data.info.HIDDENLEVEL_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="隐患类型 ">
|
||||
限期整改
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="整改期限">
|
||||
{{ data.info.RECTIFICATIONDEADLINE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="整改部门 ">
|
||||
{{ data.info.RECTIFICATIONDEPT_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="整改人">
|
||||
{{ data.info.RECTIFICATIONOR_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="整改时间">
|
||||
{{ data.info.RECTIFICATIONTIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="整改照片">
|
||||
{{ data.info.RECTIFICATIONTIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="验收时间">
|
||||
{{ data.info.CHECKTIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="验收图片">
|
||||
{{ data.info.CHECKTIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否进行罚款">
|
||||
{{ pd.ISPUNISH === "1" ? "是" : "否" }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getKeyprojectcheckFindHidden } from "@/request/keyprojects";
|
||||
import { reactive } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
info: {},
|
||||
});
|
||||
|
||||
const fnGetData = async () => {
|
||||
const resData = await getKeyprojectcheckFindHidden({
|
||||
HIDDEN_ID: route.query.HIDDEN_ID,
|
||||
});
|
||||
data.info = resData.pd;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,92 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
|
||||
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" width="200" />
|
||||
<el-table-column
|
||||
prop="MANAGE_CORPS_NAME"
|
||||
label="监理单位"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UNITS_PIC_NAME"
|
||||
label="相关方单位负责人"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column prop="UNITS_PHONE" label="电话" />
|
||||
<el-table-column prop="CHECK_COUNT" label="安全环保检查次数" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/inspection/record_list',
|
||||
query: {
|
||||
OUTSOURCED_ID: row.OUTSOURCED_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getOutsourcedList } from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getOutsourcedList);
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,103 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="INSPECTION_PLACE" label="检查场所" />
|
||||
<el-table-column
|
||||
prop="INSPECTION_STATUS"
|
||||
label="检查状态"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="INSPECTION_TYPE_NAME"
|
||||
label="检查类型"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column prop="INSPECTION_USERS" label="检查人" width="100" />
|
||||
<el-table-column prop="PERSON_NAME" label="被检查人" />
|
||||
<el-table-column label="检查时间">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.INSPECTION_TIME_START }}-{{ row.INSPECTION_TIME_END }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="HIDDEN_COUNT" label="检查隐患数" width="100" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/inspection/record_view',
|
||||
query: {
|
||||
KEYPROJECTCHECK_ID: row.KEYPROJECTCHECK_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getKeyprojectcheckList } from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const { OUTSOURCED_ID } = route.query;
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getKeyprojectcheckList, {
|
||||
otherParams: { OUTSOURCED_ID },
|
||||
});
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,85 @@
|
|||
<template>
|
||||
<div>
|
||||
<layout-card>
|
||||
<div id="printContent">
|
||||
<el-divider content-position="left">检查信息</el-divider>
|
||||
<el-descriptions border :column="2">
|
||||
<el-descriptions-item label="检查题目 ">
|
||||
{{ data.info.INSPECTION_CATEGORY }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="记录填写时间">
|
||||
{{ data.info.CREATTIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="被检查单位 ">
|
||||
{{ data.info.UNITS_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="被检查单位现场负责人">
|
||||
{{ data.info.PERSON_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="检查场所 ">
|
||||
{{ data.info.INSPECTION_PLACE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="检查类型">
|
||||
{{ data.info.INSPECTION_TYPE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="检查开始时间 ">
|
||||
{{ data.info.INSPECTION_TIME_START }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="检查结束时间">
|
||||
{{ data.info.INSPECTION_TIME_END }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">检查情况</el-divider>
|
||||
<layout-table :data="data.info.situationList" :show-pagination="false">
|
||||
<el-table-column label="序号" width="70" type="index" />
|
||||
<el-table-column prop="SITUATION" label="检查情况" />
|
||||
</layout-table>
|
||||
<el-divider content-position="left">检查人员</el-divider>
|
||||
<el-descriptions border :column="1">
|
||||
<el-descriptions-item label="检查人员">
|
||||
{{ data.info.INSPECTION_USERS }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">发现问题</el-divider>
|
||||
<layout-table :data="data.info.hiddenList" :show-pagination="false">
|
||||
<el-table-column label="序号" width="70" type="index" />
|
||||
<el-table-column prop="HIDDENPART" label="隐患部位" />
|
||||
<el-table-column prop="HIDDENDESCR" label="隐患描述" />
|
||||
<el-table-column label="状态" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="row"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</div>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getKeyprojectcheckGoEdit } from "@/request/keyprojects";
|
||||
import { reactive } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
info: {},
|
||||
});
|
||||
|
||||
const fnGetData = async () => {
|
||||
const resData = await getKeyprojectcheckGoEdit({
|
||||
KEYPROJECTCHECK_ID: route.query.KEYPROJECTCHECK_ID,
|
||||
});
|
||||
data.info = resData.pd;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,366 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="data.form"
|
||||
:rules="rules"
|
||||
label-width="175px"
|
||||
>
|
||||
<el-divider content-position="left">工商信息</el-divider>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="企业监督部门" prop="DEPARTMENT_ID">
|
||||
<layout-department
|
||||
v-model="data.form.DEPARTMENT_ID"
|
||||
multiple
|
||||
show-checkbox
|
||||
root-disabled="Y"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="企业主管部门" prop="COMPETENT_DEPT_ID">
|
||||
<layout-department v-model="data.form.COMPETENT_DEPT_ID" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="企业辖区部门" prop="INVOLVING_CORPS_DEPART_ID">
|
||||
<layout-department
|
||||
v-model="data.form.INVOLVING_CORPS_DEPART_ID"
|
||||
multiple
|
||||
show-checkbox
|
||||
root-disabled="Y"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="重点工程名称" prop="OUTSOURCED_NAME">
|
||||
<el-input
|
||||
v-model="data.form.OUTSOURCED_NAME"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="计划工期起止时间">
|
||||
<el-date-picker
|
||||
v-model="data.form.STARTTIME_TIMES"
|
||||
type="daterange"
|
||||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
range-separator="至"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同号">
|
||||
<el-input
|
||||
v-model="data.form.CONTRACT_NUM"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="施工相关方" prop="UNITS_ID">
|
||||
<el-select
|
||||
v-model="data.form.UNITS_ID"
|
||||
clearable
|
||||
placeholder="请选择相关方"
|
||||
@change="fnGetUnitUser"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.unitsList"
|
||||
:key="item.UNITS_ID"
|
||||
:label="item.UNITS_NAME"
|
||||
:value="item.UNITS_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="相关方单位工程负责人" prop="UNITS_PIC">
|
||||
<el-select
|
||||
v-model="data.form.UNITS_PIC"
|
||||
clearable
|
||||
placeholder="请选择人员"
|
||||
@change="fnSelectUnitsUser($event)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.unitsUserList"
|
||||
:key="item.PERSONNELMANAGEMENT_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.PERSONNELMANAGEMENT_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="相关方单位负责人手机" prop="UNITS_PHONE">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="data.form.UNITS_PHONE"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="监理单位名称">
|
||||
<el-input
|
||||
v-model="data.form.MANAGE_NAME"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="监理单位工程负责人">
|
||||
<el-input v-model="data.form.MANAGE_PIC" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="监理单位负责人手机">
|
||||
<el-input
|
||||
v-model="data.form.MANAGE_PHONE"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="集团单位">
|
||||
<el-input v-model="data.form.GROUP_UNIT" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="状态" prop="STATE">
|
||||
<el-select v-model="data.form.STATE" placeholder="请选择状态">
|
||||
<el-option label="进行中" value="1" />
|
||||
<el-option label="已结束" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="是否发送短信">
|
||||
<el-input v-model="data.form.IS_SMS" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="安全管理协议(附件)" prop="CONTACTS">
|
||||
<el-input v-model="data.form.CONTACTS" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-divider content-position="left">
|
||||
处罚相关
|
||||
<el-button size="small" @click="addInspector"> 添加 </el-button>
|
||||
</el-divider>
|
||||
<template>
|
||||
<template>
|
||||
<template
|
||||
v-for="(item, index) in data.form.acceptanceList"
|
||||
:key="item.id"
|
||||
>
|
||||
<el-col :span="11">
|
||||
<el-form-item
|
||||
label="验收部门"
|
||||
:prop="'acceptanceList.' + index + '.DEPARTMENT_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '请选择验收部门',
|
||||
trigger: 'change',
|
||||
}"
|
||||
>
|
||||
<layout-department
|
||||
v-model="item.DEPARTMENT_ID"
|
||||
@update:model-value="fnInspectDepartmentChange($event, index)"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="11">
|
||||
<el-form-item
|
||||
label="验收人"
|
||||
:prop="'acceptanceList.' + index + '.USER_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '请选择验收人',
|
||||
trigger: 'change',
|
||||
}"
|
||||
>
|
||||
<el-select
|
||||
:model-value="item.USER_ID"
|
||||
@change="
|
||||
verifyDuplicateSelection(
|
||||
data.form.acceptanceList,
|
||||
index,
|
||||
'USER_ID',
|
||||
$event
|
||||
)
|
||||
"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in item.userList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="index === 0"
|
||||
@click="fnAddInspectedList"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
v-if="index !== 0"
|
||||
@click="data.form.acceptanceList.splice(index, 1)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<div class="tc mt-10">
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</div>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useFormValidate from "@/assets/js/useFormValidate";
|
||||
import {
|
||||
getUnitsListAll,
|
||||
setOutsourcedAdd,
|
||||
setOutsourcedEdit,
|
||||
setOutsourcedGoEdit,
|
||||
setPersonnelmanagementListAll,
|
||||
} from "@/request/keyprojects";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { reactive, ref } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
import { getUserListAll } from "@/request/data_dictionary";
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const formRef = ref(null);
|
||||
const rules = {
|
||||
DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择相关部门", trigger: "blur" },
|
||||
],
|
||||
COMPETENT_DEPT_ID: [
|
||||
{ required: true, message: "请选择相关部门", trigger: "blur" },
|
||||
],
|
||||
INVOLVING_CORPS_DEPART_ID: [
|
||||
{ required: true, message: "请选择相关部门", trigger: "blur" },
|
||||
],
|
||||
OUTSOURCED_NAME: [
|
||||
{ required: true, message: "请输入重点工程名称", trigger: "blur" },
|
||||
],
|
||||
UNITS_ID: [{ required: true, message: "请选择相关方", trigger: "blur" }],
|
||||
UNITS_PIC: [
|
||||
{ required: true, message: "请选择相关方负责人", trigger: "blur" },
|
||||
],
|
||||
UNITS_PHONE: [
|
||||
{ required: true, message: "请输入负责人手机号", trigger: "blur" },
|
||||
],
|
||||
STATE: [{ required: true, message: "请选择状态", trigger: "blur" }],
|
||||
};
|
||||
|
||||
const data = reactive({
|
||||
form: {
|
||||
acceptanceList: [
|
||||
{
|
||||
id: Math.random(),
|
||||
DEPARTMENT_ID: "",
|
||||
USER_ID: "",
|
||||
userList: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
inspectorList: [
|
||||
{ INSPECTION_DEPARTMENT_ID: "", INSPECTION_USER_ID: "", USER_SIDE: "" },
|
||||
],
|
||||
INSPECTOR_List: [],
|
||||
unitsList: [],
|
||||
});
|
||||
|
||||
const addInspector = () => {
|
||||
data.inspectorList.push({
|
||||
INSPECTION_DEPARTMENT_ID: "",
|
||||
INSPECTION_USER_ID: "",
|
||||
USER_SIDE: "",
|
||||
});
|
||||
data.INSPECTOR_List.push([]);
|
||||
};
|
||||
|
||||
const fnGetData = async () => {
|
||||
const resData = await setOutsourcedGoEdit({
|
||||
OUTSOURCED_ID: route.query.outsourcedId,
|
||||
});
|
||||
data.form = resData.pd;
|
||||
data.form.acceptanceList = resData.punishThePerson;
|
||||
};
|
||||
if (route.query.type === "edit") fnGetData();
|
||||
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUnitsListAll({});
|
||||
data.unitsList = resData.varList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
|
||||
const fnGetUnitUser = async () => {
|
||||
const resData = await setPersonnelmanagementListAll({
|
||||
UNITS_ID: data.form.UNITS_ID,
|
||||
});
|
||||
data.form.UNITS_PIC = "";
|
||||
data.form.UNITS_PHONE = "";
|
||||
data.unitsUserList = resData.varList;
|
||||
};
|
||||
|
||||
const fnSelectUnitsUser = (event) => {
|
||||
data.unitsUserList.forEach((item) => {
|
||||
if (item.PERSONNELMANAGEMENT_ID === event) {
|
||||
data.form.UNITS_PHONE = item.PHONENUM;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const fnInspectDepartmentChange = async (event, index) => {
|
||||
data.form.acceptanceList[index].USER_ID = "";
|
||||
const resData = await getUserListAll({
|
||||
DEPARTMENT_ID: event,
|
||||
});
|
||||
data.form.acceptanceList[index].userList = resData.userList;
|
||||
};
|
||||
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
const formData = new FormData();
|
||||
Object.keys(data.form).forEach((key) => {
|
||||
formData.append(key, data.form[key]);
|
||||
});
|
||||
if (data.form.STARTTIME_TIMES && data.form.STARTTIME_TIMES.length > 0) {
|
||||
formData.append("STARTTIME", data.form.STARTTIME_TIMES[0]);
|
||||
formData.append("ENDTIME", data.form.STARTTIME_TIMES[1]);
|
||||
}
|
||||
route.query.type === "edit"
|
||||
? await setOutsourcedEdit(formData)
|
||||
: await setOutsourcedAdd(formData);
|
||||
ElMessage.success("保存成功");
|
||||
router.back();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,201 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="创建单位" prop="CORP_NAME">
|
||||
<el-input v-model="searchForm.CORP_NAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="施工相关方" prop="UNITS_ID">
|
||||
<el-select
|
||||
v-model="searchForm.UNITS_ID"
|
||||
clearable
|
||||
placeholder="请选择状态"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.unitsList"
|
||||
:key="item.UNITS_ID"
|
||||
:label="item.UNITS_NAME"
|
||||
:value="item.UNITS_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="CORP_NAME"
|
||||
label="创建单位"
|
||||
/>
|
||||
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
|
||||
<el-table-column prop="UNITS_NAME" label="施工相关方" />
|
||||
<el-table-column prop="UNITS_NAME" label="辖区单位">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.JURISDICTION_UNIT_NAME">
|
||||
{{ row.JURISDICTION_UNIT_NAME }}
|
||||
</span>
|
||||
<span v-else>{{ row.INVOLVING_CORPS_DEPART_NAME }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="UNITS_NAME" label="主管部门">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.Q_COMPETENT_DEPT_NAME">
|
||||
{{ row.Q_COMPETENT_DEPT_NAME }}
|
||||
</span>
|
||||
<span v-else>{{ row.MANAGER_DEPARTMENT_NAME }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="DEPARTMENT_NAME" label="监管部门">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.Q_DEPARTMENT_NAME">
|
||||
{{ row.Q_DEPARTMENT_NAME }}
|
||||
</span>
|
||||
<span v-else>{{ row.DEPARTMENT_NAME }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="MANAGE_CORPS_NAME" label="监理单位" />
|
||||
<el-table-column prop="STATE" label="状态">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.STATE === '1'">进行中</span>
|
||||
<span v-if="row.STATE === '2'">已结束</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="OUTSOURCED_CREATOR_NAME" label="创建人" />
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/outsourced/view',
|
||||
query: {
|
||||
outsourcedId: row.OUTSOURCED_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button type="primary" text link v-if="row.STATE === '1'">
|
||||
结束
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/outsourced/add',
|
||||
query: {
|
||||
type: 'edit',
|
||||
outsourcedId: row.OUTSOURCED_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnHandleDelete(row.OUTSOURCED_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/outsourced/add',
|
||||
query: {
|
||||
type: 'add',
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getOutsourcedList,
|
||||
getUnitsListAll,
|
||||
setOutsourcedDelete,
|
||||
} from "@/request/keyprojects.js";
|
||||
import { reactive } from "vue";
|
||||
import router from "@/router";
|
||||
import { ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getOutsourcedList);
|
||||
|
||||
const data = reactive({
|
||||
unitsList: [],
|
||||
});
|
||||
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUnitsListAll({});
|
||||
data.unitsList = resData.varList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
|
||||
const fnHandleDelete = async (OUTSOURCED_ID) => {
|
||||
await ElMessageBox.confirm("确定要删除吗?", {
|
||||
type: "warning",
|
||||
});
|
||||
await setOutsourcedDelete({ OUTSOURCED_ID });
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,108 @@
|
|||
<template>
|
||||
<div>
|
||||
<layout-card>
|
||||
<div id="printContent">
|
||||
<el-divider content-position="left">工程信息</el-divider>
|
||||
<el-descriptions border :column="2">
|
||||
<el-descriptions-item label="重点工程名称" :span="2">
|
||||
{{ data.info.OUTSOURCED_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
label="股份主管部门"
|
||||
v-if="data.info.IS_CORP_TYPE === '0'"
|
||||
>
|
||||
{{ data.info.MANAGER_DEPARTMENT_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
label="股份监管部门"
|
||||
v-if="data.info.IS_CORP_TYPE === '0'"
|
||||
>
|
||||
{{ data.info.DEPARTMENT_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
:span="2"
|
||||
label="辖区单位"
|
||||
v-if="data.info.IS_CORP_TYPE === '0'"
|
||||
>
|
||||
{{ data.info.JURISDICTION_UNIT_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="企业监督部门">
|
||||
{{ data.info.DEPARTMENT_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="企业辖区部门" :span="2">
|
||||
{{ data.info.INVOLVING_CORPS_DEPART_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="集团单位" :span="2">
|
||||
{{ data.info.GROUP_UNIT_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="计划工期" :span="2">
|
||||
{{ data.info.STARTTIME }} 至 {{ data.info.ENDTIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="施工相关方" :span="2">
|
||||
{{ data.info.UNITS_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="合同号">
|
||||
{{ data.info.CONTRACT_NUM }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="监理单位名称">
|
||||
{{ data.info.MANAGE_CORPS_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="相关方单位工程负责人">
|
||||
{{ data.info.UNITS_PIC_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="相关方单位负责人手机">
|
||||
{{ data.info.UNITS_PHONE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="监理单位工程负责人">
|
||||
{{ data.info.MANAGE_PIC }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="监理单位负责人手机">
|
||||
{{ data.info.MANAGE_PHONE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="是否发送短信">
|
||||
{{ data.info.IS_SMS === "0" ? "是" : "否" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="状态">
|
||||
{{ data.info.STATE === "1" ? "进行中" : "已结束" }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">处罚相关</el-divider>
|
||||
<el-descriptions border :column="2">
|
||||
<div v-for="(item, index) in punishThePerson" :key="index">
|
||||
<el-descriptions-item label="处罚人员部门">
|
||||
{{ item.punishname }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处罚人员">
|
||||
{{ item.NAME }}
|
||||
</el-descriptions-item>
|
||||
</div>
|
||||
</el-descriptions>
|
||||
</div></layout-card
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { setOutsourcedGoEdit } from "@/request/keyprojects";
|
||||
import { reactive } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
info: {},
|
||||
punishThePerson: [],
|
||||
file: {},
|
||||
});
|
||||
|
||||
const fnGetData = async () => {
|
||||
const resData = await setOutsourcedGoEdit({
|
||||
OUTSOURCED_ID: route.query.outsourcedId,
|
||||
});
|
||||
data.info = resData.pd;
|
||||
data.punishThePerson = resData.punishThePerson;
|
||||
data.file = resData.file9;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,172 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" :title="title" width="600" :on-close="fnClose">
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="110px">
|
||||
<el-form-item label="单位名称" prop="UNITS_ID">
|
||||
<el-select
|
||||
:disabled="type === 'view'"
|
||||
v-model="form.UNITS_ID"
|
||||
placeholder="请选择状态"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.unitsnameList"
|
||||
:key="item.UNITS_ID"
|
||||
:label="item.UNITS_NAME"
|
||||
:value="item.UNITS_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="作业类别">
|
||||
<el-select
|
||||
:disabled="type === 'view'"
|
||||
v-model="form.JOB_TYPE"
|
||||
placeholder="请选择状态"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in jobtypeList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.DICTIONARIES_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="操作项目">
|
||||
<el-input v-model="form.OPERATIONITEM" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="PHONENUM">
|
||||
<el-input v-model="form.PHONENUM" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="NAME">
|
||||
<el-input v-model="form.NAME" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别">
|
||||
<el-select
|
||||
:disabled="type === 'view'"
|
||||
v-model="form.SEX"
|
||||
placeholder="请选择性别"
|
||||
>
|
||||
<el-option label="男" value="0" />
|
||||
<el-option label="女" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="作业证书编号">
|
||||
<el-input v-model="form.CERTIFICATE_NUM" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="复审时间">
|
||||
<el-input v-model="form.REVIEWTIME" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证号码">
|
||||
<el-input v-model="form.IDENTITYCARD" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="发证机关">
|
||||
<el-input v-model="form.LICENSING" :disabled="type === 'view'" />
|
||||
</el-form-item>
|
||||
<el-form-item label="有效期">
|
||||
<el-date-picker
|
||||
:disabled="type === 'view'"
|
||||
v-model="form.VALID_TIME"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取 消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { reactive, ref } from "vue";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { layoutFnGetPersonnelmanagementJobType } from "@/assets/js/data_dictionary";
|
||||
import {
|
||||
getUnitsListAll,
|
||||
setPersonnelmanagementAdd,
|
||||
setPersonnelmanagementEdit,
|
||||
} from "@/request/keyprojects";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: () => "",
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: () => "",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const rules = {
|
||||
UNITS_ID: [{ required: true, message: "请选择单位名称", trigger: "change" }],
|
||||
NAME: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
||||
PHONENUM: [
|
||||
{ required: true, message: "请输入手机号码", trigger: "blur" },
|
||||
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
|
||||
{
|
||||
pattern:
|
||||
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
|
||||
message: "请输入正确的手机号码",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const data = reactive({
|
||||
unitsnameList: [],
|
||||
});
|
||||
|
||||
const formRef = ref(null);
|
||||
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
if (form.VALID_TIME && form.VALID_TIME.length !== 0) {
|
||||
form.VALID_STIME = form.VALID_TIME[0];
|
||||
form.VALID_ETIME = form.VALID_TIME[1];
|
||||
}
|
||||
props.type === "add"
|
||||
? await setPersonnelmanagementAdd(props.form)
|
||||
: await setPersonnelmanagementEdit(props.form);
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
emits("get-data");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
|
||||
const jobtypeList = await layoutFnGetPersonnelmanagementJobType();
|
||||
const fnUnitsListAll = async () => {
|
||||
const resData = await getUnitsListAll();
|
||||
data.unitsnameList = resData.varList;
|
||||
};
|
||||
fnUnitsListAll();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,216 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="作业类别" prop="JOB_TYPE">
|
||||
<el-select
|
||||
v-model="searchForm.JOB_TYPE"
|
||||
clearable
|
||||
placeholder="请选择状态"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in jobtypeList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.DICTIONARIES_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATOR_CORP_NAME" label="添加单位" />
|
||||
<el-table-column prop="CREATOR_NAME" label="添加人" width="200" />
|
||||
<el-table-column prop="UNITS_NAME" label="单位名称" width="150" />
|
||||
<el-table-column prop="JOBTYPE" label="作业类别" width="100" />
|
||||
<el-table-column prop="OPERATIONITEM" label="操作项目" />
|
||||
<el-table-column prop="NAME" label="姓名" />
|
||||
<el-table-column prop="SEX" label="性别" />
|
||||
<el-table-column prop="CERTIFICATE_NUM" label="作业证书编号" />
|
||||
<el-table-column prop="REVIEWTIME" label="复审时间" />
|
||||
<el-table-column label="操作" align="center" width="240">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="resetPwd(row.PERSONNELMANAGEMENT_ID, row.NAME)"
|
||||
>
|
||||
重置密码
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnView(row.PERSONNELMANAGEMENT_ID)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnEdit(row.PERSONNELMANAGEMENT_ID)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="handleDelete(row.PERSONNELMANAGEMENT_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button type="primary" @click="fnAdd(row)"> 新增 </el-button>
|
||||
<el-button type="danger" @click="batchDel()"> 删除 </el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<edit
|
||||
v-model:visible="data.editDialog.visible"
|
||||
v-model:form="data.editDialog.form"
|
||||
:type="data.editDialog.type"
|
||||
:title="data.editDialog.title"
|
||||
@get-data="fnResetPaginationTransfer"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { layoutFnGetPersonnelmanagementJobType } from "@/assets/js/data_dictionary";
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getPersonnelmanagementList,
|
||||
setPersonnelmanagementResetPwd,
|
||||
setPersonnelmanagementGoEdit,
|
||||
setPersonnelmanagementDelete,
|
||||
setPersonnelmanagementDeleteAll,
|
||||
} from "@/request/keyprojects.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { reactive } from "vue";
|
||||
import Edit from "./components/edit.vue";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getPersonnelmanagementList);
|
||||
const jobtypeList = await layoutFnGetPersonnelmanagementJobType();
|
||||
const data = reactive({
|
||||
type: "",
|
||||
title: "",
|
||||
editDialog: {
|
||||
visible: false,
|
||||
form: {},
|
||||
},
|
||||
});
|
||||
|
||||
const resetPwd = async (PERSONNELMANAGEMENT_ID, NAME) => {
|
||||
await ElMessageBox.confirm(
|
||||
"是否将[" + NAME + "]的密码重置为 Aa@123456789 吗?",
|
||||
{
|
||||
type: "warning",
|
||||
}
|
||||
);
|
||||
await setPersonnelmanagementResetPwd({ PERSONNELMANAGEMENT_ID });
|
||||
ElMessage.success("重置成功");
|
||||
};
|
||||
|
||||
const handleDelete = async (PERSONNELMANAGEMENT_ID) => {
|
||||
await ElMessageBox.confirm("确定要删除吗?", {
|
||||
type: "warning",
|
||||
});
|
||||
await setPersonnelmanagementDelete({ PERSONNELMANAGEMENT_ID });
|
||||
fnGetData();
|
||||
};
|
||||
|
||||
const batchDel = async () => {
|
||||
const selectionData = tableRef.value.getSelectionRows();
|
||||
if (selectionData.length === 0) {
|
||||
ElMessage.warning("请选中要删除的项");
|
||||
return;
|
||||
}
|
||||
await ElMessageBox.confirm("确定要删除吗?", {
|
||||
type: "warning",
|
||||
});
|
||||
const ids = selectionData
|
||||
.map((item) => {
|
||||
return item.PERSONNELMANAGEMENT_ID;
|
||||
})
|
||||
.join(",");
|
||||
await setPersonnelmanagementDeleteAll({ DATA_IDS: ids });
|
||||
fnGetData();
|
||||
};
|
||||
|
||||
const fnGoEdit = async (id) => {
|
||||
const resData = await setPersonnelmanagementGoEdit({
|
||||
PERSONNELMANAGEMENT_ID: id,
|
||||
});
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
|
||||
const fnAdd = () => {
|
||||
data.editDialog.form = {};
|
||||
data.editDialog.visible = true;
|
||||
data.editDialog.type = "add";
|
||||
data.editDialog.title = "新增";
|
||||
};
|
||||
|
||||
const fnEdit = async (id) => {
|
||||
data.editDialog.form = {};
|
||||
data.editDialog.visible = true;
|
||||
data.editDialog.type = "edit";
|
||||
data.editDialog.title = "编辑";
|
||||
fnGoEdit(id);
|
||||
};
|
||||
|
||||
const fnView = async (id) => {
|
||||
data.editDialog.form = {};
|
||||
data.editDialog.visible = true;
|
||||
data.editDialog.type = "view";
|
||||
data.editDialog.title = "查看";
|
||||
fnGoEdit(id);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,92 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
|
||||
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" width="200" />
|
||||
<el-table-column
|
||||
prop="MANAGE_CORPS_NAME"
|
||||
label="监理单位"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UNITS_PIC_NAME"
|
||||
label="相关方单位负责人"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column prop="UNITS_PHONE" label="电话" />
|
||||
<el-table-column prop="CHECK_COUNT" label="安全环保检查次数" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/punish/record_list',
|
||||
query: {
|
||||
OUTSOURCED_ID: row.OUTSOURCED_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getOutsourcedList } from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getOutsourcedList);
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,106 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="处罚状态">
|
||||
<el-select v-model="searchForm.HANDLED">
|
||||
<el-option label="待反馈处罚" value="1" />
|
||||
<el-option label="已完成处罚" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
|
||||
<el-table-column prop="REASON" label="处罚原因" width="200" />
|
||||
<el-table-column prop="CREATOR_NAME" label="下发人" width="150" />
|
||||
<el-table-column
|
||||
prop="OUTSOURCED_NAME"
|
||||
label="被处罚单位"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column prop="PERSON_NAME" label="被处罚人" />
|
||||
<el-table-column label="处罚处理状态">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.HANDLED === "0" ? "待处理" : "已处理" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/inspection/record_view',
|
||||
query: {
|
||||
KEYPROJECTPUNISH_ID: row.KEYPROJECTPUNISH_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getKeyprojectpunishList } from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const { OUTSOURCED_ID } = route.query;
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getKeyprojectpunishList, {
|
||||
otherParams: { OUTSOURCED_ID },
|
||||
});
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,59 @@
|
|||
<template>
|
||||
<div>
|
||||
<layout-card>
|
||||
<div id="printContent">
|
||||
<el-divider content-position="left">检查信息</el-divider>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="处罚原因 ">
|
||||
{{ data.info.REASON }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处罚金额">
|
||||
{{ data.info.AMOUT }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="被处罚单位 ">
|
||||
{{ data.info.OUTSOURCED_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="被处罚人">
|
||||
{{ data.info.PERSON_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="下发人 ">
|
||||
{{ data.info.CREATOR_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="下发处罚时间">
|
||||
{{ data.info.DATE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="罚款缴纳单 ">
|
||||
{{ data.info.INSPECTION_TIME_START }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处罚处理人">
|
||||
{{ data.info.PERSON_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处罚处理时间">
|
||||
{{ data.info.HANLDE_TIME }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getKeyprojectpunishGoEdit } from "@/request/keyprojects";
|
||||
import { reactive } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
info: {},
|
||||
});
|
||||
|
||||
const fnGetData = async () => {
|
||||
const resData = await getKeyprojectpunishGoEdit({
|
||||
KEYPROJECTPUNISH_ID: route.query.KEYPROJECTPUNISH_ID,
|
||||
});
|
||||
data.info = resData.pd;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,107 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="data.form"
|
||||
:rules="rules"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="相关方单位名称" prop="UNITS_NAME">
|
||||
<el-input v-model="data.form.UNITS_NAME" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="统一社会信用代码" prop="CODE">
|
||||
<el-input v-model="data.form.CODE" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人" prop="CONTACTS">
|
||||
<el-input v-model="data.form.CONTACTS" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人电话" prop="CONTACTS_PHONE">
|
||||
<el-input
|
||||
v-model="data.form.CONTACTS_PHONE"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="tc mt-10">
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</div>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useFormValidate from "@/assets/js/useFormValidate";
|
||||
import {
|
||||
setUnitsAdd,
|
||||
setUnitsEdit,
|
||||
setUnitsGoEdit,
|
||||
} from "@/request/keyprojects";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { reactive, ref } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const formRef = ref(null);
|
||||
const rules = {
|
||||
UNITS_NAME: [
|
||||
{ required: true, message: "请输入相关方单位名称", trigger: "blur" },
|
||||
],
|
||||
CODE: [
|
||||
{ required: true, message: "请输入统一社会信用代码", trigger: "blur" },
|
||||
{
|
||||
pattern: /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/,
|
||||
message: "请输入正确的统一社会信用代码",
|
||||
},
|
||||
],
|
||||
CONTACTS: [{ required: true, message: "请输入联系人", trigger: "blur" }],
|
||||
CONTACTS_PHONE: [
|
||||
{ required: true, message: "请输入联系人电话", trigger: "blur" },
|
||||
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
|
||||
{
|
||||
pattern:
|
||||
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
|
||||
message: "请输入正确的手机号码",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const data = reactive({
|
||||
form: [],
|
||||
});
|
||||
|
||||
const fnGoEdit = async () => {
|
||||
const resData = await setUnitsGoEdit({ UNITS_ID: route.query.UNITS_ID });
|
||||
data.form = resData.pd;
|
||||
};
|
||||
if (route.query.type === "edit") fnGoEdit();
|
||||
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
const formData = new FormData();
|
||||
Object.keys(data.form).forEach((key) => {
|
||||
formData.append(key, data.form[key]);
|
||||
});
|
||||
route.query.type === "edit"
|
||||
? await setUnitsEdit(formData)
|
||||
: await setUnitsAdd(formData);
|
||||
ElMessage.success("保存成功");
|
||||
router.back();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,179 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="UNITS_NAME"
|
||||
label="相关方单位名称"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="CODE" label="统一社会信用代码" width="200" />
|
||||
<el-table-column
|
||||
prop="CONTACTS"
|
||||
label="联系人"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="CONTACTS_PHONE" label="联系人电话" width="100" />
|
||||
<el-table-column
|
||||
prop="CORP_NAME"
|
||||
label="创建单位"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CREATOR_NAME"
|
||||
label="创建人"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="操作" align="center" width="140">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/units/add',
|
||||
query: {
|
||||
type: 'edit',
|
||||
UNITS_ID: row.UNITS_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="isTrueDelete(row.UNITS_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({
|
||||
path: '/keyprojects/units/add',
|
||||
query: {
|
||||
type: 'add',
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button type="danger" @click="isTrueDeleteAll">
|
||||
批量删除
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getUnitsList,
|
||||
setIsTrueDelete,
|
||||
setIsTrueDeleteAll,
|
||||
setUnitsDelete,
|
||||
setUnitsDeleteAll,
|
||||
} from "@/request/keyprojects.js";
|
||||
import router from "@/router";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getUnitsList);
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
|
||||
const isTrueDelete = async (UNITS_ID) => {
|
||||
const resData = await setIsTrueDelete({ UNITS_ID });
|
||||
if (resData.result === "success" && resData.number === 0) {
|
||||
handleDelete(UNITS_ID);
|
||||
} else {
|
||||
ElMessage.info("相关方下还有人员不能进行删除");
|
||||
}
|
||||
};
|
||||
|
||||
const isTrueDeleteAll = async () => {
|
||||
const selectionData = tableRef.value.getSelectionRows();
|
||||
if (selectionData.length === 0) {
|
||||
ElMessage.warning("请选中要删除的项");
|
||||
return;
|
||||
}
|
||||
const ids = selectionData
|
||||
.map((item) => {
|
||||
return item.UNITS_ID;
|
||||
})
|
||||
.join(",");
|
||||
const resData = await setIsTrueDeleteAll({ UNITS_ID: ids });
|
||||
if (resData.result === "success" && resData.number === 0) {
|
||||
batchDel(ids);
|
||||
} else {
|
||||
ElMessage.warning("相关方下还有人员不能进行删除");
|
||||
}
|
||||
};
|
||||
|
||||
const batchDel = async (ids) => {
|
||||
await ElMessageBox.confirm("确定要删除吗?", {
|
||||
type: "warning",
|
||||
});
|
||||
await setUnitsDeleteAll({ DATA_IDS: ids });
|
||||
fnGetData();
|
||||
};
|
||||
|
||||
const handleDelete = async (UNITS_ID) => {
|
||||
await ElMessageBox.confirm("确定要删除吗?", {
|
||||
type: "warning",
|
||||
});
|
||||
await setUnitsDelete({ UNITS_ID });
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,106 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键字搜索" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
ref="tableRef"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
row-key="UNITS_ID"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATOR_CORP_NAME" label="添加单位" />
|
||||
<el-table-column prop="CREATOR_NAME" label="添加人" width="200" />
|
||||
<el-table-column prop="UNITS_NAME" label="单位名称" width="150" />
|
||||
<el-table-column prop="JOBTYPE" label="作业类别" width="100" />
|
||||
<el-table-column prop="OPERATIONITEM" label="操作项目" />
|
||||
<el-table-column prop="NAME" label="姓名" />
|
||||
<el-table-column prop="SEX" label="性别" />
|
||||
<el-table-column prop="CERTIFICATE_NUM" label="作业证书编号" />
|
||||
<el-table-column prop="REVIEWTIME" label="复审时间" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnView(row.PERSONNELMANAGEMENT_ID)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getPersonnelmanagementList,
|
||||
setPersonnelmanagementGoEdit,
|
||||
} from "@/request/keyprojects.js";
|
||||
import { reactive } from "vue";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getPersonnelmanagementList);
|
||||
const data = reactive({
|
||||
type: "",
|
||||
title: "",
|
||||
editDialog: {
|
||||
visible: false,
|
||||
form: {},
|
||||
},
|
||||
});
|
||||
|
||||
const fnGoEdit = async (id) => {
|
||||
const resData = await setPersonnelmanagementGoEdit({
|
||||
PERSONNELMANAGEMENT_ID: id,
|
||||
});
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnGetData(searchForm);
|
||||
};
|
||||
|
||||
const fnView = async (id) => {
|
||||
data.editDialog.form = {};
|
||||
data.editDialog.visible = true;
|
||||
data.editDialog.type = "view";
|
||||
data.editDialog.title = "查看";
|
||||
fnGoEdit(id);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,154 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="90px"
|
||||
@submit.prevent="fnResetPaginationTransfer"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="申请人" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="离岗状态" prop="REVIEW_STATUS">
|
||||
<el-select v-model="searchForm.REVIEW_STATUS">
|
||||
<el-option
|
||||
v-for="item in reviewStatusList"
|
||||
:key="item.ID"
|
||||
:value="item.ID"
|
||||
:label="item.NAME"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="审批人" prop="REVIEW_USER_NAME">
|
||||
<el-input v-model="searchForm.REVIEW_USER_NAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="离岗时间" prop="dates">
|
||||
<el-date-picker
|
||||
v-model="searchForm.dates"
|
||||
type="daterange"
|
||||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
range-separator="至"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="申请人部门">
|
||||
<layout-department
|
||||
v-model="searchForm.DEPTIDS"
|
||||
multiple
|
||||
show-checkbox
|
||||
collapse-tags
|
||||
root-disabled="Y"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetDataTransfer"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="DEPARTMENTNAME_ALL" label="部门" />
|
||||
<el-table-column prop="POSTNAME" label="岗位" />
|
||||
<el-table-column prop="USER_NAME" label="姓名" />
|
||||
<el-table-column label="申请状态">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.REVIEW_STATUS === '0'">待审批</span>
|
||||
<span v-else-if="row.REVIEW_STATUS === '1'">审批通过</span>
|
||||
<span
|
||||
v-else-if="row.ISDELETE === '1' && row.REVIEW_STATUS === '-1'"
|
||||
>
|
||||
<span v-if="row.CREATOR === row.OPERATOR">申请人取消</span>
|
||||
<span v-else>审批人取消</span>
|
||||
</span>
|
||||
<span v-else-if="row.REVIEW_STATUS === '-1'">审批打回</span>
|
||||
<span v-else-if="row.REVIEW_STATUS === '2'">无需审批</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="离岗时间">
|
||||
<template v-slot="{ row }">
|
||||
<span>{{ row.STARTTIME }} 至 {{ row.ENDTIME }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="指定审批人">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.REVIEW_USER_ID">
|
||||
{{
|
||||
row.REVIEW_USER_NAME +
|
||||
" [" +
|
||||
row.REVIEW_USER_DEPARTMENTNAME +
|
||||
"]"
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<el-button type="primary" text link @click="fnView(row)">
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { getRecordList } from "@/request/off_duty_management.js";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
|
||||
const reviewStatusList = [
|
||||
{ ID: "0", NAME: "待审批" },
|
||||
{ ID: "1", NAME: "审批通过" },
|
||||
{ ID: "-1", NAME: "审批打回" },
|
||||
{ ID: "2", NAME: "无需审批" },
|
||||
{ ID: "3", NAME: "申请人取消" },
|
||||
{ ID: "4", NAME: "审批人取消" },
|
||||
];
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getRecordList, { otherParams: { TYPE: "show" } });
|
||||
const fnGetDataTransfer = () => {
|
||||
fnGetData({
|
||||
STARTTIME: searchForm.value.dates?.[0],
|
||||
ENDTIME: searchForm.value.dates?.[1],
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnResetPagination({
|
||||
STARTTIME: searchForm.value.dates?.[0],
|
||||
ENDTIME: searchForm.value.dates?.[1],
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,56 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<layout-table :data="list" :show-pagination="false">
|
||||
<el-table-column label="序号" width="60" type="index" />
|
||||
<el-table-column prop="CORP_NAME" label="企业名称" />
|
||||
<el-table-column label="离岗是否审批" width="260">
|
||||
<template #default="{ row }">
|
||||
<el-switch
|
||||
v-model="SETUP_STATE"
|
||||
active-text="是"
|
||||
inactive-text="否"
|
||||
active-value="2"
|
||||
inactive-value="1"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
@change="fnChange(row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import {
|
||||
getSettingList,
|
||||
setSettingChange,
|
||||
} from "@/request/off_duty_management.js";
|
||||
import { ref } from "vue";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const SETUP_STATE = ref("");
|
||||
const { list, fnResetPagination } = useListData(getSettingList, {
|
||||
usePagination: false,
|
||||
callbackFn: (list) => {
|
||||
if (list.length > 0) SETUP_STATE.value = list[0].SETUP_STATE;
|
||||
},
|
||||
});
|
||||
const fnChange = debounce(
|
||||
1000,
|
||||
async (row) => {
|
||||
await setSettingChange({
|
||||
OFFDUTY_SETUP_ID: row.OFFDUTY_SETUP_ID,
|
||||
CORPINFO_ID: row.CORPINFO_ID,
|
||||
SETUP_STATE: SETUP_STATE.value,
|
||||
});
|
||||
ElMessage.success("设置成功");
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,518 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:rules="rules"
|
||||
:model="data.form"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="承诺书名称" prop="PROMISE_NAME">
|
||||
<el-input v-model="data.form.PROMISE_NAME" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="级别" prop="LEVEL">
|
||||
<el-select v-model="data.form.LEVEL">
|
||||
<el-option
|
||||
v-for="item in commitmentLevelList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:value="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="适用期限开始" prop="PROMISE_TERM_START">
|
||||
<el-date-picker
|
||||
v-model="data.form.PROMISE_TERM_START"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="适用期限结束" prop="PROMISE_TERM_END">
|
||||
<el-date-picker
|
||||
v-model="data.form.PROMISE_TERM_END"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">承诺人</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item class="end">
|
||||
<el-button type="primary" @click="fnAddPeople">添加</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<template v-for="(item, index) in data.form.people" :key="item.id">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
:label="'部门' + (index + 1)"
|
||||
:prop="'people.' + index + '.DEPARTMENT_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '部门不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<layout-department
|
||||
v-model="item.DEPARTMENT_ID"
|
||||
@update:model-value="
|
||||
fnDepartmentChange($event, index, 'people')
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
:label="'岗位' + (index + 1)"
|
||||
:prop="'people.' + index + '.POST_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '岗位不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<el-select
|
||||
:model-value="item.POST_ID"
|
||||
@change="fnPostChange($event, index, 'people')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in item.postList"
|
||||
:key="item.POST_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.POST_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
:label="'人员' + (index + 1)"
|
||||
:prop="'people.' + index + '.USER_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '人员不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<div
|
||||
style="
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
"
|
||||
>
|
||||
<el-select v-model="item.USER_ID" multiple>
|
||||
<el-option
|
||||
v-for="item in item.userList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button
|
||||
v-if="index !== 0"
|
||||
class="ml-10"
|
||||
type="danger"
|
||||
@click="data.form.people.splice(index, 1)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">被承诺人</el-divider>
|
||||
</el-col>
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item class="end">-->
|
||||
<!-- <el-button type="primary" @click="fnAddCoverPeople">添加</el-button>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<template v-for="(item, index) in data.form.coverpeople" :key="item.id">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
:label="'部门' + (index + 1)"
|
||||
:prop="'coverpeople.' + index + '.DEPARTMENT_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '部门不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<layout-department
|
||||
v-model="item.DEPARTMENT_ID"
|
||||
@update:model-value="
|
||||
fnDepartmentChange($event, index, 'coverpeople')
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
:label="'岗位' + (index + 1)"
|
||||
:prop="'coverpeople.' + index + '.POST_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '岗位不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<el-select
|
||||
:model-value="item.POST_ID"
|
||||
@change="fnPostChange($event, index, 'coverpeople')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in item.postList"
|
||||
:key="item.POST_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.POST_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
:label="'人员' + (index + 1)"
|
||||
:prop="'coverpeople.' + index + '.USER_ID'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '人员不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<div
|
||||
style="
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
"
|
||||
>
|
||||
<el-select v-model="item.USER_ID" multiple :multiple-limit="1">
|
||||
<el-option
|
||||
v-for="item in item.userList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
<!-- <el-button-->
|
||||
<!-- v-if="index !== 0"-->
|
||||
<!-- class="ml-10"-->
|
||||
<!-- type="danger"-->
|
||||
<!-- @click="data.form.coverpeople.splice(index, 1)"-->
|
||||
<!-- >-->
|
||||
<!-- 删除-->
|
||||
<!-- </el-button>-->
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">承诺书内容</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item class="end">
|
||||
<el-button type="primary" @click="fnSelectTemplate">
|
||||
选择模板
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<template v-if="data.isSelectTemplate">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="正文" prop="TEXT">
|
||||
<el-input
|
||||
v-model="data.form.TEXT"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 3 }"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item class="end">
|
||||
<el-button type="primary" @click="fnAddCollateral">
|
||||
新增副文
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
v-for="(item, index) in data.form.DETAIL"
|
||||
:key="item.id"
|
||||
:span="24"
|
||||
>
|
||||
<el-form-item
|
||||
:label="'副文' + (index + 1)"
|
||||
:prop="'DETAIL.' + index + '.value'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '副文不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<div
|
||||
style="
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
"
|
||||
>
|
||||
<el-input
|
||||
v-model="item.value"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 3 }"
|
||||
/>
|
||||
<el-button
|
||||
v-if="index !== 0"
|
||||
class="ml-10"
|
||||
type="danger"
|
||||
@click="data.form.DETAIL.splice(index, 1)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="mt-10 tc">
|
||||
<el-button type="primary" @click="fnSubmit">提交</el-button>
|
||||
</div>
|
||||
<select-template
|
||||
v-model:visible="data.selectTemplateDialogVisible"
|
||||
@check="fnSelectTemplateSubmit"
|
||||
/>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref } from "vue";
|
||||
import { layoutFnGetCommitmentLevel } from "@/assets/js/data_dictionary.js";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
import { getPostListAll, getUserListAll } from "@/request/data_dictionary.js";
|
||||
import { verifyDuplicateSelection } from "@/assets/js/utils.js";
|
||||
import SelectTemplate from "./components/select_template.vue";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import {
|
||||
getAdministrationView,
|
||||
setAdministrationAdd,
|
||||
setAdministrationEdit,
|
||||
} from "@/request/security_commitment_pro.js";
|
||||
import dayjs from "dayjs";
|
||||
import { uniqBy } from "lodash-es";
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const { PROMISE_ID } = route.query;
|
||||
const rules = {
|
||||
PROMISE_NAME: [
|
||||
{ required: true, message: "承诺书名称不能为空", trigger: "blur" },
|
||||
],
|
||||
LEVEL: [{ required: true, message: "级别不能为空", trigger: "change" }],
|
||||
PROMISE_TERM_START: [
|
||||
{ required: true, message: "适用期限开始不能为空", trigger: "change" },
|
||||
],
|
||||
PROMISE_TERM_END: [
|
||||
{ required: true, message: "适用期限结束不能为空", trigger: "change" },
|
||||
],
|
||||
TEXT: [{ required: true, message: "正文不能为空", trigger: "blur" }],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const data = reactive({
|
||||
form: {
|
||||
PROMISE_NAME: "",
|
||||
LEVEL: "",
|
||||
PROMISE_TERM_START: dayjs().format("YYYY-MM-DD"),
|
||||
PROMISE_TERM_END: dayjs().format("YYYY-MM-DD"),
|
||||
people: [],
|
||||
coverpeople: [],
|
||||
TEXT: "",
|
||||
DETAIL: [],
|
||||
},
|
||||
selectTemplateDialogVisible: false,
|
||||
isSelectTemplate: false,
|
||||
});
|
||||
const commitmentLevelList = await layoutFnGetCommitmentLevel();
|
||||
const fnAddPeople = () => {
|
||||
data.form.people.push({
|
||||
postList: [],
|
||||
userList: [],
|
||||
DEPARTMENT_ID: "",
|
||||
POST_ID: "",
|
||||
USER_ID: [],
|
||||
id: Math.random(),
|
||||
});
|
||||
};
|
||||
const fnAddCoverPeople = () => {
|
||||
data.form.coverpeople.push({
|
||||
postList: [],
|
||||
userList: [],
|
||||
DEPARTMENT_ID: "",
|
||||
POST_ID: "",
|
||||
USER_ID: [],
|
||||
id: Math.random(),
|
||||
});
|
||||
};
|
||||
const fnGetData = async () => {
|
||||
if (!PROMISE_ID) {
|
||||
fnAddPeople();
|
||||
fnAddCoverPeople();
|
||||
return;
|
||||
}
|
||||
const resData = await getAdministrationView({ PROMISE_ID });
|
||||
const DETAIL = resData.promistDetail.map((item) => ({
|
||||
value: item.COLLATERAL,
|
||||
id: item.PROMISEDETAIL_ID,
|
||||
}));
|
||||
const people = resData.people;
|
||||
const coverpeople = resData.coverpeople;
|
||||
const newPeople = [];
|
||||
const newCoverpeople = [];
|
||||
for (let i = 0; i < people.length; i++) {
|
||||
newPeople.push({
|
||||
...people[i],
|
||||
postList: [],
|
||||
userList: [],
|
||||
USER_ID: [],
|
||||
id: people[i].PROMISEPEOPLE_ID,
|
||||
});
|
||||
for (let j = 0; j < newPeople.length; j++) {
|
||||
if (people[i].POST_ID === newPeople[j].POST_ID) {
|
||||
newPeople[j].USER_ID.push(people[i].USER_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < coverpeople.length; i++) {
|
||||
newCoverpeople.push({
|
||||
...coverpeople[i],
|
||||
postList: [],
|
||||
userList: [],
|
||||
USER_ID: [],
|
||||
id: coverpeople[i].PROMISEPEOPLE_ID,
|
||||
});
|
||||
for (let j = 0; j < newCoverpeople.length; j++) {
|
||||
if (coverpeople[i].POST_ID === newCoverpeople[j].POST_ID) {
|
||||
newCoverpeople[j].USER_ID.push(coverpeople[i].USER_ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
data.form = {
|
||||
...resData.varList,
|
||||
DETAIL,
|
||||
people: uniqBy(newPeople, "POST_ID"),
|
||||
coverpeople: uniqBy(newCoverpeople, "POST_ID"),
|
||||
};
|
||||
data.isSelectTemplate = true;
|
||||
for (let i = 0; i < data.form.people.length; i++) {
|
||||
await fnGetPostList(data.form.people[i].DEPARTMENT_ID, i, "people");
|
||||
await fnGetUserList(
|
||||
data.form.people[i].DEPARTMENT_ID,
|
||||
data.form.people[i].POST_ID,
|
||||
i,
|
||||
"people"
|
||||
);
|
||||
}
|
||||
for (let i = 0; i < data.form.coverpeople.length; i++) {
|
||||
await fnGetPostList(
|
||||
data.form.coverpeople[i].DEPARTMENT_ID,
|
||||
i,
|
||||
"coverpeople"
|
||||
);
|
||||
await fnGetUserList(
|
||||
data.form.coverpeople[i].DEPARTMENT_ID,
|
||||
data.form.coverpeople[i].POST_ID,
|
||||
i,
|
||||
"coverpeople"
|
||||
);
|
||||
}
|
||||
};
|
||||
fnGetData();
|
||||
const fnDepartmentChange = (value, index, key) => {
|
||||
data.form[key][index].POST_ID = "";
|
||||
data.form[key][index].USER_ID = [];
|
||||
data.form[key][index].postList = [];
|
||||
data.form[key][index].userList = [];
|
||||
fnGetPostList(value, index, key);
|
||||
};
|
||||
const fnGetPostList = async (DEPARTMENT_ID, index, key) => {
|
||||
const resData = await getPostListAll({ DEPARTMENT_ID });
|
||||
data.form[key][index].postList = resData.postList;
|
||||
};
|
||||
const fnPostChange = async (value, index, key) => {
|
||||
await verifyDuplicateSelection(data.form[key], index, "POST_ID", value);
|
||||
data.form[key][index].USER_ID = [];
|
||||
data.form[key][index].userList = [];
|
||||
await fnGetUserList(data.form[key][index].DEPARTMENT_ID, value, index, key);
|
||||
};
|
||||
const fnGetUserList = async (DEPARTMENT_ID, POST_ID, index, key) => {
|
||||
const resData = await getUserListAll({ DEPARTMENT_ID, POST_ID });
|
||||
data.form[key][index].userList = resData.userList;
|
||||
};
|
||||
const fnSelectTemplate = () => {
|
||||
data.selectTemplateDialogVisible = true;
|
||||
};
|
||||
const fnSelectTemplateSubmit = (row) => {
|
||||
data.form.DETAIL = row.DETAIL;
|
||||
data.form.TEXT = row.TEXT;
|
||||
data.form.TYPE = row.TYPE;
|
||||
data.isSelectTemplate = true;
|
||||
};
|
||||
const fnAddCollateral = () => {
|
||||
data.form.DETAIL.push({ value: "", id: Math.random() });
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
if (!data.isSelectTemplate) {
|
||||
ElMessage.warning("请选择模板");
|
||||
return;
|
||||
}
|
||||
const DETAIL = data.form.DETAIL.map((item, index) => ({
|
||||
value: item.value,
|
||||
index,
|
||||
}));
|
||||
const people = data.form.people.map((item) => ({
|
||||
DEPARTMENT_ID: item.DEPARTMENT_ID,
|
||||
POST_ID: item.POST_ID,
|
||||
USER_ID: item.USER_ID,
|
||||
}));
|
||||
const coverpeople = data.form.coverpeople.map((item) => ({
|
||||
DEPARTMENT_ID: item.DEPARTMENT_ID,
|
||||
POST_ID: item.POST_ID,
|
||||
USER_ID: item.USER_ID,
|
||||
}));
|
||||
const params = {
|
||||
...data.form,
|
||||
DETAIL: JSON.stringify(DETAIL),
|
||||
people: JSON.stringify(people),
|
||||
coverpeople: JSON.stringify(coverpeople),
|
||||
PROMISE_ID,
|
||||
};
|
||||
!PROMISE_ID
|
||||
? await setAdministrationAdd(params)
|
||||
: await setAdministrationEdit(params);
|
||||
ElMessage.success("操作成功");
|
||||
router.back();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,99 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" title="选择模板">
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="90px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="承诺书名称" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="PROMISE_NAME" label="承诺书名称" />
|
||||
<el-table-column label="类型">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.TYPE === "0" ? "承诺书" : "责任状" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<template v-slot="{ row }">
|
||||
<el-button type="primary" text link @click="fnCheck(row)">
|
||||
选择
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">关闭</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useVModel } from "@vueuse/core";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import {
|
||||
getAdministrationSelectTemplateCheck,
|
||||
getAdministrationSelectTemplateList,
|
||||
} from "@/request/security_commitment_pro.js";
|
||||
import { serialNumber } from "@/assets/js/utils.js";
|
||||
import { watch } from "vue";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "check"]);
|
||||
const visible = useVModel(props, "visible", emits);
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getAdministrationSelectTemplateList, {
|
||||
immediate: false,
|
||||
});
|
||||
const fnClose = () => {
|
||||
visible.value = false;
|
||||
};
|
||||
const fnCheck = async (row) => {
|
||||
const resData = await getAdministrationSelectTemplateCheck({
|
||||
PROMISE_ID: row.PROMISE_ID,
|
||||
});
|
||||
const DETAIL = resData.varList.map((item) => ({
|
||||
value: item.COLLATERAL,
|
||||
id: item.PROMISEDETAIL_ID,
|
||||
}));
|
||||
fnClose();
|
||||
emits("check", { DETAIL, TEXT: row.TEXT, TYPE: row.TYPE });
|
||||
};
|
||||
const stop = watch(visible, (val) => {
|
||||
if (val) {
|
||||
fnGetData();
|
||||
stop && stop();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,85 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="DEPTNAME" label="部门" />
|
||||
<el-table-column prop="POST_NAME" label="岗位" />
|
||||
<el-table-column prop="USERNAME" label="人员" />
|
||||
<el-table-column prop="SIGNTIME" label="签署时间" />
|
||||
<el-table-column label="状态">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.ISSIGN === 0 ? "未签署" : "已签署" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnView(row.PROMISEPEOPLE_ID)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
<view-info
|
||||
v-model:visible="data.viewDialog.visible"
|
||||
:info="data.viewDialog.info"
|
||||
/>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useRoute } from "vue-router";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import {
|
||||
getAdministrationDetailsList,
|
||||
getAdministrationDetailsView,
|
||||
} from "@/request/security_commitment_pro.js";
|
||||
import { serialNumber } from "@/assets/js/utils.js";
|
||||
import { reactive } from "vue";
|
||||
import ViewInfo from "../template/components/view.vue";
|
||||
|
||||
const route = useRoute();
|
||||
const { PROMISE_ID } = route.query;
|
||||
const { list, pagination, fnGetData } = useListData(
|
||||
getAdministrationDetailsList,
|
||||
{ otherParams: { PROMISE_ID } }
|
||||
);
|
||||
const data = reactive({
|
||||
viewDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
const fnView = async (PROMISEPEOPLE_ID) => {
|
||||
const resData = await getAdministrationDetailsView({
|
||||
PROMISEPEOPLE_ID,
|
||||
PROMISE_ID,
|
||||
});
|
||||
const DETAIL = resData.COLLATERAL.map((item) => ({
|
||||
value: item.COLLATERAL,
|
||||
id: item.PROMISEDETAIL_ID,
|
||||
}));
|
||||
data.viewDialog.info = {
|
||||
...resData.varList,
|
||||
DETAIL,
|
||||
FILEPATH: resData.ISGN.FILEPATH,
|
||||
SIGNTIME: resData.ISGN.SIGNTIME,
|
||||
COVERPEOPLE: resData.COVERPEOPLE[0].USERNAME,
|
||||
};
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,193 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="90px"
|
||||
@submit.prevent="fnResetPaginationTransfer"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="承诺书名称" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="级别" prop="LEVEL">
|
||||
<el-select v-model="searchForm.LEVEL">
|
||||
<el-option
|
||||
v-for="item in commitmentLevelList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:value="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="部门" prop="DEPTIDS">
|
||||
<layout-department
|
||||
v-model="searchForm.DEPTIDS"
|
||||
multiple
|
||||
show-checkbox
|
||||
collapse-tags
|
||||
root-disabled="Y"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetDataTransfer"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="PROMISE_NAME" label="承诺书名称" />
|
||||
<el-table-column prop="LEVELNAME" label="级别" />
|
||||
<el-table-column prop="CREATTIME" label="添加时间" width="150" />
|
||||
<el-table-column label="适用期限" width="180">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.PROMISE_TERM_START + "至" + row.PROMISE_TERM_END }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="DEPTNAME" label="涉及部门" />
|
||||
<el-table-column prop="POSTNAME" label="涉及岗位" />
|
||||
<el-table-column label="承诺人数/涉及人数">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.ISSIGN }}/{{ row.PEOPLENUM_INVOLVED }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" width="80">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.STATE === "0" ? "启用" : "禁用" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/security_commitment_pro/administration/view',
|
||||
query: { PROMISE_ID: row.PROMISE_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
fnEnableOrDisable(row.STATE === '0' ? 1 : 0, row.PROMISE_ID)
|
||||
"
|
||||
>
|
||||
{{ row.STATE === "0" ? "禁用" : "启用" }}
|
||||
</el-button>
|
||||
<el-button
|
||||
:disabled="row.ISSIGN !== 0"
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/security_commitment_pro/administration/edit',
|
||||
query: { PROMISE_ID: row.PROMISE_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/security_commitment_pro/administration/details',
|
||||
query: { PROMISE_ID: row.PROMISE_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({
|
||||
path: '/security_commitment_pro/administration/add',
|
||||
})
|
||||
"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import {
|
||||
getAdministrationList,
|
||||
setAdministrationEnableOrDisable,
|
||||
} from "@/request/security_commitment_pro.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import { layoutFnGetCommitmentLevel } from "@/assets/js/data_dictionary.js";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getAdministrationList);
|
||||
const fnGetDataTransfer = () => {
|
||||
fnGetData({
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnResetPagination({
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
const commitmentLevelList = await layoutFnGetCommitmentLevel();
|
||||
const fnEnableOrDisable = debounce(
|
||||
1000,
|
||||
async (STATE, PROMISE_ID) => {
|
||||
const message = STATE === 0 ? "启用" : "禁用";
|
||||
await ElMessageBox.confirm(`确定要${message}当前承诺书吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setAdministrationEnableOrDisable({ PROMISE_ID, STATE });
|
||||
ElMessage.success(`${message}成功`);
|
||||
fnResetPaginationTransfer();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,136 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-divider content-position="left">基本信息</el-divider>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="承诺书名称">
|
||||
{{ info.PROMISE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="级别">
|
||||
{{ info.LEVELNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="适用期限开始">
|
||||
{{ info.PROMISE_TERM_START }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="适用期限结束">
|
||||
{{ info.PROMISE_TERM_END }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">承诺人</el-divider>
|
||||
<el-descriptions :column="3" border>
|
||||
<template v-for="(item, index) in info.people" :key="item.id">
|
||||
<el-descriptions-item :label="'部门' + (index + 1)">
|
||||
{{ item.DEPTNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="'岗位' + (index + 1)">
|
||||
{{ item.POSTNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="'人员' + (index + 1)">
|
||||
{{ item.USERNAME?.join("、") }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">被承诺人</el-divider>
|
||||
<el-descriptions :column="3" border>
|
||||
<template v-for="(item, index) in info.coverpeople" :key="item.id">
|
||||
<el-descriptions-item :label="'部门' + (index + 1)">
|
||||
{{ item.DEPTNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="'岗位' + (index + 1)">
|
||||
{{ item.POSTNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item :label="'人员' + (index + 1)">
|
||||
{{ item.USERNAME?.join("、") }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">承诺内容</el-divider>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="正文">
|
||||
{{ info.TEXT }}
|
||||
</el-descriptions-item>
|
||||
<template v-for="(item, index) in info.DETAIL" :key="item.id">
|
||||
<el-descriptions-item :label="'副文' + (index + 1)">
|
||||
{{ item.value }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
<div class="tc mt-10">
|
||||
<el-button type="primary" @click="fnView">模 板</el-button>
|
||||
</div>
|
||||
<view-info
|
||||
v-model:visible="data.viewDialog.visible"
|
||||
:info="data.viewDialog.info"
|
||||
/>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref } from "vue";
|
||||
import { getAdministrationView } from "@/request/security_commitment_pro.js";
|
||||
import { useRoute } from "vue-router";
|
||||
import ViewInfo from "../template/components/view.vue";
|
||||
import { uniqBy } from "lodash-es";
|
||||
|
||||
const route = useRoute();
|
||||
const { PROMISE_ID } = route.query;
|
||||
const info = ref({});
|
||||
const data = reactive({
|
||||
viewDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getAdministrationView({ PROMISE_ID });
|
||||
const DETAIL = resData.promistDetail.map((item) => ({
|
||||
value: item.COLLATERAL,
|
||||
id: item.PROMISEDETAIL_ID,
|
||||
}));
|
||||
const people = resData.people;
|
||||
const coverpeople = resData.coverpeople;
|
||||
const newPeople = [];
|
||||
const newCoverpeople = [];
|
||||
for (let i = 0; i < people.length; i++) {
|
||||
newPeople.push({
|
||||
...people[i],
|
||||
USERNAME: [],
|
||||
id: people[i].PROMISEPEOPLE_ID,
|
||||
});
|
||||
for (let j = 0; j < newPeople.length; j++) {
|
||||
if (people[i].POST_ID === newPeople[j].POST_ID) {
|
||||
newPeople[j].USERNAME.push(people[i].USERNAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < coverpeople.length; i++) {
|
||||
newCoverpeople.push({
|
||||
...coverpeople[i],
|
||||
USERNAME: [],
|
||||
id: coverpeople[i].PROMISEPEOPLE_ID,
|
||||
});
|
||||
for (let j = 0; j < newCoverpeople.length; j++) {
|
||||
if (coverpeople[i].POST_ID === newCoverpeople[j].POST_ID) {
|
||||
newCoverpeople[j].USERNAME.push(coverpeople[i].USERNAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
info.value = {
|
||||
...resData.varList,
|
||||
DETAIL,
|
||||
people: uniqBy(newPeople, "POST_ID"),
|
||||
coverpeople: uniqBy(newCoverpeople, "POST_ID"),
|
||||
};
|
||||
};
|
||||
fnGetData();
|
||||
const fnView = () => {
|
||||
data.viewDialog.info = {
|
||||
...info.value,
|
||||
FILEPATH: "",
|
||||
SIGNTIME: "",
|
||||
COVERPEOPLE: info.value.coverpeople[0].USERNAME[0],
|
||||
};
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,151 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="承诺书名称" prop="PROMISE_NAME">
|
||||
<el-input v-model="form.PROMISE_NAME" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="类型" prop="LEVEL">
|
||||
<el-select v-model="form.TYPE">
|
||||
<el-option value="0" label="承诺书" />
|
||||
<el-option value="1" label="责任状" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="级别" prop="LEVEL">
|
||||
<el-select v-model="form.LEVEL">
|
||||
<el-option
|
||||
v-for="item in commitmentLevelList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:value="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="正文" prop="TEXT">
|
||||
<el-input v-model="form.TEXT" type="textarea" autosize />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item class="end">
|
||||
<el-button type="primary" @click="fnAddDetail">
|
||||
新增副文
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-for="(item, index) in form.DETAIL" :key="item.id" :span="24">
|
||||
<el-form-item
|
||||
:label="'副文' + (index + 1)"
|
||||
:prop="'DETAIL.' + index + '.value'"
|
||||
:rules="{
|
||||
required: true,
|
||||
message: '副文不能为空',
|
||||
trigger: 'blur',
|
||||
}"
|
||||
>
|
||||
<div
|
||||
style="
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
"
|
||||
>
|
||||
<el-input
|
||||
v-model="item.value"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 3 }"
|
||||
/>
|
||||
<el-button
|
||||
class="ml-10"
|
||||
v-if="index !== 0"
|
||||
type="danger"
|
||||
@click="form.DETAIL.splice(index, 1)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="tc mt-10">
|
||||
<el-button type="primary" @click="fnSubmit">提 交</el-button>
|
||||
</div>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { layoutFnGetCommitmentLevel } from "@/assets/js/data_dictionary.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import {
|
||||
setTemplateAdd,
|
||||
setTemplateEdit,
|
||||
getTemplateView,
|
||||
} from "@/request/security_commitment_pro.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const { PROMISE_ID } = route.query;
|
||||
const rules = ref({
|
||||
PROMISE_NAME: [
|
||||
{ required: true, message: "请输入承诺书名称", trigger: "blur" },
|
||||
],
|
||||
TYPE: [{ required: true, message: "请选择类型", trigger: "blur" }],
|
||||
LEVEL: [{ required: true, message: "请选择级别", trigger: "blur" }],
|
||||
TEXT: [{ required: true, message: "请输入正文", trigger: "blur" }],
|
||||
});
|
||||
const form = ref({
|
||||
PROMISE_NAME: "",
|
||||
TYPE: "",
|
||||
LEVEL: "",
|
||||
TEXT: "",
|
||||
DETAIL: [],
|
||||
});
|
||||
const formRef = ref(null);
|
||||
const fnAddDetail = () => {
|
||||
form.value.DETAIL.push({ value: "", id: Math.random() });
|
||||
};
|
||||
const fnGetData = async () => {
|
||||
if (!PROMISE_ID) {
|
||||
fnAddDetail();
|
||||
return;
|
||||
}
|
||||
const resData = await getTemplateView({ PROMISE_ID });
|
||||
const DETAIL = resData.promistDetail.map((item) => ({
|
||||
value: item.COLLATERAL,
|
||||
id: item.PROMISEDETAIL_ID,
|
||||
}));
|
||||
form.value = { ...resData.varList, DETAIL };
|
||||
};
|
||||
fnGetData();
|
||||
const commitmentLevelList = await layoutFnGetCommitmentLevel();
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
const DETAIL = form.value.DETAIL.map((item, index) => ({
|
||||
value: item.value,
|
||||
index,
|
||||
}));
|
||||
PROMISE_ID
|
||||
? await setTemplateEdit({ ...form.value, DETAIL: JSON.stringify(DETAIL) })
|
||||
: await setTemplateAdd({ ...form.value, DETAIL: JSON.stringify(DETAIL) });
|
||||
ElMessage.success("操作成功");
|
||||
router.back();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,187 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" title="安全生产承诺书">
|
||||
<div id="print" class="dialogContent">
|
||||
<div class="cover print_use">
|
||||
<h1>
|
||||
{{ info.TYPE === "0" ? "安全生产承诺书" : "安全生产责任状" }}
|
||||
</h1>
|
||||
<div>
|
||||
<div>河 北 港 口 集 团 有 限 公 司</div>
|
||||
<div>
|
||||
({{
|
||||
info.PROMISE_TERM_START &&
|
||||
dayjs(info.PROMISE_TERM_START).format("YYYY年")
|
||||
}})
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="title">
|
||||
{{ info.TYPE === "0" ? "安全生产承诺书" : "安全生产责任状" }}
|
||||
</h1>
|
||||
<div v-if="info.TYPE === '0'">{{ info.COVERPEOPLE }}:</div>
|
||||
<div class="text">{{ info.TEXT }}</div>
|
||||
<div class="collateral">
|
||||
<div v-for="(item, index) in info.DETAIL" :key="index" class="item">
|
||||
{{ item.value }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text">
|
||||
<div v-if="info.TYPE === '0'">
|
||||
若违反上述承诺和未履行安全生产职责,或发生责任事故的,接受政府或公司事故调查组做出的处罚决定。
|
||||
</div>
|
||||
<div v-if="info.TYPE === '0'">
|
||||
承诺期限自{{
|
||||
info.PROMISE_TERM_START &&
|
||||
dayjs(info.PROMISE_TERM_START).format("YYYY年MM月DD日")
|
||||
}}至{{
|
||||
info.PROMISE_TERM_END &&
|
||||
dayjs(info.PROMISE_TERM_END).format("YYYY年MM月DD日")
|
||||
}}。
|
||||
</div>
|
||||
<div v-if="info.TYPE === '1'">
|
||||
若未履行安全生产职责,或发生生产安全事故的,接受公司或政府事故调查组做出的处罚。
|
||||
</div>
|
||||
<div v-if="info.TYPE === '1'">
|
||||
责任期限自{{
|
||||
info.PROMISE_TERM_START &&
|
||||
dayjs(info.PROMISE_TERM_START).format("YYYY年MM月DD日")
|
||||
}}至{{
|
||||
info.PROMISE_TERM_END &&
|
||||
dayjs(info.PROMISE_TERM_END).format("YYYY年MM月DD日")
|
||||
}}。
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
:style="{ alignItems: info.FILEPATH ? 'flex-end' : 'flex-start' }"
|
||||
class="footer"
|
||||
>
|
||||
<div
|
||||
v-if="info.TYPE === '0'"
|
||||
:style="{ marginBottom: info.FILEPATH ? '50px' : '0px' }"
|
||||
class="hairdresser"
|
||||
>
|
||||
承诺单位(盖章):
|
||||
</div>
|
||||
<div v-if="info.TYPE === '1'" class="hairdresser">
|
||||
<div class="promiser">发状人:{{ info.COVERPEOPLE }}</div>
|
||||
<div class="time">
|
||||
{{
|
||||
info.CREATTIME && dayjs(info.CREATTIME).format("YYYY年MM月DD日")
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="respondent">
|
||||
<div class="promiser">
|
||||
<span :style="{ marginRight: info.FILEPATH ? '0px' : '105px' }">
|
||||
{{ info.TYPE === "0" ? "主要负责人签字" : "受状人" }}:
|
||||
</span>
|
||||
<img
|
||||
v-if="info.FILEPATH"
|
||||
:src="VITE_FILE_URL + info.FILEPATH"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
:style="{ marginLeft: info.TYPE === '0' ? '125px' : '65px' }"
|
||||
class="time"
|
||||
>
|
||||
{{ info.SIGNTIME && dayjs(info.SIGNTIME).format("YYYY年MM月DD日") }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">关 闭</el-button>
|
||||
<el-button v-print="'#print'" type="primary">打 印</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useVModel } from "@vueuse/core";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
info: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible"]);
|
||||
const visible = useVModel(props, "visible", emits);
|
||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
#print {
|
||||
padding: 50px;
|
||||
font-size: 16px;
|
||||
|
||||
.cover {
|
||||
height: 841pt;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
|
||||
h1 {
|
||||
padding-top: 300px;
|
||||
}
|
||||
|
||||
> div {
|
||||
position: absolute;
|
||||
bottom: 100px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.text {
|
||||
text-indent: 35px;
|
||||
line-height: 26px;
|
||||
letter-spacing: 2px;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.collateral {
|
||||
text-indent: 35px;
|
||||
line-height: 26px;
|
||||
letter-spacing: 2px;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-indent: 35px;
|
||||
margin-top: 30px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.respondent,
|
||||
.hairdresser {
|
||||
.promiser {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
|
||||
img {
|
||||
margin-left: 30px;
|
||||
width: 200px;
|
||||
height: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.time {
|
||||
margin-top: 30px;
|
||||
margin-left: 65px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,162 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="90px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="承诺书名称" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="PROMISE_NAME" label="承诺书名称" />
|
||||
<el-table-column prop="LEVELNAME" label="级别" />
|
||||
<el-table-column prop="CREATTIME" label="添加时间" />
|
||||
<el-table-column label="状态">
|
||||
<template v-slot="{ row }">
|
||||
{{ row.ISDELETE === 0 ? "启用" : "禁用" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200">
|
||||
<template v-slot="{ row }">
|
||||
<el-button type="primary" text link @click="fnView(row.PROMISE_ID)">
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
fnEnableOrDisable(row.ISDELETE === 0 ? 1 : 0, row.PROMISE_ID)
|
||||
"
|
||||
>
|
||||
{{ row.ISDELETE === 0 ? "禁用" : "启用" }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnDelete(row.PROMISE_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/security_commitment_pro/template/edit',
|
||||
query: { PROMISE_ID: row.PROMISE_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({ path: '/security_commitment_pro/template/add' })
|
||||
"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<view-info
|
||||
v-model:visible="data.viewDialog.visible"
|
||||
:info="data.viewDialog.info"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import {
|
||||
setTemplateDelete,
|
||||
setTemplateEnableOrDisable,
|
||||
getTemplateList,
|
||||
getTemplateView,
|
||||
} from "@/request/security_commitment_pro.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { reactive } from "vue";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getTemplateList);
|
||||
const data = reactive({
|
||||
viewDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
const fnView = async (PROMISE_ID) => {
|
||||
const resData = await getTemplateView({ PROMISE_ID });
|
||||
const DETAIL = resData.promistDetail.map((item) => ({
|
||||
value: item.COLLATERAL,
|
||||
id: item.PROMISEDETAIL_ID,
|
||||
}));
|
||||
data.viewDialog.info = { ...resData.varList, DETAIL, COVERPEOPLE: "XXX" };
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
const fnEnableOrDisable = debounce(
|
||||
1000,
|
||||
async (ISDELETE, PROMISE_ID) => {
|
||||
const message = ISDELETE === 0 ? "启用" : "禁用";
|
||||
await ElMessageBox.confirm(`确定要${message}当前承诺书吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setTemplateEnableOrDisable({ PROMISE_ID, ISDELETE });
|
||||
ElMessage.success(`${message}成功`);
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
const fnDelete = debounce(
|
||||
1000,
|
||||
async (PROMISE_ID) => {
|
||||
await ElMessageBox.confirm(`确定要删除当前承诺书吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setTemplateDelete({ PROMISE_ID });
|
||||
ElMessage.success(`删除成功`);
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -66,24 +66,15 @@
|
|||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<div class="mb-10 flex">
|
||||
<div>备注:红色日期代表周六日</div>
|
||||
<div class="flex ml-10">
|
||||
<img src="/src/assets/images/print/white/check.png" alt="" />
|
||||
完成检查
|
||||
</div>
|
||||
<div class="flex ml-10">
|
||||
<img src="/src/assets/images/print/white/error.png" alt="" />
|
||||
未进行检查
|
||||
</div>
|
||||
<div class="flex ml-10">
|
||||
<div class="mb-10">
|
||||
<span>备注:红色日期代表周六日</span>
|
||||
<span class="ml-10">√ 完成检查</span>
|
||||
<span class="ml-10">× 未进行检查</span>
|
||||
<span class="ml-10">
|
||||
<img src="/src/assets/images/print/white/waring.png" alt="" />
|
||||
离岗/休班/周期未结束
|
||||
</div>
|
||||
<div class="flex ml-10">
|
||||
<img src="/src/assets/images/print/white/line.png" alt="" />
|
||||
未建立
|
||||
</div>
|
||||
</span>
|
||||
<span class="ml-10">- 未建立</span>
|
||||
</div>
|
||||
<layout-table
|
||||
:data="list"
|
||||
|
@ -154,15 +145,14 @@
|
|||
.TYPE === '1'
|
||||
"
|
||||
style="position: relative"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/white/check.png" alt="" />
|
||||
√
|
||||
<span
|
||||
v-if="
|
||||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || '')
|
||||
.CREATTIME === fnFormatDate(item)
|
||||
"
|
||||
style="position: absolute; right: -6px; top: -6px"
|
||||
style="position: absolute; right: 0; top: -6px"
|
||||
>
|
||||
{{
|
||||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || "")
|
||||
|
@ -178,20 +168,18 @@
|
|||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || '')
|
||||
.TYPE === '2'
|
||||
"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/white/error.png" alt="" />
|
||||
×
|
||||
</span>
|
||||
<span
|
||||
v-else-if="
|
||||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || '')
|
||||
.TYPE === '3'
|
||||
"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/white/line.png" alt="" />
|
||||
-
|
||||
</span>
|
||||
<span v-else class="flex">
|
||||
<span v-else>
|
||||
<img src="/src/assets/images/print/white/waring.png" alt="" />
|
||||
</span>
|
||||
</template>
|
||||
|
@ -253,11 +241,6 @@ const fnFormatDate = (day) => {
|
|||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
|
|
|
@ -3,60 +3,15 @@
|
|||
<div id="printContent">
|
||||
<!-- TODO 打印分页截断-->
|
||||
<el-divider content-position="left">员工清单检查统计(月)</el-divider>
|
||||
<div class="mb-10 flex">
|
||||
<div>备注:</div>
|
||||
<div class="flex ml-10">
|
||||
<img
|
||||
src="/src/assets/images/print/white/check.png"
|
||||
alt=""
|
||||
class="print_no_use"
|
||||
/>
|
||||
<img
|
||||
src="/src/assets/images/print/black/check.png"
|
||||
alt=""
|
||||
class="print_use"
|
||||
/>
|
||||
完成检查
|
||||
</div>
|
||||
<div class="flex ml-10">
|
||||
<img
|
||||
src="/src/assets/images/print/white/error.png"
|
||||
alt=""
|
||||
class="print_no_use"
|
||||
/>
|
||||
<img
|
||||
src="/src/assets/images/print/black/error.png"
|
||||
alt=""
|
||||
class="print_use"
|
||||
/>
|
||||
未进行检查
|
||||
</div>
|
||||
<div class="flex ml-10">
|
||||
<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
class="print_no_use"
|
||||
/>
|
||||
<img
|
||||
src="/src/assets/images/print/black/waring.png"
|
||||
alt=""
|
||||
class="print_use"
|
||||
/>
|
||||
<div class="mb-10">
|
||||
<span>备注:</span>
|
||||
<span class="ml-10">√ 完成检查</span>
|
||||
<span class="ml-10">× 未进行检查</span>
|
||||
<span class="ml-10">
|
||||
<img src="/src/assets/images/print/white/waring.png" alt="" />
|
||||
离岗/休班/周期未结束
|
||||
</div>
|
||||
<div class="flex ml-10">
|
||||
<img
|
||||
src="/src/assets/images/print/white/line.png"
|
||||
alt=""
|
||||
class="print_no_use"
|
||||
/>
|
||||
<img
|
||||
src="/src/assets/images/print/black/line.png"
|
||||
alt=""
|
||||
class="print_use"
|
||||
/>
|
||||
未建立
|
||||
</div>
|
||||
</span>
|
||||
<span class="ml-10">- 未建立</span>
|
||||
</div>
|
||||
<div class="print_no_use">
|
||||
<layout-table :data="list" :show-pagination="false">
|
||||
|
@ -109,18 +64,14 @@
|
|||
.TYPE === '1'
|
||||
"
|
||||
style="position: relative"
|
||||
class="flex"
|
||||
>
|
||||
<img
|
||||
src="/src/assets/images/print/white/check.png"
|
||||
alt=""
|
||||
/>
|
||||
√
|
||||
<span
|
||||
v-if="
|
||||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || '')
|
||||
.CREATTIME === fnFormatDate(item)
|
||||
"
|
||||
style="position: absolute; right: -6px; top: -6px"
|
||||
style="position: absolute; right: 0; top: -6px"
|
||||
>
|
||||
{{
|
||||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || "")
|
||||
|
@ -138,23 +89,18 @@
|
|||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || '')
|
||||
.TYPE === '2'
|
||||
"
|
||||
class="flex"
|
||||
>
|
||||
<img
|
||||
src="/src/assets/images/print/white/error.png"
|
||||
alt=""
|
||||
/>
|
||||
×
|
||||
</span>
|
||||
<span
|
||||
v-else-if="
|
||||
(resMap[row.LISTMANAGER_ID][fnFormatDate(item)] || '')
|
||||
.TYPE === '3'
|
||||
"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/white/line.png" alt="" />
|
||||
-
|
||||
</span>
|
||||
<span v-else class="flex">
|
||||
<span v-else>
|
||||
<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
|
@ -201,15 +147,14 @@
|
|||
.TYPE === '1'
|
||||
"
|
||||
style="position: relative"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/black/check.png" alt="" />
|
||||
√
|
||||
<span
|
||||
v-if="
|
||||
(resMap[item.LISTMANAGER_ID][fnFormatDate(item1)] || '')
|
||||
.CREATTIME === fnFormatDate(item1)
|
||||
"
|
||||
style="position: absolute; right: -6px; top: -6px"
|
||||
style="position: absolute; right: 0; top: -6px"
|
||||
>
|
||||
{{
|
||||
(resMap[item.LISTMANAGER_ID][fnFormatDate(item1)] || "")
|
||||
|
@ -222,20 +167,18 @@
|
|||
(resMap[item.LISTMANAGER_ID][fnFormatDate(item1)] || '')
|
||||
.TYPE === '2'
|
||||
"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/black/error.png" alt="" />
|
||||
×
|
||||
</span>
|
||||
<span
|
||||
v-else-if="
|
||||
(resMap[item.LISTMANAGER_ID][fnFormatDate(item1)] || '')
|
||||
.TYPE === '3'
|
||||
"
|
||||
class="flex"
|
||||
>
|
||||
<img src="/src/assets/images/print/black/line.png" alt="" />
|
||||
-
|
||||
</span>
|
||||
<span v-else class="flex">
|
||||
<span v-else>
|
||||
<img src="/src/assets/images/print/black/waring.png" alt="" />
|
||||
</span>
|
||||
</template>
|
||||
|
@ -277,11 +220,6 @@ const fnFormatDate = (day) => {
|
|||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
|
|
|
@ -0,0 +1,188 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="90px"
|
||||
@submit.prevent="fnResetPaginationTransfer"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="清单名称" prop="KEYWORDS">
|
||||
<el-input
|
||||
v-model="searchForm.KEYWORDS"
|
||||
placeholder="请输入关键字"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="人员" prop="USERNAME">
|
||||
<el-input
|
||||
v-model="searchForm.USERNAME"
|
||||
placeholder="请输入关键字"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="部门" prop="DEPTIDS">
|
||||
<layout-department
|
||||
v-model="searchForm.DEPTIDS"
|
||||
multiple
|
||||
show-checkbox
|
||||
collapse-tags
|
||||
root-disabled="Y"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="清单类型">
|
||||
<el-select v-model="searchForm.TYPE">
|
||||
<el-option
|
||||
v-for="item in inventoryTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="排查类型">
|
||||
<el-select v-model="searchForm.RISKCHECKLISTTYPE">
|
||||
<el-option
|
||||
v-for="item in troubleshootingTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="清单级别">
|
||||
<el-select v-model="searchForm.LISTINGLEVEL">
|
||||
<el-option
|
||||
v-for="item in [
|
||||
{ BIANMA: '1', NAME: '公司' },
|
||||
...inventoryLevelList,
|
||||
]"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
v-model:pagination="pagination"
|
||||
@get-data="fnGetDataTransfer"
|
||||
>
|
||||
<el-table-column label="序号" width="70">
|
||||
<template v-slot="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="NAME" label="清单名称" />
|
||||
<el-table-column prop="DEPARTMENT_NAME_ALL" label="部门" />
|
||||
<el-table-column prop="POST_NAME" label="岗位" />
|
||||
<el-table-column prop="USER_NAME" label="人员" width="100" />
|
||||
<el-table-column prop="PERIODNAME" label="排查周期" width="100" />
|
||||
<el-table-column prop="SCREENTYPENAME" label="排查类型" width="100" />
|
||||
<el-table-column prop="TYPENAME" label="清单类型" width="100" />
|
||||
<el-table-column
|
||||
v-if="SPECIAL_ENTERPRISES.includes(CORPINFO_ID)"
|
||||
prop="TASK_TYPE_NAME"
|
||||
label="任务类型"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column label="状态" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.ISDELETE === '0'">启用</span>
|
||||
<span v-else-if="row.ISDELETE === '1'">禁用</span>
|
||||
<span v-else-if="row.ISDELETE === '2'"> 已删除 </span>
|
||||
<span v-else-if="row.ISDELETE === '-1'"> 彻底删除 </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: `/troubleshooting_statistics/${type}_inspection/inspection_records`,
|
||||
query: { LISTMANAGER_ID: row.LISTMANAGER_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
检查记录
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils.js";
|
||||
import { useRouter } from "vue-router";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
import {
|
||||
layoutFnGetInventoryLevel,
|
||||
layoutFnGetInventoryType,
|
||||
layoutFnGetTroubleshootingType,
|
||||
} from "@/assets/js/data_dictionary.js";
|
||||
import { SPECIAL_ENTERPRISES } from "@/assets/js/constant.js";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
import { getChecklistInspectionRecordList } from "@/request/troubleshooting_statistics.js";
|
||||
|
||||
const props = defineProps({
|
||||
type: {
|
||||
type: String,
|
||||
default: "day",
|
||||
},
|
||||
});
|
||||
const router = useRouter();
|
||||
const userStore = useUserStore();
|
||||
const CORPINFO_ID = userStore.getUserInfo.CORPINFO_ID;
|
||||
const PERIOD = {
|
||||
day: "checkPeriod0001",
|
||||
week: "checkPeriod0002",
|
||||
ten_day: "checkPeriod0003",
|
||||
};
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getChecklistInspectionRecordList, {
|
||||
otherParams: { PERIOD: PERIOD[props.type] },
|
||||
});
|
||||
const fnGetDataTransfer = () => {
|
||||
fnGetData({
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
const fnResetPaginationTransfer = () => {
|
||||
fnResetPagination({
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
const inventoryTypeList = await layoutFnGetInventoryType();
|
||||
const troubleshootingTypeList = await layoutFnGetTroubleshootingType();
|
||||
const inventoryLevelList = await layoutFnGetInventoryLevel();
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,192 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="50px"
|
||||
@submit.prevent="fnGetData"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="时间" prop="YEAR">
|
||||
<el-date-picker
|
||||
v-model="searchForm.YEAR"
|
||||
:clearable="false"
|
||||
type="year"
|
||||
format="YYYY"
|
||||
value-format="YYYY"
|
||||
placeholder="选择年"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnGetData">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<div id="printContainer">
|
||||
<div class="tc">
|
||||
<h2>{{ info.NAME }}</h2>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<div
|
||||
class="ptb-15"
|
||||
style="display: flex; justify-content: space-between"
|
||||
>
|
||||
<div>排查人员:{{ info.USER_NAME }}</div>
|
||||
<div>排查频次:每天</div>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60" class="title">序号</th>
|
||||
<th width="150" class="title">风险单元</th>
|
||||
<th width="150" class="title">排查部位</th>
|
||||
<th width="500" class="title">风险管控措施</th>
|
||||
<th width="500" class="title">风险失控表现(问题隐患)</th>
|
||||
<th width="150" class="title">失职部门和人员</th>
|
||||
<th width="150" class="title">排查责任人</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(item, index) in list" :key="index">
|
||||
<td>{{ index + 1 }}</td>
|
||||
<td>{{ item.RISKUNITNAME }}</td>
|
||||
<td>{{ item.PARTSNAME }}</td>
|
||||
<td>{{ item.CHECK_CONTENT }}</td>
|
||||
<td>{{ item.RISK_DESCR }}</td>
|
||||
<td>{{ item.DEPARTMENT_NAME }}/{{ item.USERNAME }}</td>
|
||||
<td>{{ info.DEPARTMENT_NAME }}/{{ info.USER_NAME }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tc">
|
||||
<h3>日常隐患排查表</h3>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<div class="tr ptb-15">
|
||||
(备注:√ 表示已检查,×表示未检查,<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
/>表示离岗/休班 ,-表示未建立)
|
||||
</div>
|
||||
<table>
|
||||
<tr v-for="(item, index) in recordList" :key="index">
|
||||
<td
|
||||
v-for="(item1, index1) in item.TRLIST"
|
||||
:key="index1"
|
||||
style="width: 100px; vertical-align: baseline"
|
||||
>
|
||||
<table>
|
||||
<tbody>
|
||||
<template
|
||||
v-for="(item2, index2) in item1.TDLIST"
|
||||
:key="index2"
|
||||
>
|
||||
<tr>
|
||||
<td
|
||||
v-for="(item3, index3) in item2.DAYLIST"
|
||||
:key="index3"
|
||||
>
|
||||
{{ item3.DAY }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td
|
||||
v-for="(item3, index3) in item2.DAYLIST"
|
||||
:key="index3"
|
||||
style="height: 38px"
|
||||
>
|
||||
<div v-if="item3.CHECKDATA === '△'">
|
||||
<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div v-else>{{ item3.CHECKDATA }}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
</tbody>
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
<div>{{ item1.MONTH }}月检查发现问题描述:</div>
|
||||
<div
|
||||
v-for="(item4, index4) in item1.HDLIST"
|
||||
:key="index4"
|
||||
>
|
||||
{{ item4 }}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-10 tc">
|
||||
<el-button type="primary" v-print="'#printContainer'">打 印</el-button>
|
||||
</div>
|
||||
<div v-html="PRINT_STYLE" />
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useRoute } from "vue-router";
|
||||
import { getChecklistInspectionRecordDayInspectionList } from "@/request/troubleshooting_statistics.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import dayjs from "dayjs";
|
||||
import { ref } from "vue";
|
||||
import { PRINT_STYLE } from "@/assets/js/constant.js";
|
||||
|
||||
const route = useRoute();
|
||||
const { LISTMANAGER_ID } = route.query;
|
||||
const info = ref({});
|
||||
const recordList = ref([]);
|
||||
const { list, searchForm, fnGetData } = useListData(
|
||||
getChecklistInspectionRecordDayInspectionList,
|
||||
{
|
||||
otherParams: { LISTMANAGER_ID },
|
||||
defaultSearchForm: { YEAR: dayjs().format("YYYY") },
|
||||
usePagination: false,
|
||||
callbackFn: (list, resData) => {
|
||||
info.value = resData.pd;
|
||||
recordList.value = resData.recordList;
|
||||
},
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
|
||||
td,
|
||||
th {
|
||||
border: 1px solid var(--el-border-color);
|
||||
padding: 8px 12px;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
background: var(--el-fill-color-light);
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,9 @@
|
|||
<template>
|
||||
<index-view type="ten_day" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import IndexView from "../day_inspection/index.vue";
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,175 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="50px"
|
||||
@submit.prevent="fnGetData"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="时间" prop="YEAR">
|
||||
<el-date-picker
|
||||
v-model="searchForm.YEAR"
|
||||
:clearable="false"
|
||||
type="year"
|
||||
format="YYYY"
|
||||
value-format="YYYY"
|
||||
placeholder="选择年"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnGetData">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<div id="printContainer">
|
||||
<div class="tc">
|
||||
<h2>{{ info.NAME }}</h2>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<div
|
||||
class="ptb-15"
|
||||
style="display: flex; justify-content: space-between"
|
||||
>
|
||||
<div>排查部门:{{ info.DEPARTMENT_NAME }}</div>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60" class="title">序号</th>
|
||||
<th width="150" class="title">风险单元</th>
|
||||
<th width="150" class="title">排查部位</th>
|
||||
<th width="500" class="title">风险管控措施</th>
|
||||
<th width="500" class="title">风险失控表现(问题隐患)</th>
|
||||
<th width="150" class="title">失职部门和人员</th>
|
||||
<th width="150" class="title">排查责任人</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(item, index) in list" :key="index">
|
||||
<td>{{ index + 1 }}</td>
|
||||
<td>{{ item.RISKUNITNAME }}</td>
|
||||
<td>{{ item.PARTSNAME }}</td>
|
||||
<td>{{ item.CHECK_CONTENT }}</td>
|
||||
<td>{{ item.RISK_DESCR }}</td>
|
||||
<td>{{ item.DEPARTMENT_NAME }}/{{ item.USERNAME }}</td>
|
||||
<td>{{ info.DEPARTMENT_NAME }}/{{ info.USER_NAME }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tc">
|
||||
<h3>{{ YEAR }}年旬检清单排查表</h3>
|
||||
</div>
|
||||
<div
|
||||
class="ptb-15"
|
||||
style="display: flex; justify-content: space-between"
|
||||
>
|
||||
<div>检查方式:现场检查</div>
|
||||
<div>检查人员:{{ info.USER_NAME }}</div>
|
||||
<div class="tr">
|
||||
检查频次:每旬至少一次(备注:√ 表示已检查,×表示未检查,<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
/>表示离岗/休班 ,-表示未建立)
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<tr v-for="(item, index) in recordList" :key="index">
|
||||
<td
|
||||
v-for="(item1, index1) in item.TRLIST"
|
||||
:key="index1"
|
||||
:colspan="item1.COLSPAN"
|
||||
:rowspan="item1.ROWSPAN"
|
||||
style="width: 100px"
|
||||
>
|
||||
<div v-if="item1.VALUETYPE === 'string' && item1.VALUE === '△'">
|
||||
<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
width="16"
|
||||
height="16"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="item1.VALUETYPE === 'string' && item1.VALUE !== '△'"
|
||||
>
|
||||
{{ item1.VALUE }}
|
||||
</div>
|
||||
<div v-else-if="item1.VALUETYPE === 'array'">
|
||||
<div v-for="(item2, index2) in item1.VALUE" :key="index2">
|
||||
{{ index2 + 1 }}.{{ item2 }}
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mt-10 tc">
|
||||
<el-button type="primary" v-print="'#printContainer'">打 印</el-button>
|
||||
</div>
|
||||
<div v-html="PRINT_STYLE" />
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useRoute } from "vue-router";
|
||||
import { getChecklistInspectionRecordTenDayInspectionList } from "@/request/troubleshooting_statistics.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import dayjs from "dayjs";
|
||||
import { ref } from "vue";
|
||||
import { PRINT_STYLE } from "@/assets/js/constant.js";
|
||||
|
||||
const route = useRoute();
|
||||
const { LISTMANAGER_ID } = route.query;
|
||||
const info = ref({});
|
||||
const recordList = ref([]);
|
||||
const YEAR = ref("");
|
||||
const { list, searchForm, fnGetData } = useListData(
|
||||
getChecklistInspectionRecordTenDayInspectionList,
|
||||
{
|
||||
otherParams: { LISTMANAGER_ID },
|
||||
defaultSearchForm: { YEAR: dayjs().format("YYYY") },
|
||||
usePagination: false,
|
||||
callbackFn: (list, resData) => {
|
||||
info.value = resData.pd;
|
||||
recordList.value = resData.recordList;
|
||||
YEAR.value = searchForm.value.YEAR;
|
||||
},
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
|
||||
td,
|
||||
th {
|
||||
border: 1px solid var(--el-border-color);
|
||||
padding: 8px 12px;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
background: var(--el-fill-color-light);
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,9 @@
|
|||
<template>
|
||||
<index-view type="week" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import IndexView from "../day_inspection/index.vue";
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,170 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="50px"
|
||||
@submit.prevent="fnGetData"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="时间" prop="YEAR">
|
||||
<el-date-picker
|
||||
v-model="searchForm.YEAR"
|
||||
:clearable="false"
|
||||
type="year"
|
||||
format="YYYY"
|
||||
value-format="YYYY"
|
||||
placeholder="选择年"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnGetData">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<div id="printContainer">
|
||||
<div class="tc">
|
||||
<h2>{{ info.NAME }}</h2>
|
||||
</div>
|
||||
<div class="mb-20">
|
||||
<div
|
||||
class="ptb-15"
|
||||
style="display: flex; justify-content: space-between"
|
||||
>
|
||||
<div>排查部门:{{ info.DEPARTMENT_NAME }}</div>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60" class="title">序号</th>
|
||||
<th width="150" class="title">风险单元</th>
|
||||
<th width="150" class="title">排查部位</th>
|
||||
<th width="500" class="title">风险管控措施</th>
|
||||
<th width="500" class="title">风险失控表现(问题隐患)</th>
|
||||
<th width="150" class="title">失职部门和人员</th>
|
||||
<th width="150" class="title">排查责任人</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(item, index) in list" :key="index">
|
||||
<td>{{ index + 1 }}</td>
|
||||
<td>{{ item.RISKUNITNAME }}</td>
|
||||
<td>{{ item.PARTSNAME }}</td>
|
||||
<td>{{ item.CHECK_CONTENT }}</td>
|
||||
<td>{{ item.RISK_DESCR }}</td>
|
||||
<td>{{ item.DEPARTMENT_NAME }}/{{ item.USERNAME }}</td>
|
||||
<td>{{ info.DEPARTMENT_NAME }}/{{ info.USER_NAME }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tc">
|
||||
<h3>{{ YEAR }}年周检清单排查表</h3>
|
||||
</div>
|
||||
<div
|
||||
class="ptb-15"
|
||||
style="display: flex; justify-content: space-between"
|
||||
>
|
||||
<div>检查方式:现场检查</div>
|
||||
<div>检查人员:{{ info.USER_NAME }}</div>
|
||||
<div class="tr">
|
||||
检查频次:每周一次(备注:√ 表示已检查,×表示未检查,<img
|
||||
src="/src/assets/images/print/white/waring.png"
|
||||
alt=""
|
||||
/>表示离岗/休班 ,-表示未建立)
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<tr v-for="(item, index) in recordList" :key="index">
|
||||
<td
|
||||
v-for="(item1, index1) in item.TRLIST"
|
||||
:key="index1"
|
||||
:colspan="item1.COLSPAN"
|
||||
:rowspan="item1.ROWSPAN"
|
||||
style="width: 100px"
|
||||
>
|
||||
<div v-if="item1.VALUETYPE === 'string' && item1.VALUE === '△'">
|
||||
<img src="/src/assets/images/print/white/waring.png" alt="" />
|
||||
</div>
|
||||
<div
|
||||
v-else-if="item1.VALUETYPE === 'string' && item1.VALUE !== '△'"
|
||||
>
|
||||
{{ item1.VALUE }}
|
||||
</div>
|
||||
<div v-else-if="item1.VALUETYPE === 'array'">
|
||||
<div v-for="(item3, index2) in item1.VALUE" :key="index2">
|
||||
{{ index2 + 1 }}.{{ item3 }}
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mt-10 tc">
|
||||
<el-button type="primary" v-print="'#printContainer'">打 印</el-button>
|
||||
</div>
|
||||
<div v-html="PRINT_STYLE" />
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useRoute } from "vue-router";
|
||||
import { getChecklistInspectionRecordWeekInspectionList } from "@/request/troubleshooting_statistics.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import dayjs from "dayjs";
|
||||
import { ref } from "vue";
|
||||
import { PRINT_STYLE } from "@/assets/js/constant.js";
|
||||
|
||||
const route = useRoute();
|
||||
const { LISTMANAGER_ID } = route.query;
|
||||
const info = ref({});
|
||||
const recordList = ref([]);
|
||||
const YEAR = ref("");
|
||||
const { list, searchForm, fnGetData } = useListData(
|
||||
getChecklistInspectionRecordWeekInspectionList,
|
||||
{
|
||||
otherParams: { LISTMANAGER_ID },
|
||||
defaultSearchForm: { YEAR: dayjs().format("YYYY") },
|
||||
usePagination: false,
|
||||
callbackFn: (list, resData) => {
|
||||
info.value = resData.pd;
|
||||
recordList.value = resData.recordList;
|
||||
YEAR.value = searchForm.value.YEAR;
|
||||
},
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
|
||||
td,
|
||||
th {
|
||||
border: 1px solid var(--el-border-color);
|
||||
padding: 8px 12px;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
background: var(--el-fill-color-light);
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue