diff --git a/package-lock.json b/package-lock.json
index c24d045..4a2e42a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,8 @@
"axios": "^1.6.3",
"dayjs": "^1.11.10",
"element-plus": "^2.4.4",
+ "html2canvas": "^1.4.1",
+ "jspdf": "^2.5.1",
"lodash-es": "^4.17.21",
"mitt": "^3.0.1",
"normalize.css": "^8.0.1",
@@ -580,6 +582,17 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/runtime": {
+ "version": "7.23.8",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.8.tgz",
+ "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/template": {
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
@@ -1305,6 +1318,12 @@
"undici-types": "~5.26.4"
}
},
+ "node_modules/@types/raf": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.3.tgz",
+ "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
+ "optional": true
+ },
"node_modules/@types/sortablejs": {
"version": "1.15.7",
"resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.7.tgz",
@@ -1879,6 +1898,17 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
"node_modules/autoprefixer": {
"version": "10.4.16",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
@@ -2021,6 +2051,17 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
+ "node_modules/btoa": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/btoa/-/btoa-1.2.1.tgz",
+ "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+ "bin": {
+ "btoa": "bin/btoa.js"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/builtins": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
@@ -2113,6 +2154,31 @@
}
]
},
+ "node_modules/canvg": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.10.tgz",
+ "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+ "optional": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@types/raf": "^3.4.0",
+ "core-js": "^3.8.3",
+ "raf": "^3.4.1",
+ "regenerator-runtime": "^0.13.7",
+ "rgbcolor": "^1.0.1",
+ "stackblur-canvas": "^2.0.0",
+ "svg-pathdata": "^6.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/canvg/node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "optional": true
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -2218,6 +2284,13 @@
"dev": true,
"peer": true
},
+ "node_modules/core-js": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.35.0.tgz",
+ "integrity": "sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==",
+ "hasInstallScript": true,
+ "optional": true
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -2354,6 +2427,12 @@
"integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==",
"deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix."
},
+ "node_modules/dompurify": {
+ "version": "2.4.7",
+ "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-2.4.7.tgz",
+ "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==",
+ "optional": true
+ },
"node_modules/electron-to-chromium": {
"version": "1.4.617",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.617.tgz",
@@ -3124,6 +3203,11 @@
"reusify": "^1.0.4"
}
},
+ "node_modules/fflate": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.4.8.tgz",
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -3909,6 +3993,23 @@
"integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
"dev": true
},
+ "node_modules/jspdf": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-2.5.1.tgz",
+ "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==",
+ "dependencies": {
+ "@babel/runtime": "^7.14.0",
+ "atob": "^2.1.2",
+ "btoa": "^1.2.1",
+ "fflate": "^0.4.8"
+ },
+ "optionalDependencies": {
+ "canvg": "^3.0.6",
+ "core-js": "^3.6.0",
+ "dompurify": "^2.2.0",
+ "html2canvas": "^1.0.0-rc.5"
+ }
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -4386,6 +4487,12 @@
}
}
},
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "optional": true
+ },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -4627,6 +4734,15 @@
}
]
},
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "optional": true,
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -4639,6 +4755,11 @@
"node": ">=8.10.0"
}
},
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
"node_modules/regexp.prototype.flags": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
@@ -4726,6 +4847,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/rgbcolor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz",
+ "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+ "optional": true,
+ "engines": {
+ "node": ">= 0.8.15"
+ }
+ },
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -4936,6 +5066,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/stackblur-canvas": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz",
+ "integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.14"
+ }
+ },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -5062,6 +5201,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg-pathdata": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+ "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+ "optional": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
diff --git a/package.json b/package.json
index 2433df9..da0bcef 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,8 @@
"axios": "^1.6.3",
"dayjs": "^1.11.10",
"element-plus": "^2.4.4",
+ "html2canvas": "^1.4.1",
+ "jspdf": "^2.5.1",
"lodash-es": "^4.17.21",
"mitt": "^3.0.1",
"normalize.css": "^8.0.1",
diff --git a/src/assets/images/print/check.png b/src/assets/images/print/check.png
new file mode 100644
index 0000000..be6f495
Binary files /dev/null and b/src/assets/images/print/check.png differ
diff --git a/src/assets/images/print/cover-bg.png b/src/assets/images/print/cover-bg.png
new file mode 100644
index 0000000..d8bb1c9
Binary files /dev/null and b/src/assets/images/print/cover-bg.png differ
diff --git a/src/assets/images/print/error.png b/src/assets/images/print/error.png
new file mode 100644
index 0000000..be59b3e
Binary files /dev/null and b/src/assets/images/print/error.png differ
diff --git a/src/assets/images/print/line.png b/src/assets/images/print/line.png
new file mode 100644
index 0000000..613e413
Binary files /dev/null and b/src/assets/images/print/line.png differ
diff --git a/src/assets/images/print/waring.png b/src/assets/images/print/waring.png
new file mode 100644
index 0000000..4562a60
Binary files /dev/null and b/src/assets/images/print/waring.png differ
diff --git a/src/assets/js/asyncRouter.js b/src/assets/js/asyncRouter.js
index 2c3ddb0..fba0e19 100644
--- a/src/assets/js/asyncRouter.js
+++ b/src/assets/js/asyncRouter.js
@@ -568,6 +568,69 @@ export default [
},
],
},
+ {
+ path: "/continuous_improvement/risk_analysis",
+ meta: { title: "风险分析", isSubMenu: false },
+ component: "continuous_improvement/risk_analysis/index",
+ },
+ {
+ path: "/continuous_improvement/enterprise_report",
+ meta: { title: "企业报告", isSubMenu: false },
+ component: "continuous_improvement/enterprise_report/index",
+ },
+ {
+ path: "/continuous_improvement/risk_analysis_record",
+ meta: { title: "风险分析记录", isSubMenu: false },
+ component: "continuous_improvement/risk_analysis_record/index",
+ },
+ ],
+ },
+ {
+ path: "/statistical_analysis",
+ redirect: "/statistical_analysis/hazard_statistics",
+ meta: { title: "统计分析", model: MODEL["1"] },
+ component: "children",
+ children: [
+ {
+ path: "/statistical_analysis/hazard_statistics",
+ meta: { title: "隐患统计", isSubMenu: false },
+ component: "statistical_analysis/hazard_statistics/index",
+ },
+ {
+ path: "/statistical_analysis/detection_situation",
+ meta: { title: "员工日常检测情况", isSubMenu: false },
+ component: "children",
+ children: [
+ {
+ path: "",
+ component: "statistical_analysis/detection_situation/index",
+ },
+ {
+ path: "/statistical_analysis/detection_situation/print",
+ meta: {
+ title: "打印",
+ activeMenu: "/statistical_analysis/detection_situation",
+ },
+ component: "statistical_analysis/detection_situation/print",
+ },
+ ],
+ },
+ {
+ path: "/statistical_analysis/usage_situation",
+ meta: { title: "员工使用情况分析", isSubMenu: false },
+ component: "statistical_analysis/usage_situation/index",
+ },
+ {
+ path: "/statistical_analysis/inventory_statistics_month",
+ meta: { title: "员工清单检查统计(月)", isSubMenu: false },
+ component: "children",
+ children: [
+ {
+ path: "",
+ component: "statistical_analysis/inventory_statistics_month/index",
+ },
+ ],
+ },
],
},
{
diff --git a/src/assets/js/data_dictionary.js b/src/assets/js/data_dictionary.js
index b72b135..ac1b35b 100644
--- a/src/assets/js/data_dictionary.js
+++ b/src/assets/js/data_dictionary.js
@@ -83,6 +83,13 @@ export const layoutFnGetRiskLevel = async () => {
});
return ref(resData.list);
};
+// 风险成因
+export const layoutFnGetRiskCauses = async () => {
+ const resData = await getLevels({
+ DICTIONARIES_ID: "1bacbc4c1f6544718519c0d470dfeb62",
+ });
+ return ref(resData.list);
+};
// 部门级别
export const layoutFnGetDepartmentLevel = async () => {
const resData = await getLevels({
diff --git a/src/components/risk_add/index.vue b/src/components/risk_add/index.vue
index d3dba8c..f748067 100644
--- a/src/components/risk_add/index.vue
+++ b/src/components/risk_add/index.vue
@@ -1,5 +1,5 @@
-
+
@@ -204,6 +204,7 @@
+
@@ -241,10 +242,14 @@ const props = defineProps({
type: Boolean,
default: false,
},
+ rules: {
+ type: Object,
+ default: () => ({}),
+ },
});
const emits = defineEmits(["update:form"]);
const form = useVModel(props, "form", emits);
-const rules = {
+const defineRules = {
USER_ID: [{ required: true, message: "管控责任人不能为空", trigger: "blur" }],
RISK_DESCR: [
{ required: true, message: "存在风险不能为空", trigger: "blur" },
@@ -285,6 +290,7 @@ const rules = {
IDENTIFICATION_ID: [
{ required: true, message: "辨识部位不能为空", trigger: "change" },
],
+ ...props.rules,
};
const formRef = ref(null);
const infoIsEmpty = ref(isEmpty(props.info));
@@ -317,6 +323,9 @@ watch(
([LIKELIHOOD, EXPOSURE, CONSEQUENCE]) => {
if (!LIKELIHOOD || !EXPOSURE || !CONSEQUENCE) return;
fnGetLevelName(LIKELIHOOD, EXPOSURE, CONSEQUENCE);
+ },
+ {
+ immediate: true,
}
);
const fnGetUnitList = async () => {
diff --git a/src/components/risk_view/index.vue b/src/components/risk_view/index.vue
new file mode 100644
index 0000000..4cc9d36
--- /dev/null
+++ b/src/components/risk_view/index.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{ info.RISKUNITNAME }}
+
+
+ {{ info.PARTSNAME }}
+
+
+ {{ info.RISK_DESCR }}
+
+
+ 完全可以预料
+ 相当可能
+ 可能,但不经常
+ 可能性小,完全意外
+ 很不可能,可以设想
+ 极不可能
+ 实际不可能
+
+
+ {{ info.LIKELIHOOD }}
+
+
+ 连续暴露
+ 每天工作时间内暴露
+ 每周一次或偶然暴露
+ 每月一次暴露,完全意外
+ 每年几次暴露
+ 非常罕见暴露
+
+
+ {{ info.EXPOSURE }}
+
+
+ 10人以上死亡
+ 3~9人死亡
+ 1~2人死亡
+ 严重
+ 重大,伤残
+ 引人注意
+
+
+ {{ info.CONSEQUENCE }}
+
+
+ {{ info.DNAME5 }}
+
+
+ {{ info.DANGER }}
+
+
+ {{ info.MEASURES }}
+
+
+ {{ info.DEPT_NAME_ALL }}
+
+
+ {{ info.USER_ID }}
+
+
+ {{ info.ACCIDENTS_NAME }}
+
+
+ {{ info.EME_MEASURES }}
+
+
+
+
+
+
+
+
diff --git a/src/components/table/index.vue b/src/components/table/index.vue
index 6e64150..b55247c 100644
--- a/src/components/table/index.vue
+++ b/src/components/table/index.vue
@@ -14,6 +14,7 @@
:show-summary="showSummary"
:summary-method="summaryMethod"
:span-method="spanMethod"
+ :default-expand-all="defaultExpandAll"
@row-click="rowClick"
@row-dblclick="rowDblclick"
>
@@ -79,6 +80,10 @@ const props = defineProps({
type: Boolean,
default: false,
},
+ defaultExpandAll: {
+ type: Boolean,
+ default: false,
+ },
rowKey: {
type: [String, Function],
},
diff --git a/src/request/continuous_improvement.js b/src/request/continuous_improvement.js
new file mode 100644
index 0000000..24df9db
--- /dev/null
+++ b/src/request/continuous_improvement.js
@@ -0,0 +1,34 @@
+import { post } from "@/request/axios.js";
+
+export const setHazardAnalysisSubmit = (params) =>
+ post("/riskpointanalysis/add", params); // 隐患分析提交
+export const getRiskAnalysisList = (params) =>
+ post("/riskpointanalysis/list", params); // 风险分析列表
+export const setRiskAnalysisRepulse = (params) =>
+ post("/riskpointanalysis/delete", params); // 风险分析打回
+export const setRiskAnalysisAdopt = (params) =>
+ post("/riskpointanalysis/apply", params); // 风险分析通过
+export const getRiskAnalysisRecordList = (params) =>
+ post("/riskpoint/getLogs", params); // 风险分析记录列表
+export const getRiskAnalysisRecordView = (params) =>
+ post("/riskpointanalysis/getInfo", params); // 风险分析记录查看
+// 企业报告 start
+export const getEnterpriseReport1 = (params) =>
+ post("/corpinfo/getDiagnosis", params);
+export const getEnterpriseReport2 = (params) =>
+ post("/jobEvaluation/counlistPaget?showCount=1000¤tPage=1", params);
+export const getEnterpriseReport3 = (params) =>
+ post("/studytask/list?showCount=100¤tPage=1", params);
+export const getEnterpriseReport4 = (params) =>
+ post("/confinedspace/getDiagnosis", params);
+export const getEnterpriseReport5 = (params) =>
+ post("/performanceexamine_dept/listAll", params);
+export const getEnterpriseReport6 = (params) =>
+ post("/performanceexamine_user/listAll", params);
+export const getEnterpriseReportConclusion = (params) =>
+ post("/corpadvice/listAll", params); // 企业报告结论
+export const setEnterpriseReportConclusionEdit = (params) =>
+ post("/corpadvice/edit", params); // 企业报告结论编辑
+export const setEnterpriseReportConclusionAdd = (params) =>
+ post("/corpadvice/add", params); // 企业报告结论新增
+// 企业报告 end
diff --git a/src/request/statistical_analysis.js b/src/request/statistical_analysis.js
new file mode 100644
index 0000000..afa2660
--- /dev/null
+++ b/src/request/statistical_analysis.js
@@ -0,0 +1,10 @@
+import { post } from "@/request/axios.js";
+
+export const getHazardStatisticsList = (params) =>
+ post("/statistics/gostatistics", params); // 隐患统计列表
+export const getDetectionSituationList = (params) =>
+ post("/jobEvaluation/counlistPaget", params); // 员工日常检测情况列表
+export const getDetectionSituationListTime = (params) =>
+ post("/liststatistics/getTimeAstrict", params); // 员工日常检测情况列表时间
+export const getUsageSituationList = (params) =>
+ post("/liststatistics/checkSituation", params); // 员工使用情况分析列表
diff --git a/src/views/continuous_improvement/enterprise_report/components/conclusion.vue b/src/views/continuous_improvement/enterprise_report/components/conclusion.vue
new file mode 100644
index 0000000..574ce59
--- /dev/null
+++ b/src/views/continuous_improvement/enterprise_report/components/conclusion.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+ 取 消
+ 确 定
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/enterprise_report/components/other.vue b/src/views/continuous_improvement/enterprise_report/components/other.vue
new file mode 100644
index 0000000..89910d8
--- /dev/null
+++ b/src/views/continuous_improvement/enterprise_report/components/other.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/enterprise_report/index.vue b/src/views/continuous_improvement/enterprise_report/index.vue
new file mode 100644
index 0000000..b101742
--- /dev/null
+++ b/src/views/continuous_improvement/enterprise_report/index.vue
@@ -0,0 +1,889 @@
+
+
+
+
+
+
{{ data.cpd.CORP_NAME }}
+ 秦安双重预防机制建设平台
+ 体系运行报告
+
+
+
{{ data.cpd.CORP_NAME }}
+ {{ dayjs(startDate).format("YYYY年MM月") }}
+
+
+
+
+ PDF导出
+
+
+
1.概述
+
+ {{ data.cpd.CORP_NAME }}公司统一社会信用代码为:{{
+ data.cpd.CODE
+ }},公司地址:{{ data.cpd.COMPANY_AREA }},所属行业:{{
+ data.cpd.CORP_TYPE_NAME
+ }},主要负责人:{{ data.cpd.LR_NAME }}。
+
+
+ 本体系运行报告的数据来源于{{
+ data.cpd.CORP_NAME
+ }}秦安双重预防机制建设平台相关数据,如企业信息、风险管控、隐患排查、隐患治理、教育培训、高危作业管理等均取自数据库实际数据。
+
+
+ 本体系运行报告的数据统计时间范围:{{
+ dayjs(startDate).format("YYYY年MM月DD日")
+ }}-{{ dayjs(lastDate).format("YYYY年MM月DD日") }}。
+
+
+
2.风险管控
+
2.1 风险点(单元)
+
+ 截至到{{ dayjs(lastDate).format("YYYY年MM月DD日") }},公司共建立{{
+ data.riskpd.unit_count
+ }}个风险点(单元)。
+
+
2.2 辨识部位
+
+ 截至到{{ dayjs(lastDate).format("YYYY年MM月DD日") }},公司共辨识了{{
+ data.riskpd.id_count
+ }}个辨识部位。
+
+
2.3 风险管控信息台账
+
+ 截至到{{ dayjs(lastDate).format("YYYY年MM月DD日") }},公司建立了{{
+ data.riskpd.risk_count
+ }}个风险管控信息台账,其中,重大风险{{ data.riskpd.a_count }}个,
+ 较大风险{{ data.riskpd.b_count }}个,一般风险{{
+ data.riskpd.c_count
+ }}个,低风险{{ data.riskpd.d_count }}个。
+
+
+
+
+
3.隐患排查
+
3.1清单管理
+
+ 截至到{{ dayjs(lastDate).format("YYYY年MM月DD日") }},公司共建立{{
+ data.lists.length
+ }}个隐患排查清单,其中,日常隐患排查清单{{ data.listType0001 }}个,
+ 综合性隐患排查清单{{ data.listType0002 }}个,季节性隐患排查清单{{
+ data.listType0004
+ }}个,节假日隐患排查清单{{
+ data.listType0005
+ }}个,专业性隐患排查清单{{ data.listType0003 }}个。
+
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司新建了{{ data.monthlist.length }}个排查清单,详细情况如下:
+
+
+
+
+ 序号 |
+ 清单类型 |
+ 清单名称 |
+ 清单负责人 |
+ 清单建立时间 |
+ 清单排查周期 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ typeMap[item.TYPE] }} |
+ {{ item.NAME }} |
+ {{ item.USER_NAME }} |
+ {{ dayjs(item.CREATTIME).format("YYYY年MM月DD日") }} |
+ {{ periodMap[item.PERIOD] }} |
+
+
+ 暂无数据 |
+
+
+
+
+
3.2清单排查情况
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司已建立清单用户,详细排查情况见表1:
+
+
+
+
+ 序号 |
+ 部门 |
+ 岗位 |
+ 姓名 |
+ 负责的清单数 |
+ 应排查清单的次数 |
+ 实际排查次数 |
+ 排查率 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.DEPARTNAME_ALL }} |
+ {{ item.POSTNAME }} |
+ {{ item.USERNAME }} |
+ {{ item.listCount }} |
+ {{ item.staCount }} |
+ {{ item.cheCount }} |
+ {{ item.percent }} |
+
+
+ 暂无数据 |
+
+
+
+
+
3.3隐患治理情况
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司共发现隐患{{ data.hdlist.length }}项, 其中重大隐患{{
+ data.zd_count
+ }}项,一般隐患{{ data.yb_count }}项,其中,待整改{{
+ data.dzg_count
+ }}项,待验收{{ data.dys_count }}项,已验收{{
+ data.yys_count
+ }}项,已超期{{ data.cq_count }}项。
+
+
隐患治理情况见表2。
+
+
+
+ 序号 |
+ 隐患发现时间 |
+ 检查人 |
+ 检查部门 |
+ 问题描述 |
+ 整改措施 |
+ 整改情况 |
+ 整改前照片 |
+ 整改后照片 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.CREATTIME }} |
+ {{ item.USER_NAME }} |
+ {{ item.DEPARTMENT_NAME }} |
+ {{ item.HIDDENDESCR }} |
+ {{ item.RECTIFYDESCR }} |
+ 已超期 |
+
+ {{
+ item.HIDDENLEVEL === "hiddenLevel0001" ? "待整改" : "整改中"
+ }}
+ |
+ 已整改 |
+ 已整改 |
+ 已验收 |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+ 暂无数据 |
+
+
+
+
+
+
+
4.风险分析记录
+
改进信息显示风险辨识台账更新记录
+
+
+ 风险点(单元) |
+ 辨识部位 |
+ 改进类型 |
+ 持续改进 |
+ 存在风险 |
+ 管控措施 |
+
+
+
+ {{ item.risk_unit_name }}
+ |
+ {{ item.parts_name }} |
+ {{ item.is_new }} |
+ {{ item.label }} |
+ {{ item.risk_descr }} |
+ {{ item.measures }} |
+
+
+ 暂无数据 |
+
+
+
+
+
+
5.教育培训情况
+
5.1教育培训
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司共完成建立{{ data.studypd.curriculum_count }}课程, 完成建立{{
+ data.studypd.paper_count
+ }}试卷,完成建立{{
+ data.studypd.task_count
+ }}次学习任务,岗位培训类型分别为{{
+ data.post_type_name_arr.join(",")
+ }},培训时间{{ data.sum_classhour }}分钟, 共有{{
+ data.study_student_count
+ }}名学员参与平台教育培训,考核通过{{
+ data.study_pass_count
+ }}人,通过率{{ data.study_pass_rate || 0 }}%。
+
+
+
+
+ 序号 |
+ 课程名称 |
+ 培训类型 |
+ 任务学时(分钟) |
+ 学员人数 |
+ 任务状态 |
+ 应考人数 |
+ 参考人数/合格人数 |
+ 通过率 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.STUDY_NAME }} |
+ {{ item.train_type_name }} |
+ {{ item.SUM_CLASSHOUR }} |
+ {{ item.userCount }} |
+
+ 未开始
+ |
+
+ 进行中
+ |
+
+ 已结束
+ |
+ {{ item.userCount }} |
+ {{ item.cj }}/{{ item.hg }} |
+
+ {{ item.cj === 0 ? 0 : ((item.hg / item.cj) * 100).toFixed(2) }}
+ |
+
+
+
+ 暂无数据 |
+
+
+
5.2档案建立情况
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司共完成建立个人档案{{ data.ztask_count }}份, 一期一档{{
+ data.studypd.task_count
+ }}份。
+
+
+
+
+
6.特殊作业管理
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司共新建{{ data.eight_count }}项特殊作业审批, 已存档{{
+ data.eight_pass_count
+ }}项审批数据。其中,受限空间作业{{
+ data.eightlist?.[2]?.pass_count || 0
+ }}项,断路作业{{ data.eightlist?.[4]?.pass_count || 0 }}项,
+ 盲板抽堵作业{{ data.eightlist?.[0]?.pass_count || 0 }}项,动土作业{{
+ data.eightlist?.[1]?.pass_count || 0
+ }}项,高处作业{{ data.eightlist?.[5]?.pass_count || 0 }}项,
+ 吊装作业{{ data.eightlist?.[6]?.pass_count || 0 }}项,临时用电作业{{
+ data.eightlist?.[3]?.pass_count || 0
+ }}项,动火作业{{ data.eightlist?.[7]?.pass_count || 0 }}项。
+
+
+
+
+
7.绩效考核
+
+ {{ dayjs(startDate).format("YYYY年MM月DD日") }}-{{
+ dayjs(lastDate).format("YYYY年MM月DD日")
+ }},公司绩效考核详细情况如下:
+
+
7.1 部门考核
+
+
+
+ 序号 |
+ 部门 |
+ 发现隐患 |
+ 隐患整改 |
+ 检查得分 |
+ 培训得分 |
+ 风险辨识完善得分 |
+ 考核日期 |
+ 考核等级 |
+ 合计 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.DEPT_NAME_ALL }} |
+ {{ item.SCORE1 }} |
+ {{ item.SCORE2 }} |
+ {{ item.SCORE3 }} |
+ {{ item.SCORE4 }} |
+ {{ item.SCORE5 }} |
+ {{ month }} |
+
+ {{
+ computeLevel(
+ item.SCORE1 +
+ item.SCORE2 +
+ item.SCORE3 +
+ item.SCORE4 +
+ item.SCORE5
+ )
+ }}
+ |
+
+ {{
+ item.SCORE1 +
+ item.SCORE2 +
+ item.SCORE3 +
+ item.SCORE4 +
+ item.SCORE5
+ }}
+ |
+
+
+ 暂无数据 |
+
+
+
+
+
7.2 人员考核
+
+
+
+ 序号 |
+ 部门 |
+ 人员 |
+ 发现隐患 |
+ 隐患整改 |
+ 检查得分 |
+ 培训得分 |
+ 风险辨识完善得分 |
+ 考核日期 |
+ 考核等级 |
+ 合计 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.DEPT_NAME_ALL }} |
+ {{ item.USER_NAME }} |
+ {{ item.SCORE1 }} |
+ {{ item.SCORE2 }} |
+ {{ item.SCORE3 }} |
+ {{ item.SCORE4 }} |
+ {{ item.SCORE5 }} |
+ {{ showDate }} |
+
+ {{
+ computeLevel(
+ item.SCORE1 +
+ item.SCORE2 +
+ item.SCORE3 +
+ item.SCORE4 +
+ item.SCORE5
+ )
+ }}
+ |
+
+ {{
+ item.SCORE1 +
+ item.SCORE2 +
+ item.SCORE3 +
+ item.SCORE4 +
+ item.SCORE5
+ }}
+ |
+
+
+ 暂无数据 |
+
+
+
+
+
+
+
8.结论建议
+
+ {{ data.corp_advice.ADVICE }}
+
+
+
+
+ 填写结论
+
+
+ 查看其它诊断书
+
+
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/hazard_analysis/components/analysis.vue b/src/views/continuous_improvement/hazard_analysis/components/analysis.vue
new file mode 100644
index 0000000..3afcaa7
--- /dev/null
+++ b/src/views/continuous_improvement/hazard_analysis/components/analysis.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/hazard_analysis/index.vue b/src/views/continuous_improvement/hazard_analysis/index.vue
index 4d8ea3e..b15039a 100644
--- a/src/views/continuous_improvement/hazard_analysis/index.vue
+++ b/src/views/continuous_improvement/hazard_analysis/index.vue
@@ -124,11 +124,18 @@
>
查看
- 分析
+
+ 分析
+
+
@@ -139,6 +146,9 @@ import useListData from "@/assets/js/useListData.js";
import LayoutDepartment from "@/components/department/index.vue";
import { getHiddenDangerList } from "@/request/hidden_danger_government.js";
import { layoutFnGetHazardLevel } from "@/assets/js/data_dictionary.js";
+import { nextTick, reactive } from "vue";
+import Analysis from "./components/analysis.vue";
+import { getRiskControlLedgerView } from "@/request/risk_control.js";
const stateList = [
{ NAME: "未整改", ID: "1" },
@@ -152,6 +162,27 @@ const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getHiddenDangerList, {
otherParams: { STATE: 4, DISPOSESTATE: "-1", ANALYSIS: 1 },
});
+const data = reactive({
+ analysisDialog: {
+ visible: false,
+ form: {
+ DEPARTMENT_ID: "",
+ USER_ID: "",
+ RISK_UNIT_ID: "",
+ IDENTIFICATION_ID: "",
+ RISK_DESCR: "",
+ LIKELIHOOD: "",
+ EXPOSURE: "",
+ CONSEQUENCE: "",
+ LEVEL_NAME: "",
+ DANGER: "",
+ MEASURES: "",
+ ACCIDENTS: [],
+ EME_MEASURES: "",
+ IS_NEW: 1,
+ },
+ },
+});
const fnGetDataTransfer = () => {
fnGetData({
STARTTIME: searchForm.value.dates?.[0],
@@ -167,6 +198,24 @@ const fnResetPaginationTransfer = () => {
});
};
const hazardLevelList = await layoutFnGetHazardLevel();
+const fnAnalysis = async ({
+ HIDDEN_ID,
+ RISKPOINT_ID,
+ HIDDENDESCR,
+ RECTIFYDESCR,
+}) => {
+ data.analysisDialog.visible = true;
+ await nextTick();
+ if (RISKPOINT_ID) {
+ const resData = await getRiskControlLedgerView({ RISKPOINT_ID });
+ resData.pd.IS_NEW = 0;
+ data.analysisDialog.form = resData.pd;
+ data.analysisDialog.form.ACCIDENTS = resData.pd.ACCIDENTS.split(",");
+ data.analysisDialog.form.RISK_DESCR += HIDDENDESCR;
+ data.analysisDialog.form.MEASURES += RECTIFYDESCR;
+ }
+ data.analysisDialog.form.HIDDEN_ID = HIDDEN_ID;
+};
diff --git a/src/views/continuous_improvement/risk_analysis/components/analysis.vue b/src/views/continuous_improvement/risk_analysis/components/analysis.vue
new file mode 100644
index 0000000..a2b072c
--- /dev/null
+++ b/src/views/continuous_improvement/risk_analysis/components/analysis.vue
@@ -0,0 +1,83 @@
+
+
+
+
+ {{ info.IS_NEW === 1 ? "是" : "否" }}
+
+
+
+
+
+
+
+
+ 通过
+ 打回
+ 关闭
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/risk_analysis/index.vue b/src/views/continuous_improvement/risk_analysis/index.vue
new file mode 100644
index 0000000..6bb2d23
--- /dev/null
+++ b/src/views/continuous_improvement/risk_analysis/index.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+
+
+
+
+
+ {{ serialNumber(pagination, $index) }}
+
+
+
+
+
+
+
+
+ 低风险/D级
+
+
+ 一般风险/C级
+
+
+ 较大风险/B级
+
+
+ 重大风险/A级
+
+
+
+
+
+
+
+ {{ row.STATUS === 1 ? "已审核" : "未审核" }}
+
+
+
+
+
+ 分析
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/risk_analysis_record/components/view.vue b/src/views/continuous_improvement/risk_analysis_record/components/view.vue
new file mode 100644
index 0000000..d7e53b3
--- /dev/null
+++ b/src/views/continuous_improvement/risk_analysis_record/components/view.vue
@@ -0,0 +1,37 @@
+
+
+
+
+ {{ info.IS_NEW === 1 ? "是" : "否" }}
+
+
+ {{ info.RISK_CAUSES }}
+
+
+
+ 关闭
+
+
+
+
+
+
+
diff --git a/src/views/continuous_improvement/risk_analysis_record/index.vue b/src/views/continuous_improvement/risk_analysis_record/index.vue
new file mode 100644
index 0000000..2dd9a02
--- /dev/null
+++ b/src/views/continuous_improvement/risk_analysis_record/index.vue
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.dept_user_name ? row.dept_user_name : row.user_id }}
+
+
+
+
+
+
+
+
+ 查看最新信息
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/hazard_investigation/checklist_inspection_status/components/inspection_record_view.vue b/src/views/hazard_investigation/checklist_inspection_status/components/inspection_record_view.vue
index 949b787..df32f9f 100644
--- a/src/views/hazard_investigation/checklist_inspection_status/components/inspection_record_view.vue
+++ b/src/views/hazard_investigation/checklist_inspection_status/components/inspection_record_view.vue
@@ -110,44 +110,48 @@
-
- 序号 |
- 风险点(单元) |
- 辨识部位 |
- 存在风险 |
- 风险分级 |
- 检查内容 |
- 状态 |
-
-
- {{ index + 1 }} |
- {{ item.RISKUNITNAME }} |
- {{ item.PARTSNAME }} |
- {{ item.RISK_DESCR }} |
- {{ item.LEVEL_NAME }} |
- {{ item.CHECK_CONTENT }} |
-
-
+
+
+ 序号 |
+ 风险点(单元) |
+ 辨识部位 |
+ 存在风险 |
+ 风险分级 |
+ 检查内容 |
+ 状态 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.RISKUNITNAME }} |
+ {{ item.PARTSNAME }} |
+ {{ item.RISK_DESCR }} |
+ {{ item.LEVEL_NAME }} |
+ {{ item.CHECK_CONTENT }} |
+
+
+
+ 合格
+ |
+
+
+ 合格 |
+
+
+
- 合格
+ 不合格
|
-
- 合格 |
+
+ 不涉及 |
-
-
-
- 不合格
- |
-
-
- 不涉及 |
-
-
- 存在未整改隐患 |
-
-
+
+ 存在未整改隐患 |
+
+
+
其他隐患
@@ -174,14 +178,18 @@
-
- 序号 |
- 隐患描述 |
-
-
- {{ index + 1 }} |
- {{ item.HIDDENDESCR }} |
-
+
+
+ 序号 |
+ 隐患描述 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.HIDDENDESCR }} |
+
+
{
data.form = resData.pd;
data.form.dates = [resData.pd.START_DATE, resData.pd.END_DATE];
data.list = resData.varList;
- data.listAll = resData.varList;
+ data.listAll = [...resData.varList];
};
fnGetData();
const fnGetInspectionItems = async () => {
@@ -389,7 +389,7 @@ const fnGetDataFilter = () => {
item.USERNAME?.indexOf(keyword) > -1
);
} else {
- data.list = data.listAll;
+ data.list = [...data.listAll];
}
fnTableSelection();
};
diff --git a/src/views/hidden_danger_government/rectification/rectification.vue b/src/views/hidden_danger_government/rectification/rectification.vue
index a5b539d..c613075 100644
--- a/src/views/hidden_danger_government/rectification/rectification.vue
+++ b/src/views/hidden_danger_government/rectification/rectification.vue
@@ -476,7 +476,7 @@ watch(
}
);
const fnChoice = (item) => {
- data.RECTIFYDESCR = item.RECTIFYDESCR;
+ data.form.RECTIFYDESCR = item.RECTIFYDESCR;
};
const fnSubmit = debounce(
1000,
diff --git a/src/views/platform_resource_library/courseware/view.vue b/src/views/platform_resource_library/courseware/view.vue
index 10b1c26..1a2a467 100644
--- a/src/views/platform_resource_library/courseware/view.vue
+++ b/src/views/platform_resource_library/courseware/view.vue
@@ -8,7 +8,7 @@
>
-
+
diff --git a/src/views/statistical_analysis/detection_situation/index.vue b/src/views/statistical_analysis/detection_situation/index.vue
new file mode 100644
index 0000000..f7afa7d
--- /dev/null
+++ b/src/views/statistical_analysis/detection_situation/index.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+
+ 打印
+
+
+
+
+
+
+
+
+
+
+ {{ serialNumber(pagination, $index) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistical_analysis/detection_situation/print.vue b/src/views/statistical_analysis/detection_situation/print.vue
new file mode 100644
index 0000000..a43e9a1
--- /dev/null
+++ b/src/views/statistical_analysis/detection_situation/print.vue
@@ -0,0 +1,62 @@
+
+
+
+
员工日常检测情况
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 序号 |
+ 部门 |
+ 岗位 |
+ 姓名 |
+ 负责清单数 |
+ 应检查清单次数 |
+ 实际检查次数 |
+ 检查率 |
+
+
+
+
+ {{ index + 1 }} |
+ {{ item.DEPARTNAME_ALL }} |
+ {{ item.POSTNAME }} |
+ {{ item.USERNAME }} |
+ {{ item.listCount }} |
+ {{ item.staCount }} |
+ {{ item.cheCount }} |
+ {{ item.percent }} |
+
+
+
+
+
+ 打印
+
+
+
+
+
+
+
diff --git a/src/views/statistical_analysis/hazard_statistics/index.vue b/src/views/statistical_analysis/hazard_statistics/index.vue
new file mode 100644
index 0000000..c34fb1a
--- /dev/null
+++ b/src/views/statistical_analysis/hazard_statistics/index.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+ {{ item.NAME }}
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistical_analysis/usage_situation/index.vue b/src/views/statistical_analysis/usage_situation/index.vue
new file mode 100644
index 0000000..2ef8994
--- /dev/null
+++ b/src/views/statistical_analysis/usage_situation/index.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+
+
+
+
+ 部门共有 {{ list.length }} 人,
+
+
+ 登录 {{ loginNum }} 人,
+
+
+ 登录率 {{ achieving }}% 。
+
+
+ 共有清单 {{ listNoCheckNum }} 张,
+
+
+ 已检查 {{ listCheckedNum }} 张,
+
+
+ 检查率 {{ checkTheRate }}% 。
+
+
+
+
+
+ {{ serialNumber(pagination, $index) }}
+
+
+
+
+
+
+
+
+
+
+ {{ row.ISLOGIN > 0 ? "已登录" : "未登录" }}
+
+
+
+
+
+
+
+
+
+