Your Name
2022-07-05 b222b2923e4759a86ccae30a85d6653a4b4046f8
风险模块
已重命名1个文件
已修改13个文件
已添加9个文件
已删除1个文件
5987 ■■■■■ 文件已修改
.idea/libraries/core.xml 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/index_ts.xml 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/doublePreventSystem/productionDevice/index.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/doublePreventSystem/riskControlMeasure/index.ts 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/doublePreventSystem/safetyRiskEvent/index.ts 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/menu/index.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/user/index.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.ts 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue 159 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/riskControlManage/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/homeMenu/homeMenu.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/loginPage/component/accountLogin.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/menu/index.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yarn.lock 3828 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/libraries/core.xml
对比新文件
@@ -0,0 +1,131 @@
<component name="libraryTable">
  <library name="core" type="javaScript">
    <properties>
      <sourceFilesUrls>
        <item url="file://E:/vue/src/core/components/index.ts" />
        <item url="file://E:/vue/src/core/components/keep-alive.ts" />
        <item url="file://E:/vue/src/core/config.ts" />
        <item url="file://E:/vue/src/core/global-api/assets.ts" />
        <item url="file://E:/vue/src/core/global-api/extend.ts" />
        <item url="file://E:/vue/src/core/global-api/index.ts" />
        <item url="file://E:/vue/src/core/global-api/mixin.ts" />
        <item url="file://E:/vue/src/core/global-api/use.ts" />
        <item url="file://E:/vue/src/core/index.ts" />
        <item url="file://E:/vue/src/core/instance/events.ts" />
        <item url="file://E:/vue/src/core/instance/index.ts" />
        <item url="file://E:/vue/src/core/instance/init.ts" />
        <item url="file://E:/vue/src/core/instance/inject.ts" />
        <item url="file://E:/vue/src/core/instance/lifecycle.ts" />
        <item url="file://E:/vue/src/core/instance/proxy.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/bind-dynamic-keys.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/bind-object-listeners.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/bind-object-props.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/check-keycodes.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/index.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/render-list.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/render-slot.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/render-static.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/resolve-filter.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/resolve-scoped-slots.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/resolve-slots.ts" />
        <item url="file://E:/vue/src/core/instance/render.ts" />
        <item url="file://E:/vue/src/core/instance/state.ts" />
        <item url="file://E:/vue/src/core/observer/array.ts" />
        <item url="file://E:/vue/src/core/observer/dep.ts" />
        <item url="file://E:/vue/src/core/observer/index.ts" />
        <item url="file://E:/vue/src/core/observer/scheduler.ts" />
        <item url="file://E:/vue/src/core/observer/traverse.ts" />
        <item url="file://E:/vue/src/core/observer/watcher.ts" />
        <item url="file://E:/vue/src/core/util/debug.ts" />
        <item url="file://E:/vue/src/core/util/env.ts" />
        <item url="file://E:/vue/src/core/util/error.ts" />
        <item url="file://E:/vue/src/core/util/index.ts" />
        <item url="file://E:/vue/src/core/util/lang.ts" />
        <item url="file://E:/vue/src/core/util/next-tick.ts" />
        <item url="file://E:/vue/src/core/util/options.ts" />
        <item url="file://E:/vue/src/core/util/perf.ts" />
        <item url="file://E:/vue/src/core/util/props.ts" />
        <item url="file://E:/vue/src/core/vdom/create-component.ts" />
        <item url="file://E:/vue/src/core/vdom/create-element.ts" />
        <item url="file://E:/vue/src/core/vdom/create-functional-component.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/extract-props.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/get-first-component-child.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/index.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/is-async-placeholder.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/merge-hook.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/normalize-children.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/normalize-scoped-slots.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/resolve-async-component.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/update-listeners.ts" />
        <item url="file://E:/vue/src/core/vdom/modules/directives.ts" />
        <item url="file://E:/vue/src/core/vdom/modules/index.ts" />
        <item url="file://E:/vue/src/core/vdom/modules/template-ref.ts" />
        <item url="file://E:/vue/src/core/vdom/patch.ts" />
        <item url="file://E:/vue/src/core/vdom/vnode.ts" />
      </sourceFilesUrls>
    </properties>
    <CLASSES>
      <root url="file://E:/vue/src/core/components/index.ts" />
      <root url="file://E:/vue/src/core/components/keep-alive.ts" />
      <root url="file://E:/vue/src/core/config.ts" />
      <root url="file://E:/vue/src/core/global-api/assets.ts" />
      <root url="file://E:/vue/src/core/global-api/extend.ts" />
      <root url="file://E:/vue/src/core/global-api/index.ts" />
      <root url="file://E:/vue/src/core/global-api/mixin.ts" />
      <root url="file://E:/vue/src/core/global-api/use.ts" />
      <root url="file://E:/vue/src/core/index.ts" />
      <root url="file://E:/vue/src/core/instance/events.ts" />
      <root url="file://E:/vue/src/core/instance/index.ts" />
      <root url="file://E:/vue/src/core/instance/init.ts" />
      <root url="file://E:/vue/src/core/instance/inject.ts" />
      <root url="file://E:/vue/src/core/instance/lifecycle.ts" />
      <root url="file://E:/vue/src/core/instance/proxy.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/bind-dynamic-keys.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/bind-object-listeners.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/bind-object-props.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/check-keycodes.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/index.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/render-list.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/render-slot.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/render-static.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/resolve-filter.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/resolve-scoped-slots.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/resolve-slots.ts" />
      <root url="file://E:/vue/src/core/instance/render.ts" />
      <root url="file://E:/vue/src/core/instance/state.ts" />
      <root url="file://E:/vue/src/core/observer/array.ts" />
      <root url="file://E:/vue/src/core/observer/dep.ts" />
      <root url="file://E:/vue/src/core/observer/index.ts" />
      <root url="file://E:/vue/src/core/observer/scheduler.ts" />
      <root url="file://E:/vue/src/core/observer/traverse.ts" />
      <root url="file://E:/vue/src/core/observer/watcher.ts" />
      <root url="file://E:/vue/src/core/util/debug.ts" />
      <root url="file://E:/vue/src/core/util/env.ts" />
      <root url="file://E:/vue/src/core/util/error.ts" />
      <root url="file://E:/vue/src/core/util/index.ts" />
      <root url="file://E:/vue/src/core/util/lang.ts" />
      <root url="file://E:/vue/src/core/util/next-tick.ts" />
      <root url="file://E:/vue/src/core/util/options.ts" />
      <root url="file://E:/vue/src/core/util/perf.ts" />
      <root url="file://E:/vue/src/core/util/props.ts" />
      <root url="file://E:/vue/src/core/vdom/create-component.ts" />
      <root url="file://E:/vue/src/core/vdom/create-element.ts" />
      <root url="file://E:/vue/src/core/vdom/create-functional-component.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/extract-props.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/get-first-component-child.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/index.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/is-async-placeholder.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/merge-hook.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/normalize-children.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/normalize-scoped-slots.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/resolve-async-component.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/update-listeners.ts" />
      <root url="file://E:/vue/src/core/vdom/modules/directives.ts" />
      <root url="file://E:/vue/src/core/vdom/modules/index.ts" />
      <root url="file://E:/vue/src/core/vdom/modules/template-ref.ts" />
      <root url="file://E:/vue/src/core/vdom/patch.ts" />
      <root url="file://E:/vue/src/core/vdom/vnode.ts" />
    </CLASSES>
    <SOURCES />
  </library>
</component>
.idea/libraries/index_ts.xml
对比新文件
@@ -0,0 +1,131 @@
<component name="libraryTable">
  <library name="index.ts" type="javaScript">
    <properties>
      <sourceFilesUrls>
        <item url="file://E:/vue/src/core/components/index.ts" />
        <item url="file://E:/vue/src/core/components/keep-alive.ts" />
        <item url="file://E:/vue/src/core/config.ts" />
        <item url="file://E:/vue/src/core/global-api/assets.ts" />
        <item url="file://E:/vue/src/core/global-api/extend.ts" />
        <item url="file://E:/vue/src/core/global-api/index.ts" />
        <item url="file://E:/vue/src/core/global-api/mixin.ts" />
        <item url="file://E:/vue/src/core/global-api/use.ts" />
        <item url="file://E:/vue/src/core/index.ts" />
        <item url="file://E:/vue/src/core/instance/events.ts" />
        <item url="file://E:/vue/src/core/instance/index.ts" />
        <item url="file://E:/vue/src/core/instance/init.ts" />
        <item url="file://E:/vue/src/core/instance/inject.ts" />
        <item url="file://E:/vue/src/core/instance/lifecycle.ts" />
        <item url="file://E:/vue/src/core/instance/proxy.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/bind-dynamic-keys.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/bind-object-listeners.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/bind-object-props.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/check-keycodes.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/index.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/render-list.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/render-slot.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/render-static.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/resolve-filter.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/resolve-scoped-slots.ts" />
        <item url="file://E:/vue/src/core/instance/render-helpers/resolve-slots.ts" />
        <item url="file://E:/vue/src/core/instance/render.ts" />
        <item url="file://E:/vue/src/core/instance/state.ts" />
        <item url="file://E:/vue/src/core/observer/array.ts" />
        <item url="file://E:/vue/src/core/observer/dep.ts" />
        <item url="file://E:/vue/src/core/observer/index.ts" />
        <item url="file://E:/vue/src/core/observer/scheduler.ts" />
        <item url="file://E:/vue/src/core/observer/traverse.ts" />
        <item url="file://E:/vue/src/core/observer/watcher.ts" />
        <item url="file://E:/vue/src/core/util/debug.ts" />
        <item url="file://E:/vue/src/core/util/env.ts" />
        <item url="file://E:/vue/src/core/util/error.ts" />
        <item url="file://E:/vue/src/core/util/index.ts" />
        <item url="file://E:/vue/src/core/util/lang.ts" />
        <item url="file://E:/vue/src/core/util/next-tick.ts" />
        <item url="file://E:/vue/src/core/util/options.ts" />
        <item url="file://E:/vue/src/core/util/perf.ts" />
        <item url="file://E:/vue/src/core/util/props.ts" />
        <item url="file://E:/vue/src/core/vdom/create-component.ts" />
        <item url="file://E:/vue/src/core/vdom/create-element.ts" />
        <item url="file://E:/vue/src/core/vdom/create-functional-component.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/extract-props.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/get-first-component-child.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/index.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/is-async-placeholder.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/merge-hook.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/normalize-children.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/normalize-scoped-slots.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/resolve-async-component.ts" />
        <item url="file://E:/vue/src/core/vdom/helpers/update-listeners.ts" />
        <item url="file://E:/vue/src/core/vdom/modules/directives.ts" />
        <item url="file://E:/vue/src/core/vdom/modules/index.ts" />
        <item url="file://E:/vue/src/core/vdom/modules/template-ref.ts" />
        <item url="file://E:/vue/src/core/vdom/patch.ts" />
        <item url="file://E:/vue/src/core/vdom/vnode.ts" />
      </sourceFilesUrls>
    </properties>
    <CLASSES>
      <root url="file://E:/vue/src/core/components/index.ts" />
      <root url="file://E:/vue/src/core/components/keep-alive.ts" />
      <root url="file://E:/vue/src/core/config.ts" />
      <root url="file://E:/vue/src/core/global-api/assets.ts" />
      <root url="file://E:/vue/src/core/global-api/extend.ts" />
      <root url="file://E:/vue/src/core/global-api/index.ts" />
      <root url="file://E:/vue/src/core/global-api/mixin.ts" />
      <root url="file://E:/vue/src/core/global-api/use.ts" />
      <root url="file://E:/vue/src/core/index.ts" />
      <root url="file://E:/vue/src/core/instance/events.ts" />
      <root url="file://E:/vue/src/core/instance/index.ts" />
      <root url="file://E:/vue/src/core/instance/init.ts" />
      <root url="file://E:/vue/src/core/instance/inject.ts" />
      <root url="file://E:/vue/src/core/instance/lifecycle.ts" />
      <root url="file://E:/vue/src/core/instance/proxy.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/bind-dynamic-keys.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/bind-object-listeners.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/bind-object-props.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/check-keycodes.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/index.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/render-list.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/render-slot.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/render-static.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/resolve-filter.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/resolve-scoped-slots.ts" />
      <root url="file://E:/vue/src/core/instance/render-helpers/resolve-slots.ts" />
      <root url="file://E:/vue/src/core/instance/render.ts" />
      <root url="file://E:/vue/src/core/instance/state.ts" />
      <root url="file://E:/vue/src/core/observer/array.ts" />
      <root url="file://E:/vue/src/core/observer/dep.ts" />
      <root url="file://E:/vue/src/core/observer/index.ts" />
      <root url="file://E:/vue/src/core/observer/scheduler.ts" />
      <root url="file://E:/vue/src/core/observer/traverse.ts" />
      <root url="file://E:/vue/src/core/observer/watcher.ts" />
      <root url="file://E:/vue/src/core/util/debug.ts" />
      <root url="file://E:/vue/src/core/util/env.ts" />
      <root url="file://E:/vue/src/core/util/error.ts" />
      <root url="file://E:/vue/src/core/util/index.ts" />
      <root url="file://E:/vue/src/core/util/lang.ts" />
      <root url="file://E:/vue/src/core/util/next-tick.ts" />
      <root url="file://E:/vue/src/core/util/options.ts" />
      <root url="file://E:/vue/src/core/util/perf.ts" />
      <root url="file://E:/vue/src/core/util/props.ts" />
      <root url="file://E:/vue/src/core/vdom/create-component.ts" />
      <root url="file://E:/vue/src/core/vdom/create-element.ts" />
      <root url="file://E:/vue/src/core/vdom/create-functional-component.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/extract-props.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/get-first-component-child.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/index.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/is-async-placeholder.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/merge-hook.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/normalize-children.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/normalize-scoped-slots.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/resolve-async-component.ts" />
      <root url="file://E:/vue/src/core/vdom/helpers/update-listeners.ts" />
      <root url="file://E:/vue/src/core/vdom/modules/directives.ts" />
      <root url="file://E:/vue/src/core/vdom/modules/index.ts" />
      <root url="file://E:/vue/src/core/vdom/modules/template-ref.ts" />
      <root url="file://E:/vue/src/core/vdom/patch.ts" />
      <root url="file://E:/vue/src/core/vdom/vnode.ts" />
    </CLASSES>
    <SOURCES />
  </library>
</component>
package-lock.json
@@ -9,16 +9,17 @@
            "version": "2.1.1",
            "license": "MIT",
            "dependencies": {
                "@element-plus/icons-vue": "^2.0.3",
                "@element-plus/icons-vue": "^2.0.6",
                "@wangeditor/editor": "^5.1.1",
                "axios": "^0.27.2",
                "countup.js": "^2.2.0",
                "cropperjs": "^1.5.12",
                "echarts": "^5.3.2",
                "echarts": "^5.3.3",
                "echarts-gl": "^2.0.9",
                "echarts-wordcloud": "^2.0.0",
                "element-plus": "^2.2.2",
                "js-cookie": "^3.0.1",
                "json-bigint": "^1.0.0",
                "jsplumb": "^2.15.6",
                "mitt": "^3.0.0",
                "nprogress": "^0.2.0",
@@ -35,6 +36,7 @@
                "vue-router": "^4.0.15"
            },
            "devDependencies": {
                "@types/json-bigint": "^1.0.1",
                "@types/node": "^17.0.39",
                "@types/nprogress": "^0.2.0",
                "@types/sortablejs": "^1.13.0",
@@ -88,9 +90,9 @@
            }
        },
        "node_modules/@element-plus/icons-vue": {
            "version": "2.0.3",
            "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.0.3.tgz",
            "integrity": "sha512-dI9hazWIJF5AXsFDWLsdGqVIQMJ5Kq70fw1RScuMW6+UNqfJpRYFOqhya8RHpjajIZZnQx260Ll9AjTcu2HSOA==",
            "version": "2.0.6",
            "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz",
            "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==",
            "peerDependencies": {
                "vue": "^3.2.0"
            }
@@ -485,6 +487,12 @@
            "version": "0.3.3",
            "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.3.tgz",
            "integrity": "sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q=="
        },
        "node_modules/@types/json-bigint": {
            "version": "1.0.1",
            "resolved": "https://registry.npmmirror.com/@types/json-bigint/-/json-bigint-1.0.1.tgz",
            "integrity": "sha512-zpchZLNsNuzJHi6v64UBoFWAvQlPhch7XAi36FkH6tL1bbbmimIF+cS7vwkzY4u5RaSWMoflQfu+TshMPPw8uw==",
            "dev": true
        },
        "node_modules/@types/json-schema": {
            "version": "7.0.11",
@@ -1413,6 +1421,14 @@
            "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
            "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA=="
        },
        "node_modules/bignumber.js": {
            "version": "9.0.2",
            "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.0.2.tgz",
            "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==",
            "engines": {
                "node": "*"
            }
        },
        "node_modules/binary-extensions": {
            "version": "2.2.0",
            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -1773,12 +1789,12 @@
            }
        },
        "node_modules/echarts": {
            "version": "5.3.2",
            "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz",
            "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==",
            "version": "5.3.3",
            "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz",
            "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==",
            "dependencies": {
                "tslib": "2.3.0",
                "zrender": "5.3.1"
                "zrender": "5.3.2"
            }
        },
        "node_modules/echarts-gl": {
@@ -3021,6 +3037,14 @@
            },
            "bin": {
                "js-yaml": "bin/js-yaml.js"
            }
        },
        "node_modules/json-bigint": {
            "version": "1.0.0",
            "resolved": "https://registry.npmmirror.com/json-bigint/-/json-bigint-1.0.0.tgz",
            "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
            "dependencies": {
                "bignumber.js": "^9.0.0"
            }
        },
        "node_modules/json-parse-even-better-errors": {
@@ -4501,9 +4525,9 @@
            "dev": true
        },
        "node_modules/zrender": {
            "version": "5.3.1",
            "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz",
            "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==",
            "version": "5.3.2",
            "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz",
            "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==",
            "dependencies": {
                "tslib": "2.3.0"
            }
@@ -4529,9 +4553,9 @@
            "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
        },
        "@element-plus/icons-vue": {
            "version": "2.0.3",
            "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.0.3.tgz",
            "integrity": "sha512-dI9hazWIJF5AXsFDWLsdGqVIQMJ5Kq70fw1RScuMW6+UNqfJpRYFOqhya8RHpjajIZZnQx260Ll9AjTcu2HSOA==",
            "version": "2.0.6",
            "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz",
            "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==",
            "requires": {}
        },
        "@eslint/eslintrc": {
@@ -4838,6 +4862,12 @@
            "version": "0.3.3",
            "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.3.tgz",
            "integrity": "sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q=="
        },
        "@types/json-bigint": {
            "version": "1.0.1",
            "resolved": "https://registry.npmmirror.com/@types/json-bigint/-/json-bigint-1.0.1.tgz",
            "integrity": "sha512-zpchZLNsNuzJHi6v64UBoFWAvQlPhch7XAi36FkH6tL1bbbmimIF+cS7vwkzY4u5RaSWMoflQfu+TshMPPw8uw==",
            "dev": true
        },
        "@types/json-schema": {
            "version": "7.0.11",
@@ -5524,6 +5554,11 @@
            "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
            "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA=="
        },
        "bignumber.js": {
            "version": "9.0.2",
            "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.0.2.tgz",
            "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw=="
        },
        "binary-extensions": {
            "version": "2.2.0",
            "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -5793,12 +5828,12 @@
            "dev": true
        },
        "echarts": {
            "version": "5.3.2",
            "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz",
            "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==",
            "version": "5.3.3",
            "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz",
            "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==",
            "requires": {
                "tslib": "2.3.0",
                "zrender": "5.3.1"
                "zrender": "5.3.2"
            }
        },
        "echarts-gl": {
@@ -6662,6 +6697,14 @@
            "dev": true,
            "requires": {
                "argparse": "^2.0.1"
            }
        },
        "json-bigint": {
            "version": "1.0.0",
            "resolved": "https://registry.npmmirror.com/json-bigint/-/json-bigint-1.0.0.tgz",
            "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
            "requires": {
                "bignumber.js": "^9.0.0"
            }
        },
        "json-parse-even-better-errors": {
@@ -7705,9 +7748,9 @@
            "dev": true
        },
        "zrender": {
            "version": "5.3.1",
            "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz",
            "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==",
            "version": "5.3.2",
            "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz",
            "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==",
            "requires": {
                "tslib": "2.3.0"
            }
package.json
@@ -20,6 +20,7 @@
        "echarts-wordcloud": "^2.0.0",
        "element-plus": "^2.2.2",
        "js-cookie": "^3.0.1",
        "json-bigint": "^1.0.0",
        "jsplumb": "^2.15.6",
        "mitt": "^3.0.0",
        "nprogress": "^0.2.0",
@@ -36,6 +37,7 @@
        "vue-router": "^4.0.15"
    },
    "devDependencies": {
        "@types/json-bigint": "^1.0.1",
        "@types/node": "^17.0.39",
        "@types/nprogress": "^0.2.0",
        "@types/sortablejs": "^1.13.0",
src/api/doublePreventSystem/productionDevice/index.ts
文件名从 src/api/doubleProventSystem/productionDevice/index.ts 修改
@@ -30,5 +30,11 @@
                data:data
            });
        },
        getAllProductionDeviceList: () => {
            return request({
                url: `/prevent/device/select/listDevices`,
                method: 'post',
            });
        },
    }
}
src/api/doublePreventSystem/riskControlMeasure/index.ts
对比新文件
@@ -0,0 +1,34 @@
import request from '/@/utils/request'
export function riskControlMeasureApi() {
    return {
        getRiskControlMeasureList: (data: object) => {
            return request({
                url: `/prevent/riskControlMeasure/select/getRiskControlMeasurePage`,
                method: 'post',
                data:data
            });
        },
        addRiskControlMeasure: (data: object) => {
            return request({
                url: `/prevent/riskControlMeasure/insert/saveRiskControlMeasure`,
                method: 'post',
                data:data
            });
        },
        modRiskControlMeasure: (data: object) => {
            return request({
                url: `/prevent/riskControlMeasure/update/updateRiskControlMeasure`,
                method: 'post',
                data:data
            });
        },
        deleteRiskControlMeasure: (data: object) => {
            return request({
                url: `/prevent/riskControlMeasure/delete/deleteRiskControlMeasure`,
                method: 'post',
                data:data
            });
        },
    }
}
src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
对比新文件
@@ -0,0 +1,40 @@
import request from '/@/utils/request'
export function safetyRiskAnalyseUnitApi() {
    return {
        getSafetyRiskAnalyseUnitList: (data: object) => {
            return request({
                url: `/prevent/riskAnaUnit/select/getRiskUnitPage`,
                method: 'post',
                data:data
            });
        },
        addSafetyRiskAnalyseUnit: (data: object) => {
            return request({
                url: `/prevent/riskAnaUnit/insert/saveRiskAnaUnit`,
                method: 'post',
                data:data
            });
        },
        modSafetyRiskAnalyseUnit: (data: object) => {
            return request({
                url: `/prevent/riskAnaUnit/update/updateRiskAnaUnit`,
                method: 'post',
                data:data
            });
        },
        deleteSafetyRiskAnalyseUnit: (data: object) => {
            return request({
                url: `/prevent/riskAnaUnit/delete/deleteRiskAnaUnit`,
                method: 'post',
                data:data
            });
        },
        getAllSafetyRiskAnalyseUnitList: () => {
            return request({
                url: `/prevent/riskEvent/select/listRiskUnits`,
                method: 'post',
            });
        },
    }
}
src/api/doublePreventSystem/safetyRiskEvent/index.ts
对比新文件
@@ -0,0 +1,34 @@
import request from '/@/utils/request'
export function safetyRiskEventApi() {
    return {
        getSafetyRiskEventList: (data: object) => {
            return request({
                url: `/prevent/riskEvent/select/getRiskEventPage`,
                method: 'post',
                data:data
            });
        },
        addSafetyRiskEvent: (data: object) => {
            return request({
                url: `/prevent/riskEvent/insert/saveRiskEvent`,
                method: 'post',
                data:data
            });
        },
        modSafetyRiskEvent: (data: object) => {
            return request({
                url: `/prevent/riskEvent/update/updateRiskEvent`,
                method: 'post',
                data:data
            });
        },
        deleteSafetyRiskEvent: (data: object) => {
            return request({
                url: `/prevent/riskEvent/delete/deleteRiskEvent`,
                method: 'post',
                data:data
            });
        },
    }
}
src/api/menu/index.ts
@@ -35,5 +35,11 @@
                data:value,
            });
        },
        getProjectList: () => {
            return request({
                url: `/project/list`,
                method: 'post',
            });
        },
    };
}
src/api/user/index.ts
@@ -23,5 +23,11 @@
                data:data
            });
        },
        getUserLByDepartment: (depId : number | null) => {
            return request({
                url: `/account/dep/list?depId=${depId}`,
                method: 'get',
            });
        },
    };
}
src/utils/request.ts
@@ -3,7 +3,9 @@
import { Session } from '/@/utils/storage';
import {useUserInfo} from "/@/stores/userInfo";
import {storeToRefs} from "pinia";
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,
@@ -28,6 +30,22 @@
    }
);
service.defaults.transformResponse = [
    function(data) {
        try {
            // 正常同通过return JSON.parse(data)对数据进行转换
            // 但是转化完成的数据可能超出安全数据长度
            // 因此我们定制使用第三包来转化
            return JSONbig.parse(data)
        } catch (err) {
            console.log(err);
            // 转换失败返回一个空对象
            return {}
        }
    }
]
service.interceptors.response.use(
    (response) => {
@@ -37,7 +55,7 @@
            window.location.href = '/'
            return Promise.reject(response)
        }
        // if(response.data.code && response.data.code !== '200'){
        // if(response.data.code && response.data.code !== '200'){
            return Promise.resolve(response)
        // }
        // Session.clear()
src/views/doublePreventSystem/riskLevelManage/productionDevice/components/productionDeviceDialog.vue
@@ -1,34 +1,51 @@
<template>
    <div class="system-add-menu-container">
        <el-dialog :title="title" v-model="isShowProductionDeviceDialog" width="769px">
            <el-form :model="ruleForm" size="default" label-width="80px">
        <el-dialog :title="title" v-model="isShowProductionDeviceDialog" width="600px">
            <el-form :model="productionDeviceForm" :rules="productionDeviceFormRules" ref="productionDeviceFormRef" size="default" label-width="120px">
                <el-row :gutter="35">
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="生产装置名称">
                            <el-input v-model="roleForm.produceDeviceName" 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="roleForm.depName" placeholder="请选择所属部门" clearable filterable></el-select>
                    <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-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="风险等级">
                            <el-select v-model="roleForm.riskLevel" placeholder="请选择风险等级"clearable filterable></el-select>
                        <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"
                            >
                            </el-cascader>
<!--                            <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="区域位置">
                            <el-input v-model="roleForm.location" type="textarea" placeholder="请输入区域位置" maxlength="150"></el-input>
                        <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>
                        </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-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">确 实</el-button>
                    <el-button @click="isShowProductionDeviceDialog = !isShowProductionDeviceDialog" size="default">取 消</el-button>
                    <el-button type="primary" @click="submitProductionDevice" size="default">确 实</el-button>
                </span>
            </template>
        </el-dialog>
@@ -40,31 +57,125 @@
        isShowProductionDeviceDialog:Boolean,
        productionDeviceForm:{
            produceDeviceName: string,
            depName: number | null,
            depId: number | null,
            riskLevel: number | null,
            location: string,
        }
        },
        title: string,
        departmentList: [],
        levelList: Array<levelListState>,
        productionDeviceFormRules:{}
    }
    import { reactive, toRefs } from 'vue'
    interface levelListState {
    }
    import { reactive, toRefs, ref} from 'vue'
    import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice';
    import { ElMessage } from 'element-plus';
    export default {
        name: "productionDeviceDialog",
        setup() {
        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: {
                    produceDeviceName: '',
                    depName: null,
                    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' },
                    ],
                }
            });
            const openProductionDeviceDialog = () => {
            //打开模态框
            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
                            });
                            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,
            };
        }
@@ -72,5 +183,7 @@
</script>
<style scoped>
.input-length{
    width:85%;
}
</style>
src/views/doublePreventSystem/riskLevelManage/productionDevice/index.vue
@@ -2,7 +2,29 @@
    <div class="system-role-container">
        <el-card shadow="hover">
            <div class="system-user-search mb15">
                <el-input size="default" placeholder="请输入角色名称" style="max-width: 180px"> </el-input>
                <div class="basic-search">
                    <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>
                </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="productionDeviceData.params.depId"
                    >
                    </el-cascader>
                </div>
                <el-button size="default" type="primary" class="ml10" @click="handleSearch">
                    <el-icon>
                        <ele-Search />
@@ -21,22 +43,36 @@
                <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column>
                <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="depName" label="区域位置" show-overflow-tooltip></el-table-column>
                <el-table-column prop="status" 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="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 label="操作" width="150">
                    <template #default="scope">
                        <el-button size="small" text type="primary" @click="onOpenDialogRef('新增','')">新增</el-button>
                        <el-button size="small" text type="primary" @click="onOpenDialogRef('修改',scope.row)">修改</el-button>
                        <el-button size="small" text type="primary" @click="onTabelRowDel(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>
        </el-card>
        <productionDeviceDialog ref="productionDeviceDialogRef" @refreshRoleList="initRoleTableData"/>
        <productionDeviceDialog ref="productionDeviceDialogRef" @refreshProductionDevice ="initProductionDeviceTableData"/>
    </div>
</template>
@@ -44,7 +80,8 @@
    import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
    import { ElMessageBox, ElMessage } from 'element-plus';
    import productionDeviceDialog from './components/productionDeviceDialog.vue';
    import {productionDeviceApi} from "/@/api/doubleProventSystem/productionDevice";
    import {productionDeviceApi} from "/@/api/doublePreventSystem/productionDevice/index.ts";
    import { departmentApi } from '/@/api/department';
    // 定义接口来定义对象的类型
    interface TableData {
@@ -63,13 +100,21 @@
            params: {
                pageIndex: number;
                pageSize: number;
                riskLevel:number;
                status:number;
                depName:string;
                location:string;
                produceDeviceName:string;
                riskLevel: number | null;
                status: number;
                depId: number | null;
                location: string | null;
                produceDeviceName: string | null;
            };
        };
        departmentList:Array<DepartmentState>;
        levelList:Array<levelListState>;
    }
    interface levelListState {
    }
    interface DepartmentState {
    }
    export default defineComponent({
@@ -85,19 +130,22 @@
                    params: {
                        pageIndex: 1,
                        pageSize: 10,
                        riskLevel:1,
                        status:1,
                        depName:"",
                        location:"",
                        produceDeviceName:""
                        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',
@@ -105,18 +153,44 @@
                    })
                }
            };
            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);
                productionDeviceDialogRef.value.openProductionDeviceDialog(type, value, state.departmentList);
            };
            // 删除角色
            const onRowDel = (row: any) => {
                ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.roleName}”,是否继续?`, '提示', {
            const onDelProductionDevice = (row: any) => {
                ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.produceDeviceName}”,是否继续?`, '提示', {
                    confirmButtonText: '确认',
                    cancelButtonText: '取消',
                    type: 'warning',
                }).then(() => {
                    ElMessage.success('删除成功');
                }).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 = () => {
@@ -125,20 +199,23 @@
            // 分页改变
            const onHandleSizeChange = (val: number) => {
                state.productionDeviceData.params.pageSize = val;
                initProductionDeviceTableData()
            };
            // 分页改变
            const onHandleCurrentChange = (val: number) => {
                state.productionDeviceData.params.pageIndex = val;
                initProductionDeviceTableData()
            };
            // 页面加载时
            onMounted(() => {
                initProductionDeviceTableData();
                getDepartmentData();
            });
            return {
                onRowDel,
                handleSearch,
                onOpenDialogRef,
                onHandleSizeChange,
                onDelProductionDevice,
                onHandleCurrentChange,
                productionDeviceDialog,
                productionDeviceDialogRef,
@@ -148,3 +225,10 @@
        },
    });
</script>
<style scoped>
.basic-search{
    display:inline-block;
    padding-left: 10px;
}
</style>
src/views/doublePreventSystem/riskLevelManage/riskControlManage/index.vue
文件已删除
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/components/riskControlMeasureDialog.vue
对比新文件
@@ -0,0 +1,198 @@
<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-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-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-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>
            </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 {
    }
    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' },
                    ],
                }
            });
            //打开模态框
            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 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
                            });
                            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,
            };
        }
    }
</script>
<style scoped>
.input-length{
    width:85%;
}
</style>
src/views/doublePreventSystem/riskLevelManage/riskControlMeasure/index.vue
对比新文件
@@ -0,0 +1,236 @@
<template>
    <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>
                    </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>
                <el-button size="default" type="primary" class="ml10" @click="handleSearch">
                    <el-icon>
                        <ele-Search />
                    </el-icon>
                    查询
                </el-button>
                <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="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 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="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>
        </el-card>
        <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';
    // 定义接口来定义对象的类型
    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;
            };
        };
        departmentList:Array<DepartmentState>;
        levelList:Array<levelListState>;
    }
    interface levelListState {
    }
    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
                    })
                }
            };
            //获取部门列表
            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: '取消',
                    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();
                getDepartmentData();
            });
            return {
                handleSearch,
                onOpenDialogRef,
                onHandleSizeChange,
                onDelRiskControlMeasure,
                onHandleCurrentChange,
                riskControlMeasureDialog,
                riskControlMeasureDialogRef,
                initRiskControlMeasureData,
                ...toRefs(state),
            };
        },
    });
</script>
<style scoped>
.basic-search{
    display:inline-block;
    padding-left: 10px;
}
</style>
src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/components/safetyRiskAnalyseUnitDialog.vue
对比新文件
@@ -0,0 +1,231 @@
<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-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-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-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-option
                                v-for="item in allProduceDeviceData"
                                :key="item.id"
                                :label="item.produceDeviceName"
                                :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="liableDepId">
                            <el-cascader
                                @change="achiveUserList"
                                :options="departmentList"
                                :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
                                placeholder="请选择部门"
                                clearable
                                filterable
                                style="width:85%"
                                v-model="safetyRiskAnalyseUnitForm.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="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>
            </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';
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: {
                    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,
                    };
                }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
                            });
                            state.isSafetyRiskAnalyseUnitDialog = false;
                            context.emit('refreshSafetyRiskAnalyseUnit');
                            }else{
                                ElMessage({
                                    type:'warning',
                                    message:res.data.msg
                                });
                            }
                        }
                    }else{
                        ElMessage({
                            type:'warning',
                            message:'请完善基本信息',
                        });
                    }
                })
            };
            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{
                    ElMessage({
                        type:'warning',
                        message:res.data.msg
                    });
                }
            }
            return{
                ...toRefs(state),
                achiveUserList,
                safetyRiskAnalyseUnitFormRef,
                submitSafetyRiskAnalyseUnitDialog,
                openSafetyRiskAnalyseUnitDialog,
            };
        }
    }
</script>
<style scoped>
.input-length{
    width:85%;
}
</style>
src/views/doublePreventSystem/riskLevelManage/safetyRiskAnalyseUnit/index.vue
@@ -1,13 +1,286 @@
<template>
    <div>2</div>
    <div class="system-role-container">
        <el-card shadow="hover">
            <div class="system-user-search mb15">
                <div class="basic-search">
                    <span>责任部门:</span>
                    <el-cascader
                        @change="achiveUserList"
                        :options="departmentList"
                        :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
                        placeholder="责任部门"
                        clearable
                        filterable
                        v-model="safetyRiskAnalyseUnitData.params.liableDep"
                        class="unit-input"
                    >
                    </el-cascader>
                </div>
                <div class="basic-search">
                    <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>
                </div>
                <div class="basic-search">
                    <span>单元名称:</span>
                    <el-input v-model="safetyRiskAnalyseUnitData.params.riskUnitName" clearable filterable class="unit-input" placeholder="单元名称">
                    </el-input>
                </div>
                <el-button size="default" type="primary" class="ml10" @click="handleSearch">
                    <el-icon>
                        <ele-Search />
                    </el-icon>
                    查询
                </el-button>
                <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增','')">
                    <el-icon>
                        <ele-FolderAdd />
                    </el-icon>
                    新增单元
                </el-button>
            </div>
            <el-table :data="safetyRiskAnalyseUnitData.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="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 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="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>
        </el-card>
        <safetyRiskAnalyseUnitDialog ref="safetyRiskAnalyseUnitDialogRef" @refreshSafetyRiskAnalyseUnit ="initSafetyRiskAnalyseUnitData"/>
    </div>
</template>
<script>
    export default {
        name: "index"
<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';
    // 定义接口来定义对象的类型
    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 {
    }
    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
                    });
                }
            };
            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: '取消',
                    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,
                achiveUserList,
                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>
src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/components/safetyRiskEventDialog.vue
对比新文件
@@ -0,0 +1,154 @@
<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-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"
                                ></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-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>
            </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' },
                    ],
                }
            });
            //打开模态框
            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
                            });
                            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,
            };
        }
    }
</script>
<style scoped>
.input-length{
    width:85%;
}
</style>
src/views/doublePreventSystem/riskLevelManage/safetyRiskEvent/index.vue
@@ -1,13 +1,241 @@
<template>
    <div>3</div>
    <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="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>
                </div>
                <div class="basic-search">
                    <span>安全风险事件名称:</span>
                    <el-input v-model="safetyRiskEventData.params.riskEventName" class="unit-input" placeholder="安全风险事件名称">
                    </el-input>
                </div>
                <el-button size="default" type="primary" class="ml10" @click="handleSearch">
                    <el-icon>
                        <ele-Search />
                    </el-icon>
                    查询
                </el-button>
                <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%">
                <el-table-column type="index" label="序号" width="60" />
                <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 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="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>
        </el-card>
        <safetyRiskEventDialog ref="safetyRiskEventDialogRef" @refreshSafetyRiskEvent ="initSafetyRiskEventData"/>
    </div>
</template>
<script>
    export default {
        name: "index"
<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 { 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;
            };
        };
        departmentList:Array<DepartmentState>;
        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
                    })
                }
            };
            // 获取安全风险分析单元数据
            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: '取消',
                    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();
            }
            // 分页改变
            const onHandleSizeChange = (val: number) => {
                state.safetyRiskEventData.params.pageSize = val;
                initSafetyRiskEventData();
            };
            // 分页改变
            const onHandleCurrentChange = (val: number) => {
                state.safetyRiskEventData.params.pageIndex = val;
                initSafetyRiskEventData();
            };
            // 页面加载时
            onMounted(() => {
                getAllSafetyRiskEventData();
                initSafetyRiskEventData();
                getDepartmentData();
            });
            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>
src/views/homeMenu/homeMenu.vue
@@ -94,7 +94,7 @@
            Session.set('projectId',value)
            userInfos.value.projectId = value
            await initBackEndControlRoutes();
            router.push('/layoutPage')
            router.push('/home')
        };
        //点击进入特殊作业
        const toSpecialWorkSys = () => {
src/views/loginPage/component/accountLogin.vue
@@ -66,8 +66,8 @@
        const state = reactive({
            isShowPassword: false,
            ruleForm: {
                username: 'admin',
                password: '123456',
                username: '',
                password: '',
            },
            loading: {
                signIn: false,
src/views/system/menu/index.vue
@@ -146,6 +146,20 @@
                    })
                }
            };
            const getProjectList = async () => {
                let res = await useMenuApi().getProjectList()
                if(res.data.code === '200'){
                    state.menuTableData = res.data.data
                    if(Session.get('projectId') == state.projectId) await initBackEndControlRoutes()
                }else{
                    ElMessage({
                        type:'warning',
                        message:res.data.msg
                    })
                }
            };
            onMounted( () => {
                getMenuList()
            });
yarn.lock
文件太大