From fd285d6245ddd54c2eef8237eb878f573d665f94 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期四, 07 七月 2022 18:27:39 +0800
Subject: [PATCH] lct
---
src/utils/getStyleSheets.ts | 202 +-
src/api/user/index.ts | 16
src/api/role/index.ts | 11
src/utils/directive.ts | 15
src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts | 21
src/utils/throttle.ts | 36
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue | 417 +++--
src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue | 349 ++--
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue | 390 +++--
vite.config.ts | 130
src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue | 334 ++--
src/api/department/index.ts | 11
.idea/prettier.xml | 7
src/api/doublePreventSystem/riskControlMeasure/index.ts | 22
src/api/login/index.ts | 34
src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue | 429 ++---
src/utils/request.ts | 130
src/api/doublePreventSystem/productionDevice/index.ts | 21
.idea/codeStyles/Project.xml | 10
src/main.ts | 10
src/views/doublePreventSystem/riskLevelManage/safetyRiskSpaceImg/index.vue | 14
.env.development | 2
/dev/null | 25
src/assets/style/index.scss | 7
src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue | 360 ++--
src/api/menu/index.ts | 75
.idea/codeStyles/codeStyleConfig.xml | 5
src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue | 289 ++-
src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue | 234 +-
.prettierrc.js | 74
src/api/doublePreventSystem/safetyRiskEvent/index.ts | 23
src/views/system/menu/component/menuDialog.vue | 518 +++---
32 files changed, 2,185 insertions(+), 2,036 deletions(-)
diff --git a/.env.development b/.env.development
index 5d83d16..ea1c589 100644
--- a/.env.development
+++ b/.env.development
@@ -2,6 +2,6 @@
ENV = 'development'
# 本地环境接口地址
-VITE_API_URL = 'http://192.168.0.8:8008'
+VITE_API_URL = 'http://192.168.0.14:8008'
# VITE_API_URL = 'http://192.168.0.8:8008'
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..5e08509
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,10 @@
+<component name="ProjectCodeStyleConfiguration">
+ <code_scheme name="Project" version="173">
+ <codeStyleSettings language="TypeScript">
+ <indentOptions>
+ <option name="USE_TAB_CHARACTER" value="true" />
+ <option name="SMART_TABS" value="true" />
+ </indentOptions>
+ </codeStyleSettings>
+ </code_scheme>
+</component>
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+ <state>
+ <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
+ </state>
+</component>
\ No newline at end of file
diff --git a/.idea/prettier.xml b/.idea/prettier.xml
new file mode 100644
index 0000000..4c1591e
--- /dev/null
+++ b/.idea/prettier.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="PrettierConfiguration">
+ <option name="myRunOnSave" value="true" />
+ <option name="myFilesPattern" value="{**/*,*}.{js,ts,jsx,tsx,vue}" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/.prettierrc.js b/.prettierrc.js
index cff490a..4223d15 100644
--- a/.prettierrc.js
+++ b/.prettierrc.js
@@ -1,39 +1,39 @@
module.exports = {
- // 一行最多多少个字符
- printWidth: 150,
- // 指定每个缩进级别的空格数
- tabWidth: 2,
- // 使用制表符而不是空格缩进行
- useTabs: true,
- // 在语句末尾打印分号
- semi: true,
- // 使用单引号而不是双引号
- singleQuote: true,
- // 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
- quoteProps: 'as-needed',
- // 在JSX中使用单引号而不是双引号
- jsxSingleQuote: false,
- // 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>",默认none
- trailingComma: 'es5',
- // 在对象文字中的括号之间打印空格
- bracketSpacing: true,
- // jsx 标签的反尖括号需要换行
- jsxBracketSameLine: false,
- // 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
- arrowParens: 'always',
- // 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
- rangeStart: 0,
- rangeEnd: Infinity,
- // 指定要使用的解析器,不需要写文件开头的 @prettier
- requirePragma: false,
- // 不需要自动在文件开头插入 @prettier
- insertPragma: false,
- // 使用默认的折行标准 always\never\preserve
- proseWrap: 'preserve',
- // 指定HTML文件的全局空格敏感度 css\strict\ignore
- htmlWhitespaceSensitivity: 'css',
- // Vue文件脚本和样式标签缩进
- vueIndentScriptAndStyle: false,
- // 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
- endOfLine: 'lf',
+ // 一行最多多少个字符
+ printWidth: 150,
+ // 指定每个缩进级别的空格数
+ tabWidth: 4,
+ // 使用制表符而不是空格缩进行
+ useTabs: false,
+ // // 在语句末尾打印分号
+ // semi: true,
+ // 使用单引号而不是双引号
+ singleQuote: true,
+ // // 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
+ // quoteProps: 'as-needed',
+ // // 在JSX中使用单引号而不是双引号
+ // jsxSingleQuote: false,
+ // // 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>",默认none
+ trailingComma: 'none',
+ // 在对象文字中的括号之间打印空格
+ // bracketSpacing: true,
+ // // jsx 标签的反尖括号需要换行
+ // jsxBracketSameLine: false,
+ // // 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
+ // arrowParens: 'always',
+ // // 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
+ // rangeStart: 2,
+ // rangeEnd: Infinity,
+ // // 指定要使用的解析器,不需要写文件开头的 @prettier
+ // requirePragma: false,
+ // // 不需要自动在文件开头插入 @prettier
+ // insertPragma: false,
+ // // 使用默认的折行标准 always\never\preserve
+ // proseWrap: 'preserve',
+ // // 指定HTML文件的全局空格敏感度 css\strict\ignore
+ // htmlWhitespaceSensitivity: 'css',
+ // // Vue文件脚本和样式标签缩进
+ // vueIndentScriptAndStyle: false,
+ // 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
+ endOfLine: 'lf'
};
diff --git a/src/api/department/index.ts b/src/api/department/index.ts
index 0ed427c..6f43002 100644
--- a/src/api/department/index.ts
+++ b/src/api/department/index.ts
@@ -2,25 +2,28 @@
export function departmentApi() {
return {
+ // v1
getDepartmentList: () => {
return request({
url: `/department/list`,
- method: 'post',
+ method: 'post'
});
},
+ // v1
addDepartment: (data: object) => {
return request({
url: `/department/add`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modDepartment: (data: object) => {
return request({
url: `/department/mod`,
method: 'post',
- data:data
+ data: data
});
- },
+ }
};
}
diff --git a/src/api/doublePreventSystem/productionDevice/index.ts b/src/api/doublePreventSystem/productionDevice/index.ts
index 11acf60..4f59f32 100644
--- a/src/api/doublePreventSystem/productionDevice/index.ts
+++ b/src/api/doublePreventSystem/productionDevice/index.ts
@@ -1,40 +1,45 @@
-import request from '/@/utils/request'
+import request from '/@/utils/request';
export function productionDeviceApi() {
return {
+ // v1
getProductionDeviceList: (data: object) => {
return request({
url: `/prevent/device/select/getDevicePage`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
addProductionDevice: (data: object) => {
return request({
url: `/prevent/device/insert/saveDevice`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modProductionDevice: (data: object) => {
return request({
url: `/prevent/device/update/updateDevice`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
deleteProductionDevice: (data: object) => {
return request({
url: `/prevent/device/delete/deleteDevice`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
getAllProductionDeviceList: () => {
return request({
url: `/prevent/device/select/listDevices`,
- method: 'post',
+ method: 'post'
});
- },
- }
+ }
+ };
}
diff --git a/src/api/doublePreventSystem/riskControlMeasure/index.ts b/src/api/doublePreventSystem/riskControlMeasure/index.ts
index 0996093..01d190d 100644
--- a/src/api/doublePreventSystem/riskControlMeasure/index.ts
+++ b/src/api/doublePreventSystem/riskControlMeasure/index.ts
@@ -1,34 +1,44 @@
-import request from '/@/utils/request'
+import request from '/@/utils/request';
export function riskControlMeasureApi() {
return {
+ // v1
getRiskControlMeasureList: (data: object) => {
return request({
url: `/prevent/riskControlMeasure/select/getRiskControlMeasurePage`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
addRiskControlMeasure: (data: object) => {
return request({
url: `/prevent/riskControlMeasure/insert/saveRiskControlMeasure`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modRiskControlMeasure: (data: object) => {
return request({
url: `/prevent/riskControlMeasure/update/updateRiskControlMeasure`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
deleteRiskControlMeasure: (data: object) => {
return request({
url: `/prevent/riskControlMeasure/delete/deleteRiskControlMeasure`,
method: 'post',
- data:data
+ data: data
});
},
- }
+ getClassifyData: () => {
+ return request({
+ url: `/prevent/riskControlMeasure/select/listMeasures`,
+ method: 'post'
+ });
+ }
+ };
}
diff --git a/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts b/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
index d036bfa..8f93426 100644
--- a/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
+++ b/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
@@ -1,40 +1,45 @@
-import request from '/@/utils/request'
+import request from '/@/utils/request';
export function safetyRiskAnalyseUnitApi() {
return {
+ // v1
getSafetyRiskAnalyseUnitList: (data: object) => {
return request({
url: `/prevent/riskAnaUnit/select/getRiskUnitPage`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
addSafetyRiskAnalyseUnit: (data: object) => {
return request({
url: `/prevent/riskAnaUnit/insert/saveRiskAnaUnit`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modSafetyRiskAnalyseUnit: (data: object) => {
return request({
url: `/prevent/riskAnaUnit/update/updateRiskAnaUnit`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
deleteSafetyRiskAnalyseUnit: (data: object) => {
return request({
url: `/prevent/riskAnaUnit/delete/deleteRiskAnaUnit`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
getAllSafetyRiskAnalyseUnitList: () => {
return request({
url: `/prevent/riskEvent/select/listRiskUnits`,
- method: 'post',
+ method: 'post'
});
- },
- }
+ }
+ };
}
diff --git a/src/api/doublePreventSystem/safetyRiskEvent/index.ts b/src/api/doublePreventSystem/safetyRiskEvent/index.ts
index 4e28e6a..0aa7087 100644
--- a/src/api/doublePreventSystem/safetyRiskEvent/index.ts
+++ b/src/api/doublePreventSystem/safetyRiskEvent/index.ts
@@ -1,34 +1,45 @@
-import request from '/@/utils/request'
+import request from '/@/utils/request';
export function safetyRiskEventApi() {
return {
+ // v1
getSafetyRiskEventList: (data: object) => {
return request({
url: `/prevent/riskEvent/select/getRiskEventPage`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
addSafetyRiskEvent: (data: object) => {
return request({
url: `/prevent/riskEvent/insert/saveRiskEvent`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modSafetyRiskEvent: (data: object) => {
return request({
url: `/prevent/riskEvent/update/updateRiskEvent`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
deleteSafetyRiskEvent: (data: object) => {
return request({
url: `/prevent/riskEvent/delete/deleteRiskEvent`,
method: 'post',
- data:data
+ data: data
});
},
- }
+ // v1
+ getAllSafetyRiskEventList: () => {
+ return request({
+ url: `/prevent/riskEvent/select/getListEvents`,
+ method: 'post'
+ });
+ }
+ };
}
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
index ca48515..0d27058 100644
--- a/src/api/login/index.ts
+++ b/src/api/login/index.ts
@@ -6,20 +6,22 @@
* @method signOut 用户退出登录
*/
export function useLoginApi() {
- return {
- signIn: (params: object) => {
- return request({
- url: '/auth/login',
- method: 'post',
- data: params,
- });
- },
- signOut: (params: object) => {
- return request({
- url: '/user/signOut',
- method: 'post',
- data: params,
- });
- },
- };
+ return {
+ // v1
+ signIn: (params: object) => {
+ return request({
+ url: '/auth/login',
+ method: 'post',
+ data: params
+ });
+ },
+ // v1
+ signOut: (params: object) => {
+ return request({
+ url: '/user/signOut',
+ method: 'post',
+ data: params
+ });
+ }
+ };
}
diff --git a/src/api/menu/index.ts b/src/api/menu/index.ts
index e6b136c..d92bc29 100644
--- a/src/api/menu/index.ts
+++ b/src/api/menu/index.ts
@@ -7,39 +7,44 @@
* @method getMenuTest 获取后端动态路由菜单(test)
*/
export function useMenuApi() {
- return {
- getMenuAdmin: (value?: string) => {
- return request({
- url: `/auth/menu?projectId= ${value}`,
- method: 'post',
- });
- },
- addMenu: (value?: object) => {
- return request({
- url: `/menu/add`,
- method: 'post',
- data:value
- });
- },
- modMenu: (value?: object) => {
- return request({
- url: `/menu/mod`,
- method: 'post',
- data:value
- });
- },
- deleteMenu: (value?: object) => {
- return request({
- url: `/menu/del`,
- method: 'post',
- data:value,
- });
- },
- getProjectList: () => {
- return request({
- url: `/project/list`,
- method: 'post',
- });
- },
- };
+ return {
+ // v1
+ getMenuAdmin: (value?: string) => {
+ return request({
+ url: `/auth/menu?projectId= ${value}`,
+ method: 'post'
+ });
+ },
+ // v1
+ addMenu: (value?: object) => {
+ return request({
+ url: `/menu/add`,
+ method: 'post',
+ data: value
+ });
+ },
+ // v1
+ modMenu: (value?: object) => {
+ return request({
+ url: `/menu/mod`,
+ method: 'post',
+ data: value
+ });
+ },
+ // v1
+ deleteMenu: (value?: object) => {
+ return request({
+ url: `/menu/del`,
+ method: 'post',
+ data: value
+ });
+ },
+ // v1
+ getProjectList: () => {
+ return request({
+ url: `/project/list`,
+ method: 'post'
+ });
+ }
+ };
}
diff --git a/src/api/role/index.ts b/src/api/role/index.ts
index 1d1ac38..e0b9151 100644
--- a/src/api/role/index.ts
+++ b/src/api/role/index.ts
@@ -2,25 +2,28 @@
export function useRoleApi() {
return {
+ // v1
getRoleList: () => {
return request({
url: `/role/list`,
- method: 'post',
+ method: 'post'
});
},
+ // v1
addRole: (data: object) => {
return request({
url: `/role/add`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modRole: (data: object) => {
return request({
url: `/role/mod`,
method: 'post',
- data:data
+ data: data
});
- },
+ }
};
}
diff --git a/src/api/user/index.ts b/src/api/user/index.ts
index 7e4889a..8959ea7 100644
--- a/src/api/user/index.ts
+++ b/src/api/user/index.ts
@@ -2,32 +2,36 @@
export function userApi() {
return {
+ // v1
getUserList: (data: any) => {
return request({
url: `/account/page/list`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
addUser: (data: object) => {
return request({
url: `/account/add`,
method: 'post',
- data:data
+ data: data
});
},
+ // v1
modUser: (data: object) => {
return request({
url: `/account/mod`,
method: 'post',
- data:data
+ data: data
});
},
- getUserLByDepartment: (depId : number | null) => {
+ // v1
+ getUserLByDepartment: (depId: number | null) => {
return request({
url: `/account/dep/list?depId=${depId}`,
- method: 'get',
+ method: 'get'
});
- },
+ }
};
}
diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss
new file mode 100644
index 0000000..13bff85
--- /dev/null
+++ b/src/assets/style/index.scss
@@ -0,0 +1,7 @@
+.input-box{
+ width: 200px !important;
+}
+.basic-line{
+ display: inline-block;
+ padding-left: 10px;
+}
diff --git a/src/main.ts b/src/main.ts
index bc84b4a..d8ef740 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -5,22 +5,22 @@
import { directive } from '/@/utils/directive';
import { i18n } from '/@/i18n/index';
import other from '/@/utils/other';
-
+import '/@/assets/style/index.scss';
import ElementPlus from 'element-plus';
-import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+import * as ElementPlusIconsVue from '@element-plus/icons-vue';
import 'element-plus/dist/index.css';
import '/@/theme/index.scss';
import mitt from 'mitt';
import VueGridLayout from 'vue-grid-layout';
-import locale from 'element-plus/lib/locale/lang/zh-cn'
+import locale from 'element-plus/lib/locale/lang/zh-cn';
const app = createApp(App);
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
- app.component(key, component)
+ app.component(key, component);
}
directive(app);
other.elSvg(app);
-app.use(pinia).use(router).use(ElementPlus, { i18n: i18n.global.t,locale }).use(i18n).use(VueGridLayout).mount('#app');
+app.use(pinia).use(router).use(ElementPlus, { i18n: i18n.global.t, locale }).use(i18n).use(VueGridLayout).mount('#app');
app.config.globalProperties.mittBus = mitt();
diff --git a/src/utils/debounce.ts b/src/utils/debounce.ts
deleted file mode 100644
index e6f754d..0000000
--- a/src/utils/debounce.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { App } from 'vue'
-
-export function preventClick(app: App){
- app.directive('debounce', {
- mounted(el, binding) {
- let timer : NodeJS.Timeout | null = null
- el.addEventListener('click', () => {
- debugger
- let firstClick: Boolean = !timer;
- if(firstClick){
- binding.value
- }
- if(timer){
- clearTimeout(timer)
- }
- timer = setTimeout(() => {
- timer = null
- if(!firstClick){
- binding.value
- }
- },3000);
- })
- }
- })
-}
diff --git a/src/utils/directive.ts b/src/utils/directive.ts
index a75b187..ccac511 100644
--- a/src/utils/directive.ts
+++ b/src/utils/directive.ts
@@ -1,6 +1,7 @@
import type { App } from 'vue';
import { authDirective } from '/@/utils/authDirective';
import { wavesDirective, dragDirective } from '/@/utils/customDirective';
+import { preventClick } from '/@/utils/throttle';
/**
* 导出指令方法:v-xxx
@@ -9,10 +10,12 @@
* @methods dragDirective 自定义拖动指令,用法:v-drag
*/
export function directive(app: App) {
- // 用户权限指令
- authDirective(app);
- // 按钮波浪指令
- wavesDirective(app);
- // 自定义拖动指令
- dragDirective(app);
+ // 用户权限指令
+ authDirective(app);
+ // 按钮波浪指令
+ wavesDirective(app);
+ // 自定义拖动指令
+ dragDirective(app);
+
+ preventClick(app);
}
diff --git a/src/utils/getStyleSheets.ts b/src/utils/getStyleSheets.ts
index 90252c3..79144d7 100644
--- a/src/utils/getStyleSheets.ts
+++ b/src/utils/getStyleSheets.ts
@@ -1,101 +1,101 @@
-import { nextTick } from 'vue';
-import * as svg from '@element-plus/icons-vue';
-
-// 获取阿里字体图标
-const getAlicdnIconfont = () => {
- return new Promise((resolve, reject) => {
- nextTick(() => {
- const styles: any = document.styleSheets;
- let sheetsList = [];
- let sheetsIconList = [];
- for (let i = 0; i < styles.length; i++) {
- if (styles[i].href && styles[i].href.indexOf('at.alicdn.com') > -1) {
- sheetsList.push(styles[i]);
- }
- }
- for (let i = 0; i < sheetsList.length; i++) {
- for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
- if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.icon-') > -1) {
- sheetsIconList.push(
- `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
- );
- }
- }
- }
- if (sheetsIconList.length > 0) resolve(sheetsIconList);
- else reject('未获取到值,请刷新重试');
- });
- });
-};
-
-// 初始化获取 css 样式,获取 element plus 自带 svg 图标,增加了 ele- 前缀,使用时:ele-Aim
-const getElementPlusIconfont = () => {
- return new Promise((resolve, reject) => {
- nextTick(() => {
- const icons = svg as any;
- const sheetsIconList = [];
- for (const i in icons) {
- sheetsIconList.push(`ele-${icons[i].name}`);
- }
- if (sheetsIconList.length > 0) resolve(sheetsIconList);
- else reject('未获取到值,请刷新重试');
- });
- });
-};
-
-// 初始化获取 css 样式,这里使用 fontawesome 的图标
-const getAwesomeIconfont = () => {
- return new Promise((resolve, reject) => {
- nextTick(() => {
- const styles: any = document.styleSheets;
- let sheetsList = [];
- let sheetsIconList = [];
- for (let i = 0; i < styles.length; i++) {
- if (styles[i].href && styles[i].href.indexOf('netdna.bootstrapcdn.com') > -1) {
- sheetsList.push(styles[i]);
- }
- }
- for (let i = 0; i < sheetsList.length; i++) {
- for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
- if (
- sheetsList[i].cssRules[j].selectorText &&
- sheetsList[i].cssRules[j].selectorText.indexOf('.fa-') === 0 &&
- sheetsList[i].cssRules[j].selectorText.indexOf(',') === -1
- ) {
- if (/::before/.test(sheetsList[i].cssRules[j].selectorText)) {
- sheetsIconList.push(
- `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
- );
- }
- }
- }
- }
- if (sheetsIconList.length > 0) resolve(sheetsIconList.reverse());
- else reject('未获取到值,请刷新重试');
- });
- });
-};
-
-/**
- * 获取字体图标 `document.styleSheets`
- * @method ali 获取阿里字体图标 `<i class="iconfont 图标类名"></i>`
- * @method ele 获取 element plus 自带图标 `<i class="图标类名"></i>`
- * @method ali 获取 fontawesome 的图标 `<i class="fa 图标类名"></i>`
- */
-const initIconfont = {
- // iconfont
- ali: () => {
- return getAlicdnIconfont();
- },
- // element plus
- ele: () => {
- return getElementPlusIconfont();
- },
- // fontawesome
- awe: () => {
- return getAwesomeIconfont();
- },
-};
-
-// 导出方法
-export default initIconfont;
+// import { nextTick } from 'vue';
+// import * as svg from '@element-plus/icons-vue';
+//
+// // 获取阿里字体图标
+// const getAlicdnIconfont = () => {
+// return new Promise((resolve, reject) => {
+// nextTick(() => {
+// const styles: any = document.styleSheets;
+// let sheetsList = [];
+// let sheetsIconList = [];
+// for (let i = 0; i < styles.length; i++) {
+// if (styles[i].href && styles[i].href.indexOf('at.alicdn.com') > -1) {
+// sheetsList.push(styles[i]);
+// }
+// }
+// for (let i = 0; i < sheetsList.length; i++) {
+// for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
+// if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.icon-') > -1) {
+// sheetsIconList.push(
+// `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
+// );
+// }
+// }
+// }
+// if (sheetsIconList.length > 0) resolve(sheetsIconList);
+// else reject('未获取到值,请刷新重试');
+// });
+// });
+// };
+//
+// // 初始化获取 css 样式,获取 element plus 自带 svg 图标,增加了 ele- 前缀,使用时:ele-Aim
+// const getElementPlusIconfont = () => {
+// return new Promise((resolve, reject) => {
+// nextTick(() => {
+// const icons = svg as any;
+// const sheetsIconList = [];
+// for (const i in icons) {
+// sheetsIconList.push(`ele-${icons[i].name}`);
+// }
+// if (sheetsIconList.length > 0) resolve(sheetsIconList);
+// else reject('未获取到值,请刷新重试');
+// });
+// });
+// };
+//
+// // 初始化获取 css 样式,这里使用 fontawesome 的图标
+// const getAwesomeIconfont = () => {
+// return new Promise((resolve, reject) => {
+// nextTick(() => {
+// const styles: any = document.styleSheets;
+// let sheetsList = [];
+// let sheetsIconList = [];
+// for (let i = 0; i < styles.length; i++) {
+// if (styles[i].href && styles[i].href.indexOf('netdna.bootstrapcdn.com') > -1) {
+// sheetsList.push(styles[i]);
+// }
+// }
+// for (let i = 0; i < sheetsList.length; i++) {
+// for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
+// if (
+// sheetsList[i].cssRules[j].selectorText &&
+// sheetsList[i].cssRules[j].selectorText.indexOf('.fa-') === 0 &&
+// sheetsList[i].cssRules[j].selectorText.indexOf(',') === -1
+// ) {
+// if (/::before/.test(sheetsList[i].cssRules[j].selectorText)) {
+// sheetsIconList.push(
+// `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
+// );
+// }
+// }
+// }
+// }
+// if (sheetsIconList.length > 0) resolve(sheetsIconList.reverse());
+// else reject('未获取到值,请刷新重试');
+// });
+// });
+// };
+//
+// /**
+// * 获取字体图标 `document.styleSheets`
+// * @method ali 获取阿里字体图标 `<i class="iconfont 图标类名"></i>`
+// * @method ele 获取 element plus 自带图标 `<i class="图标类名"></i>`
+// * @method ali 获取 fontawesome 的图标 `<i class="fa 图标类名"></i>`
+// */
+// const initIconfont = {
+// // iconfont
+// ali: () => {
+// return getAlicdnIconfont();
+// },
+// // element plus
+// ele: () => {
+// return getElementPlusIconfont();
+// },
+// // fontawesome
+// awe: () => {
+// return getAwesomeIconfont();
+// },
+// };
+//
+// // 导出方法
+// export default initIconfont;
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 16c6f38..c1b68b5 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -1,94 +1,88 @@
import axios from 'axios';
-import { ElMessage, ElMessageBox } from 'element-plus';
+import { ElMessage } from 'element-plus';
import { Session } from '/@/utils/storage';
-import {useUserInfo} from "/@/stores/userInfo";
-import {storeToRefs} from "pinia";
-import JSONbig from 'json-bigint'
+import JSONbig from 'json-bigint';
// var jsonBig = require('json-bigint')({ "storeAsString": true });
// 配置新建一个 axios 实例
const service = axios.create({
- baseURL: import.meta.env.VITE_API_URL as any,
- timeout: 50000,
- headers: { 'Content-Type': 'application/json' },
+ baseURL: import.meta.env.VITE_API_URL as any,
+ timeout: 50000,
+ headers: { 'Content-Type': 'application/json' }
});
service.interceptors.request.use(
- (config) => {
- // 在发送请求之前做些什么 token
- if (Session.get('token')) {
- const userInfo = useUserInfo()
- const { userInfos } = storeToRefs(userInfo);
- (<any>config.headers).common['Authorization'] = `${Session.get('token')}`;
- (<any>config.headers).common['uid'] = `${Session.get('uid')}`;
- }
- return config;
- },
- (error) => {
- // 对请求错误做些什么
- return Promise.reject(error);
- }
+ (config) => {
+ // 在发送请求之前做些什么 token
+ if (Session.get('token')) {
+ (<any>config.headers).common['Authorization'] = `${Session.get('token')}`;
+ (<any>config.headers).common['uid'] = `${Session.get('uid')}`;
+ }
+ return config;
+ },
+ (error) => {
+ // 对请求错误做些什么
+ return Promise.reject(error);
+ }
);
service.defaults.transformResponse = [
- function(data) {
-
+ function (data) {
try {
// 正常同通过return JSON.parse(data)对数据进行转换
// 但是转化完成的数据可能超出安全数据长度
// 因此我们定制使用第三包来转化
- return JSONbig.parse(data)
+ return JSONbig.parse(data);
} catch (err) {
console.log(err);
// 转换失败返回一个空对象
- return {}
+ return {};
}
}
-]
+];
service.interceptors.response.use(
-
- (response) => {
- // 对响应数据做点什么
- if(response.data.code && (response.data.code ==='A0215' || response.data.code === 'A0214' || response.data.code === 'A0213')){
- Session.clear()
- window.location.href = '/'
- return Promise.reject(response)
- }
- // if(response.data.code && response.data.code !== '200'){
- return Promise.resolve(response)
- // }
- // Session.clear()
- // window.location.href = '/'
- // return Promise.reject(response)
- // const res = response.data;
- // debugger
- // if (res.code && res.code !== 0) {
- // // `token` 过期或者账号已在别处登录
- // if (res.code === 401 || res.code === 4001) {
- // Session.clear(); // 清除浏览器全部临时缓存
- // window.location.href = '/'; // 去登录页
- // ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
- // .then(() => {})
- // .catch(() => {});
- // }
- // return Promise.reject(service.interceptors.response);
- // } else {
- // return response.data;
- // }
- },
- (error) => {
- // 对响应错误做点什么
- if (error.message.indexOf('timeout') != -1) {
- ElMessage.error('网络超时');
- } else if (error.message == 'Network Error') {
- ElMessage.error('网络连接错误');
- } else {
- if (error.response.data) ElMessage.error(error.response.statusText);
- else ElMessage.error('接口路径找不到');
- }
- return Promise.reject(error);
- }
+ (response) => {
+ // 对响应数据做点什么
+ if (response.data.code && (response.data.code === 'A0215' || response.data.code === 'A0214' || response.data.code === 'A0213')) {
+ Session.clear();
+ window.location.href = '/';
+ return Promise.reject(response);
+ }
+ // if(response.data.code && response.data.code !== '200'){
+ return Promise.resolve(response);
+ // }
+ // Session.clear()
+ // window.location.href = '/'
+ // return Promise.reject(response)
+ // const res = response.data;
+ // debugger
+ // if (res.code && res.code !== 0) {
+ // // `token` 过期或者账号已在别处登录
+ // if (res.code === 401 || res.code === 4001) {
+ // Session.clear(); // 清除浏览器全部临时缓存
+ // window.location.href = '/'; // 去登录页
+ // ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
+ // .then(() => {})
+ // .catch(() => {});
+ // }
+ // return Promise.reject(service.interceptors.response);
+ // } else {
+ // return response.data;
+ // }
+ },
+ (error) => {
+ // 对响应错误做点什么
+ if (error.message.indexOf('timeout') != -1) {
+ ElMessage.error('网络超时');
+ } else if (error.message == 'Network Error') {
+ ElMessage.error('网络连接错误');
+ } else {
+ if (error.response.data) ElMessage.error(error.response.statusText);
+ else ElMessage.error('接口路径找不到');
+ }
+ return Promise.reject(error);
+ }
);
export default service;
diff --git a/src/utils/throttle.ts b/src/utils/throttle.ts
new file mode 100644
index 0000000..52e9528
--- /dev/null
+++ b/src/utils/throttle.ts
@@ -0,0 +1,36 @@
+import { App } from 'vue';
+
+export function preventClick(app: App) {
+ app.directive('throttle', {
+ mounted(el: any, binding: any) {
+ el.addEventListener('click', () => {
+ if (!el.disabled) {
+ el.disabled = true;
+ setTimeout(() => {
+ el.disabled = false;
+ }, binding.value || 2000);
+ }
+ });
+ }
+
+ // mounted(el, binding) {
+ // let timer : NodeJS.Timeout | null = null
+ // el.addEventListener('click', () => {
+ // debugger
+ // let firstClick: Boolean = !timer;
+ // if(firstClick){
+ // binding.value
+ // }
+ // if(timer){
+ // clearTimeout(timer)
+ // }
+ // timer = setTimeout(() => {
+ // timer = null
+ // if(!firstClick){
+ // binding.value
+ // }
+ // },3000);
+ // })
+ // }
+ });
+}
diff --git a/src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue b/src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue
index 8c0a980..5fa3450 100644
--- a/src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue
@@ -1,189 +1,200 @@
<template>
<div class="system-add-menu-container">
<el-dialog :title="title" v-model="isShowProductionDeviceDialog" width="600px">
- <el-form :model="productionDeviceForm" :rules="productionDeviceFormRules" ref="productionDeviceFormRef" size="default" label-width="120px">
+ <el-form
+ :model="productionDeviceForm"
+ :rules="productionDeviceFormRules"
+ ref="productionDeviceFormRef"
+ size="default"
+ label-width="120px"
+ >
<el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="生产装置名称" prop="produceDeviceName">
- <el-input class="input-length" v-model="productionDeviceForm.produceDeviceName" placeholder="请输入生产装置名称" clearable></el-input>
+ <el-input
+ class="input-length"
+ v-model="productionDeviceForm.produceDeviceName"
+ placeholder="请输入生产装置名称"
+ clearable
+ ></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="所属部门" prop="depId">
<el-cascader
- :options="departmentList"
- :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
- placeholder="请选择部门"
- clearable
- filterable
- style="width:85%"
- v-model="productionDeviceForm.depId"
+ :options="departmentList"
+ :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
+ placeholder="请选择部门"
+ clearable
+ filterable
+ style="width: 85%"
+ v-model="productionDeviceForm.depId"
>
</el-cascader>
-<!-- <el-select class="input-length" v-model="productionDeviceForm.depName" placeholder="请选择所属部门" clearable filterable></el-select>-->
+ <!-- <el-select class="input-length" v-model="productionDeviceForm.depName" placeholder="请选择所属部门" clearable filterable></el-select>-->
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="风险等级" prop="riskLevel">
- <el-select class="input-length" v-model="productionDeviceForm.riskLevel" placeholder="请选择风险等级" clearable filterable>
- <el-option
- v-for="item in levelList"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- ></el-option>
+ <el-select
+ class="input-length"
+ v-model="productionDeviceForm.riskLevel"
+ placeholder="请选择风险等级"
+ clearable
+ filterable
+ >
+ <el-option v-for="item in levelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="区域位置" prop="location">
- <el-input class="input-length" v-model="productionDeviceForm.location" type="textarea" placeholder="请输入区域位置" maxlength="150"></el-input>
+ <el-input
+ class="input-length"
+ v-model="productionDeviceForm.location"
+ type="textarea"
+ placeholder="请输入区域位置"
+ maxlength="150"
+ ></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
- <span class="dialog-footer">
- <el-button @click="isShowProductionDeviceDialog = !isShowProductionDeviceDialog" size="default">取 消</el-button>
- <el-button type="primary" @click="submitProductionDevice" size="default">确 实</el-button>
- </span>
+ <span class="dialog-footer">
+ <el-button @click="isShowProductionDeviceDialog = !isShowProductionDeviceDialog" size="default">取 消</el-button>
+ <el-button type="primary" @click="submitProductionDevice" v-throttle size="default">确 实</el-button>
+ </span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
- interface stateType{
- isShowProductionDeviceDialog:Boolean,
- productionDeviceForm:{
- produceDeviceName: string,
- depId: number | null,
- riskLevel: number | null,
- location: string,
- },
- title: string,
- departmentList: [],
- levelList: Array<levelListState>,
- productionDeviceFormRules:{}
- }
- interface levelListState {
+interface stateType {
+ isShowProductionDeviceDialog: Boolean;
+ productionDeviceForm: {
+ produceDeviceName: string;
+ depId: number | null;
+ riskLevel: number | null;
+ location: string;
+ };
+ title: string;
+ departmentList: [];
+ levelList: Array<levelListState>;
+ productionDeviceFormRules: {};
+}
+interface levelListState {}
+import { reactive, toRefs, ref } from 'vue';
+import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice';
+import { ElMessage } from 'element-plus';
+export default {
+ name: 'productionDeviceDialog',
+ setup(props: any, context: any) {
+ const productionDeviceFormRef = ref();
+ const state = reactive<stateType>({
+ title: '',
+ departmentList: [],
+ isShowProductionDeviceDialog: false,
+ levelList: [
+ { id: 1, name: '低风险' },
+ { id: 2, name: '一般风险' },
+ { id: 3, name: '较大风险' },
+ { id: 4, name: '重大风险' }
+ ],
+ productionDeviceForm: {
+ produceDeviceName: '',
+ depId: null,
+ riskLevel: null,
+ location: ''
+ },
+ productionDeviceFormRules: {
+ produceDeviceName: [{ required: true, message: '请填写生产装置名称', trigger: 'blur' }],
+ depId: [{ required: true, message: '请选择部门', trigger: 'change' }],
+ riskLevel: [{ required: true, message: '请选择风险等级', trigger: 'change' }],
+ location: [{ required: true, message: '请填写区域位置', trigger: 'blur' }]
+ }
+ });
- }
- import { reactive, toRefs, ref} from 'vue'
- import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice';
- import { ElMessage } from 'element-plus';
- export default {
- name: "productionDeviceDialog",
- setup(props, context) {
- const productionDeviceFormRef = ref();
- const state = reactive<stateType>({
- title:'',
- departmentList: [],
- isShowProductionDeviceDialog: false,
- levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},],
- productionDeviceForm: {
+ //打开模态框
+ const openProductionDeviceDialog = (type: string, value: object, department: []) => {
+ state.isShowProductionDeviceDialog = true;
+ state.departmentList = department;
+ setTimeout(() => {
+ productionDeviceFormRef.value.clearValidate();
+ });
+ if (type === '新增') {
+ state.title = '新增生产装置';
+ state.productionDeviceForm = {
produceDeviceName: '',
depId: null,
riskLevel: null,
- location: '',
- },
- productionDeviceFormRules:{
- produceDeviceName: [
- { required: true, message: '请填写生产装置名称', trigger: 'blur' },
- ],
- depId: [
- { required: true, message: '请选择部门', trigger: 'change' },
- ],
- riskLevel: [
- { required: true, message: '请选择风险等级', trigger: 'change' },
- ],
- location: [
- { required: true, message: '请填写区域位置', trigger: 'blur' },
- ],
- }
+ location: ''
+ };
+ } else {
+ state.title = '修改生产装置';
+ state.productionDeviceForm = JSON.parse(JSON.stringify(value));
+ }
+ };
- });
-
- //打开模态框
- const openProductionDeviceDialog = (type: string, value: object, department: []) => {
- state.isShowProductionDeviceDialog = true;
- state.departmentList = department;
- setTimeout(() => {
- productionDeviceFormRef.value.clearValidate()
- })
- if(type === '新增'){
- state.title = '新增生产装置';
- state.productionDeviceForm = {
- produceDeviceName: '',
- depId: null,
- riskLevel: null,
- location: '',
- };
- }else{
- state.title = '修改生产装置';
- state.productionDeviceForm = JSON.parse(JSON.stringify(value));
- }
- };
-
- //新增修改提交
- const submitProductionDevice = async () => {
- productionDeviceFormRef.value.validate( async (valid: Boolean) => {
- if(valid){
- if(state.title === '新增生产装置'){
- let res = await productionDeviceApi().addProductionDevice(state.productionDeviceForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'生产装置新增成功',
- duration:2000
- });
- state.isShowProductionDeviceDialog = false;
- context.emit('refreshProductionDevice');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }else{
- let res = await productionDeviceApi().modProductionDevice(state.productionDeviceForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'生产装置修改成功',
- duration:2000
+ //新增修改提交
+ const submitProductionDevice = async () => {
+ productionDeviceFormRef.value.validate(async (valid: Boolean) => {
+ if (valid) {
+ if (state.title === '新增生产装置') {
+ let res = await productionDeviceApi().addProductionDevice(state.productionDeviceForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '生产装置新增成功',
+ duration: 2000
});
state.isShowProductionDeviceDialog = false;
context.emit('refreshProductionDevice');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
}
- }else{
- ElMessage({
- type:'warning',
- message:'请完善基本信息',
- });
+ } else {
+ let res = await productionDeviceApi().modProductionDevice(state.productionDeviceForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '生产装置修改成功',
+ duration: 2000
+ });
+ state.isShowProductionDeviceDialog = false;
+ context.emit('refreshProductionDevice');
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
}
- })
-
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: '请完善基本信息'
+ });
+ }
+ });
+ };
- return{
- ...toRefs(state),
- productionDeviceFormRef,
- submitProductionDevice,
- openProductionDeviceDialog,
- };
- }
+ return {
+ ...toRefs(state),
+ productionDeviceFormRef,
+ submitProductionDevice,
+ openProductionDeviceDialog
+ };
}
+};
</script>
<style scoped>
-.input-length{
- width:85%;
+.input-length {
+ width: 85%;
}
</style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue b/src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue
index 63d591b..c240e35 100644
--- a/src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue
@@ -2,36 +2,32 @@
<div class="system-role-container">
<el-card shadow="hover">
<div class="system-user-search mb15">
- <div class="basic-search">
+ <div class="basic-line">
<span>风险等级:</span>
- <el-select v-model="productionDeviceData.params.riskLevel" clearable filterable class="ml10" placeholder="请选择风险等级">
- <el-option
- v-for="item in levelList"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- ></el-option>
+ <el-select v-model="productionDeviceData.params.riskLevel" clearable filterable class="input-box" placeholder="请选择风险等级">
+ <el-option v-for="item in levelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
- <div class="basic-search">
+ <div class="basic-line">
<span>部门:</span>
<el-cascader
- :options="departmentList"
- :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
- placeholder="请选择部门"
- clearable
- filterable
- v-model="productionDeviceData.params.depId"
+ :options="departmentList"
+ :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
+ placeholder="请选择部门"
+ clearable
+ filterable
+ class="input-box"
+ v-model="productionDeviceData.params.depId"
>
</el-cascader>
</div>
- <el-button size="default" type="primary" class="ml10" @click="handleSearch">
+ <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch">
<el-icon>
<ele-Search />
</el-icon>
查询
</el-button>
- <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增','')">
+ <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">
<el-icon>
<ele-FolderAdd />
</el-icon>
@@ -44,191 +40,187 @@
<el-table-column prop="depName" label="所属部门" show-overflow-tooltip></el-table-column>
<el-table-column prop="riskLevel" label="风险等级" show-overflow-tooltip></el-table-column>
<el-table-column prop="location" label="区域位置" show-overflow-tooltip></el-table-column>
- <el-table-column prop="status" label="状态" show-overflow-tooltip>
-
- </el-table-column>
+ <el-table-column prop="status" label="状态" show-overflow-tooltip> </el-table-column>
<el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="创建时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="lastEditByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="最后修改时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="150">
<template #default="scope">
- <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button>
+ <el-button size="small" text type="primary" @click="onOpenDialogRef('修改', scope.row)">修改</el-button>
<el-button size="small" text type="danger" @click="onDelProductionDevice(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
- @size-change="onHandleSizeChange"
- @current-change="onHandleCurrentChange"
- class="mt15"
- :pager-count="5"
- :page-sizes="[10, 20, 30]"
- v-model:current-page="productionDeviceData.params.pageIndex"
- background
- v-model:page-size="productionDeviceData.params.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="productionDeviceData.total"
- >
- </el-pagination>
+ @size-change="onHandleSizeChange"
+ @current-change="onHandleCurrentChange"
+ class="mt15"
+ :pager-count="5"
+ :page-sizes="[10, 20, 30]"
+ v-model:current-page="productionDeviceData.params.pageIndex"
+ background
+ v-model:page-size="productionDeviceData.params.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="productionDeviceData.total"
+ >
+ </el-pagination>
</el-card>
- <productionDeviceDialog ref="productionDeviceDialogRef" @refreshProductionDevice ="initProductionDeviceTableData"/>
+ <productionDeviceDialog ref="productionDeviceDialogRef" @refreshProductionDevice="initProductionDeviceTableData" />
</div>
</template>
<script lang="ts">
- import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
- import { ElMessageBox, ElMessage } from 'element-plus';
- import productionDeviceDialog from './components/productionDeviceDialog.vue';
- import {productionDeviceApi} from "/@/api/doublePreventSystem/productionDevice/index.ts";
- import { departmentApi } from '/@/api/department';
+import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import productionDeviceDialog from './components/productionDeviceDialog.vue';
+import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts';
+import { departmentApi } from '/@/api/department';
- // 定义接口来定义对象的类型
- interface TableData {
- roleName: string;
- roleSign: string;
- describe: string;
- sort: number;
- status: boolean;
- createTime: string;
- }
- interface TableDataState {
- productionDeviceData: {
- data: Array<TableData>;
- total: number;
- loading: boolean;
- params: {
- pageIndex: number;
- pageSize: number;
- riskLevel: number | null;
- status: number;
- depId: number | null;
- location: string | null;
- produceDeviceName: string | null;
- };
+// 定义接口来定义对象的类型
+interface TableData {
+ roleName: string;
+ roleSign: string;
+ describe: string;
+ sort: number;
+ status: boolean;
+ createTime: string;
+}
+interface TableDataState {
+ productionDeviceData: {
+ data: Array<TableData>;
+ total: number;
+ loading: boolean;
+ params: {
+ pageIndex: number;
+ pageSize: number;
+ riskLevel: number | null;
+ status: number;
+ depId: number | null;
+ location: string | null;
+ produceDeviceName: string | null;
};
- departmentList:Array<DepartmentState>;
- levelList:Array<levelListState>;
- }
- interface levelListState {
+ };
+ departmentList: Array<DepartmentState>;
+ levelList: Array<levelListState>;
+}
+interface levelListState {}
+interface DepartmentState {}
- }
- interface DepartmentState {
-
- }
-
- export default defineComponent({
- name: 'productionDevice',
- components: { productionDeviceDialog },
- setup() {
- const productionDeviceDialogRef = ref();
- const state = reactive<TableDataState>({
- productionDeviceData: {
- data: [],
- total: 0,
- loading: false,
- params: {
- pageIndex: 1,
- pageSize: 10,
- riskLevel: null,
- status: 1,
- depId: null,
- location: null,
- produceDeviceName: null
- },
- },
- departmentList:[],
- levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},]
- });
- // 初始化表格数据
- const initProductionDeviceTableData = async () => {
- let res = await productionDeviceApi().getProductionDeviceList(state.productionDeviceData.params)
- if(res.data.code === '200'){
- state.productionDeviceData.data = res.data.data;
- state.productionDeviceData.total = res.data.count;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
+export default defineComponent({
+ name: 'productionDevice',
+ components: { productionDeviceDialog },
+ setup() {
+ const productionDeviceDialogRef = ref();
+ const state = reactive<TableDataState>({
+ productionDeviceData: {
+ data: [],
+ total: 0,
+ loading: false,
+ params: {
+ pageIndex: 1,
+ pageSize: 10,
+ riskLevel: null,
+ status: 1,
+ depId: null,
+ location: null,
+ produceDeviceName: null
}
- };
-
- const getDepartmentData = async () => {
- let res = await departmentApi().getDepartmentList()
- if(res.data.code === '200'){
- state.departmentList = res.data.data
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- }
-
- // 打开生产装置弹窗
- const onOpenDialogRef = (type: string, value: any) => {
- productionDeviceDialogRef.value.openProductionDeviceDialog(type, value, state.departmentList);
- };
- // 删除角色
- const onDelProductionDevice = (row: any) => {
- ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.produceDeviceName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
+ },
+ departmentList: [],
+ levelList: [
+ { id: 1, name: '低风险' },
+ { id: 2, name: '一般风险' },
+ { id: 3, name: '较大风险' },
+ { id: 4, name: '重大风险' }
+ ]
+ });
+ // 初始化表格数据
+ const initProductionDeviceTableData = async () => {
+ let res = await productionDeviceApi().getProductionDeviceList(state.productionDeviceData.params);
+ if (res.data.code === '200') {
+ state.productionDeviceData.data = res.data.data;
+ state.productionDeviceData.total = res.data.count;
+ } else {
+ ElMessage({
type: 'warning',
- }).then(async () => {
- let res = await productionDeviceApi().deleteProductionDevice({id:row.id})
- if(res.data.code ==='200'){
- ElMessage({
- type:'success',
- duration:2000,
- message:'删除成功'
- })
- await initProductionDeviceTableData()
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- }).catch(() => {});
- };
- const handleSearch = () => {
- initProductionDeviceTableData()
+ message: res.data.msg
+ });
}
- // 分页改变
- const onHandleSizeChange = (val: number) => {
- state.productionDeviceData.params.pageSize = val;
- initProductionDeviceTableData()
- };
- // 分页改变
- const onHandleCurrentChange = (val: number) => {
- state.productionDeviceData.params.pageIndex = val;
- initProductionDeviceTableData()
- };
- // 页面加载时
- onMounted(() => {
- initProductionDeviceTableData();
- getDepartmentData();
- });
- return {
- handleSearch,
- onOpenDialogRef,
- onHandleSizeChange,
- onDelProductionDevice,
- onHandleCurrentChange,
- productionDeviceDialog,
- productionDeviceDialogRef,
- initProductionDeviceTableData,
- ...toRefs(state),
- };
- },
- });
+ };
+
+ const getDepartmentData = async () => {
+ let res = await departmentApi().getDepartmentList();
+ if (res.data.code === '200') {
+ state.departmentList = res.data.data;
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
+
+ // 打开生产装置弹窗
+ const onOpenDialogRef = (type: string, value: any) => {
+ productionDeviceDialogRef.value.openProductionDeviceDialog(type, value, state.departmentList);
+ };
+ // 删除角色
+ const onDelProductionDevice = (row: any) => {
+ ElMessageBox.confirm(`此操作将永久删除该条生产装置:“${row.produceDeviceName}”,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async () => {
+ let res = await productionDeviceApi().deleteProductionDevice({ id: row.id });
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ duration: 2000,
+ message: '删除成功'
+ });
+ await initProductionDeviceTableData();
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch(() => {});
+ };
+ const handleSearch = () => {
+ initProductionDeviceTableData();
+ };
+ // 分页改变
+ const onHandleSizeChange = (val: number) => {
+ state.productionDeviceData.params.pageSize = val;
+ initProductionDeviceTableData();
+ };
+ // 分页改变
+ const onHandleCurrentChange = (val: number) => {
+ state.productionDeviceData.params.pageIndex = val;
+ initProductionDeviceTableData();
+ };
+ // 页面加载时
+ onMounted(() => {
+ initProductionDeviceTableData();
+ getDepartmentData();
+ });
+ return {
+ handleSearch,
+ onOpenDialogRef,
+ onHandleSizeChange,
+ onDelProductionDevice,
+ onHandleCurrentChange,
+ productionDeviceDialog,
+ productionDeviceDialogRef,
+ initProductionDeviceTableData,
+ ...toRefs(state)
+ };
+ }
+});
</script>
-<style scoped>
-.basic-search{
- display:inline-block;
- padding-left: 10px;
-}
-</style>
+<style scoped></style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue b/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue
index 466935b..71b95a8 100644
--- a/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue
@@ -1,198 +1,264 @@
<template>
<div class="system-add-menu-container">
<el-dialog :title="title" v-model="isRiskControlMeasureDialog" width="600px">
- <el-form :model="riskControlMeasureForm" :rules="riskControlMeasureFormRules" ref="riskControlMeasureFormRef" size="default" label-width="160px">
+ <el-form
+ :model="riskControlMeasureForm"
+ :rules="riskControlMeasureFormRules"
+ ref="riskControlMeasureFormRef"
+ size="default"
+ label-width="160px"
+ >
<el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="安全风险分析对象编码" prop="riskCode">
- <el-input class="input-length" v-model="riskControlMeasureForm.riskCode" placeholder="请输入安全风险分析对象编码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="安全风险分析单元名称" prop="riskUnitName">
- <el-input class="input-length" v-model="riskControlMeasureForm.riskUnitName" placeholder="请输入安全风险分析单元名称"></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="生产装置名称" prop="produceDeviceId">
- <el-input class="input-length" v-model="riskControlMeasureForm.produceDeviceId" placeholder="请输入生产装置名称" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="责任部门" prop="liableDepId">
- <el-cascader
- :options="departmentList"
- :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
- placeholder="请选择部门"
- clearable
- filterable
- style="width:85%"
- v-model="riskControlMeasureForm.liableDepId"
- >
- </el-cascader>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="责任人" prop="liablePersonId">
- <el-select class="input-length" v-model="riskControlMeasureForm.liablePersonId" placeholder="请选择风险等级" clearable filterable>
+ <el-form-item label="风险事件名称" prop="riskEventId">
+ <el-select class="input-length" v-model="riskControlMeasureForm.riskEventId" placeholder="请选择风险事件" clearable>
<el-option
- v-for="item in levelList"
- :key="item.id"
- :label="item.name"
- :value="item.id"
+ v-for="item in allSafetyRiskEventData"
+ :key="item.id"
+ :label="item.riskEventName"
+ :value="item.id"
></el-option>
</el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="风险措施编码" prop="controlMeasureCode">
+ <el-input
+ class="input-length"
+ v-model="riskControlMeasureForm.controlMeasureCode"
+ placeholder="请输入风险措施编码"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="管控方式" prop="controlType">
+ <el-select class="input-length" v-model="riskControlMeasureForm.controlType" placeholder="请选择管控方式" clearable>
+ <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="管控内容" prop="checkContent">
+ <el-input
+ class="input-length"
+ type="textarea"
+ :rows="3"
+ v-model="riskControlMeasureForm.checkContent"
+ placeholder="请输入管控内容"
+ clearable
+ >
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="管控措施分类1" prop="classify1">
+ <el-select
+ class="input-length"
+ v-model="riskControlMeasureForm.classify1"
+ @change="changeClassifyTwoList"
+ placeholder="请选择管控方式"
+ clearable
+ >
+ <el-option v-for="item in classifyOneList" :key="item.id" :label="item.riskMeasureName" :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="管控措施分类2" prop="classify2">
+ <el-select class="input-length" v-model="riskControlMeasureForm.classify2" placeholder="请选择管控方式" clearable>
+ <el-option v-for="item in classifyTwoList" :key="item.id" :label="item.riskMeasureName" :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="管控措施分类3" prop="classify3">
+ <el-input class="input-length" v-model="riskControlMeasureForm.classify3" placeholder="请选择管控方式" clearable>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="措施说明" prop="measureDesc">
+ <el-input
+ class="input-length"
+ type="textarea"
+ :rows="3"
+ v-model="riskControlMeasureForm.measureDesc"
+ placeholder="请输入措施说明"
+ clearable
+ >
+ </el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
- <span class="dialog-footer">
- <el-button @click="isRiskControlMeasureDialog = !isRiskControlMeasureDialog" size="default">取 消</el-button>
- <el-button type="primary" @click="submitRiskControlMeasureDialog" size="default">确 实</el-button>
- </span>
+ <span class="dialog-footer">
+ <el-button @click="isRiskControlMeasureDialog = !isRiskControlMeasureDialog" size="default">取 消</el-button>
+ <el-button type="primary" @click="submitRiskControlMeasureDialog" v-throttle size="default">确 实</el-button>
+ </span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
- interface stateType{
- isRiskControlMeasureDialog:Boolean,
- riskControlMeasureForm:{
- riskCode: string | null,
- riskUnitName: string | null,
- liablePersonId: number | null,
- liableDepId: number | null,
- produceDeviceId: number | null,
- },
- title: string,
- departmentList: [],
- levelList: Array<levelListState>,
- riskControlMeasureFormRules:{}
- }
- interface levelListState {
+interface stateType {
+ isRiskControlMeasureDialog: Boolean;
+ riskControlMeasureForm: {
+ riskEventId: number | null;
+ controlMeasureCode: string | null;
+ controlType: number | null;
+ checkContent: string | null;
+ classify1: number | null;
+ classify2: number | null;
+ classify3: string | null;
+ measureDesc: string | null;
+ };
+ title: string;
+ controlTypeList: Array<controlTypeListType>;
+ classifyOneList: [];
+ classifyTwoList: Array<classifyTwoType>;
+ classifyTwoListAll: [];
+ allSafetyRiskEventData: [];
+ riskControlMeasureFormRules: {};
+}
+interface classifyTwoType {
+ id: number;
+ riskMeasureName: string;
+}
+interface controlTypeListType {}
- }
- import { reactive, toRefs, ref} from 'vue'
- import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure';
- import { ElMessage } from 'element-plus';
- export default {
- name: "riskControlMeasureDialog",
- setup(props, context) {
- const riskControlMeasureFormRef = ref();
- const state = reactive<stateType>({
- title:'',
- departmentList: [],
- isRiskControlMeasureDialog: false,
- levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},],
- riskControlMeasureForm: {
- riskCode: null,
- riskUnitName: null,
- liablePersonId: null,
- liableDepId: null,
- produceDeviceId: null,
- },
- riskControlMeasureFormRules:{
- riskCode: [
- { required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' },
- ],
- riskUnitName: [
- { required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' },
- ],
- liableDepId: [
- { required: true, message: '请选择责任部门', trigger: 'change' },
- ],
- liablePersonId: [
- { required: true, message: '请选择责任人', trigger: 'change' },
- ],
- produceDeviceId: [
- { required: true, message: '请选择生产装置', trigger: 'change' },
- ],
- }
+import { reactive, toRefs, ref } from 'vue';
+import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure';
+import { ElMessage } from 'element-plus';
+export default {
+ name: 'riskControlMeasureDialog',
+ setup(props: any, context: any) {
+ const riskControlMeasureFormRef = ref();
+ const state = reactive<stateType>({
+ title: '',
+ controlTypeList: [
+ { id: 1, name: '自动化监控' },
+ { id: 2, name: '隐患排查' }
+ ],
+ classifyOneList: [],
+ classifyTwoList: [],
+ classifyTwoListAll: [],
+ allSafetyRiskEventData: [],
+ isRiskControlMeasureDialog: false,
+ riskControlMeasureForm: {
+ riskEventId: null,
+ controlMeasureCode: null,
+ controlType: null,
+ checkContent: null,
+ classify1: null,
+ classify2: null,
+ classify3: null,
+ measureDesc: null
+ },
+ riskControlMeasureFormRules: {
+ riskCode: [{ required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' }],
+ riskUnitName: [{ required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' }],
+ liableDepId: [{ required: true, message: '请选择责任部门', trigger: 'change' }],
+ liablePersonId: [{ required: true, message: '请选择责任人', trigger: 'change' }],
+ produceDeviceId: [{ required: true, message: '请选择生产装置', trigger: 'change' }]
+ }
+ });
+ //打开模态框
+ const openSafetyRiskEventDialog = (type: string, value: object, allSafetyRiskEventData: [], classifyOneList: [], classifyTwoList: []) => {
+ state.isRiskControlMeasureDialog = true;
+ state.allSafetyRiskEventData = JSON.parse(JSON.stringify(allSafetyRiskEventData));
+ state.classifyOneList = JSON.parse(JSON.stringify(classifyOneList));
+ state.classifyTwoListAll = JSON.parse(JSON.stringify(classifyTwoList));
+ state.classifyTwoList = [];
+ setTimeout(() => {
+ riskControlMeasureFormRef.value.clearValidate();
});
+ if (type === '新增') {
+ state.title = '新增风险管控措施';
+ state.riskControlMeasureForm = {
+ riskEventId: null,
+ controlMeasureCode: null,
+ controlType: null,
+ checkContent: null,
+ classify1: null,
+ classify2: null,
+ classify3: null,
+ measureDesc: null
+ };
+ } else {
+ state.title = '修改风险管控措施';
+ state.riskControlMeasureForm = JSON.parse(JSON.stringify(value));
+ }
+ };
- //打开模态框
- const openSafetyRiskEventDialog = (type: string, value: object, department: []) => {
- state.isRiskControlMeasureDialog = true;
- state.departmentList = department;
- setTimeout(() => {
- riskControlMeasureFormRef.value.clearValidate()
- })
- if(type === '新增'){
- state.title = '新增生产装置';
- state.riskControlMeasureForm = {
- riskCode: null,
- riskUnitName: null,
- liablePersonId: null,
- liableDepId: null,
- produceDeviceId: null,
- };
- }else{
- state.title = '修改生产装置';
- state.riskControlMeasureForm = JSON.parse(JSON.stringify(value));
- }
- };
+ const changeClassifyTwoList = () => {
+ debugger;
+ state.riskControlMeasureForm.classify2 = null;
+ state.classifyTwoList = [];
+ state.classifyTwoList = state.classifyTwoListAll.filter((item: any) => item.parentId === state.riskControlMeasureForm.classify1);
+ };
- //新增修改提交
- const submitRiskControlMeasureDialog = async () => {
- riskControlMeasureFormRef.value.validate( async (valid: Boolean) => {
- if(valid){
- if(state.title === '新增生产装置'){
- let res = await riskControlMeasureApi().addRiskControlMeasure(state.riskControlMeasureForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'生产装置新增成功',
- duration:2000
- });
- state.isRiskControlMeasureDialog = false;
- context.emit('refreshRiskControlMeasure');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }else{
- let res = await riskControlMeasureApi().modRiskControlMeasure(state.riskControlMeasureForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'生产装置修改成功',
- duration:2000
+ //新增修改提交
+ const submitRiskControlMeasureDialog = async () => {
+ riskControlMeasureFormRef.value.validate(async (valid: Boolean) => {
+ if (valid) {
+ if (state.title === '新增风险管控措施') {
+ let res = await riskControlMeasureApi().addRiskControlMeasure(state.riskControlMeasureForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '风险管控措施新增成功',
+ duration: 2000
});
state.isRiskControlMeasureDialog = false;
context.emit('refreshRiskControlMeasure');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
}
- }else{
- ElMessage({
- type:'warning',
- message:'请完善基本信息',
- });
+ } else {
+ let res = await riskControlMeasureApi().modRiskControlMeasure(state.riskControlMeasureForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '风险管控措施修改成功',
+ duration: 2000
+ });
+ state.isRiskControlMeasureDialog = false;
+ context.emit('refreshRiskControlMeasure');
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
}
- })
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: '请完善基本信息'
+ });
+ }
+ });
+ };
- return{
- ...toRefs(state),
- riskControlMeasureFormRef,
- submitRiskControlMeasureDialog,
- openSafetyRiskEventDialog,
- };
- }
+ return {
+ ...toRefs(state),
+ riskControlMeasureFormRef,
+ changeClassifyTwoList,
+ submitRiskControlMeasureDialog,
+ openSafetyRiskEventDialog
+ };
}
+};
</script>
<style scoped>
-.input-length{
- width:85%;
+.input-length {
+ width: 85%;
}
</style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue b/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue
index 080b81c..6d79aa1 100644
--- a/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue
@@ -2,235 +2,270 @@
<div class="system-role-container">
<el-card shadow="hover">
<div class="system-user-search mb15">
- <div class="basic-search">
- <span>风险等级:</span>
- <el-select v-model="riskControlMeasureData.params.riskLevel" clearable filterable class="ml10" placeholder="请选择风险等级">
- <el-option
- v-for="item in levelList"
- :key="item.id"
- :label="item.name"
- :value="item.id"
- ></el-option>
+ <div class="basic-line">
+ <span>管控方式:</span>
+ <el-select class="input-box" v-model="riskControlMeasureData.params.controlType" placeholder="管控方式" clearable>
+ <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
- <div class="basic-search">
- <span>部门:</span>
- <el-cascader
- :options="departmentList"
- :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
- placeholder="请选择部门"
- clearable
- filterable
- v-model="riskControlMeasureData.params.depId"
- >
- </el-cascader>
+ <div class="basic-line">
+ <span>安全风险事件:</span>
+ <el-select class="input-box" v-model="riskControlMeasureData.params.riskEventId" placeholder="安全风险事件" clearable>
+ <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></el-option>
+ </el-select>
</div>
- <el-button size="default" type="primary" class="ml10" @click="handleSearch">
+ <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch">
<el-icon>
<ele-Search />
</el-icon>
查询
</el-button>
- <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增','')">
+ <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">
<el-icon>
<ele-FolderAdd />
</el-icon>
- 新增单元
+ 新增措施
</el-button>
</div>
<el-table :data="riskControlMeasureData.data" style="width: 100%">
<el-table-column type="index" label="序号" width="60" />
- <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column>
- <el-table-column prop="riskUnitName" label="安全风险分析单元名称" width="180" show-overflow-tooltip></el-table-column>
- <el-table-column prop="riskCode" label="安全风险分析对象编码" width="180" show-overflow-tooltip></el-table-column>
- <el-table-column prop="location" label="责任部门" show-overflow-tooltip></el-table-column>
- <el-table-column prop="status" label="责任人" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="riskEventName" label="安全风险事件名称" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="controlMeasureCode" label="风控措施编码" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="controlType" label="管控方式" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="classify1" label="管控措施分类1" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="classify2" label="管控措施分类2" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="classify3" label="管控措施分类3" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="measureDesc" label="措施说明" show-overflow-tooltip></el-table-column>
<el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="创建时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="lastEditByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="最后修改时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip>
+ <template #default="scope">
+ <span>{{ dateFormat('YYYY-mm-dd HH:MM:SS', '2022-07-07T08:00:00') }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="150">
<template #default="scope">
- <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button>
+ <el-button size="small" text type="primary" @click="onOpenDialogRef('修改', scope.row)">修改</el-button>
<el-button size="small" text type="danger" @click="onDelRiskControlMeasure(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
- @size-change="onHandleSizeChange"
- @current-change="onHandleCurrentChange"
- class="mt15"
- :pager-count="5"
- :page-sizes="[10, 20, 30]"
- v-model:current-page="riskControlMeasureData.params.pageIndex"
- background
- v-model:page-size="riskControlMeasureData.params.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="riskControlMeasureData.total"
- >
- </el-pagination>
+ @size-change="onHandleSizeChange"
+ @current-change="onHandleCurrentChange"
+ class="mt15"
+ :pager-count="5"
+ :page-sizes="[10, 20, 30]"
+ v-model:current-page="riskControlMeasureData.params.pageIndex"
+ background
+ v-model:page-size="riskControlMeasureData.params.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="riskControlMeasureData.total"
+ >
+ </el-pagination>
</el-card>
- <riskControlMeasureDialog ref="riskControlMeasureDialogRef" @refreshRiskControlMeasure ="initRiskControlMeasureData"/>
+ <riskControlMeasureDialog ref="riskControlMeasureDialogRef" @refreshRiskControlMeasure="initRiskControlMeasureData" />
</div>
</template>
<script lang="ts">
- import { toRefs, reactive, onMounted, ref } from 'vue';
- import { ElMessageBox, ElMessage } from 'element-plus';
- import riskControlMeasureDialog from './components/riskControlMeasureDialog.vue';
- import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts';
- import { departmentApi } from '/@/api/department';
+import { toRefs, reactive, onMounted, ref } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import riskControlMeasureDialog from './components/riskControlMeasureDialog.vue';
+import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts';
+import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent';
- // 定义接口来定义对象的类型
- interface TableData {
- roleName: string;
- roleSign: string;
- describe: string;
- sort: number;
- status: boolean;
- createTime: string;
- }
- interface TableDataState {
- riskControlMeasureData: {
- data: Array<TableData>;
- total: number;
- loading: boolean;
- params: {
- pageIndex: number;
- pageSize: number;
- riskUnitName: string | null;
- liableDep: number | null;
- liablePerson: number | null;
- };
+// 定义接口来定义对象的类型
+interface TableData {
+ roleName: string;
+ roleSign: string;
+ describe: string;
+ sort: number;
+ status: boolean;
+ createTime: string;
+}
+interface TableDataState {
+ riskControlMeasureData: {
+ data: Array<TableData>;
+ total: number;
+ loading: boolean;
+ params: {
+ pageIndex: number;
+ pageSize: number;
+ controlType: number | null;
+ riskEventId: number | null;
};
- departmentList:Array<DepartmentState>;
- levelList:Array<levelListState>;
- }
- interface levelListState {
+ };
+ controlTypeList: Array<controlTypeType>;
+ classifyOneList: Array<classifyOneType>;
+ classifyTwoList: Array<classifyTwoType>;
+ allSafetyRiskEventData: Array<SafetyRiskEventDataState>;
+}
+interface controlTypeType {}
+interface classifyOneType {}
+interface classifyTwoType {}
+interface SafetyRiskEventDataState {}
- }
- interface DepartmentState {
-
- }
-
- export default ({
- name: 'riskControlMeasure',
- components: { riskControlMeasureDialog },
- setup() {
- const riskControlMeasureDialogRef = ref();
- const state = reactive<TableDataState>({
- riskControlMeasureData: {
- data: [],
- total: 0,
- loading: false,
- params: {
- pageIndex: 1,
- pageSize: 10,
- riskUnitName: null,
- liableDep: null,
- liablePerson: null,
- },
- },
- departmentList:[],
- levelList:[{id:1,name:'低风险'},{id:2,name:'一般风险'},{id:3,name:'较大风险'},{id:4,name:'重大风险'},]
- });
-
- // 初始化表格数据
- const initRiskControlMeasureData = async () => {
- let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params)
- if(res.data.code === '200'){
- state.riskControlMeasureData.data = res.data.data;
- state.riskControlMeasureData.total = res.data.count;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
+export default {
+ name: 'riskControlMeasure',
+ components: { riskControlMeasureDialog },
+ setup() {
+ const riskControlMeasureDialogRef = ref();
+ const state = reactive<TableDataState>({
+ riskControlMeasureData: {
+ data: [],
+ total: 0,
+ loading: false,
+ params: {
+ pageIndex: 1,
+ pageSize: 10,
+ controlType: null,
+ riskEventId: null
}
- };
+ },
+ controlTypeList: [
+ { id: 1, name: '自动化监控' },
+ { id: 2, name: '隐患排查' }
+ ],
+ classifyOneList: [],
+ classifyTwoList: [],
+ allSafetyRiskEventData: []
+ });
- //获取部门列表
- const getDepartmentData = async () => {
- let res = await departmentApi().getDepartmentList()
- if(res.data.code === '200'){
- state.departmentList = res.data.data
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- }
-
- // 打开生产装置弹窗
- const onOpenDialogRef = (type: string, value: any) => {
- riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(type, value, state.departmentList);
- };
-
- // 删除角色
- const onDelRiskControlMeasure = (row: any) => {
- ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.produceDeviceName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
+ // 初始化表格数据
+ const initRiskControlMeasureData = async () => {
+ let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params);
+ if (res.data.code === '200') {
+ state.riskControlMeasureData.data = res.data.data;
+ state.riskControlMeasureData.total = res.data.count;
+ } else {
+ ElMessage({
type: 'warning',
- }).then(async () => {
- let res = await riskControlMeasureApi().deleteRiskControlMeasure({id:row.id})
- if(res.data.code ==='200'){
- ElMessage({
- type:'success',
- duration:2000,
- message:'删除成功'
- })
- await initRiskControlMeasureData()
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- }).catch(() => {});
- };
-
- const handleSearch = () => {
- initRiskControlMeasureData()
+ message: res.data.msg
+ });
}
+ };
- // 分页改变
- const onHandleSizeChange = (val: number) => {
- state.riskControlMeasureData.params.pageSize = val;
- initRiskControlMeasureData()
- };
+ const dateFormat = (fmt: any, date: any) => {
+ date = new Date(date);
+ fmt =
+ date.getFullYear() +
+ '-' +
+ (date.getMonth() + 1) +
+ '-' +
+ date.getDate() +
+ ' ' +
+ date.getHours().toString() +
+ ':' +
+ (date.getMinutes().toString() === '0' ? '00' : date.getMinutes().toString()) +
+ ':' +
+ (date.getSeconds().toString() === '0' ? '00' : date.getMinutes().toString());
+ return fmt;
+ };
- // 分页改变
- const onHandleCurrentChange = (val: number) => {
- state.riskControlMeasureData.params.pageIndex = val;
- initRiskControlMeasureData()
- };
+ //获取安全风险事件
+ const getAllSafetyRiskEvent = async () => {
+ let res = await safetyRiskEventApi().getAllSafetyRiskEventList();
+ if (res.data.code === '200') {
+ state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data));
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
- // 页面加载时
- onMounted(() => {
- initRiskControlMeasureData();
- getDepartmentData();
- });
+ //获取管控措施分类
+ const getClassify = async () => {
+ let res = await riskControlMeasureApi().getClassifyData();
+ if (res.data.code === '200') {
+ state.classifyOneList = res.data.data.filter((item: any) => item.parentId === null);
+ state.classifyTwoList = res.data.data.filter((item: any) => item.parentId !== null);
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
- return {
- handleSearch,
- onOpenDialogRef,
- onHandleSizeChange,
- onDelRiskControlMeasure,
- onHandleCurrentChange,
- riskControlMeasureDialog,
- riskControlMeasureDialogRef,
- initRiskControlMeasureData,
- ...toRefs(state),
- };
- },
- });
+ // 打开生产装置弹窗
+ const onOpenDialogRef = (type: string, value: any) => {
+ riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(
+ type,
+ value,
+ state.allSafetyRiskEventData,
+ state.classifyOneList,
+ state.classifyTwoList
+ );
+ };
+
+ // 删除角色
+ const onDelRiskControlMeasure = (row: any) => {
+ ElMessageBox.confirm(`此操作将永久删除该条风险管控措施:“${row.produceDeviceName}”,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async () => {
+ let res = await riskControlMeasureApi().deleteRiskControlMeasure({ id: row.id });
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ duration: 2000,
+ message: '删除成功'
+ });
+ await initRiskControlMeasureData();
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch(() => {});
+ };
+
+ const handleSearch = () => {
+ initRiskControlMeasureData();
+ };
+
+ // 分页改变
+ const onHandleSizeChange = (val: number) => {
+ state.riskControlMeasureData.params.pageSize = val;
+ initRiskControlMeasureData();
+ };
+
+ // 分页改变
+ const onHandleCurrentChange = (val: number) => {
+ state.riskControlMeasureData.params.pageIndex = val;
+ initRiskControlMeasureData();
+ };
+
+ // 页面加载时
+ onMounted(() => {
+ initRiskControlMeasureData();
+ getAllSafetyRiskEvent();
+ getClassify();
+ });
+
+ return {
+ dateFormat,
+ handleSearch,
+ onOpenDialogRef,
+ onHandleSizeChange,
+ onDelRiskControlMeasure,
+ onHandleCurrentChange,
+ riskControlMeasureDialog,
+ riskControlMeasureDialogRef,
+ initRiskControlMeasureData,
+ ...toRefs(state)
+ };
+ }
+};
</script>
-<style scoped>
-.basic-search{
- display:inline-block;
- padding-left: 10px;
-}
-</style>
+<style scoped></style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue b/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue
index 5117a2e..117e9b5 100644
--- a/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue
@@ -1,26 +1,45 @@
<template>
<div class="system-add-menu-container">
<el-dialog :title="title" v-model="isSafetyRiskAnalyseUnitDialog" width="600px">
- <el-form :model="safetyRiskAnalyseUnitForm" :rules="safetyRiskAnalyseUnitFormRules" ref="safetyRiskAnalyseUnitFormRef" size="default" label-width="180px">
+ <el-form
+ :model="safetyRiskAnalyseUnitForm"
+ :rules="safetyRiskAnalyseUnitFormRules"
+ ref="safetyRiskAnalyseUnitFormRef"
+ size="default"
+ label-width="180px"
+ >
<el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="安全风险分析对象编码" prop="riskCode">
- <el-input class="input-length" v-model="safetyRiskAnalyseUnitForm.riskCode" placeholder="请输入安全风险分析对象编码"></el-input>
+ <el-input
+ class="input-length"
+ v-model="safetyRiskAnalyseUnitForm.riskCode"
+ placeholder="请输入安全风险分析对象编码"
+ ></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="安全风险分析单元名称" prop="riskUnitName">
- <el-input class="input-length" v-model="safetyRiskAnalyseUnitForm.riskUnitName" placeholder="请输入安全风险分析单元名称"></el-input>
+ <el-input
+ class="input-length"
+ v-model="safetyRiskAnalyseUnitForm.riskUnitName"
+ placeholder="请输入安全风险分析单元名称"
+ ></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="生产装置名称" prop="produceDeviceId">
- <el-select class="input-length" v-model="safetyRiskAnalyseUnitForm.produceDeviceId" placeholder="请输入生产装置名称" clearable>
+ <el-select
+ class="input-length"
+ v-model="safetyRiskAnalyseUnitForm.produceDeviceId"
+ placeholder="请输入生产装置名称"
+ clearable
+ >
<el-option
- v-for="item in allProduceDeviceData"
- :key="item.id"
- :label="item.produceDeviceName"
- :value="item.id"
+ v-for="item in allProduceDeviceData"
+ :key="item.id"
+ :label="item.produceDeviceName"
+ :value="item.id"
></el-option>
</el-select>
</el-form-item>
@@ -28,13 +47,13 @@
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="责任部门" prop="liableDepId">
<el-cascader
- @change="achiveUserList"
+ @change="achieveUserList"
:options="departmentList"
:props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
placeholder="请选择部门"
clearable
filterable
- style="width:85%"
+ style="width: 85%"
v-model="safetyRiskAnalyseUnitForm.liableDepId"
>
</el-cascader>
@@ -42,190 +61,177 @@
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="责任人" prop="liablePersonId">
- <el-select class="input-length" v-model="safetyRiskAnalyseUnitForm.liablePersonId" placeholder="请选择责任人" clearable filterable>
- <el-option
- v-for="item in userList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- ></el-option>
+ <el-select
+ class="input-length"
+ v-model="safetyRiskAnalyseUnitForm.liablePersonId"
+ placeholder="请选择责任人"
+ clearable
+ filterable
+ >
+ <el-option v-for="item in userList" :key="item.uid" :label="item.realName" :value="item.uid"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
- <span class="dialog-footer">
- <el-button @click="isSafetyRiskAnalyseUnitDialog = !isSafetyRiskAnalyseUnitDialog" size="default">取 消</el-button>
- <el-button type="primary" @click="submitSafetyRiskAnalyseUnitDialog" size="default">确 实</el-button>
- </span>
+ <span class="dialog-footer">
+ <el-button @click="isSafetyRiskAnalyseUnitDialog = !isSafetyRiskAnalyseUnitDialog" size="default">取 消</el-button>
+ <el-button type="primary" @click="submitSafetyRiskAnalyseUnitDialog" v-throttle size="default">确 实</el-button>
+ </span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
- interface stateType{
- isSafetyRiskAnalyseUnitDialog:Boolean,
- safetyRiskAnalyseUnitForm:{
- riskCode: string | null,
- riskUnitName: string | null,
- liablePersonId: number | null,
- liableDepId: number | null,
- produceDeviceId: number | null,
- },
- title: string,
- userList:[],
- departmentList: [],
- allProduceDeviceData: [],
- safetyRiskAnalyseUnitFormRules:{}
- }
- interface levelListState {
-
- }
- import { reactive, toRefs, ref} from 'vue'
- import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit';
- import { ElMessage } from 'element-plus';
+interface stateType {
+ isSafetyRiskAnalyseUnitDialog: Boolean;
+ safetyRiskAnalyseUnitForm: {
+ riskCode: string | null;
+ riskUnitName: string | null;
+ liablePersonId: number | null;
+ liableDepId: number | null;
+ produceDeviceId: number | null;
+ };
+ title: string;
+ userList: [];
+ departmentList: [];
+ allProduceDeviceData: [];
+ safetyRiskAnalyseUnitFormRules: {};
+}
+import { reactive, toRefs, ref } from 'vue';
+import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit';
+import { ElMessage } from 'element-plus';
import { userApi } from '/@/api/user';
- export default {
- name: "productionDeviceDialog",
- setup(props, context) {
- const safetyRiskAnalyseUnitFormRef = ref();
- const state = reactive<stateType>({
- title:'',
- userList:[],
- departmentList: [],
- allProduceDeviceData: [],
- isSafetyRiskAnalyseUnitDialog: false,
- safetyRiskAnalyseUnitForm: {
+export default {
+ name: 'productionDeviceDialog',
+ setup(props: any, context: any) {
+ const safetyRiskAnalyseUnitFormRef = ref();
+ const state = reactive<stateType>({
+ title: '',
+ userList: [],
+ departmentList: [],
+ allProduceDeviceData: [],
+ isSafetyRiskAnalyseUnitDialog: false,
+ safetyRiskAnalyseUnitForm: {
+ riskCode: null,
+ riskUnitName: null,
+ liablePersonId: null,
+ liableDepId: null,
+ produceDeviceId: null
+ },
+ safetyRiskAnalyseUnitFormRules: {
+ riskCode: [{ required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' }],
+ riskUnitName: [{ required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' }],
+ liableDepId: [{ required: true, message: '请选择责任部门', trigger: 'change' }],
+ liablePersonId: [{ required: true, message: '请选择责任人', trigger: 'change' }],
+ produceDeviceId: [{ required: true, message: '请选择生产装置', trigger: 'change' }]
+ }
+ });
+
+ //打开模态框
+ const openSafetyRiskAnalyseUnitDialog = (type: string, value: object, department: [], allProduceDeviceData: []) => {
+ // console.log(jsonBig.stringify(123124124124214123131))
+ state.isSafetyRiskAnalyseUnitDialog = true;
+ state.allProduceDeviceData = JSON.parse(JSON.stringify(allProduceDeviceData));
+ state.departmentList = department;
+ setTimeout(() => {
+ safetyRiskAnalyseUnitFormRef.value.clearValidate();
+ });
+ if (type === '新增') {
+ state.title = '新增风险分析单元';
+ state.safetyRiskAnalyseUnitForm = {
riskCode: null,
riskUnitName: null,
liablePersonId: null,
liableDepId: null,
- produceDeviceId: null,
- },
- safetyRiskAnalyseUnitFormRules:{
- riskCode: [
- { required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' },
- ],
- riskUnitName: [
- { required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' },
- ],
- liableDepId: [
- { required: true, message: '请选择责任部门', trigger: 'change' },
- ],
- liablePersonId: [
- { required: true, message: '请选择责任人', trigger: 'change' },
- ],
- produceDeviceId: [
- { required: true, message: '请选择生产装置', trigger: 'change' },
- ],
- }
+ produceDeviceId: null
+ };
+ } else {
+ state.title = '修改风险分析单元';
+ state.safetyRiskAnalyseUnitForm = JSON.parse(JSON.stringify(value));
+ }
+ };
- });
-
- //打开模态框
- const openSafetyRiskAnalyseUnitDialog = (type: string, value: object, department: [], allProduceDeviceData : []) => {
- // console.log(jsonBig.stringify(123124124124214123131))
- state.isSafetyRiskAnalyseUnitDialog = true;
- state.allProduceDeviceData = JSON.parse(JSON.stringify(allProduceDeviceData));
- state.departmentList = department;
- setTimeout(() => {
- safetyRiskAnalyseUnitFormRef.value.clearValidate()
- })
- if(type === '新增'){
- state.title = '新增风险分析单元';
- state.safetyRiskAnalyseUnitForm = {
- riskCode: null,
- riskUnitName: null,
- liablePersonId: null,
- liableDepId: null,
- produceDeviceId: null,
- };
- }else{
- state.title = '修改风险分析单元';
- state.safetyRiskAnalyseUnitForm = JSON.parse(JSON.stringify(value));
- }
- };
-
- //新增修改提交
- const submitSafetyRiskAnalyseUnitDialog = async () => {
- safetyRiskAnalyseUnitFormRef.value.validate( async (valid: Boolean) => {
- if(valid){
- if(state.title === '新增风险分析单元'){
- let res = await safetyRiskAnalyseUnitApi().addSafetyRiskAnalyseUnit(state.safetyRiskAnalyseUnitForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'风险分析单元新增成功',
- duration:2000
- });
- state.isSafetyRiskAnalyseUnitDialog = false;
- context.emit('refreshSafetyRiskAnalyseUnit');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }else{
- let res = await safetyRiskAnalyseUnitApi().modSafetyRiskAnalyseUnit(state.safetyRiskAnalyseUnitForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'风险分析单元修改成功',
- duration:2000
+ //新增修改提交
+ const submitSafetyRiskAnalyseUnitDialog = async () => {
+ safetyRiskAnalyseUnitFormRef.value.validate(async (valid: Boolean) => {
+ if (valid) {
+ if (state.title === '新增风险分析单元') {
+ let res = await safetyRiskAnalyseUnitApi().addSafetyRiskAnalyseUnit(state.safetyRiskAnalyseUnitForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '风险分析单元新增成功',
+ duration: 2000
});
state.isSafetyRiskAnalyseUnitDialog = false;
context.emit('refreshSafetyRiskAnalyseUnit');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
}
- }else{
- ElMessage({
- type:'warning',
- message:'请完善基本信息',
- });
+ } else {
+ let res = await safetyRiskAnalyseUnitApi().modSafetyRiskAnalyseUnit(state.safetyRiskAnalyseUnitForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '风险分析单元修改成功',
+ duration: 2000
+ });
+ state.isSafetyRiskAnalyseUnitDialog = false;
+ context.emit('refreshSafetyRiskAnalyseUnit');
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
}
- })
- };
-
- const achiveUserList = () => {
- state.safetyRiskAnalyseUnitForm.liablePersonId = null;
- state.userList = [];
- getUserData();
- };
-
- //获取用户列表
- const getUserData = async () => {
- let res = await userApi().getUserLByDepartment(state.safetyRiskAnalyseUnitForm.liableDepId);
- if(res.data.code === '200'){
- state.userList = res.data.data;
- }else{
+ } else {
ElMessage({
- type:'warning',
- message:res.data.msg
+ type: 'warning',
+ message: '请完善基本信息'
});
}
- }
+ });
+ };
- return{
- ...toRefs(state),
- achiveUserList,
- safetyRiskAnalyseUnitFormRef,
- submitSafetyRiskAnalyseUnitDialog,
- openSafetyRiskAnalyseUnitDialog,
- };
- }
+ const achieveUserList = () => {
+ state.safetyRiskAnalyseUnitForm.liablePersonId = null;
+ state.userList = [];
+ getUserData();
+ };
+
+ //获取用户列表
+ const getUserData = async () => {
+ let res = await userApi().getUserLByDepartment(state.safetyRiskAnalyseUnitForm.liableDepId);
+ if (res.data.code === '200') {
+ state.userList = res.data.data;
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
+
+ return {
+ ...toRefs(state),
+ achieveUserList,
+ safetyRiskAnalyseUnitFormRef,
+ submitSafetyRiskAnalyseUnitDialog,
+ openSafetyRiskAnalyseUnitDialog
+ };
}
+};
</script>
<style scoped>
-.input-length{
- width:85%;
+.input-length {
+ width: 85%;
}
</style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue b/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue
index bf995c2..34fd17c 100644
--- a/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue
@@ -2,43 +2,38 @@
<div class="system-role-container">
<el-card shadow="hover">
<div class="system-user-search mb15">
- <div class="basic-search">
+ <div class="basic-line">
<span>责任部门:</span>
<el-cascader
- @change="achiveUserList"
+ @change="achieveUserList"
:options="departmentList"
:props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
placeholder="责任部门"
clearable
filterable
- v-model="safetyRiskAnalyseUnitData.params.liableDep"
- class="unit-input"
+ class="input-box"
+ v-model="safetyRiskAnalyseUnitData.params.liableDepId"
>
</el-cascader>
</div>
- <div class="basic-search">
+ <div class="basic-line">
<span>责任人:</span>
- <el-select v-model="safetyRiskAnalyseUnitData.params.liablePerson" clearable filterable class="unit-input" placeholder="责任人">
- <el-option
- v-for="item in userList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- ></el-option>
+ <el-select v-model="safetyRiskAnalyseUnitData.params.liablePersonId" clearable filterable class="input-box" placeholder="责任人">
+ <el-option v-for="item in userList" :key="item.uid" :label="item.realName" :value="item.uid"></el-option>
</el-select>
</div>
- <div class="basic-search">
+ <div class="basic-line">
<span>单元名称:</span>
- <el-input v-model="safetyRiskAnalyseUnitData.params.riskUnitName" clearable filterable class="unit-input" placeholder="单元名称">
+ <el-input v-model="safetyRiskAnalyseUnitData.params.riskUnitName" clearable filterable class="input-box" placeholder="单元名称">
</el-input>
</div>
- <el-button size="default" type="primary" class="ml10" @click="handleSearch">
+ <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch">
<el-icon>
<ele-Search />
</el-icon>
查询
</el-button>
- <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增','')">
+ <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">
<el-icon>
<ele-FolderAdd />
</el-icon>
@@ -53,234 +48,222 @@
<el-table-column prop="liableDep" label="责任部门" show-overflow-tooltip></el-table-column>
<el-table-column prop="liablePerson" label="责任人" show-overflow-tooltip></el-table-column>
<el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="创建时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="lastEditByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="最后修改时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="150">
<template #default="scope">
- <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button>
+ <el-button size="small" text type="primary" @click="onOpenDialogRef('修改', scope.row)">修改</el-button>
<el-button size="small" text type="danger" @click="onDelProductionDevice(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
- @size-change="onHandleSizeChange"
- @current-change="onHandleCurrentChange"
- class="mt15"
- :pager-count="5"
- :page-sizes="[10, 20, 30]"
- v-model:current-page="safetyRiskAnalyseUnitData.params.pageIndex"
- background
- v-model:page-size="safetyRiskAnalyseUnitData.params.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="safetyRiskAnalyseUnitData.total"
- >
- </el-pagination>
+ @size-change="onHandleSizeChange"
+ @current-change="onHandleCurrentChange"
+ class="mt15"
+ :pager-count="5"
+ :page-sizes="[10, 20, 30]"
+ v-model:current-page="safetyRiskAnalyseUnitData.params.pageIndex"
+ background
+ v-model:page-size="safetyRiskAnalyseUnitData.params.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="safetyRiskAnalyseUnitData.total"
+ >
+ </el-pagination>
</el-card>
- <safetyRiskAnalyseUnitDialog ref="safetyRiskAnalyseUnitDialogRef" @refreshSafetyRiskAnalyseUnit ="initSafetyRiskAnalyseUnitData"/>
+ <safetyRiskAnalyseUnitDialog ref="safetyRiskAnalyseUnitDialogRef" @refreshSafetyRiskAnalyseUnit="initSafetyRiskAnalyseUnitData" />
</div>
</template>
<script lang="ts">
- import { toRefs, reactive, onMounted, ref } from 'vue';
- import { ElMessageBox, ElMessage } from 'element-plus';
- import safetyRiskAnalyseUnitDialog from './components/safetyRiskAnalyseUnitDialog.vue';
- import { safetyRiskAnalyseUnitApi } from "/@/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts";
- import { departmentApi } from '/@/api/department';
- import { userApi } from '/@/api/user';
- import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice';
+import { toRefs, reactive, onMounted, ref } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import safetyRiskAnalyseUnitDialog from './components/safetyRiskAnalyseUnitDialog.vue';
+import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts';
+import { departmentApi } from '/@/api/department';
+import { userApi } from '/@/api/user';
+import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice';
- // 定义接口来定义对象的类型
- interface TableData {
- roleName: string;
- roleSign: string;
- describe: string;
- sort: number;
- status: boolean;
- createTime: string;
- }
- interface TableDataState {
- safetyRiskAnalyseUnitData: {
- data: Array<TableData>;
- total: number;
- loading: boolean;
- params: {
- pageIndex: number;
- pageSize: number;
- riskUnitName: string | null;
- liableDepId: number | null;
- liablePersonId: number | null;
- };
+// 定义接口来定义对象的类型
+interface TableData {
+ roleName: string;
+ roleSign: string;
+ describe: string;
+ sort: number;
+ status: boolean;
+ createTime: string;
+}
+interface TableDataState {
+ safetyRiskAnalyseUnitData: {
+ data: Array<TableData>;
+ total: number;
+ loading: boolean;
+ params: {
+ pageIndex: number;
+ pageSize: number;
+ riskUnitName: string | null;
+ liableDepId: number | null;
+ liablePersonId: number | null;
};
- userList:Array<UserState>;
- departmentList:Array<DepartmentState>;
- allProduceDeviceData:Array<produceDeviceState>;
- }
- interface produceDeviceState {
+ };
+ userList: Array<UserState>;
+ departmentList: Array<DepartmentState>;
+ allProduceDeviceData: Array<produceDeviceState>;
+}
+interface produceDeviceState {}
+interface DepartmentState {}
+interface UserState {}
- }
- interface DepartmentState {
-
- }
- interface UserState {
-
- }
-
- export default ({
- name: 'productionDevice',
- components: { safetyRiskAnalyseUnitDialog },
- setup() {
- const safetyRiskAnalyseUnitDialogRef = ref();
- const state = reactive<TableDataState>({
- safetyRiskAnalyseUnitData: {
- data: [],
- total: 0,
- loading: false,
- params: {
- pageIndex: 1,
- pageSize: 10,
- riskUnitName: null,
- liableDepId: null,
- liablePersonId: null,
- },
- },
- userList: [],
- departmentList: [],
- allProduceDeviceData: [],
- });
- // 初始化表格数据
- const initSafetyRiskAnalyseUnitData = async () => {
- let res = await safetyRiskAnalyseUnitApi().getSafetyRiskAnalyseUnitList(state.safetyRiskAnalyseUnitData.params)
- if(res.data.code === '200'){
- state.safetyRiskAnalyseUnitData.data = res.data.data
- state.safetyRiskAnalyseUnitData.total = res.data.count;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
+export default {
+ name: 'productionDevice',
+ components: { safetyRiskAnalyseUnitDialog },
+ setup() {
+ const safetyRiskAnalyseUnitDialogRef = ref();
+ const state = reactive<TableDataState>({
+ safetyRiskAnalyseUnitData: {
+ data: [],
+ total: 0,
+ loading: false,
+ params: {
+ pageIndex: 1,
+ pageSize: 10,
+ riskUnitName: null,
+ liableDepId: null,
+ liablePersonId: null
}
- };
-
- const achiveUserList = () => {
- state.safetyRiskAnalyseUnitData.params.liablePersonId = null;
- state.userList = [];
- getUserData();
- };
-
- //获取生产装置列表
- const getAllProduceDeviceData = async () => {
- let res = await productionDeviceApi().getAllProductionDeviceList();
- if(res.data.code === '200'){
- state.allProduceDeviceData = res.data.data;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- };
-
- //获取部门列表
- const getDepartmentData = async () => {
- let res = await departmentApi().getDepartmentList();
- if(res.data.code === '200'){
- state.departmentList = res.data.data;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- };
-
- //获取用户列表
- const getUserData = async () => {
- let res = await userApi().getUserLByDepartment(state.safetyRiskAnalyseUnitData.params.liableDepId);
- if(res.data.code === '200'){
- state.userList = res.data.data;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }
-
- // 打开生产装置弹窗
- const onOpenDialogRef = (type: string, value: any) => {
- safetyRiskAnalyseUnitDialogRef.value.openSafetyRiskAnalyseUnitDialog(type, value, state.departmentList, state.allProduceDeviceData);
- };
-
- // 删除角色
- const onDelProductionDevice = (row: any) => {
- ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.riskUnitName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
+ },
+ userList: [],
+ departmentList: [],
+ allProduceDeviceData: []
+ });
+ // 初始化表格数据
+ const initSafetyRiskAnalyseUnitData = async () => {
+ let res = await safetyRiskAnalyseUnitApi().getSafetyRiskAnalyseUnitList(state.safetyRiskAnalyseUnitData.params);
+ if (res.data.code === '200') {
+ state.safetyRiskAnalyseUnitData.data = res.data.data;
+ state.safetyRiskAnalyseUnitData.total = res.data.count;
+ } else {
+ ElMessage({
type: 'warning',
- }).then(async () => {
- let res = await safetyRiskAnalyseUnitApi().deleteSafetyRiskAnalyseUnit({id:row.id});
- if(res.data.code ==='200'){
- ElMessage({
- type:'success',
- duration:2000,
- message:'删除成功'
- });
- await initSafetyRiskAnalyseUnitData();
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }).catch(() => {});
- };
-
- const handleSearch = () => {
- initSafetyRiskAnalyseUnitData();
+ message: res.data.msg
+ });
}
+ };
- // 分页改变
- const onHandleSizeChange = (val: number) => {
- state.safetyRiskAnalyseUnitData.params.pageSize = val;
- initSafetyRiskAnalyseUnitData();
- };
+ const achieveUserList = () => {
+ state.safetyRiskAnalyseUnitData.params.liablePersonId = null;
+ state.userList = [];
+ getUserData();
+ };
- // 分页改变
- const onHandleCurrentChange = (val: number) => {
- state.safetyRiskAnalyseUnitData.params.pageIndex = val;
- initSafetyRiskAnalyseUnitData();
- };
+ //获取生产装置列表
+ const getAllProduceDeviceData = async () => {
+ let res = await productionDeviceApi().getAllProductionDeviceList();
+ if (res.data.code === '200') {
+ state.allProduceDeviceData = res.data.data;
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
- // 页面加载时
- onMounted(() => {
- initSafetyRiskAnalyseUnitData();
- getAllProduceDeviceData();
- getDepartmentData();
- });
+ //获取部门列表
+ const getDepartmentData = async () => {
+ let res = await departmentApi().getDepartmentList();
+ if (res.data.code === '200') {
+ state.departmentList = res.data.data;
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
- return {
- handleSearch,
- achiveUserList,
- onOpenDialogRef,
- onHandleSizeChange,
- onDelProductionDevice,
- onHandleCurrentChange,
- safetyRiskAnalyseUnitDialog,
- safetyRiskAnalyseUnitDialogRef,
- initSafetyRiskAnalyseUnitData,
- ...toRefs(state),
- };
- },
- });
+ //获取用户列表
+ const getUserData = async () => {
+ let res = await userApi().getUserLByDepartment(state.safetyRiskAnalyseUnitData.params.liableDepId);
+ if (res.data.code === '200') {
+ state.userList = res.data.data;
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
+
+ // 打开生产装置弹窗
+ const onOpenDialogRef = (type: string, value: any) => {
+ safetyRiskAnalyseUnitDialogRef.value.openSafetyRiskAnalyseUnitDialog(type, value, state.departmentList, state.allProduceDeviceData);
+ };
+
+ // 删除角色
+ const onDelProductionDevice = (row: any) => {
+ ElMessageBox.confirm(`此操作将永久删除该条安全风险分析单元:“${row.riskUnitName}”,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async () => {
+ let res = await safetyRiskAnalyseUnitApi().deleteSafetyRiskAnalyseUnit({ id: row.id });
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ duration: 2000,
+ message: '删除成功'
+ });
+ await initSafetyRiskAnalyseUnitData();
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch(() => {});
+ };
+
+ const handleSearch = () => {
+ initSafetyRiskAnalyseUnitData();
+ };
+
+ // 分页改变
+ const onHandleSizeChange = (val: number) => {
+ state.safetyRiskAnalyseUnitData.params.pageSize = val;
+ initSafetyRiskAnalyseUnitData();
+ };
+
+ // 分页改变
+ const onHandleCurrentChange = (val: number) => {
+ state.safetyRiskAnalyseUnitData.params.pageIndex = val;
+ initSafetyRiskAnalyseUnitData();
+ };
+
+ // 页面加载时
+ onMounted(() => {
+ initSafetyRiskAnalyseUnitData();
+ getAllProduceDeviceData();
+ getDepartmentData();
+ });
+
+ return {
+ handleSearch,
+ achieveUserList,
+ onOpenDialogRef,
+ onHandleSizeChange,
+ onDelProductionDevice,
+ onHandleCurrentChange,
+ safetyRiskAnalyseUnitDialog,
+ safetyRiskAnalyseUnitDialogRef,
+ initSafetyRiskAnalyseUnitData,
+ ...toRefs(state)
+ };
+ }
+};
</script>
-<style scoped>
-.basic-search{
- display:inline-block;
- padding-left: 10px;
-}
-.unit-input{
- width:200px
-}
-</style>
+<style scoped></style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue b/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue
index 236734a..52b1bc3 100644
--- a/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue
@@ -1,154 +1,160 @@
<template>
<div class="system-add-menu-container">
<el-dialog :title="title" v-model="isSafetyRiskEventDialog" width="600px">
- <el-form :model="safetyRiskEventForm" :rules="safetyRiskEventFormRules" ref="safetyRiskAnalyseUnitFormRef" size="default" label-width="180px">
+ <el-form
+ :model="safetyRiskEventForm"
+ :rules="safetyRiskEventFormRules"
+ ref="safetyRiskAnalyseUnitFormRef"
+ size="default"
+ label-width="180px"
+ >
<el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="安全风险分析单元名称" prop="riskUnitId">
<el-select class="input-length" v-model="safetyRiskEventForm.riskUnitId" placeholder="请输入安全风险分析单元名称">
<el-option
- v-for="item in allSafetyRiskEventData"
- :key="item.id"
- :label="item.riskUnitName"
- :value="item.id"
+ v-for="item in allSafetyRiskEventData"
+ :key="item.id"
+ :label="item.riskUnitName"
+ :value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="安全风险事件名称" prop="riskEventName">
- <el-input class="input-length" v-model="safetyRiskEventForm.riskEventName" placeholder="请输入生产装置名称" clearable></el-input>
+ <el-input
+ class="input-length"
+ v-model="safetyRiskEventForm.riskEventName"
+ placeholder="请输入生产装置名称"
+ clearable
+ ></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
- <span class="dialog-footer">
- <el-button @click="isSafetyRiskEventDialog = !isSafetyRiskEventDialog" size="default">取 消</el-button>
- <el-button type="primary" @click="submitSafetyRiskEventDialog" size="default">确 实</el-button>
- </span>
+ <span class="dialog-footer">
+ <el-button @click="isSafetyRiskEventDialog = !isSafetyRiskEventDialog" size="default">取 消</el-button>
+ <el-button type="primary" @click="submitSafetyRiskEventDialog" v-throttle size="default">确 实</el-button>
+ </span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts">
- interface stateType{
- isSafetyRiskEventDialog:Boolean,
- safetyRiskEventForm:{
- riskEventName: string | null,
- riskUnitId: number | null,
- },
- title: string,
- departmentList: [],
- allSafetyRiskEventData: [],
- safetyRiskEventFormRules: {},
- }
- import { reactive, toRefs, ref} from 'vue'
- import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent';
- import { ElMessage } from 'element-plus';
- export default {
- name: "productionDeviceDialog",
- setup(props, context) {
- const safetyRiskAnalyseUnitFormRef = ref();
- const state = reactive<stateType>({
- title:'',
- departmentList: [],
- allSafetyRiskEventData:[],
- isSafetyRiskEventDialog: false,
- safetyRiskEventForm: {
- riskEventName: null,
- riskUnitId: null,
- },
- safetyRiskEventFormRules:{
- riskEventName: [
- { required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' },
- ],
- riskUnitId: [
- { required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' },
- ],
- }
+interface stateType {
+ isSafetyRiskEventDialog: Boolean;
+ safetyRiskEventForm: {
+ riskEventName: string | null;
+ riskUnitId: number | null;
+ };
+ title: string;
+ departmentList: [];
+ allSafetyRiskEventData: [];
+ safetyRiskEventFormRules: {};
+}
+import { reactive, toRefs, ref } from 'vue';
+import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent';
+import { ElMessage } from 'element-plus';
+export default {
+ name: 'productionDeviceDialog',
+ setup(props: any, context: any) {
+ const safetyRiskAnalyseUnitFormRef = ref();
+ const state = reactive<stateType>({
+ title: '',
+ departmentList: [],
+ allSafetyRiskEventData: [],
+ isSafetyRiskEventDialog: false,
+ safetyRiskEventForm: {
+ riskEventName: null,
+ riskUnitId: null
+ },
+ safetyRiskEventFormRules: {
+ riskEventName: [{ required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' }],
+ riskUnitId: [{ required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' }]
+ }
+ });
+ //打开模态框
+ const openSafetyRiskEventDialog = (type: string, value: object, department: [], allSafetyRiskEventData: []) => {
+ state.isSafetyRiskEventDialog = true;
+ state.allSafetyRiskEventData = JSON.parse(JSON.stringify(allSafetyRiskEventData));
+ state.departmentList = department;
+ setTimeout(() => {
+ safetyRiskAnalyseUnitFormRef.value.clearValidate();
});
+ if (type === '新增') {
+ state.title = '新增风险事件';
+ state.safetyRiskEventForm = {
+ riskEventName: null,
+ riskUnitId: null
+ };
+ } else {
+ state.title = '修改风险事件';
+ state.safetyRiskEventForm = JSON.parse(JSON.stringify(value));
+ }
+ };
- //打开模态框
- const openSafetyRiskEventDialog = (type: string, value: object, department: [], allSafetyRiskEventData:[]) => {
- state.isSafetyRiskEventDialog = true;
- state.allSafetyRiskEventData = JSON.parse(JSON.stringify(allSafetyRiskEventData));
- state.departmentList = department;
- setTimeout(() => {
- safetyRiskAnalyseUnitFormRef.value.clearValidate()
- })
- if(type === '新增'){
- state.title = '新增生产装置';
- state.safetyRiskEventForm = {
- riskEventName: null,
- riskUnitId: null,
- };
- }else{
- state.title = '修改生产装置';
- state.safetyRiskEventForm = JSON.parse(JSON.stringify(value));
- }
- };
-
- //新增修改提交
- const submitSafetyRiskEventDialog = async () => {
- safetyRiskAnalyseUnitFormRef.value.validate( async (valid: Boolean) => {
- if(valid){
- if(state.title === '新增生产装置'){
- let res = await safetyRiskEventApi().addSafetyRiskEvent(state.safetyRiskEventForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'生产装置新增成功',
- duration:2000
- });
- state.isSafetyRiskEventDialog = false;
- context.emit('refreshSafetyRiskEvent');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }else{
- let res = await safetyRiskEventApi().modSafetyRiskEvent(state.safetyRiskEventForm);
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'生产装置修改成功',
- duration:2000
+ //新增修改提交
+ const submitSafetyRiskEventDialog = async () => {
+ safetyRiskAnalyseUnitFormRef.value.validate(async (valid: Boolean) => {
+ if (valid) {
+ if (state.title === '新增风险事件') {
+ let res = await safetyRiskEventApi().addSafetyRiskEvent(state.safetyRiskEventForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '风险事件新增成功',
+ duration: 2000
});
state.isSafetyRiskEventDialog = false;
context.emit('refreshSafetyRiskEvent');
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
}
- }else{
- ElMessage({
- type:'warning',
- message:'请完善基本信息',
- });
+ } else {
+ let res = await safetyRiskEventApi().modSafetyRiskEvent(state.safetyRiskEventForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '风险事件修改成功',
+ duration: 2000
+ });
+ state.isSafetyRiskEventDialog = false;
+ context.emit('refreshSafetyRiskEvent');
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
}
- })
- }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: '请完善基本信息'
+ });
+ }
+ });
+ };
- return{
- ...toRefs(state),
- safetyRiskAnalyseUnitFormRef,
- submitSafetyRiskEventDialog,
- openSafetyRiskEventDialog,
- };
- }
+ return {
+ ...toRefs(state),
+ safetyRiskAnalyseUnitFormRef,
+ submitSafetyRiskEventDialog,
+ openSafetyRiskEventDialog
+ };
}
+};
</script>
<style scoped>
-.input-length{
- width:85%;
+.input-length {
+ width: 85%;
}
</style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue b/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue
index 5ca9e32..2b77d7b 100644
--- a/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue
@@ -2,33 +2,27 @@
<div class="system-role-container">
<el-card shadow="hover">
<div class="system-user-search mb15">
- <div class="basic-search">
+ <div class="basic-line">
<span>安全风险单元名称:</span>
- <el-select v-model="safetyRiskEventData.params.riskUnitId" class="unit-input" placeholder="安全风险单元名称">
- <el-option
- v-for="item in allSafetyRiskEventData"
- :key="item.id"
- :label="item.riskUnitName"
- :value="item.id"
- ></el-option>
+ <el-select v-model="safetyRiskEventData.params.riskUnitId" class="input-box" placeholder="安全风险单元名称">
+ <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskUnitName" :value="item.id"></el-option>
</el-select>
</div>
- <div class="basic-search">
+ <div class="basic-line">
<span>安全风险事件名称:</span>
- <el-input v-model="safetyRiskEventData.params.riskEventName" class="unit-input" placeholder="安全风险事件名称">
- </el-input>
+ <el-input v-model="safetyRiskEventData.params.riskEventName" class="input-box" placeholder="安全风险事件名称"> </el-input>
</div>
- <el-button size="default" type="primary" class="ml10" @click="handleSearch">
+ <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch">
<el-icon>
<ele-Search />
</el-icon>
查询
</el-button>
- <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增','')">
+ <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">
<el-icon>
<ele-FolderAdd />
</el-icon>
- 新增单元
+ 新增事件
</el-button>
</div>
<el-table :data="safetyRiskEventData.data" style="width: 100%">
@@ -36,206 +30,177 @@
<el-table-column prop="riskUnitName" label="安全风险分析单元名称" width="180" show-overflow-tooltip></el-table-column>
<el-table-column prop="riskEventName" label="安全风险事件名称" width="180" show-overflow-tooltip></el-table-column>
<el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="创建时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="lastEditByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gtmCreate" label="最后修改时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="150">
<template #default="scope">
- <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button>
+ <el-button size="small" text type="primary" @click="onOpenDialogRef('修改', scope.row)">修改</el-button>
<el-button size="small" text type="danger" @click="onDelSafetyRiskEvent(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
- @size-change="onHandleSizeChange"
- @current-change="onHandleCurrentChange"
- class="mt15"
- :pager-count="5"
- :page-sizes="[10, 20, 30]"
- v-model:current-page="safetyRiskEventData.params.pageIndex"
- background
- v-model:page-size="safetyRiskEventData.params.pageSize"
- layout="total, sizes, prev, pager, next, jumper"
- :total="safetyRiskEventData.total"
- >
- </el-pagination>
+ @size-change="onHandleSizeChange"
+ @current-change="onHandleCurrentChange"
+ class="mt15"
+ :pager-count="5"
+ :page-sizes="[10, 20, 30]"
+ v-model:current-page="safetyRiskEventData.params.pageIndex"
+ background
+ v-model:page-size="safetyRiskEventData.params.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="safetyRiskEventData.total"
+ >
+ </el-pagination>
</el-card>
- <safetyRiskEventDialog ref="safetyRiskEventDialogRef" @refreshSafetyRiskEvent ="initSafetyRiskEventData"/>
+ <safetyRiskEventDialog ref="safetyRiskEventDialogRef" @refreshSafetyRiskEvent="initSafetyRiskEventData" />
</div>
</template>
<script lang="ts">
- import { toRefs, reactive, onMounted, ref } from 'vue';
- import { ElMessageBox, ElMessage } from 'element-plus';
- import safetyRiskEventDialog from './components/safetyRiskEventDialog.vue';
- import { safetyRiskEventApi } from "/@/api/doublePreventSystem/safetyRiskEvent/index.ts";
- import { departmentApi } from '/@/api/department';
+import { toRefs, reactive, onMounted, ref } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import safetyRiskEventDialog from './components/safetyRiskEventDialog.vue';
+import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts';
+import { departmentApi } from '/@/api/department';
import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit';
- // 定义接口来定义对象的类型
- interface TableData {
- roleName: string;
- roleSign: string;
- describe: string;
- sort: number;
- status: boolean;
- createTime: string;
- }
- interface TableDataState {
- safetyRiskEventData: {
- data: Array<TableData>;
- total: number;
- loading: boolean;
- params: {
- pageIndex: number;
- pageSize: number;
- riskEventName: string | null;
-
- };
+// 定义接口来定义对象的类型
+interface TableData {
+ roleName: string;
+ roleSign: string;
+ describe: string;
+ sort: number;
+ status: boolean;
+ createTime: string;
+}
+interface TableDataState {
+ safetyRiskEventData: {
+ data: Array<TableData>;
+ total: number;
+ loading: boolean;
+ params: {
+ pageIndex: number;
+ pageSize: number;
+ riskEventName: string | null;
};
- departmentList:Array<DepartmentState>;
- allSafetyRiskEventData:Array<safetyRiskEventState>;
-
- }
- interface safetyRiskEventState {
+ };
+ allSafetyRiskEventData: Array<safetyRiskEventState>;
+}
+interface safetyRiskEventState {}
- }
- interface DepartmentState {
-
- }
-
- export default ({
- name: 'productionDevice',
- components: { safetyRiskEventDialog },
- setup() {
- const safetyRiskEventDialogRef = ref();
- const state = reactive<TableDataState>({
- safetyRiskEventData: {
- data: [],
- total: 0,
- loading: false,
- params: {
- pageIndex: 1,
- pageSize: 10,
- riskEventName: null,
- },
- },
- departmentList:[],
- allSafetyRiskEventData:[],
- });
- // 初始化表格数据
- const initSafetyRiskEventData = async () => {
- let res = await safetyRiskEventApi().getSafetyRiskEventList(state.safetyRiskEventData.params);
- if(res.data.code === '200'){
- state.safetyRiskEventData.data = res.data.data;
- state.safetyRiskEventData.total = res.data.count;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
+export default {
+ name: 'productionDevice',
+ components: { safetyRiskEventDialog },
+ setup() {
+ const safetyRiskEventDialogRef = ref();
+ const state = reactive<TableDataState>({
+ safetyRiskEventData: {
+ data: [],
+ total: 0,
+ loading: false,
+ params: {
+ pageIndex: 1,
+ pageSize: 10,
+ riskEventName: null
}
- };
-
- // 获取安全风险分析单元数据
- const getAllSafetyRiskEventData = async () => {
- let res = await safetyRiskAnalyseUnitApi().getAllSafetyRiskAnalyseUnitList();
- if(res.data.code === '200'){
- state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- };
-
- // 获取部门列表
- const getDepartmentData = async () => {
- let res = await departmentApi().getDepartmentList();
- if(res.data.code === '200'){
- state.departmentList = res.data.data;
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- };
-
- // 打开安全风险事件
- const onOpenDialogRef = (type: string, value: any) => {
- safetyRiskEventDialogRef.value.openSafetyRiskEventDialog(type, value, state.departmentList, state.allSafetyRiskEventData);
- };
-
- // 删除角色
- const onDelSafetyRiskEvent = (row: any) => {
- ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.riskEventName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
+ },
+ allSafetyRiskEventData: []
+ });
+ // 初始化表格数据
+ const initSafetyRiskEventData = async () => {
+ let res = await safetyRiskEventApi().getSafetyRiskEventList(state.safetyRiskEventData.params);
+ if (res.data.code === '200') {
+ state.safetyRiskEventData.data = res.data.data;
+ state.safetyRiskEventData.total = res.data.count;
+ } else {
+ ElMessage({
type: 'warning',
- }).then(async () => {
- let res = await safetyRiskEventApi().deleteSafetyRiskEvent({id:row.id});
- if(res.data.code ==='200'){
- ElMessage({
- type:'success',
- duration:2000,
- message:'删除成功'
- })
- await initSafetyRiskEventData();
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- });
- }
- }).catch(() => {});
- };
-
- const handleSearch = () => {
- initSafetyRiskEventData();
+ message: res.data.msg
+ });
}
+ };
- // 分页改变
- const onHandleSizeChange = (val: number) => {
- state.safetyRiskEventData.params.pageSize = val;
- initSafetyRiskEventData();
- };
+ // 获取安全风险分析单元数据
+ const getAllSafetyRiskEventData = async () => {
+ let res = await safetyRiskAnalyseUnitApi().getAllSafetyRiskAnalyseUnitList();
+ if (res.data.code === '200') {
+ state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data));
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
- // 分页改变
- const onHandleCurrentChange = (val: number) => {
- state.safetyRiskEventData.params.pageIndex = val;
- initSafetyRiskEventData();
- };
+ // 打开安全风险事件
+ const onOpenDialogRef = (type: string, value: any) => {
+ safetyRiskEventDialogRef.value.openSafetyRiskEventDialog(type, value, state.allSafetyRiskEventData);
+ };
- // 页面加载时
- onMounted(() => {
- getAllSafetyRiskEventData();
- initSafetyRiskEventData();
- getDepartmentData();
- });
+ // 删除角色
+ const onDelSafetyRiskEvent = (row: any) => {
+ ElMessageBox.confirm(`此操作将永久删除该条安全风险事件:“${row.riskEventName}”,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async () => {
+ let res = await safetyRiskEventApi().deleteSafetyRiskEvent({ id: row.id });
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ duration: 2000,
+ message: '删除成功'
+ });
+ await initSafetyRiskEventData();
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch(() => {});
+ };
- return {
- handleSearch,
- onOpenDialogRef,
- onHandleSizeChange,
- onDelSafetyRiskEvent,
- onHandleCurrentChange,
- safetyRiskEventDialog,
- safetyRiskEventDialogRef,
- initSafetyRiskEventData,
- ...toRefs(state),
- };
- },
- });
+ const handleSearch = () => {
+ initSafetyRiskEventData();
+ };
+
+ // 分页改变
+ const onHandleSizeChange = (val: number) => {
+ state.safetyRiskEventData.params.pageSize = val;
+ initSafetyRiskEventData();
+ };
+
+ // 分页改变
+ const onHandleCurrentChange = (val: number) => {
+ state.safetyRiskEventData.params.pageIndex = val;
+ initSafetyRiskEventData();
+ };
+
+ // 页面加载时
+ onMounted(() => {
+ getAllSafetyRiskEventData();
+ initSafetyRiskEventData();
+ });
+
+ return {
+ handleSearch,
+ onOpenDialogRef,
+ onHandleSizeChange,
+ onDelSafetyRiskEvent,
+ onHandleCurrentChange,
+ safetyRiskEventDialog,
+ safetyRiskEventDialogRef,
+ initSafetyRiskEventData,
+ ...toRefs(state)
+ };
+ }
+};
</script>
-<style scoped>
-.basic-search{
- display:inline-block;
- padding-left: 10px;
-}
-.unit-input{
- width:200px
-}
-</style>
+<style scoped></style>
diff --git a/src/views/doublePreventSystem/riskLevelManage/safetyRiskSpaceImg/index.vue b/src/views/doublePreventSystem/riskLevelManage/safetyRiskSpaceImg/index.vue
index db27c8a..769e721 100644
--- a/src/views/doublePreventSystem/riskLevelManage/safetyRiskSpaceImg/index.vue
+++ b/src/views/doublePreventSystem/riskLevelManage/safetyRiskSpaceImg/index.vue
@@ -1,13 +1,13 @@
<template>
-
+ <div>
+ <h1></h1>
+ </div>
</template>
<script>
- export default {
- name: "index"
- }
+export default {
+ name: "index",
+};
</script>
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/src/views/system/menu/component/menuDialog.vue b/src/views/system/menu/component/menuDialog.vue
index 0517bac..c5bb3fd 100644
--- a/src/views/system/menu/component/menuDialog.vue
+++ b/src/views/system/menu/component/menuDialog.vue
@@ -1,267 +1,267 @@
<template>
- <div class="system-add-menu-container">
- <el-dialog :title="title" v-model="isShowDialog" width="769px">
- <el-form :model="ruleForm" size="default" label-width="80px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="上级菜单">
- <el-cascader
- :options="menuData"
- :props="{ checkStrictly: true, value: 'id', label: 'title' }"
- placeholder="请选择上级菜单"
- clearable
- class="w100"
- v-model="ruleForm.menuSuperior"
- >
- </el-cascader>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="菜单名称">
- <el-input v-model="ruleForm.meta.title" placeholder="格式:message.router.xxx" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="路由名称">
- <el-input v-model="ruleForm.name" placeholder="路由中的 name 值" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="路由路径">
- <el-input v-model="ruleForm.path" placeholder="路由中的 path 值" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="重定向">
- <el-input v-model="ruleForm.redirect" placeholder="请输入路由重定向" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="菜单图标">
- <IconSelector placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="组件路径">
- <el-input v-model="ruleForm.component" placeholder="组件路径" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="权限标识">
- <el-select v-model="ruleForm.meta.roles" multiple placeholder="取角色管理" clearable class="w100">
- <el-option label="admin" value="admin"></el-option>
- <el-option label="common" value="common"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="项目名">
- <el-select @change="handelMenu" v-model="ruleForm.projectId" controls-position="right" placeholder="请输入排序" class="w100">
- <el-option
- v-for="item in projectList"
- :key="item.key"
- :value="item.id"
- :label="item.name"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="菜单排序">
- <el-input-number v-model="ruleForm.priority" controls-position="right" placeholder="请输入排序" class="w100"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="是否隐藏">
- <el-radio-group v-model="ruleForm.meta.isHide">
- <el-radio :label="true">隐藏</el-radio>
- <el-radio :label="false">不隐藏</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="onCancel" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmit" size="default">{{ buttonName }}</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
+ <div class="system-add-menu-container">
+ <el-dialog :title="title" v-model="isShowDialog" width="769px">
+ <el-form :model="ruleForm" size="default" label-width="80px">
+ <el-row :gutter="35">
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="上级菜单">
+ <el-cascader
+ :options="menuData"
+ :props="{ checkStrictly: true, value: 'id', label: 'title' }"
+ placeholder="请选择上级菜单"
+ clearable
+ class="w100"
+ v-model="ruleForm.menuSuperior"
+ >
+ </el-cascader>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="菜单名称">
+ <el-input v-model="ruleForm.meta.title" placeholder="格式:message.router.xxx" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="路由名称">
+ <el-input v-model="ruleForm.name" placeholder="路由中的 name 值" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="路由路径">
+ <el-input v-model="ruleForm.path" placeholder="路由中的 path 值" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="重定向">
+ <el-input v-model="ruleForm.redirect" placeholder="请输入路由重定向" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="菜单图标">
+ <input placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" />
+ <!-- <IconSelector placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" />-->
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="组件路径">
+ <el-input v-model="ruleForm.component" placeholder="组件路径" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="权限标识">
+ <el-select v-model="ruleForm.meta.roles" multiple placeholder="取角色管理" clearable class="w100">
+ <el-option label="admin" value="admin"></el-option>
+ <el-option label="common" value="common"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="项目名">
+ <el-select
+ @change="handelMenu"
+ v-model="ruleForm.projectId"
+ controls-position="right"
+ placeholder="请输入排序"
+ class="w100"
+ >
+ <el-option v-for="item in projectList" :key="item.key" :value="item.id" :label="item.name"> </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="菜单排序">
+ <el-input-number v-model="ruleForm.priority" controls-position="right" placeholder="请输入排序" class="w100" />
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="是否隐藏">
+ <el-radio-group v-model="ruleForm.meta.isHide">
+ <el-radio :label="true">隐藏</el-radio>
+ <el-radio :label="false">不隐藏</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="onCancel" size="default">取 消</el-button>
+ <el-button type="primary" @click="onSubmit" size="default">{{ buttonName }}</el-button>
+ </span>
+ </template>
+ </el-dialog>
+ </div>
</template>
<script lang="ts">
- import { reactive, toRefs, onMounted, defineComponent } from 'vue';
- import { storeToRefs } from 'pinia';
- import { useRoutesList } from '/@/stores/routesList';
- import { i18n } from '/@/i18n/index';
- import IconSelector from '/@/components/iconSelector/index.vue';
- import { useMenuApi } from '/@/api/menu/index'
- import { ElMessageBox, ElMessage } from 'element-plus';
- import {Session} from "/@/utils/storage";
- // import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
+import { reactive, toRefs, onMounted, defineComponent } from 'vue';
+import { storeToRefs } from 'pinia';
+import { useRoutesList } from '/@/stores/routesList';
+import { i18n } from '/@/i18n/index';
+import IconSelector from '/@/components/iconSelector/index.vue';
+import { useMenuApi } from '/@/api/menu/index';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import { Session } from '/@/utils/storage';
+// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
- export default defineComponent({
- name: 'systemAddMenu',
- components: { IconSelector },
- setup(props,context) {
- const stores = useRoutesList();
- const { routesList } = storeToRefs(stores);
- const state = reactive({
- isShowDialog: false,
- title:'',
- buttonName:'',
- // 参数请参考 `/src/router/route.ts` 中的 `dynamicRoutes` 路由菜单格式
- ruleForm: {
- projectId:'',
- parentId:0,
- menuSuperior: [], // 上级菜单
- menuType: 'menu', // 菜单类型
- name: '', // 路由名称
- component: '', // 组件路径
- priority: 0, // 菜单排序
- path: '', // 路由路径
- redirect: '', // 路由重定向,有子集 children 时
- meta: {
- title: '', // 菜单名称
- icon: '', // 菜单图标
- isHide: false, // 是否隐藏
- isKeepAlive: true, // 是否缓存
- isAffix: false, // 是否固定
- isLink: '', // 外链/内嵌时链接地址(http:xxx.com),开启外链条件,`1、isLink: 链接地址不为空`
- isIframe: false, // 是否内嵌,开启条件,`1、isIframe:true 2、isLink:链接地址不为空`
- roles: [], // 权限标识,取角色管理
- },
- btnPower: '', // 菜单类型为按钮时,权限标识
- },
- menuData: [], // 上级菜单数据
- projectList:[
- ],
- });
- // 获取 vuex 中的路由
- const getMenuList = (routes: any) => {
- const arr: any = [];
- routes.map((val: any) => {
- val['title'] = val.meta.title;
- val['id'] = val.id
- arr.push(val);
- if (val.children) getMenuList(val.children);
- });
- return arr;
- };
- // 打开弹窗
- const openDialog = (type:string,value:any,projectList: any,projectId:string) => {
- state.projectList = JSON.parse(JSON.stringify(projectList))
- state.isShowDialog = true;
- if(type === '新增'){
- state.buttonName = '新增'
- state.title = '新增菜单'
- state.ruleForm = {
- projectId:projectId,
- parentId:0,
- menuSuperior: [],
- menuType: 'menu',
- name: '',
- component: '',
- priority: 0,
- path: '',
- redirect: '',
- meta: {
- title: '',
- icon: '',
- isHide: false,
- isKeepAlive: true,
- isAffix: false,
- isLink: '',
- isIframe: false,
- roles: [],
- },
- btnPower: '',
- }
- }else{
- state.buttonName = '修改'
- state.title = '修改菜单'
- state.ruleForm = JSON.parse(JSON.stringify(value))
- state.ruleForm.projectId = projectId.toString()
- }
- handelMenu()
- };
- // 关闭弹窗
- const closeDialog = () => {
- state.isShowDialog = false;
- };
- // 是否内嵌下拉改变
- // const onSelectIframeChange = () => {
- // if (state.ruleForm.meta.isIframe) state.ruleForm.isLink = true;
- // else state.ruleForm.isLink = false;
- // };
- // 取消
- const onCancel = () => {
- closeDialog();
- };
- // 新增
- const onSubmit = async () => {
- if(state.ruleForm.menuSuperior && state.ruleForm.menuSuperior !== []){
- let menuId = JSON.parse(JSON.stringify(state.ruleForm.menuSuperior))
- state.ruleForm.parentId = menuId[menuId.length - 1]
- }
- if(state.title === '新增菜单'){
- let res = await useMenuApi().addMenu(state.ruleForm)
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'菜单新增成功',
- duration:2000
- })
- closeDialog();
- context.emit('getMenuList')
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- }else{
- let res = await useMenuApi().modMenu(state.ruleForm)
- if(res.data.code === '200'){
- ElMessage({
- type:'success',
- message:'菜单修改成功',
- duration:2000
- })
- closeDialog();
- context.emit('getMenuList')
- }else{
- ElMessage({
- type:'warning',
- message:res.data.msg
- })
- }
- }
+export default defineComponent({
+ name: 'systemAddMenu',
+ components: { IconSelector },
+ setup(props, context) {
+ const stores = useRoutesList();
+ const { routesList } = storeToRefs(stores);
+ const state = reactive({
+ isShowDialog: false,
+ title: '',
+ buttonName: '',
+ // 参数请参考 `/src/router/route.ts` 中的 `dynamicRoutes` 路由菜单格式
+ ruleForm: {
+ projectId: '',
+ parentId: 0,
+ menuSuperior: [], // 上级菜单
+ menuType: 'menu', // 菜单类型
+ name: '', // 路由名称
+ component: '', // 组件路径
+ priority: 0, // 菜单排序
+ path: '', // 路由路径
+ redirect: '', // 路由重定向,有子集 children 时
+ meta: {
+ title: '', // 菜单名称
+ icon: '', // 菜单图标
+ isHide: false, // 是否隐藏
+ isKeepAlive: true, // 是否缓存
+ isAffix: false, // 是否固定
+ isLink: '', // 外链/内嵌时链接地址(http:xxx.com),开启外链条件,`1、isLink: 链接地址不为空`
+ isIframe: false, // 是否内嵌,开启条件,`1、isIframe:true 2、isLink:链接地址不为空`
+ roles: [] // 权限标识,取角色管理
+ },
+ btnPower: '' // 菜单类型为按钮时,权限标识
+ },
+ menuData: [], // 上级菜单数据
+ projectList: []
+ });
+ // 获取 vuex 中的路由
+ const getMenuList = (routes: any) => {
+ const arr: any = [];
+ routes.map((val: any) => {
+ val['title'] = val.meta.title;
+ val['id'] = val.id;
+ arr.push(val);
+ if (val.children) getMenuList(val.children);
+ });
+ return arr;
+ };
+ // 打开弹窗
+ const openDialog = (type: string, value: any, projectList: any, projectId: string) => {
+ state.projectList = JSON.parse(JSON.stringify(projectList));
+ state.isShowDialog = true;
+ if (type === '新增') {
+ state.buttonName = '新增';
+ state.title = '新增菜单';
+ state.ruleForm = {
+ projectId: projectId,
+ parentId: 0,
+ menuSuperior: [],
+ menuType: 'menu',
+ name: '',
+ component: '',
+ priority: 0,
+ path: '',
+ redirect: '',
+ meta: {
+ title: '',
+ icon: '',
+ isHide: false,
+ isKeepAlive: true,
+ isAffix: false,
+ isLink: '',
+ isIframe: false,
+ roles: []
+ },
+ btnPower: ''
+ };
+ } else {
+ state.buttonName = '修改';
+ state.title = '修改菜单';
+ state.ruleForm = JSON.parse(JSON.stringify(value));
+ state.ruleForm.projectId = projectId.toString();
+ }
+ handelMenu();
+ };
+ // 关闭弹窗
+ const closeDialog = () => {
+ state.isShowDialog = false;
+ };
+ // 是否内嵌下拉改变
+ // const onSelectIframeChange = () => {
+ // if (state.ruleForm.meta.isIframe) state.ruleForm.isLink = true;
+ // else state.ruleForm.isLink = false;
+ // };
+ // 取消
+ const onCancel = () => {
+ closeDialog();
+ };
+ // 新增
+ const onSubmit = async () => {
+ if (state.ruleForm.menuSuperior && state.ruleForm.menuSuperior !== []) {
+ let menuId = JSON.parse(JSON.stringify(state.ruleForm.menuSuperior));
+ state.ruleForm.parentId = menuId[menuId.length - 1];
+ }
+ if (state.title === '新增菜单') {
+ let res = await useMenuApi().addMenu(state.ruleForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '菜单新增成功',
+ duration: 2000
+ });
+ closeDialog();
+ context.emit('getMenuList');
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ } else {
+ let res = await useMenuApi().modMenu(state.ruleForm);
+ if (res.data.code === '200') {
+ ElMessage({
+ type: 'success',
+ message: '菜单修改成功',
+ duration: 2000
+ });
+ closeDialog();
+ context.emit('getMenuList');
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ }
- // closeDialog(); // 关闭弹窗
- // setBackEndControlRefreshRoutes() // 刷新菜单,未进行后端接口测试
- };
+ // closeDialog(); // 关闭弹窗
+ // setBackEndControlRefreshRoutes() // 刷新菜单,未进行后端接口测试
+ };
- const handelMenu = async () => {
- let res = await useMenuApi().getMenuAdmin(state.ruleForm.projectId)
- state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data)))
- }
- // 页面加载时
- onMounted(async () => {
- // let res = await useMenuApi().getMenuAdmin(Session.get('projectId'))
- // state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data)))
- });
- return {
- openDialog,
- closeDialog,
- onCancel,
- onSubmit,
- handelMenu,
- ...toRefs(state),
- };
- },
- });
+ const handelMenu = async () => {
+ let res = await useMenuApi().getMenuAdmin(state.ruleForm.projectId);
+ state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data)));
+ };
+ // 页面加载时
+ onMounted(async () => {
+ // let res = await useMenuApi().getMenuAdmin(Session.get('projectId'))
+ // state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data)))
+ });
+ return {
+ openDialog,
+ closeDialog,
+ onCancel,
+ onSubmit,
+ handelMenu,
+ ...toRefs(state)
+ };
+ }
+});
</script>
diff --git a/vite.config.ts b/vite.config.ts
index cf7bc27..971a832 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -3,77 +3,77 @@
import { defineConfig, loadEnv, ConfigEnv } from 'vite';
const pathResolve = (dir: string): any => {
- return resolve(__dirname, '.', dir);
+ return resolve(__dirname, '.', dir);
};
const alias: Record<string, string> = {
- '/@': pathResolve('./src/'),
- 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
+ '/@': pathResolve('./src/'),
+ 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js'
};
const viteConfig = defineConfig((mode: ConfigEnv) => {
- const env = loadEnv(mode.mode, process.cwd());
- return {
- plugins: [vue()],
- root: process.cwd(),
- resolve: { alias },
- base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH,
- hmr: true,
- optimizeDeps: {
- include: ['element-plus/lib/locale/lang/zh-cn', 'element-plus/lib/locale/lang/en', 'element-plus/lib/locale/lang/zh-tw'],
- },
- server: {
- host: '0.0.0.0',
- port: env.VITE_PORT as unknown as number,
- open: env.VITE_OPEN,
- proxy: {
- '/gitee': {
- target: 'https://gitee.com',
- ws: true,
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/gitee/, ''),
- },
- },
- },
- build: {
- outDir: 'dist',
- sourcemap: false,
- chunkSizeWarningLimit: 1500,
- rollupOptions: {
- output: {
- entryFileNames: `assets/[name].${new Date().getTime()}.js`,
- chunkFileNames: `assets/[name].${new Date().getTime()}.js`,
- assetFileNames: `assets/[name].${new Date().getTime()}.[ext]`,
- compact: true,
- manualChunks: {
- vue: ['vue', 'vue-router', 'pinia'],
- echarts: ['echarts'],
- },
- },
- },
- },
- css: {
- postcss: {
- plugins: [
- {
- postcssPlugin: 'internal:charset-removal',
- AtRule: {
- charset: (atRule) => {
- if (atRule.name === 'charset') {
- atRule.remove();
- }
- },
- },
- },
- ],
- },
- },
- define: {
- __VUE_I18N_LEGACY_API__: JSON.stringify(false),
- __VUE_I18N_FULL_INSTALL__: JSON.stringify(false),
- __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false),
- },
- };
+ const env = loadEnv(mode.mode, process.cwd());
+ return {
+ plugins: [vue()],
+ root: process.cwd(),
+ resolve: { alias },
+ base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH,
+ hmr: true,
+ optimizeDeps: {
+ include: ['element-plus/lib/locale/lang/zh-cn', 'element-plus/lib/locale/lang/en', 'element-plus/lib/locale/lang/zh-tw']
+ },
+ server: {
+ host: '0.0.0.0',
+ port: env.VITE_PORT as unknown as number,
+ open: env.VITE_OPEN,
+ proxy: {
+ '/gitee': {
+ target: 'https://gitee.com',
+ ws: true,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/gitee/, '')
+ }
+ }
+ },
+ build: {
+ outDir: 'dist',
+ sourcemap: false,
+ chunkSizeWarningLimit: 1500,
+ rollupOptions: {
+ output: {
+ entryFileNames: `assets/[name].${new Date().getTime()}.js`,
+ chunkFileNames: `assets/[name].${new Date().getTime()}.js`,
+ assetFileNames: `assets/[name].${new Date().getTime()}.[ext]`,
+ compact: true,
+ manualChunks: {
+ vue: ['vue', 'vue-router', 'pinia'],
+ echarts: ['echarts']
+ }
+ }
+ }
+ },
+ css: {
+ postcss: {
+ plugins: [
+ {
+ postcssPlugin: 'internal:charset-removal',
+ AtRule: {
+ charset: (atRule) => {
+ if (atRule.name === 'charset') {
+ atRule.remove();
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ define: {
+ __VUE_I18N_LEGACY_API__: JSON.stringify(false),
+ __VUE_I18N_FULL_INSTALL__: JSON.stringify(false),
+ __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false)
+ }
+ };
});
export default viteConfig;
--
Gitblit v1.9.2