From 61aa46c5c464eb3c2b6674173cd854e1c9afd7ae Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期五, 19 八月 2022 17:08:15 +0800
Subject: [PATCH] bug

---
 src/views/specialWorkSystem/workApplyManage/myJobApply/index.vue                                    | 1502 +++++++++---------
 src/utils/request.ts                                                                                |   32 
 src/views/safeKnowledge/bmgz/index.vue                                                              |   43 
 src/layout/routerView/link.vue                                                                      |   84 
 .env.development                                                                                    |    4 
 /dev/null                                                                                           |    9 
 src/views/specialWorkSystem/workFlow/approveRule/index.vue                                          |   46 
 src/views/system/menu/index.vue                                                                     |    1 
 src/views/specialWorkSystem/workFlow/approveBasic/index.vue                                         |   30 
 .idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50_[Default_Changelist]/shelved.patch | 2459 +++++++++++++++++++++++++++++
 .idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50__Default_Changelist_.xml           |    9 
 src/api/specialWorkSystem/approveRule/index.ts                                                      |    2 
 src/views/specialWorkSystem/workApplyManage/workTicket/index.vue                                    |  576 +++---
 src/views/loginPage/component/accountLogin.vue                                                      |   19 
 src/views/outLink/index.vue                                                                         |   64 
 src/App.vue                                                                                         |    1 
 src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue                          |   19 
 17 files changed, 3,701 insertions(+), 1,199 deletions(-)

diff --git a/.env.development b/.env.development
index 9bd6078..e88bf91 100644
--- a/.env.development
+++ b/.env.development
@@ -1,10 +1,10 @@
 # 本地环境
 ENV = 'development'
 
-#VITE_API_URL = 'http://192.168.0.35:8008'
+VITE_API_URL = 'http://192.168.0.35:8008'
 #李宇飞接口地址
 
-VITE_API_URL = 'http://192.168.0.50:8008'
+#VITE_API_URL = 'http://192.168.0.50:8008'
 #张凤接口地址
 
 #VITE_API_URL = 'http://192.168.0.29:8008'
diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_\133Default_Changelist\135/companyLogo.png" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_\133Default_Changelist\135/companyLogo.png"
deleted file mode 100644
index 0f9f2d1..0000000
--- "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_\133Default_Changelist\135/companyLogo.png"
+++ /dev/null
Binary files differ
diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_\133Default_Changelist\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_\133Default_Changelist\135/shelved.patch"
deleted file mode 100644
index 7be0f81..0000000
--- "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_\133Default_Changelist\135/shelved.patch"
+++ /dev/null
@@ -1,233 +0,0 @@
-Index: src/layout/navBars/breadcrumb/user.vue
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><template>\r\n    <div class=\"layout-navbars-breadcrumb-user pr15\" :style=\"{ flex: layoutUserFlexNum }\">\r\n        <div class=\"logo\">\r\n            <img src=\"../../../assets/menu/companyLogo.jpg\" />\r\n            <span style=\"font-size: 16px; color: #333; font-weight: bolder\"> | {{ systemName }}</span>\r\n        </div>\r\n        <div style=\"display: flex;align-items:center;padding-right: 5px\">\r\n        <div @click=\"backToMenu()\" class=\"backBtn\">返回首页</div>\r\n        <el-dropdown :show-timeout=\"70\" :hide-timeout=\"50\" trigger=\"click\" @command=\"onComponentSizeChange\">\r\n            <div class=\"layout-navbars-breadcrumb-user-icon\">\r\n                <i class=\"iconfont icon-ziti\" :title=\"$t('message.user.title0')\"></i>\r\n            </div>\r\n            <template #dropdown>\r\n                <el-dropdown-menu>\r\n                    <el-dropdown-item command=\"large\" :disabled=\"disabledSize === 'large'\">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>\r\n                    <el-dropdown-item command=\"default\" :disabled=\"disabledSize === 'default'\">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>\r\n                    <el-dropdown-item command=\"small\" :disabled=\"disabledSize === 'small'\">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>\r\n                </el-dropdown-menu>\r\n            </template>\r\n        </el-dropdown>\r\n<!--        <el-dropdown :show-timeout=\"70\" :hide-timeout=\"50\" trigger=\"click\" @command=\"onLanguageChange\">-->\r\n<!--            <div class=\"layout-navbars-breadcrumb-user-icon\">-->\r\n<!--                <i class=\"iconfont\" :class=\"disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'\" :title=\"$t('message.user.title1')\"></i>-->\r\n<!--            </div>-->\r\n<!--            <template #dropdown>-->\r\n<!--                <el-dropdown-menu>-->\r\n<!--                    <el-dropdown-item command=\"zh-cn\" :disabled=\"disabledI18n === 'zh-cn'\">简体中文</el-dropdown-item>-->\r\n<!--                    <el-dropdown-item command=\"en\" :disabled=\"disabledI18n === 'en'\">English</el-dropdown-item>-->\r\n<!--                    <el-dropdown-item command=\"zh-tw\" :disabled=\"disabledI18n === 'zh-tw'\">繁體中文</el-dropdown-item>-->\r\n<!--                </el-dropdown-menu>-->\r\n<!--            </template>-->\r\n<!--        </el-dropdown>-->\r\n<!--        <div class=\"layout-navbars-breadcrumb-user-icon\" @click=\"onSearchClick\">-->\r\n<!--            <el-icon :title=\"$t('message.user.title2')\">-->\r\n<!--                <ele-Search />-->\r\n<!--            </el-icon>-->\r\n<!--        </div>-->\r\n        <!--        <div class=\"layout-navbars-breadcrumb-user-icon\" @click=\"onLayoutSetingClick\">-->\r\n        <!--            <i class=\"icon-skin iconfont\" :title=\"$t('message.user.title3')\"></i>-->\r\n        <!--        </div>-->\r\n        <!--        <div class=\"layout-navbars-breadcrumb-user-icon\">-->\r\n        <!--            <el-popover placement=\"bottom\" trigger=\"click\" transition=\"el-zoom-in-top\" :width=\"300\" :persistent=\"false\">-->\r\n        <!--                <template #reference>-->\r\n        <!--                    <el-badge :is-dot=\"true\">-->\r\n        <!--                        <el-icon :title=\"$t('message.user.title4')\">-->\r\n        <!--                            <ele-Bell />-->\r\n        <!--                        </el-icon>-->\r\n        <!--                    </el-badge>-->\r\n        <!--                </template>-->\r\n        <!--                <template #default>-->\r\n        <!--                    <UserNews />-->\r\n        <!--                </template>-->\r\n        <!--            </el-popover>-->\r\n        <!--        </div>-->\r\n        <div class=\"layout-navbars-breadcrumb-user-icon mr10\" @click=\"onScreenfullClick\">\r\n            <i class=\"iconfont\" :title=\"isScreenfull ? $t('message.user.title6') : $t('message.user.title5')\" :class=\"!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'\"></i>\r\n        </div>\r\n        <el-dropdown :show-timeout=\"70\" :hide-timeout=\"50\" @command=\"onHandleCommandClick\">\r\n            <span class=\"layout-navbars-breadcrumb-user-link\">\r\n                <img :src=\"userInfos.photo\" class=\"layout-navbars-breadcrumb-user-link-photo mr5\" />\r\n                {{ userInfos.userName }}\r\n                <el-icon class=\"el-icon--right\">\r\n                    <ele-ArrowDown />\r\n                </el-icon>\r\n            </span>\r\n            <template #dropdown>\r\n                <el-dropdown-menu>\r\n                    <el-dropdown-item command=\"/homeMenu\">{{ $t('message.user.dropdown1') }}</el-dropdown-item>\r\n                    <!--                    <el-dropdown-item command=\"wareHouse\">{{ $t('message.user.dropdown6') }}</el-dropdown-item>-->\r\n<!--                    <el-dropdown-item command=\"/personal\">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->\r\n                    <!--\t\t\t\t\t<el-dropdown-item command=\"/404\">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->\r\n                    <!--\t\t\t\t\t<el-dropdown-item command=\"/401\">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->\r\n                    <el-dropdown-item divided command=\"logOut\">{{ $t('message.user.dropdown5') }}</el-dropdown-item>\r\n                </el-dropdown-menu>\r\n            </template>\r\n        </el-dropdown>\r\n        <Search ref=\"searchRef\" />\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { ref, getCurrentInstance, computed, reactive, toRefs, onMounted, defineComponent } from 'vue';\r\nimport { useRouter } from 'vue-router';\r\nimport { ElMessageBox, ElMessage } from 'element-plus';\r\nimport screenfull from 'screenfull';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useUserInfo } from '/@/stores/userInfo';\r\nimport { useThemeConfig } from '/@/stores/themeConfig';\r\nimport other from '/@/utils/other';\r\nimport { Session, Local } from '/@/utils/storage';\r\nimport UserNews from '/@/layout/navBars/breadcrumb/userNews.vue';\r\nimport Search from '/@/layout/navBars/breadcrumb/search.vue';\r\nimport { useLoginApi } from '/@/api/login';\r\nimport { useMenuApi } from '/@/api/systemManage/menu/index';\r\n\r\nconst menuApi = useMenuApi();\r\nimport { backEndComponent, getBackEndControlRoutes, initBackEndControlRoutes, setAddRoute, setFilterMenuAndCacheTagsViewRoutes } from '../../../router/backEnd';\r\nimport { NextLoading } from '/@/utils/loading';\r\nimport { useRequestOldRoutes } from '/@/stores/requestOldRoutes';\r\nimport { dynamicRoutes } from '/@/router/route';\r\n\r\nexport default defineComponent({\r\n    name: 'layoutBreadcrumbUser',\r\n    components: { UserNews, Search },\r\n    setup() {\r\n        const { t } = useI18n();\r\n        const { proxy } = <any>getCurrentInstance();\r\n        const router = useRouter();\r\n        const stores = useUserInfo();\r\n        const storesThemeConfig = useThemeConfig();\r\n        const { userInfos } = storeToRefs(stores);\r\n        const { themeConfig } = storeToRefs(storesThemeConfig);\r\n        const searchRef = ref();\r\n        const state = reactive({\r\n            isScreenfull: false,\r\n            disabledI18n: 'zh-cn',\r\n            disabledSize: 'large',\r\n            systemName: ''\r\n        });\r\n        // 设置分割样式\r\n        const layoutUserFlexNum = computed(() => {\r\n            let num: string | number = '';\r\n            const { layout, isClassicSplitMenu } = themeConfig.value;\r\n            const layoutArr: string[] = ['defaults', 'columns'];\r\n            if (layoutArr.includes(layout) || (layout === 'classic' && !isClassicSplitMenu)) num = '1';\r\n            else num = '';\r\n            return num;\r\n        });\r\n        // 全屏点击时\r\n        const onScreenfullClick = () => {\r\n            if (!screenfull.isEnabled) {\r\n                ElMessage.warning('暂不不支持全屏');\r\n                return false;\r\n            }\r\n            screenfull.toggle();\r\n            screenfull.on('change', () => {\r\n                if (screenfull.isFullscreen) state.isScreenfull = true;\r\n                else state.isScreenfull = false;\r\n            });\r\n        };\r\n        // 布局配置 icon 点击时\r\n        const onLayoutSetingClick = () => {\r\n            proxy.mittBus.emit('openSetingsDrawer');\r\n        };\r\n        // 下拉菜单点击时\r\n        const onHandleCommandClick = (path: string) => {\r\n            if (path === 'logOut') {\r\n                ElMessageBox({\r\n                    closeOnClickModal: false,\r\n                    closeOnPressEscape: false,\r\n                    title: t('message.user.logOutTitle'),\r\n                    message: t('message.user.logOutMessage'),\r\n                    showCancelButton: true,\r\n                    confirmButtonText: t('message.user.logOutConfirm'),\r\n                    cancelButtonText: t('message.user.logOutCancel'),\r\n                    buttonSize: 'default',\r\n                    beforeClose: (action, instance, done) => {\r\n                        if (action === 'confirm') {\r\n                            instance.confirmButtonLoading = true;\r\n                            instance.confirmButtonText = t('message.user.logOutExit');\r\n                            setTimeout(() => {\r\n                                done();\r\n                                setTimeout(() => {\r\n                                    instance.confirmButtonLoading = false;\r\n                                }, 300);\r\n                            }, 700);\r\n                        } else {\r\n                            done();\r\n                        }\r\n                    }\r\n                })\r\n                    .then(async () => {\r\n                        let res = await useLoginApi().signOut();\r\n                        if (res.data.code === '200') {\r\n                            Session.clear(); // 清除缓存/token等\r\n                            // 使用 reload 时,不需要调用 resetRoute() 重置路由\r\n                            window.location.reload();\r\n                        } else {\r\n                            ElMessage({\r\n                                type: 'warning',\r\n                                message: res.data.msg\r\n                            });\r\n                        }\r\n                    })\r\n                    .catch(() => {});\r\n            } else if (path === 'wareHouse') {\r\n                window.open('https://gitee.com/lyt-top/vue-next-admin');\r\n            } else {\r\n                router.push(path);\r\n            }\r\n        };\r\n        // 菜单搜索点击\r\n        const onSearchClick = () => {\r\n            searchRef.value.openSearch();\r\n        };\r\n        // 组件大小改变\r\n        const onComponentSizeChange = (size: string) => {\r\n            Local.remove('themeConfig');\r\n            themeConfig.value.globalComponentSize = size;\r\n            Local.set('themeConfig', themeConfig.value);\r\n            initComponentSize();\r\n            window.location.reload();\r\n        };\r\n        // 语言切换\r\n        const onLanguageChange = (lang: string) => {\r\n            Local.remove('themeConfig');\r\n            themeConfig.value.globalI18n = lang;\r\n            Local.set('themeConfig', themeConfig.value);\r\n            proxy.$i18n.locale = lang;\r\n            initI18n();\r\n            other.useTitle();\r\n        };\r\n        // 设置 element plus 组件的国际化\r\n        const setI18nConfig = (locale: string) => {\r\n            proxy.mittBus.emit('getI18nConfig', proxy.$i18n.messages[locale]);\r\n        };\r\n        // 初始化言语国际化\r\n        const initI18n = () => {\r\n            switch (Local.get('themeConfig').globalI18n) {\r\n                case 'zh-cn':\r\n                    state.disabledI18n = 'zh-cn';\r\n                    setI18nConfig('zh-cn');\r\n                    break;\r\n                case 'en':\r\n                    state.disabledI18n = 'en';\r\n                    setI18nConfig('en');\r\n                    break;\r\n                case 'zh-tw':\r\n                    state.disabledI18n = 'zh-tw';\r\n                    setI18nConfig('zh-tw');\r\n                    break;\r\n            }\r\n        };\r\n        // 初始化全局组件大小\r\n        const initComponentSize = () => {\r\n            switch (Local.get('themeConfig').globalComponentSize) {\r\n                case 'large':\r\n                    state.disabledSize = 'large';\r\n                    break;\r\n                case 'default':\r\n                    state.disabledSize = 'default';\r\n                    break;\r\n                case 'small':\r\n                    state.disabledSize = 'small';\r\n                    break;\r\n            }\r\n        };\r\n\r\n        const getSysName = async()=>{\r\n            if (window.nextLoading === undefined) NextLoading.start();\r\n            if (!Session.get('token')) return false;\r\n            const res = await menuApi.getMenuAdmin(Session.get('projectId') === null ? '' : Session.get('projectId'));\r\n            if(res.data.code === '200'){\r\n                state.systemName = res.data.data[1].project.projectName;\r\n                console.log(state.systemName)\r\n            }else{\r\n                console.log('有问题')\r\n            }\r\n        }\r\n        const backToMenu=()=>{\r\n            router.push({ path: 'homeMenu' })\r\n        }\r\n        // 页面加载时\r\n        onMounted(() => {\r\n            if (Local.get('themeConfig')) {\r\n                initI18n();\r\n                initComponentSize();\r\n            }\r\n            getSysName()\r\n        });\r\n        return {\r\n            userInfos,\r\n            backToMenu,\r\n            onLayoutSetingClick,\r\n            onHandleCommandClick,\r\n            onScreenfullClick,\r\n            onSearchClick,\r\n            onComponentSizeChange,\r\n            onLanguageChange,\r\n            searchRef,\r\n            layoutUserFlexNum,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.layout-navbars-breadcrumb-user {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n\r\n    .logo{\r\n        height: 50px;\r\n        padding: 5px 10px;\r\n        display: flex;\r\n        align-items: center;\r\n        overflow: hidden;\r\n        box-sizing: border-box;\r\n        img{\r\n            height: 100%;\r\n        }\r\n    }\r\n    &-link {\r\n        height: 100%;\r\n        display: flex;\r\n        align-items: center;\r\n        white-space: nowrap;\r\n        &-photo {\r\n            width: 25px;\r\n            height: 25px;\r\n            border-radius: 100%;\r\n        }\r\n    }\r\n    &-icon {\r\n        padding: 0 10px;\r\n        cursor: pointer;\r\n        color: var(--next-bg-topBarColor);\r\n        height: 50px;\r\n        line-height: 50px;\r\n        display: flex;\r\n        align-items: center;\r\n        &:hover {\r\n            background: var(--next-color-user-hover);\r\n            i {\r\n                display: inline-block;\r\n                animation: logoAnimation 0.3s ease-in-out;\r\n            }\r\n        }\r\n    }\r\n    ::v-deep(.el-dropdown) {\r\n        color: var(--next-bg-topBarColor);\r\n    }\r\n    ::v-deep(.el-badge) {\r\n        height: 40px;\r\n        line-height: 40px;\r\n        display: flex;\r\n        align-items: center;\r\n    }\r\n    ::v-deep(.el-badge__content.is-fixed) {\r\n        top: 12px;\r\n    }\r\n    .backBtn{\r\n        font-size: 16px;\r\n        cursor: pointer;\r\n        margin-right: 20px;\r\n\r\n        &:hover{\r\n            color: #409eff;\r\n            font-weight: bolder;\r\n        }\r\n    }\r\n}\r\n</style>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue
---- a/src/layout/navBars/breadcrumb/user.vue	(revision b37d9a1f4f39fb04f48a63d11d759c673e5f4d6a)
-+++ b/src/layout/navBars/breadcrumb/user.vue	(date 1660216734138)
-@@ -1,80 +1,80 @@
- <template>
-     <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
-         <div class="logo">
--            <img src="../../../assets/menu/companyLogo.jpg" />
-+            <img src="../../../assets/menu/companyLogo.png" />
-             <span style="font-size: 16px; color: #333; font-weight: bolder"> | {{ systemName }}</span>
-         </div>
--        <div style="display: flex;align-items:center;padding-right: 5px">
--        <div @click="backToMenu()" class="backBtn">返回首页</div>
--        <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
--            <div class="layout-navbars-breadcrumb-user-icon">
--                <i class="iconfont icon-ziti" :title="$t('message.user.title0')"></i>
--            </div>
--            <template #dropdown>
--                <el-dropdown-menu>
--                    <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>
--                    <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>
--                    <el-dropdown-item command="small" :disabled="disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
--                </el-dropdown-menu>
--            </template>
--        </el-dropdown>
--<!--        <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">-->
--<!--            <div class="layout-navbars-breadcrumb-user-icon">-->
--<!--                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>-->
--<!--            </div>-->
--<!--            <template #dropdown>-->
--<!--                <el-dropdown-menu>-->
--<!--                    <el-dropdown-item command="zh-cn" :disabled="disabledI18n === 'zh-cn'">简体中文</el-dropdown-item>-->
--<!--                    <el-dropdown-item command="en" :disabled="disabledI18n === 'en'">English</el-dropdown-item>-->
--<!--                    <el-dropdown-item command="zh-tw" :disabled="disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>-->
--<!--                </el-dropdown-menu>-->
--<!--            </template>-->
--<!--        </el-dropdown>-->
--<!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">-->
--<!--            <el-icon :title="$t('message.user.title2')">-->
--<!--                <ele-Search />-->
--<!--            </el-icon>-->
--<!--        </div>-->
--        <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">-->
--        <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
--        <!--        </div>-->
--        <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
--        <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
--        <!--                <template #reference>-->
--        <!--                    <el-badge :is-dot="true">-->
--        <!--                        <el-icon :title="$t('message.user.title4')">-->
--        <!--                            <ele-Bell />-->
--        <!--                        </el-icon>-->
--        <!--                    </el-badge>-->
--        <!--                </template>-->
--        <!--                <template #default>-->
--        <!--                    <UserNews />-->
--        <!--                </template>-->
--        <!--            </el-popover>-->
--        <!--        </div>-->
--        <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
--            <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
--        </div>
--        <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
--            <span class="layout-navbars-breadcrumb-user-link">
--                <img :src="userInfos.photo" class="layout-navbars-breadcrumb-user-link-photo mr5" />
--                {{ userInfos.userName }}
--                <el-icon class="el-icon--right">
--                    <ele-ArrowDown />
--                </el-icon>
--            </span>
--            <template #dropdown>
--                <el-dropdown-menu>
--                    <el-dropdown-item command="/homeMenu">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
--                    <!--                    <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item>-->
--<!--                    <el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->
--                    <!--					<el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->
--                    <!--					<el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->
--                    <el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
--                </el-dropdown-menu>
--            </template>
--        </el-dropdown>
--        <Search ref="searchRef" />
-+        <div style="display: flex; align-items: center; padding-right: 5px">
-+            <div @click="backToMenu()" class="backBtn">返回首页</div>
-+            <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
-+                <div class="layout-navbars-breadcrumb-user-icon">
-+                    <i class="iconfont icon-ziti" :title="$t('message.user.title0')"></i>
-+                </div>
-+                <template #dropdown>
-+                    <el-dropdown-menu>
-+                        <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>
-+                        <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>
-+                        <el-dropdown-item command="small" :disabled="disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
-+                    </el-dropdown-menu>
-+                </template>
-+            </el-dropdown>
-+            <!--        <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">-->
-+            <!--            <div class="layout-navbars-breadcrumb-user-icon">-->
-+            <!--                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>-->
-+            <!--            </div>-->
-+            <!--            <template #dropdown>-->
-+            <!--                <el-dropdown-menu>-->
-+            <!--                    <el-dropdown-item command="zh-cn" :disabled="disabledI18n === 'zh-cn'">简体中文</el-dropdown-item>-->
-+            <!--                    <el-dropdown-item command="en" :disabled="disabledI18n === 'en'">English</el-dropdown-item>-->
-+            <!--                    <el-dropdown-item command="zh-tw" :disabled="disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>-->
-+            <!--                </el-dropdown-menu>-->
-+            <!--            </template>-->
-+            <!--        </el-dropdown>-->
-+            <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">-->
-+            <!--            <el-icon :title="$t('message.user.title2')">-->
-+            <!--                <ele-Search />-->
-+            <!--            </el-icon>-->
-+            <!--        </div>-->
-+            <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">-->
-+            <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
-+            <!--        </div>-->
-+            <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
-+            <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
-+            <!--                <template #reference>-->
-+            <!--                    <el-badge :is-dot="true">-->
-+            <!--                        <el-icon :title="$t('message.user.title4')">-->
-+            <!--                            <ele-Bell />-->
-+            <!--                        </el-icon>-->
-+            <!--                    </el-badge>-->
-+            <!--                </template>-->
-+            <!--                <template #default>-->
-+            <!--                    <UserNews />-->
-+            <!--                </template>-->
-+            <!--            </el-popover>-->
-+            <!--        </div>-->
-+            <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
-+                <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
-+            </div>
-+            <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
-+                <span class="layout-navbars-breadcrumb-user-link">
-+                    <img :src="userInfos.photo" class="layout-navbars-breadcrumb-user-link-photo mr5" />
-+                    {{ userInfos.userName }}
-+                    <el-icon class="el-icon--right">
-+                        <ele-ArrowDown />
-+                    </el-icon>
-+                </span>
-+                <template #dropdown>
-+                    <el-dropdown-menu>
-+                        <el-dropdown-item command="/homeMenu">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
-+                        <!--                    <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item>-->
-+                        <!--                    <el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->
-+                        <!--					<el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->
-+                        <!--					<el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->
-+                        <el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
-+                    </el-dropdown-menu>
-+                </template>
-+            </el-dropdown>
-+            <Search ref="searchRef" />
-         </div>
-     </div>
- </template>
-@@ -248,27 +248,27 @@
-             }
-         };
- 
--        const getSysName = async()=>{
-+        const getSysName = async () => {
-             if (window.nextLoading === undefined) NextLoading.start();
-             if (!Session.get('token')) return false;
-             const res = await menuApi.getMenuAdmin(Session.get('projectId') === null ? '' : Session.get('projectId'));
--            if(res.data.code === '200'){
-+            if (res.data.code === '200') {
-                 state.systemName = res.data.data[1].project.projectName;
--                console.log(state.systemName)
--            }else{
--                console.log('有问题')
-+                console.log(state.systemName);
-+            } else {
-+                console.log('有问题');
-             }
--        }
--        const backToMenu=()=>{
--            router.push({ path: 'homeMenu' })
--        }
-+        };
-+        const backToMenu = () => {
-+            router.push({ path: 'homeMenu' });
-+        };
-         // 页面加载时
-         onMounted(() => {
-             if (Local.get('themeConfig')) {
-                 initI18n();
-                 initComponentSize();
-             }
--            getSysName()
-+            getSysName();
-         });
-         return {
-             userInfos,
-@@ -293,14 +293,14 @@
-     align-items: center;
-     justify-content: space-between;
- 
--    .logo{
-+    .logo {
-         height: 50px;
-         padding: 5px 10px;
-         display: flex;
-         align-items: center;
-         overflow: hidden;
-         box-sizing: border-box;
--        img{
-+        img {
-             height: 100%;
-         }
-     }
-@@ -343,12 +343,12 @@
-     ::v-deep(.el-badge__content.is-fixed) {
-         top: 12px;
-     }
--    .backBtn{
-+    .backBtn {
-         font-size: 16px;
-         cursor: pointer;
-         margin-right: 20px;
- 
--        &:hover{
-+        &:hover {
-             color: #409eff;
-             font-weight: bolder;
-         }
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml
deleted file mode 100644
index 1478e29..0000000
--- a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<changelist name="Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]" date="1660217002849" recycled="true" deleted="true">
-  <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/shelved.patch" />
-  <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/8/11 19:22 [Default Changelist]" />
-  <binary>
-    <option name="BEFORE_PATH" />
-    <option name="AFTER_PATH" value="src/assets/companyLogo.png" />
-    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/companyLogo.png" />
-  </binary>
-</changelist>
\ No newline at end of file
diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50_\133Default_Changelist\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50_\133Default_Changelist\135/shelved.patch"
new file mode 100644
index 0000000..223c0f0
--- /dev/null
+++ "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50_\133Default_Changelist\135/shelved.patch"
@@ -0,0 +1,2459 @@
+Index: src/App.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <!--    <transition name=\"fade\" mode=\"out-in\">-->\r\n    <!--        <keep-alive :exclude=\"excludeList\">-->\r\n    <!--            <router-view v-if=\"!$route.meta.iskeepAlive\" :key=\"$route.id\"></router-view>-->\r\n    <!--        </keep-alive>-->\r\n    <!--    </transition>-->\r\n    <!--    <router-view v-if=\"!$route.meta.iskeepAlive\" v-slot=\"{ Component }\">-->\r\n    <!--        <transition name=\"fade\" mode=\"in-out\">-->\r\n    <!--            <keep-alive :exclude=\"excludeList\" :include=\"includeList\">-->\r\n    <!--                <component :is=\"Component\" :key=\"$route.id\"></component>-->\r\n    <!--            </keep-alive>-->\r\n    <!--        </transition>-->\r\n    <!--    </router-view>-->\r\n    <el-config-provider :size=\"getGlobalComponentSize\" :locale=\"i18nLocale\">\r\n        <router-view v-show=\"themeConfig.lockScreenTime > 1\" />\r\n        <router-view v-show=\"themeConfig.lockScreenTime > 1\" />\r\n        <LockScreen v-if=\"themeConfig.isLockScreen\" />\r\n        <Setings ref=\"setingsRef\" v-show=\"themeConfig.lockScreenTime > 1\" />\r\n        <CloseFull v-if=\"!themeConfig.isLockScreen\" />\r\n    </el-config-provider>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { computed, ref, getCurrentInstance, onBeforeMount, onMounted, onUnmounted, nextTick, defineComponent, watch, reactive, toRefs } from 'vue';\r\nimport { useRoute } from 'vue-router';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';\r\nimport { useThemeConfig } from '/@/stores/themeConfig';\r\nimport other from '/@/utils/other';\r\nimport { Local, Session } from '/@/utils/storage';\r\nimport setIntroduction from '/@/utils/setIconfont';\r\nimport LockScreen from '/@/layout/lockScreen/index.vue';\r\nimport Setings from '/@/layout/navBars/breadcrumb/setings.vue';\r\nimport CloseFull from '/@/layout/navBars/breadcrumb/closeFull.vue';\r\nimport { initBackEndControlRoutes } from './router/backEnd';\r\n\r\nexport default {\r\n    name: 'app',\r\n    components: { LockScreen, Setings, CloseFull },\r\n    setup() {\r\n        const { proxy } = <any>getCurrentInstance();\r\n        const setingsRef = ref();\r\n        const route = useRoute();\r\n        const stores = useTagsViewRoutes();\r\n        const storesThemeConfig = useThemeConfig();\r\n        const { themeConfig } = storeToRefs(storesThemeConfig);\r\n        const state = reactive({\r\n            i18nLocale: null,\r\n            excludeList: ['a-e'],\r\n            includeList: []\r\n        });\r\n\r\n        // 获取全局组件大小\r\n        const getGlobalComponentSize = computed(() => {\r\n            return other.globalComponentSize();\r\n        });\r\n        // 布局配置弹窗打开\r\n        const openSetingsDrawer = () => {\r\n            setingsRef.value.openDrawer();\r\n        };\r\n        // 设置初始化,防止刷新时恢复默认\r\n        onBeforeMount(() => {\r\n            // 设置批量第三方 icon 图标\r\n            setIntroduction.cssCdn();\r\n            // 设置批量第三方 js\r\n            setIntroduction.jsCdn();\r\n        });\r\n        // 页面加载时\r\n        onMounted(() => {\r\n            nextTick(() => {\r\n                // 监听布局配置弹窗点击打开\r\n                proxy.mittBus.on('openSetingsDrawer', () => {\r\n                    openSetingsDrawer();\r\n                });\r\n                // 设置 i18n,App.vue 中的 el-config-provider\r\n                proxy.mittBus.on('getI18nConfig', (locale: string) => {\r\n                    (state.i18nLocale as string | null) = locale;\r\n                });\r\n                // 获取缓存中的布局配置;\r\n                if (Local.get('themeConfig')) {\r\n                    storesThemeConfig.setThemeConfig(themeConfig.value);\r\n                    // storesThemeConfig.setThemeConfig(Local.get('themeConfig'));\r\n                    document.documentElement.style.cssText = Local.get('themeConfigStyle');\r\n                }\r\n                // 获取缓存中的全屏配置\r\n                if (Session.get('isTagsViewCurrenFull')) {\r\n                    stores.setCurrenFullscreen(Session.get('isTagsViewCurrenFull'));\r\n                }\r\n            });\r\n            // if(!Session.get('token')) return\r\n            // initBackEndControlRoutes()\r\n        });\r\n        // 页面销毁时,关闭监听布局配置/i18n监听\r\n        onUnmounted(() => {\r\n            proxy.mittBus.off('openSetingsDrawer', () => {});\r\n            proxy.mittBus.off('getI18nConfig', () => {});\r\n        });\r\n        // 监听路由的变化,设置网站标题\r\n        watch(\r\n            () => route.path,\r\n            () => {\r\n                other.useTitle();\r\n            },\r\n            {\r\n                deep: true\r\n            }\r\n        );\r\n        return {\r\n            themeConfig,\r\n            setingsRef,\r\n            getGlobalComponentSize,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n};\r\n</script>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/App.vue b/src/App.vue
+--- a/src/App.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/App.vue	(date 1660894513676)
+@@ -13,7 +13,6 @@
+     <!--    </router-view>-->
+     <el-config-provider :size="getGlobalComponentSize" :locale="i18nLocale">
+         <router-view v-show="themeConfig.lockScreenTime > 1" />
+-        <router-view v-show="themeConfig.lockScreenTime > 1" />
+         <LockScreen v-if="themeConfig.isLockScreen" />
+         <Setings ref="setingsRef" v-show="themeConfig.lockScreenTime > 1" />
+         <CloseFull v-if="!themeConfig.isLockScreen" />
+Index: .env.development
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+># 本地环境\r\nENV = 'development'\r\n\r\n#VITE_API_URL = 'http://192.168.0.35:8008'\r\n#李宇飞接口地址\r\n\r\nVITE_API_URL = 'http://192.168.0.50:8008'\r\n#张凤接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.29:8008'\r\n#黄振接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.179:8008'\r\n#施正红接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.69:8008'\r\n#戚会山接口地址\r\n\r\n#VITE_API_URL = 'http://121.239.169.27:16006/safeplatform'\r\n#线上正式环境接口地址\r\n\r\n#VITE_API_URL_OUT = 'http://121.239.169.27:16006/safeplatform-out'\r\n#线上正式环境外包接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.52:8011/safeplatform'\r\n#本地预发接口地址\r\n\r\n#VITE_API_URL_OUT = 'http://192.168.0.52:8011/safeplatform-out'\r\n#本地外包预发接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.52:7021/safeplatform'\r\n#本地测试接口地址\r\n\r\n#VITE_API_URL_SOCKET = 'http://192.168.0.52:7021/safeplatform'\r\n#本地测试websocket接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.29:7008'\r\n#黄振接口test地址\r\n\r\n#VITE_API_URL_SOCKET = 'http://192.168.0.29:16107'\r\n#黄振websocket test接口地址\r\n\r\n#VITE_API_URL_SOCKET = 'http://192.168.0.29:8018'\r\n#黄振websocket接口地址\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.env.development b/.env.development
+--- a/.env.development	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/.env.development	(date 1660876481738)
+@@ -1,10 +1,10 @@
+ # 本地环境
+ ENV = 'development'
+ 
+-#VITE_API_URL = 'http://192.168.0.35:8008'
++VITE_API_URL = 'http://192.168.0.35:8008'
+ #李宇飞接口地址
+ 
+-VITE_API_URL = 'http://192.168.0.50:8008'
++#VITE_API_URL = 'http://192.168.0.50:8008'
+ #张凤接口地址
+ 
+ #VITE_API_URL = 'http://192.168.0.29:8008'
+Index: src/views/system/menu/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <div class=\"system-menu-container\">\r\n        <el-card shadow=\"hover\">\r\n            <div class=\"system-menu-search mb15\">\r\n                <el-select size=\"default\" v-model=\"projectId\" placeholder=\"请选择项目名称\" style=\"max-width: 180px\" @change=\"getMenuList()\">\r\n                    <el-option v-for=\"item in projectList\" :key=\"item.key\" :value=\"item.id\" :label=\"item.name\"> </el-option>\r\n                </el-select>\r\n                <el-button size=\"default\" type=\"primary\" class=\"ml10\" @click=\"getMenuList\">\r\n                    <el-icon>\r\n                        <ele-Search />\r\n                    </el-icon>\r\n                    查询\r\n                </el-button>\r\n                <el-button size=\"default\" type=\"success\" class=\"ml10\" @click=\"onOpenMenuDialog('新增')\">\r\n                    <el-icon>\r\n                        <ele-FolderAdd />\r\n                    </el-icon>\r\n                    新增菜单\r\n                </el-button>\r\n            </div>\r\n            <el-table :data=\"menuTableData\" style=\"width: 100%\" row-key=\"path\" :tree-props=\"{ children: 'children', hasChildren: 'hasChildren' }\">\r\n                <el-table-column label=\"菜单名称\" show-overflow-tooltip>\r\n                    <template #default=\"scope\">\r\n                        <SvgIcon :name=\"scope.row.meta.icon\" />\r\n                        <span class=\"ml10\">{{ scope.row.meta.title }}</span>\r\n                    </template>\r\n                </el-table-column>\r\n                <el-table-column prop=\"path\" label=\"路由路径\" show-overflow-tooltip></el-table-column>\r\n                <el-table-column label=\"组件路径\" show-overflow-tooltip>\r\n                    <template #default=\"scope\">\r\n                        <span>{{ scope.row.component }}</span>\r\n                    </template>\r\n                </el-table-column>\r\n                <el-table-column label=\"权限标识\" show-overflow-tooltip>\r\n                    <template #default=\"scope\">\r\n                        <span>{{ parseRole(scope.row.meta.roles) }}</span>\r\n                    </template>\r\n                </el-table-column>\r\n                <el-table-column label=\"排序\" show-overflow-tooltip width=\"80\">\r\n                    <template #default=\"scope\">\r\n                        {{ scope.$index }}\r\n                    </template>\r\n                </el-table-column>\r\n                <el-table-column label=\"类型\" show-overflow-tooltip width=\"80\">\r\n                    <template #default=\"scope\">\r\n                        <el-tag type=\"success\" size=\"small\">{{ scope.row.xx }}菜单</el-tag>\r\n                    </template>\r\n                </el-table-column>\r\n                <el-table-column label=\"操作\" show-overflow-tooltip width=\"140\">\r\n                    <template #default=\"scope\">\r\n                        <el-button size=\"small\" text type=\"primary\" @click=\"onOpenMenuDialog('新增')\">新增</el-button>\r\n                        <el-button size=\"small\" text type=\"primary\" @click=\"onOpenMenuDialog('修改', scope.row)\">修改</el-button>\r\n                        <el-button size=\"small\" text type=\"primary\" @click=\"deleteMenu(scope.row)\">删除</el-button>\r\n                    </template>\r\n                </el-table-column>\r\n            </el-table>\r\n        </el-card>\r\n        <menuDialog ref=\"menuDialog\" @getMenuList=\"getMenuList\" />\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { ref, toRefs, reactive, computed, onMounted, defineComponent } from 'vue';\r\nimport { RouteRecordRaw } from 'vue-router';\r\nimport { ElMessageBox, ElMessage } from 'element-plus';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useRoutesList } from '/@/stores/routesList';\r\nimport menuDialog from '/@/views/system/menu/component/menuDialog.vue';\r\nimport { useMenuApi } from '/@/api/systemManage/menu';\r\nimport { Session } from '/@/utils/storage';\r\nimport pinia from '/@/stores';\r\nimport { dynamicRoutes } from '/@/router/route';\r\nimport { useUserInfo } from '/@/stores/userInfo';\r\nimport { initBackEndControlRoutes } from '/@/router/backEnd';\r\nimport { useRoleApi } from '/@/api/systemManage/role';\r\n\r\nexport default defineComponent({\r\n    name: 'systemMenu',\r\n    components: { menuDialog },\r\n    filters: {\r\n        parseRole: (roles: Array<string>) => {\r\n            return ['1', '2'];\r\n        }\r\n    },\r\n    setup() {\r\n        const menuDialog = ref();\r\n        const storesRoutesList = useRoutesList();\r\n        const state = reactive({\r\n            projectId: '1',\r\n            menuData: [],\r\n            roleList: [],\r\n            menuTableData: [],\r\n            projectList: [\r\n                { id: '1', name: '安全基础信息系统', key: 0 },\r\n                { id: '2', name: '双重预防系统', key: 1 },\r\n                { id: '3', name: '特殊作业系统', key: 2 },\r\n                { id: '4', name: '智能巡检系统', key: 3 },\r\n                { id: '5', name: '安全风险综合预警预报平台', key: 4 },\r\n                { id: '6', name: '应急管理系统', key: 5 },\r\n                { id: '7', name: '目标责任管理系统', key: 6 },\r\n                { id: '8', name: '事故管理系统', key: 7 },\r\n                { id: '9', name: '设备综合管控系统', key: 8 },\r\n                { id: '10', name: '安全知识图谱系统', key: 9 },\r\n                { id: '11', name: '危险化学品全生命周期安全', key: 10 }\r\n            ]\r\n        });\r\n        // // 获取 vuex 中的路由\r\n        // const menuTableData = computed(() => {\r\n        // \treturn routesList.value;\r\n        // });\r\n        // 打开新增菜单弹窗\r\n        const onOpenMenuDialog = (type: string, value: any) => {\r\n            menuDialog.value.openDialog(type, value, state.projectList, state.projectId, state.roleList);\r\n        };\r\n\r\n        // 删除当前行\r\n        const deleteMenu = (row: any) => {\r\n            ElMessageBox.confirm(`此操作将永久删除路由:${row.path}, 是否继续?`, '提示', {\r\n                confirmButtonText: '删除',\r\n                cancelButtonText: '取消',\r\n                type: 'warning'\r\n            })\r\n                .then(async () => {\r\n                    let res = await useMenuApi().deleteMenu({ id: row.id });\r\n                    if (res.data.code === '200') {\r\n                        ElMessage({\r\n                            type: 'success',\r\n                            duration: 2000,\r\n                            message: '删除成功'\r\n                        });\r\n                        await getMenuList();\r\n                        if (Session.get('projectId') == state.projectId) await initBackEndControlRoutes();\r\n                    } else {\r\n                        ElMessage({\r\n                            type: 'warning',\r\n                            message: res.data.msg\r\n                        });\r\n                    }\r\n                })\r\n                .catch(() => {});\r\n        };\r\n        const getMenuList = async () => {\r\n            let res = await useMenuApi().getMenuAdmin(state.projectId);\r\n            if (res.data.code === '200') {\r\n                state.menuTableData = res.data.data;\r\n                if (Session.get('projectId') == state.projectId) await initBackEndControlRoutes();\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        const getRoleList = async () => {\r\n            let res = await useRoleApi().getRoleList();\r\n            if (res.data.code === '200') {\r\n                state.roleList = res.data.data;\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        const getProjectList = async () => {\r\n            let res = await useMenuApi().getProjectList();\r\n            if (res.data.code === '200') {\r\n                state.menuTableData = res.data.data;\r\n                if (Session.get('projectId') == state.projectId) await initBackEndControlRoutes();\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        const parseRole = (roles: Array<string>) => {\r\n            let role = roles.map((item) => {\r\n                for (let i in state.roleList) {\r\n                    if (state.roleList[i].roleCode === item) {\r\n                        return state.roleList[i].roleName;\r\n                    }\r\n                }\r\n            });\r\n            return role;\r\n        };\r\n\r\n        onMounted(() => {\r\n            getMenuList();\r\n            getRoleList();\r\n        });\r\n        return {\r\n            parseRole,\r\n            getMenuList,\r\n            menuDialog,\r\n            onOpenMenuDialog,\r\n            deleteMenu,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n});\r\n</script>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
+--- a/src/views/system/menu/index.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/system/menu/index.vue	(date 1660894424358)
+@@ -191,6 +191,7 @@
+         onMounted(() => {
+             getMenuList();
+             getRoleList();
++            console.log(1);
+         });
+         return {
+             parseRole,
+Index: src/views/specialWorkSystem/workFlow/approveBasic/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <div class=\"home-container\">\r\n        <div style=\"height: 100%\">\r\n            <el-row class=\"homeCard\">\r\n                <div class=\"basic-line\">\r\n                    <span>标准类型:</span>\r\n                    <el-select v-model=\"tableData.params.searchParams.ruleStandType\" clearable filterable class=\"input-box\" placeholder=\"标准类型\">\r\n                        <el-option v-for=\"item in ruleStandTypeList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n                    </el-select>\r\n                </div>\r\n                <div class=\"basic-line\">\r\n                    <span>标题:</span>\r\n                    <el-input v-model.trim=\"tableData.params.searchParams.title\" clearable filterable class=\"input-box\" placeholder=\"标题\"> </el-input>\r\n                </div>\r\n                <div style=\"padding-bottom: 10px\">\r\n                    <el-button type=\"primary\" @click=\"getInspectionTask\">查询</el-button>\r\n                    <el-button plain @click=\"reset\">重置</el-button>\r\n                </div>\r\n            </el-row>\r\n            <div class=\"homeCard\">\r\n                <div class=\"main-card\">\r\n                    <el-row class=\"cardTop\">\r\n                        <el-col :span=\"12\" class=\"mainCardBtn\">\r\n                            <el-button type=\"primary\" :icon=\"Plus\" size=\"default\" @click=\"openApproveBasicDialog('新增', {})\">新建</el-button>\r\n                            <!--                            <el-button type=\"danger\" :icon=\"Delete\" size=\"default\" plain>删除</el-button>-->\r\n                        </el-col>\r\n                        <el-button type=\"primary\" :icon=\"Refresh\" size=\"default\" />\r\n                    </el-row>\r\n                    <el-table ref=\"multipleTableRef\" :data=\"tableData.approveBasicData\" style=\"width: 100%\" height=\"calc(100% - 100px)\" :header-cell-style=\"{ background: '#fafafa' }\" @selection-change=\"handleSelectionChange\">\r\n                        <el-table-column type=\"selection\" width=\"55\" />\r\n                        <el-table-column property=\"title\" label=\"标题\" />\r\n                        <el-table-column property=\"ruleStandType\" label=\"标准类型\">\r\n                            <template #default=\"scope\">\r\n                                <span>\r\n                                    {{ parseNumber(scope.row.ruleStandType, '标准类型') }}\r\n                                </span>\r\n                            </template>\r\n                        </el-table-column>\r\n                        <el-table-column property=\"minVal\" label=\"最低值\">\r\n                            <template #default=\"scope\">\r\n                                <span>\r\n                                    {{ parseNumber(scope.row.minValMatchPattern, '最低值') }}\r\n                                </span>\r\n                                <span>\r\n                                    {{ scope.row.minVal }}\r\n                                </span>\r\n                            </template>\r\n                        </el-table-column>\r\n                        <el-table-column property=\"maxVal\" label=\"最高值\">\r\n                            <template #default=\"scope\">\r\n                                <span>\r\n                                    {{ parseNumber(scope.row.maxValMatchPattern, '最高值') }}\r\n                                </span>\r\n                                <span>\r\n                                    {{ scope.row.maxVal }}\r\n                                </span>\r\n                            </template>\r\n                        </el-table-column>\r\n                        <el-table-column property=\"info\" label=\"描述\" />\r\n                        <el-table-column prop=\"createUname\" label=\"创建人\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column prop=\"gmtCreate\" label=\"创建时间\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column prop=\"modifiedUname\" label=\"最后修改人\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column prop=\"gmtModified\" label=\"最后修改时间\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column property=\"status\" label=\"状态\" width=\"60\" />\r\n                        <el-table-column fixed=\"right\" label=\"操作\" align=\"center\" width=\"300\">\r\n                            <template #default=\"scope\">\r\n                                <el-button link type=\"primary\" size=\"small\" :icon=\"View\" @click=\"openApproveBasicDialog('查看', scope.row)\">查看</el-button>\r\n                                <el-button link type=\"primary\" size=\"small\" :icon=\"Edit\" @click=\"openApproveBasicDialog('修改', scope.row)\">修改</el-button>\r\n                                <el-button link type=\"danger\" size=\"small\" :icon=\"Delete\" @click=\"deleteApproveBasic(scope.row)\">删除</el-button>\r\n                            </template>\r\n                        </el-table-column>\r\n                    </el-table>\r\n                    <br />\r\n                    <el-pagination @size-change=\"onHandleSizeChange\" @current-change=\"onHandleCurrentChange\" :pager-count=\"5\" :page-sizes=\"[10, 20, 30]\" v-model:current-page=\"tableData.params.pageIndex\" background v-model:page-size=\"tableData.params.pageSize\" layout=\"total, sizes, prev, pager, next, jumper\" :total=\"tableData.total\" class=\"page-position\"> </el-pagination>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <approve-basic-dialog ref=\"approveBasicDialogRef\" @refreshApproveBasic=\"getInspectionTask\"></approve-basic-dialog>\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { toRefs, reactive, ref, onMounted } from 'vue';\r\nimport { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';\r\nimport { ElTable, ElMessage, ElMessageBox } from 'element-plus';\r\nimport { approveBasicApi } from '/@/api/specialWorkSystem/approveBasic';\r\nimport { departmentApi } from '/@/api/systemManage/department';\r\nimport approveBasicDialog from '/@/views/specialWorkSystem/workFlow/approveBasic/components/approveBasicDialog.vue';\r\nlet global: any = {\r\n    homeChartOne: null,\r\n    homeChartTwo: null,\r\n    homeCharThree: null,\r\n    dispose: [null, '', undefined]\r\n};\r\n\r\ninterface stateType {\r\n    tableData: {\r\n        approveBasicData: [];\r\n        total: number;\r\n        loading: boolean;\r\n        params: {\r\n            pageIndex: number | null;\r\n            pageSize: number | null;\r\n            searchParams: {\r\n                ruleStandType: number | null;\r\n                title: string | null;\r\n            };\r\n        };\r\n    };\r\n    ruleStandTypeList: Array<type>;\r\n    typeList: Array<type>;\r\n    typeTwoList: Array<type>;\r\n    deleteList: {\r\n        ids: Array<number>;\r\n    };\r\n}\r\ninterface type {\r\n    id: number;\r\n    name: string;\r\n}\r\ninterface ruleType {\r\n    ruleStandId: number;\r\n}\r\nexport default {\r\n    name: 'index',\r\n    components: { approveBasicDialog },\r\n    setup() {\r\n        const approveBasicDialogRef = ref();\r\n        const state = reactive<stateType>({\r\n            tableData: {\r\n                approveBasicData: [],\r\n                total: 0,\r\n                loading: false,\r\n                params: {\r\n                    pageIndex: 1,\r\n                    pageSize: 10,\r\n                    searchParams: {\r\n                        ruleStandType: null,\r\n                        title: null\r\n                    }\r\n                }\r\n            },\r\n            ruleStandTypeList: [\r\n                { id: 1, name: '可燃气浓度' },\r\n                { id: 2, name: '氧气浓度' },\r\n                { id: 3, name: '一氧化碳浓度' },\r\n                { id: 4, name: '硫化氢浓度' },\r\n                { id: 5, name: '温度' },\r\n                { id: 6, name: '压力' },\r\n                { id: 7, name: '震动' }\r\n            ],\r\n            typeList: [\r\n                { id: 1, name: '大于' },\r\n                { id: 2, name: '等于' },\r\n                { id: 4, name: '大于等于' }\r\n            ],\r\n            typeTwoList: [\r\n                { id: 3, name: '小于' },\r\n                { id: 2, name: '等于' },\r\n                { id: 5, name: '小于等于' }\r\n            ],\r\n            deleteList: {\r\n                ids: []\r\n            }\r\n        });\r\n\r\n        //获取巡检任务数据\r\n        const getInspectionTask = async () => {\r\n            let res = await approveBasicApi().getApproveBasicList(state.tableData.params);\r\n            if (res.data.code === '200') {\r\n                state.tableData.approveBasicData = res.data.data;\r\n                state.tableData.total = res.data.total;\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        // //获取部门\r\n        // const getDepartmentData = async () => {\r\n        //     let res = await departmentApi().getDepartmentList();\r\n        //     if (res.data.code === '200') {\r\n        //         state.departmentList = res.data.data;\r\n        //     } else {\r\n        //         ElMessage({\r\n        //             type: 'warning',\r\n        //             message: res.data.msg\r\n        //         });\r\n        //     }\r\n        // };\r\n\r\n        // 删除\r\n        const deleteApproveBasic = (row: any) => {\r\n            ElMessageBox.confirm(`此操作将永久删除该任务:“${row.title}”,是否继续?`, '提示', {\r\n                confirmButtonText: '确认',\r\n                cancelButtonText: '取消',\r\n                type: 'warning'\r\n            })\r\n                .then(async () => {\r\n                    let res = await approveBasicApi().deleteApproveBasic(state.deleteList);\r\n                    if (res.data.code === '200') {\r\n                        ElMessage({\r\n                            type: 'success',\r\n                            duration: 2000,\r\n                            message: '删除成功'\r\n                        });\r\n                        await getInspectionTask();\r\n                    } else {\r\n                        ElMessage({\r\n                            type: 'warning',\r\n                            message: res.data.msg\r\n                        });\r\n                    }\r\n                })\r\n                .catch(() => {});\r\n        };\r\n\r\n        const handleSelectionChange = (val: Array<ruleType>) => {\r\n            state.deleteList.ids = val.map((item) => {\r\n                return item.ruleStandId;\r\n            });\r\n        };\r\n\r\n        const openApproveBasicDialog = (type: string, value: {}) => {\r\n            approveBasicDialogRef.value.showApproveBasicDialog(type, value);\r\n        };\r\n\r\n        const parseNumber = (value: number, type: string) => {\r\n            if (type === '标准类型') {\r\n                return state.ruleStandTypeList.find((item) => item.id === value)?.name;\r\n            } else if (type === '最高值') {\r\n                return state.typeTwoList.find((item) => item.id == value)?.name;\r\n            } else {\r\n                return state.typeList.find((item) => item.id == value)?.name;\r\n            }\r\n        };\r\n\r\n        // 分页改变\r\n        const onHandleSizeChange = (val: number) => {\r\n            state.tableData.params.pageSize = val;\r\n            getInspectionTask();\r\n        };\r\n        // 分页改变\r\n        const onHandleCurrentChange = (val: number) => {\r\n            state.tableData.params.pageIndex = val;\r\n            getInspectionTask();\r\n        };\r\n\r\n        const reset = () => {\r\n            state.tableData.params = {\r\n                pageIndex: 1,\r\n                pageSize: 10,\r\n                searchParams: {\r\n                    ruleStandType: null,\r\n                    title: null\r\n                }\r\n            };\r\n        };\r\n\r\n        // 页面加载时\r\n        onMounted(() => {\r\n            getInspectionTask();\r\n        });\r\n\r\n        return {\r\n            View,\r\n            Edit,\r\n            Delete,\r\n            Refresh,\r\n            Plus,\r\n            reset,\r\n            parseNumber,\r\n            handleSelectionChange,\r\n            deleteApproveBasic,\r\n            getInspectionTask,\r\n            onHandleSizeChange,\r\n            onHandleCurrentChange,\r\n            approveBasicDialogRef,\r\n            openApproveBasicDialog,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n    height: calc(100vh - 114px);\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    .homeCard {\r\n        width: 100%;\r\n        padding: 20px;\r\n        box-sizing: border-box;\r\n        background: #fff;\r\n        border-radius: 4px;\r\n\r\n        .main-card {\r\n            width: 100%;\r\n            height: 100%;\r\n            .cardTop {\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: space-between;\r\n                margin-bottom: 20px;\r\n                .mainCardBtn {\r\n                    margin: 0;\r\n                }\r\n            }\r\n            .pageBtn {\r\n                height: 60px;\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: right;\r\n\r\n                .demo-pagination-block + .demo-pagination-block {\r\n                    margin-top: 10px;\r\n                }\r\n                .demo-pagination-block .demonstration {\r\n                    margin-bottom: 16px;\r\n                }\r\n            }\r\n        }\r\n        &:last-of-type {\r\n            height: calc(100% - 100px);\r\n        }\r\n    }\r\n    .el-row {\r\n        display: flex;\r\n        align-items: center;\r\n        margin-bottom: 20px;\r\n        &:last-child {\r\n            margin-bottom: 0;\r\n        }\r\n        .grid-content {\r\n            align-items: center;\r\n            min-height: 36px;\r\n        }\r\n\r\n        .topInfo {\r\n            display: flex;\r\n            align-items: center;\r\n            font-size: 16px;\r\n            font-weight: bold;\r\n\r\n            & > div {\r\n                white-space: nowrap;\r\n                margin-right: 20px;\r\n            }\r\n        }\r\n    }\r\n}\r\n.stepItem {\r\n    width: 100%;\r\n    display: flex;\r\n    align-items: flex-start;\r\n    margin-bottom: 30px;\r\n    margin-left: 30px;\r\n    padding-bottom: 30px;\r\n    border-left: 2px solid #ccc;\r\n    &:first-of-type {\r\n        margin-top: 30px;\r\n    }\r\n    &:last-of-type {\r\n        margin-bottom: 0;\r\n        border-left: none;\r\n    }\r\n    .stepNum {\r\n        width: 30px;\r\n        height: 30px;\r\n        border-radius: 15px;\r\n        box-sizing: border-box;\r\n        color: #333;\r\n        border: 1px solid #999;\r\n        line-height: 28px;\r\n        text-align: center;\r\n        margin-right: 10px;\r\n        margin-left: -16px;\r\n        margin-top: -30px;\r\n    }\r\n    .stepCard {\r\n        width: 100%;\r\n        margin-top: -30px;\r\n\r\n        .box-card {\r\n            width: 100%;\r\n            &:deep(.el-card__header) {\r\n                padding: 10px 15px;\r\n            }\r\n            .card-header {\r\n                width: 100%;\r\n                display: flex;\r\n                justify-content: space-between;\r\n                align-items: center;\r\n                & > div:first-of-type {\r\n                    margin-right: 80px;\r\n                    font-size: 18px;\r\n                    font-weight: bold;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    &:hover .card-header {\r\n        color: #0098f5;\r\n    }\r\n    &:hover .stepNum {\r\n        border: 2px solid #0098f5;\r\n        color: #0098f5;\r\n    }\r\n}\r\n:deep(.el-date-editor) {\r\n    width: 100%;\r\n}\r\n:deep(.el-textarea.is-disabled .el-textarea__inner) {\r\n    background-color: var(--el-card-bg-color);\r\n    color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__inner) {\r\n    color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__wrapper) {\r\n    background-color: var(--el-card-bg-color);\r\n}\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/specialWorkSystem/workFlow/approveBasic/index.vue b/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
+--- a/src/views/specialWorkSystem/workFlow/approveBasic/index.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/specialWorkSystem/workFlow/approveBasic/index.vue	(date 1660889793395)
+@@ -22,7 +22,7 @@
+                     <el-row class="cardTop">
+                         <el-col :span="12" class="mainCardBtn">
+                             <el-button type="primary" :icon="Plus" size="default" @click="openApproveBasicDialog('新增', {})">新建</el-button>
+-                            <!--                            <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
++                            <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreApproveBasic" plain>批量删除</el-button>
+                         </el-col>
+                         <el-button type="primary" :icon="Refresh" size="default" />
+                     </el-row>
+@@ -198,6 +198,33 @@
+                 cancelButtonText: '取消',
+                 type: 'warning'
+             })
++                .then(async () => {
++                    let res = await approveBasicApi().deleteApproveBasic({ ids: [row.ruleStandId] });
++                    if (res.data.code === '200') {
++                        state.deleteList.ids = [];
++                        ElMessage({
++                            type: 'success',
++                            duration: 2000,
++                            message: '删除成功'
++                        });
++                        await getInspectionTask();
++                    } else {
++                        ElMessage({
++                            type: 'warning',
++                            message: res.data.msg
++                        });
++                    }
++                })
++                .catch(() => {});
++        };
++
++        // 批量删除
++        const deleteMoreApproveBasic = (row: any) => {
++            ElMessageBox.confirm(`此操作将永久删除这些标准项,是否继续?`, '提示', {
++                confirmButtonText: '确认',
++                cancelButtonText: '取消',
++                type: 'warning'
++            })
+                 .then(async () => {
+                     let res = await approveBasicApi().deleteApproveBasic(state.deleteList);
+                     if (res.data.code === '200') {
+@@ -274,6 +301,7 @@
+             parseNumber,
+             handleSelectionChange,
+             deleteApproveBasic,
++            deleteMoreApproveBasic,
+             getInspectionTask,
+             onHandleSizeChange,
+             onHandleCurrentChange,
+Index: src/views/specialWorkSystem/workFlow/approveRule/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <div class=\"home-container\">\r\n        <div style=\"height: 100%\">\r\n            <el-row class=\"homeCard\">\r\n                <div class=\"basic-line\">\r\n                    <span>规则名称:</span>\r\n                    <el-select v-model=\"tableData.params.searchParams.ruleName\" clearable filterable class=\"input-box\" placeholder=\"任务类型\">\r\n                        <el-option v-for=\"item in workTypeList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n                    </el-select>\r\n                </div>\r\n                <div class=\"basic-line\">\r\n                    <span>部门:</span>\r\n                    <el-cascader placeholder=\"部门名称\" :options=\"departmentList\" :props=\"{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }\" clearable filterable class=\"input-box\" v-model=\"tableData.params.searchParams.depId\"> </el-cascader>\r\n                </div>\r\n                <div class=\"basic-line\">\r\n                    <span>作业类型:</span>\r\n                    <el-select v-model=\"tableData.params.searchParams.workType\" clearable filterable class=\"input-box\" placeholder=\"作业类型\">\r\n                        <el-option v-for=\"item in workTypeList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n                    </el-select>\r\n                </div>\r\n                <div class=\"basic-line\">\r\n                    <span>作业等级:</span>\r\n                    <el-select v-model=\"tableData.params.searchParams.workLevel\" clearable filterable class=\"input-box\" placeholder=\"作业等级\">\r\n                        <el-option v-for=\"item in workLevelList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n                    </el-select>\r\n                </div>\r\n                <div style=\"padding-bottom: 10px\">\r\n                    <el-button type=\"primary\" @click=\"getApproveRule\">查询</el-button>\r\n                    <el-button plain @click=\"reset\">重置</el-button>\r\n                </div>\r\n            </el-row>\r\n            <div class=\"homeCard\">\r\n                <div class=\"main-card\">\r\n                    <el-row class=\"cardTop\">\r\n                        <el-col :span=\"12\" class=\"mainCardBtn\">\r\n                            <el-button type=\"primary\" :icon=\"Plus\" size=\"default\" @click=\"openApproveRuleDialog('新增', {})\">新建</el-button>\r\n                            <!--                            <el-button type=\"danger\" :icon=\"Delete\" size=\"default\" plain>删除</el-button>-->\r\n                        </el-col>\r\n                        <el-button type=\"primary\" :icon=\"Refresh\" size=\"default\" />\r\n                    </el-row>\r\n                    <el-table ref=\"multipleTableRef\" :data=\"tableData.approveRuleData\" style=\"width: 100%\" height=\"calc(100% - 100px)\" :header-cell-style=\"{ background: '#fafafa' }\" @selection-change=\"handleSelectionChange\">\r\n                        <el-table-column type=\"selection\" width=\"55\" />\r\n                        <el-table-column property=\"ruleName\" label=\"任务名称\" />\r\n                        <el-table-column property=\"workType\" label=\"作业类型\">\r\n                            <template #default=\"scope\">\r\n                                <span>\r\n                                    {{ parseNumber(scope.row.workType, '作业类型') }}\r\n                                </span>\r\n                            </template>\r\n                        </el-table-column>\r\n                        <el-table-column property=\"workLevel\" label=\"作业等级\">\r\n                            <template #default=\"scope\">\r\n                                <span>\r\n                                    {{ parseNumber(scope.row.workLevel, '作业等级') }}\r\n                                </span>\r\n                            </template>\r\n                        </el-table-column>\r\n                        <el-table-column prop=\"createUname\" label=\"创建人\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column prop=\"gmtCreate\" label=\"创建时间\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column prop=\"modifiedUname\" label=\"最后修改人\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column prop=\"gmtModified\" label=\"最后修改时间\" show-overflow-tooltip></el-table-column>\r\n                        <el-table-column fixed=\"right\" label=\"操作\" align=\"center\" width=\"300\">\r\n                            <template #default=\"scope\">\r\n                                <el-button link type=\"primary\" size=\"small\" :icon=\"View\" @click=\"openApproveRuleDialog('查看', scope.row)\">查看</el-button>\r\n                                <el-button link type=\"primary\" size=\"small\" :icon=\"Edit\" @click=\"openApproveRuleDialog('修改', scope.row)\">修改</el-button>\r\n                                <el-button link type=\"danger\" size=\"small\" :icon=\"Delete\" @click=\"deleteApproveRule(scope.row)\">删除</el-button>\r\n                            </template>\r\n                        </el-table-column>\r\n                    </el-table>\r\n                    <div class=\"pageBtn\">\r\n                        <el-pagination @size-change=\"onHandleSizeChange\" @current-change=\"onHandleCurrentChange\" :pager-count=\"5\" :page-sizes=\"[10, 20, 30]\" v-model:current-page=\"tableData.params.pageIndex\" background v-model:page-size=\"tableData.params.pageSize\" layout=\"total, sizes, prev, pager, next, jumper\" :total=\"tableData.total\" class=\"page-position\"> </el-pagination>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <approve-rule-dialog ref=\"approveRuleDialogRef\" @refreshApproveRule=\"getApproveRule\"></approve-rule-dialog>\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { toRefs, reactive, ref, onMounted } from 'vue';\r\nimport { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';\r\nimport { ElTable, ElMessage, ElMessageBox } from 'element-plus';\r\nimport approveRuleDialog from '/@/views/specialWorkSystem/workFlow/approveRule/components/approveRuleDialog.vue';\r\nimport { departmentApi } from '/@/api/systemManage/department';\r\nimport { approveRuleApi } from '/@/api/specialWorkSystem/approveRule/index';\r\nimport { userApi } from '/@/api/systemManage/user';\r\n\r\ninterface stateType {\r\n    tableData: {\r\n        approveRuleData: [];\r\n        total: number;\r\n        loading: boolean;\r\n        params: {\r\n            pageIndex: number | null;\r\n            pageSize: number | null;\r\n            searchParams: {\r\n                ruleName: string | null;\r\n                depId: number | null;\r\n                workType: number | null;\r\n                workLevel: number | null;\r\n            };\r\n        };\r\n    };\r\n    workTypeList: Array<type>;\r\n    departmentList: [];\r\n    userList: [];\r\n    workLevelList: Array<type>;\r\n    deleteList: { ids: Array<deleteType> };\r\n    timeType: Array<type>;\r\n}\r\ninterface deleteType {\r\n    ruleId: number;\r\n}\r\n\r\ninterface type {\r\n    id: number;\r\n    name: string;\r\n}\r\n\r\nexport default {\r\n    name: 'index',\r\n    components: { approveRuleDialog },\r\n    setup() {\r\n        const approveRuleDialogRef = ref();\r\n        const state = reactive<stateType>({\r\n            tableData: {\r\n                approveRuleData: [],\r\n                total: 0,\r\n                loading: false,\r\n                params: {\r\n                    pageIndex: 1,\r\n                    pageSize: 10,\r\n                    searchParams: {\r\n                        ruleName: null,\r\n                        depId: null,\r\n                        workType: null,\r\n                        workLevel: null\r\n                    }\r\n                }\r\n            },\r\n            workTypeList: [\r\n                { id: 1, name: '动火作业' },\r\n                { id: 2, name: '受限空间作业' },\r\n                { id: 3, name: '吊装作业' },\r\n                { id: 4, name: '动土作业' },\r\n                { id: 5, name: '断路作业' },\r\n                { id: 6, name: '高处作业' },\r\n                { id: 7, name: '临时用电作业' },\r\n                { id: 8, name: '盲板抽堵作业' }\r\n            ],\r\n            workLevelList: [\r\n                { id: 1, name: '一级动火作业' },\r\n                { id: 2, name: '二级动火作业' },\r\n                { id: 3, name: '三级动火作业' },\r\n                { id: 4, name: '一级高处作业' },\r\n                { id: 5, name: '二级高处作业' },\r\n                { id: 6, name: '三级高处作业' },\r\n                { id: 7, name: '四级高处作业' },\r\n                { id: 8, name: '一级吊装作业' },\r\n                { id: 9, name: '二级吊装作业' },\r\n                { id: 10, name: '三级吊装作业' },\r\n                { id: 11, name: '抽盲板作业' },\r\n                { id: 12, name: '堵盲板作业' }\r\n            ],\r\n            departmentList: [],\r\n            userList: [],\r\n            deleteList: { ids: [] },\r\n            timeType: [\r\n                { id: 1, name: '分' },\r\n                { id: 2, name: '小时' },\r\n                { id: 3, name: '日' },\r\n                { id: 4, name: '月' },\r\n                { id: 5, name: '年' }\r\n            ]\r\n        });\r\n\r\n        //获取巡检任务数据\r\n        const getApproveRule = async () => {\r\n            let res = await approveRuleApi().getApproveRuleList(state.tableData.params);\r\n            if (res.data.code === '200') {\r\n                state.tableData.approveRuleData = res.data.data;\r\n                state.tableData.total = res.data.total;\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        //获取部门\r\n        const getDepartmentData = async () => {\r\n            let res = await departmentApi().getDepartmentList();\r\n            if (res.data.code === '200') {\r\n                state.departmentList = res.data.data;\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        //获取用户列表\r\n        const getUserData = async () => {\r\n            let res = await userApi().getAllUser();\r\n            if (res.data.code === '200') {\r\n                state.userList = res.data.data;\r\n            } else {\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n        };\r\n\r\n        // 删除\r\n        const deleteApproveRule = (row: any) => {\r\n            ElMessageBox.confirm(`此操作将永久删除该任务:“${row.unitName}”,是否继续?`, '提示', {\r\n                confirmButtonText: '确认',\r\n                cancelButtonText: '取消',\r\n                type: 'warning'\r\n            })\r\n                .then(async () => {\r\n                    let res = await approveRuleApi().deleteApproveRule(state.deleteList);\r\n                    if (res.data.code === '200') {\r\n                        ElMessage({\r\n                            type: 'success',\r\n                            duration: 2000,\r\n                            message: '删除成功'\r\n                        });\r\n                        await getApproveRule();\r\n                    } else {\r\n                        ElMessage({\r\n                            type: 'warning',\r\n                            message: res.data.msg\r\n                        });\r\n                    }\r\n                })\r\n                .catch(() => {});\r\n        };\r\n\r\n        const openApproveRuleDialog = (type: string, value: {}) => {\r\n            approveRuleDialogRef.value.showApproveRuleDialog(type, value, state.departmentList, state.userList, state.workTypeList);\r\n        };\r\n\r\n        const parseNumber = (value: number, type: string) => {\r\n            if (type === '作业类型') {\r\n                return state.workTypeList.find((item) => item.id === value)?.name;\r\n            } else if (type === '作业等级') {\r\n                return state.workLevelList.find((item) => item.id == value)?.name;\r\n            } else {\r\n            }\r\n        };\r\n\r\n        const handleSelectionChange = (val: Array<deleteType>) => {\r\n            state.deleteList.ids = val.map((item) => {\r\n                return item.ruleId;\r\n            }) as [];\r\n        };\r\n\r\n        // 分页改变\r\n        const onHandleSizeChange = (val: number) => {\r\n            state.tableData.params.pageSize = val;\r\n            getApproveRule();\r\n        };\r\n        // 分页改变\r\n        const onHandleCurrentChange = (val: number) => {\r\n            state.tableData.params.pageIndex = val;\r\n            getApproveRule();\r\n        };\r\n\r\n        const reset = () => {\r\n            state.tableData.params = {\r\n                pageIndex: 1,\r\n                pageSize: 10,\r\n                searchParams: {\r\n                    ruleName: null,\r\n                    depId: null,\r\n                    workType: null,\r\n                    workLevel: null\r\n                }\r\n            };\r\n        };\r\n\r\n        // 页面加载时\r\n        onMounted(() => {\r\n            getApproveRule();\r\n            getDepartmentData();\r\n            getUserData();\r\n        });\r\n\r\n        return {\r\n            View,\r\n            Edit,\r\n            Delete,\r\n            Refresh,\r\n            Plus,\r\n            reset,\r\n            parseNumber,\r\n            deleteApproveRule,\r\n            getApproveRule,\r\n            handleSelectionChange,\r\n            onHandleSizeChange,\r\n            onHandleCurrentChange,\r\n            approveRuleDialogRef,\r\n            openApproveRuleDialog,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n    height: calc(100vh - 144px);\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    .homeCard {\r\n        width: 100%;\r\n        padding: 20px;\r\n        box-sizing: border-box;\r\n        background: #fff;\r\n        border-radius: 4px;\r\n\r\n        .main-card {\r\n            width: 100%;\r\n            height: 100%;\r\n            .cardTop {\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: space-between;\r\n                margin-bottom: 20px;\r\n                .mainCardBtn {\r\n                    margin: 0;\r\n                }\r\n            }\r\n            .pageBtn {\r\n                height: 60px;\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: right;\r\n\r\n                .demo-pagination-block + .demo-pagination-block {\r\n                    margin-top: 10px;\r\n                }\r\n                .demo-pagination-block .demonstration {\r\n                    margin-bottom: 16px;\r\n                }\r\n            }\r\n        }\r\n        &:last-of-type {\r\n            height: calc(100% - 100px);\r\n        }\r\n    }\r\n    .el-row {\r\n        display: flex;\r\n        align-items: center;\r\n        margin-bottom: 20px;\r\n        &:last-child {\r\n            margin-bottom: 0;\r\n        }\r\n        .grid-content {\r\n            align-items: center;\r\n            min-height: 36px;\r\n        }\r\n\r\n        .topInfo {\r\n            display: flex;\r\n            align-items: center;\r\n            font-size: 16px;\r\n            font-weight: bold;\r\n\r\n            & > div {\r\n                white-space: nowrap;\r\n                margin-right: 20px;\r\n            }\r\n        }\r\n    }\r\n}\r\n.stepItem {\r\n    width: 100%;\r\n    display: flex;\r\n    align-items: flex-start;\r\n    margin-bottom: 30px;\r\n    margin-left: 30px;\r\n    padding-bottom: 30px;\r\n    border-left: 2px solid #ccc;\r\n    &:first-of-type {\r\n        margin-top: 30px;\r\n    }\r\n    &:last-of-type {\r\n        margin-bottom: 0;\r\n        border-left: none;\r\n    }\r\n    .stepNum {\r\n        width: 30px;\r\n        height: 30px;\r\n        border-radius: 15px;\r\n        box-sizing: border-box;\r\n        color: #333;\r\n        border: 1px solid #999;\r\n        line-height: 28px;\r\n        text-align: center;\r\n        margin-right: 10px;\r\n        margin-left: -16px;\r\n        margin-top: -30px;\r\n    }\r\n    .stepCard {\r\n        width: 100%;\r\n        margin-top: -30px;\r\n\r\n        .box-card {\r\n            width: 100%;\r\n            &:deep(.el-card__header) {\r\n                padding: 10px 15px;\r\n            }\r\n            .card-header {\r\n                width: 100%;\r\n                display: flex;\r\n                justify-content: space-between;\r\n                align-items: center;\r\n                & > div:first-of-type {\r\n                    margin-right: 80px;\r\n                    font-size: 18px;\r\n                    font-weight: bold;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    &:hover .card-header {\r\n        color: #0098f5;\r\n    }\r\n    &:hover .stepNum {\r\n        border: 2px solid #0098f5;\r\n        color: #0098f5;\r\n    }\r\n}\r\n.el-input {\r\n    width: 100% !important;\r\n}\r\n:deep(.el-date-editor) {\r\n    width: 100%;\r\n}\r\n.el-select {\r\n    width: 100%;\r\n}\r\n:deep(.el-textarea.is-disabled .el-textarea__inner) {\r\n    background-color: var(--el-card-bg-color);\r\n    color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__inner) {\r\n    color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__wrapper) {\r\n    background-color: var(--el-card-bg-color);\r\n}\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/specialWorkSystem/workFlow/approveRule/index.vue b/src/views/specialWorkSystem/workFlow/approveRule/index.vue
+--- a/src/views/specialWorkSystem/workFlow/approveRule/index.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/specialWorkSystem/workFlow/approveRule/index.vue	(date 1660891733137)
+@@ -4,9 +4,7 @@
+             <el-row class="homeCard">
+                 <div class="basic-line">
+                     <span>规则名称:</span>
+-                    <el-select v-model="tableData.params.searchParams.ruleName" clearable filterable class="input-box" placeholder="任务类型">
+-                        <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+-                    </el-select>
++                    <el-input v-model="tableData.params.searchParams.ruleName" class="input-box" placeholder="规则名称"> </el-input>
+                 </div>
+                 <div class="basic-line">
+                     <span>部门:</span>
+@@ -34,7 +32,7 @@
+                     <el-row class="cardTop">
+                         <el-col :span="12" class="mainCardBtn">
+                             <el-button type="primary" :icon="Plus" size="default" @click="openApproveRuleDialog('新增', {})">新建</el-button>
+-                            <!--                            <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
++                            <el-button type="danger" :icon="Delete" size="default" @click="deleteApproveRule" plain>批量删除</el-button>
+                         </el-col>
+                         <el-button type="primary" :icon="Refresh" size="default" />
+                     </el-row>
+@@ -63,7 +61,6 @@
+                             <template #default="scope">
+                                 <el-button link type="primary" size="small" :icon="View" @click="openApproveRuleDialog('查看', scope.row)">查看</el-button>
+                                 <el-button link type="primary" size="small" :icon="Edit" @click="openApproveRuleDialog('修改', scope.row)">修改</el-button>
+-                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteApproveRule(scope.row)">删除</el-button>
+                             </template>
+                         </el-table-column>
+                     </el-table>
+@@ -217,7 +214,34 @@
+ 
+         // 删除
+         const deleteApproveRule = (row: any) => {
+-            ElMessageBox.confirm(`此操作将永久删除该任务:“${row.unitName}”,是否继续?`, '提示', {
++            ElMessageBox.confirm(`此操作将永久删除该审批规则,是否继续?`, '提示', {
++                confirmButtonText: '确认',
++                cancelButtonText: '取消',
++                type: 'warning'
++            })
++                .then(async () => {
++                    let res = await approveRuleApi().deleteApproveRule({ ids: [row.id] });
++                    state.deleteList.ids = [];
++                    if (res.data.code === '200') {
++                        ElMessage({
++                            type: 'success',
++                            duration: 2000,
++                            message: '删除成功'
++                        });
++                        await getApproveRule();
++                    } else {
++                        ElMessage({
++                            type: 'warning',
++                            message: res.data.msg
++                        });
++                    }
++                })
++                .catch(() => {});
++        };
++
++        // 批量删除
++        const deleteMoreApproveRule = (row: any) => {
++            ElMessageBox.confirm(`此操作将永久删除这些审批规则,是否继续?`, '提示', {
+                 confirmButtonText: '确认',
+                 cancelButtonText: '取消',
+                 type: 'warning'
+@@ -301,6 +325,7 @@
+             parseNumber,
+             deleteApproveRule,
+             getApproveRule,
++            deleteMoreApproveRule,
+             handleSelectionChange,
+             onHandleSizeChange,
+             onHandleCurrentChange,
+@@ -438,15 +463,6 @@
+         color: #0098f5;
+     }
+ }
+-.el-input {
+-    width: 100% !important;
+-}
+-:deep(.el-date-editor) {
+-    width: 100%;
+-}
+-.el-select {
+-    width: 100%;
+-}
+ :deep(.el-textarea.is-disabled .el-textarea__inner) {
+     background-color: var(--el-card-bg-color);
+     color: var(--el-input-text-color, var(--el-text-color-regular));
+Index: src/layout/routerView/link.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n\t<div class=\"layout-view-bg-white flex layout-view-link\" :style=\"{ height: `calc(100vh - ${setLinkHeight}` }\">\r\n\t\t<a :href=\"currentRouteMeta.isLink\" target=\"_blank\" rel=\"opener\" class=\"flex-margin\">\r\n\t\t\t{{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }}\r\n\t\t</a>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, toRefs, reactive, computed, watch } from 'vue';\r\nimport { useRoute, RouteMeta } from 'vue-router';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useThemeConfig } from '/@/stores/themeConfig';\r\n\r\n// 定义接口来定义对象的类型\r\ninterface LinkViewState {\r\n\tcurrentRouteMeta: {\r\n\t\tisLink: string;\r\n\t\ttitle: string;\r\n\t};\r\n}\r\ninterface LinkViewRouteMeta extends RouteMeta {\r\n\tisLink: string;\r\n\ttitle: string;\r\n}\r\n\r\nexport default defineComponent({\r\n\tname: 'layoutLinkView',\r\n\tsetup() {\r\n\t\tconst storesThemeConfig = useThemeConfig();\r\n\t\tconst { themeConfig } = storeToRefs(storesThemeConfig);\r\n\t\tconst route = useRoute();\r\n\t\tconst state = reactive<LinkViewState>({\r\n\t\t\tcurrentRouteMeta: {\r\n\t\t\t\tisLink: '',\r\n\t\t\t\ttitle: '',\r\n\t\t\t},\r\n\t\t});\r\n\t\t// 设置 link 的高度\r\n\t\tconst setLinkHeight = computed(() => {\r\n\t\t\tlet { isTagsview } = themeConfig.value;\r\n\t\t\tif (isTagsview) return `115px`;\r\n\t\t\telse return `80px`;\r\n\t\t});\r\n\t\t// 监听路由的变化,设置内容\r\n\t\twatch(\r\n\t\t\t() => route.path,\r\n\t\t\t() => {\r\n\t\t\t\tstate.currentRouteMeta = <LinkViewRouteMeta>route.meta;\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\timmediate: true,\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn {\r\n\t\t\tsetLinkHeight,\r\n\t\t\t...toRefs(state),\r\n\t\t};\r\n\t},\r\n});\r\n</script>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/layout/routerView/link.vue b/src/layout/routerView/link.vue
+--- a/src/layout/routerView/link.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/layout/routerView/link.vue	(date 1660894319217)
+@@ -1,9 +1,7 @@
+ <template>
+-	<div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
+-		<a :href="currentRouteMeta.isLink" target="_blank" rel="opener" class="flex-margin">
+-			{{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }}
+-		</a>
+-	</div>
++    <div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
++        <a :href="currentRouteMeta.isLink" target="_blank" rel="opener" class="flex-margin"> {{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }} </a>
++    </div>
+ </template>
+ 
+ <script lang="ts">
+@@ -14,48 +12,48 @@
+ 
+ // 定义接口来定义对象的类型
+ interface LinkViewState {
+-	currentRouteMeta: {
+-		isLink: string;
+-		title: string;
+-	};
++    currentRouteMeta: {
++        isLink: string;
++        title: string;
++    };
+ }
+ interface LinkViewRouteMeta extends RouteMeta {
+-	isLink: string;
+-	title: string;
++    isLink: string;
++    title: string;
+ }
+ 
+ export default defineComponent({
+-	name: 'layoutLinkView',
+-	setup() {
+-		const storesThemeConfig = useThemeConfig();
+-		const { themeConfig } = storeToRefs(storesThemeConfig);
+-		const route = useRoute();
+-		const state = reactive<LinkViewState>({
+-			currentRouteMeta: {
+-				isLink: '',
+-				title: '',
+-			},
+-		});
+-		// 设置 link 的高度
+-		const setLinkHeight = computed(() => {
+-			let { isTagsview } = themeConfig.value;
+-			if (isTagsview) return `115px`;
+-			else return `80px`;
+-		});
+-		// 监听路由的变化,设置内容
+-		watch(
+-			() => route.path,
+-			() => {
+-				state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
+-			},
+-			{
+-				immediate: true,
+-			}
+-		);
+-		return {
+-			setLinkHeight,
+-			...toRefs(state),
+-		};
+-	},
++    name: 'layoutLinkView',
++    setup() {
++        const storesThemeConfig = useThemeConfig();
++        const { themeConfig } = storeToRefs(storesThemeConfig);
++        const route = useRoute();
++        const state = reactive<LinkViewState>({
++            currentRouteMeta: {
++                isLink: '',
++                title: ''
++            }
++        });
++        // 设置 link 的高度
++        const setLinkHeight = computed(() => {
++            let { isTagsview } = themeConfig.value;
++            if (isTagsview) return `115px`;
++            else return `80px`;
++        });
++        // 监听路由的变化,设置内容
++        watch(
++            () => route.path,
++            () => {
++                state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
++            },
++            {
++                immediate: true
++            }
++        );
++        return {
++            setLinkHeight,
++            ...toRefs(state)
++        };
++    }
+ });
+ </script>
+Index: src/views/specialWorkSystem/workApplyManage/workTicket/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n\t<div class=\"home-container\">\r\n\t\t<div style=\"height: 100%\">\r\n\t\t<el-form :model=\"form\" label-width=\"120px\" :rules=\"applyRules\" ref=\"ruleFormRef\">\r\n\t\t\t<div class=\"homeCard\">\r\n\t\t\t<el-row>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"作业人\" prop=\"operatorUids\">\r\n\t\t\t\t\t\t<el-select v-model=\"form.operatorUids\" multiple>\r\n\t\t\t\t\t\t\t<el-option\r\n\t\t\t\t\t\t\t\t\tv-for=\"item in workerList\"\r\n\t\t\t\t\t\t\t\t\t:key=\"item.value\"\r\n\t\t\t\t\t\t\t\t\t:label=\"item.label\"\r\n\t\t\t\t\t\t\t\t\t:value=\"item.value\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</el-select>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t</el-row>\r\n\t\t\t<el-row>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"作业等级\" prop=\"workLevel\">\r\n\t\t\t\t\t\t<el-select v-model=\"form.workLevel\">\r\n\t\t\t\t\t\t\t<el-option\r\n\t\t\t\t\t\t\t\t\tv-for=\"item in workLevelList\"\r\n\t\t\t\t\t\t\t\t\t:key=\"item.value\"\r\n\t\t\t\t\t\t\t\t\t:label=\"item.label\"\r\n\t\t\t\t\t\t\t\t\t:value=\"item.value\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</el-select>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"作业时间\" prop=\"workTimeLine\">\r\n\t\t\t\t\t\t<el-date-picker\r\n\t\t\t\t\t\t\t\tv-model=\"form.workTimeLine\"\r\n\t\t\t\t\t\t\t\tformat=\"YYYY-MM-DD HH:mm\"\r\n\t\t\t\t\t\t\t\tvalue-format=\"YYYY-MM-DD HH:mm:00\"\r\n\t\t\t\t\t\t\t\ttype=\"datetimerange\"\r\n\t\t\t\t\t\t\t\trange-separator=\"至\"\r\n\t\t\t\t\t\t\t\tstart-placeholder=\"开始时间\"\r\n\t\t\t\t\t\t\t\tend-placeholder=\"结束时间\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t</el-row>\r\n\t\t\t<el-row>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"作业内容\" prop=\"workContent\">\r\n\t\t\t\t\t\t<el-input\r\n\t\t\t\t\t\t\t\tv-model=\"form.workContent\"\r\n\t\t\t\t\t\t\t\tautosize\r\n\t\t\t\t\t\t\t\ttype=\"textarea\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"请输入作业内容\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"作业地址\" prop=\"workLocation\">\r\n\t\t\t\t\t\t<el-input\r\n\t\t\t\t\t\t\t\tv-model=\"form.workLocation\"\r\n\t\t\t\t\t\t\t\tautosize\r\n\t\t\t\t\t\t\t\ttype=\"textarea\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"请输入作业地址\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t</el-row>\r\n\t\t\t<el-row>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"动火方式\" prop=\"workDetail.hotMethod\">\r\n\t\t\t\t\t\t<el-input\r\n\t\t\t\t\t\t\t\tv-model=\"form.workDetail.hotMethod\"\r\n\t\t\t\t\t\t\t\tautosize\r\n\t\t\t\t\t\t\t\ttype=\"textarea\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"请输入动火方式\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t\t<el-col :span=\"12\">\r\n\t\t\t\t\t<el-form-item label=\"关联作业\" prop=\"workDetail.otherSpecialWork\">\r\n\t\t\t\t\t\t<el-select v-model=\"form.workDetail.otherSpecialWork\" multiple>\r\n\t\t\t\t\t\t\t<el-option\r\n\t\t\t\t\t\t\t\t\tv-for=\"item in otherWorkList\"\r\n\t\t\t\t\t\t\t\t\t:key=\"item.value\"\r\n\t\t\t\t\t\t\t\t\t:label=\"item.label\"\r\n\t\t\t\t\t\t\t\t\t:value=\"item.value\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</el-select>\r\n\t\t\t\t\t</el-form-item>\r\n\t\t\t\t</el-col>\r\n\t\t\t</el-row>\r\n\t\t\t</div>\r\n\t\t</el-form>\r\n\t\t<div class=\"applyBtn\">\r\n\t\t\t<el-button type=\"primary\" size=\"large\" plain @click=\"submitForm(ruleFormRef)\">发起申请</el-button>\r\n\t\t</div>\r\n\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\n\timport { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';\r\n\timport { storeToRefs } from 'pinia';\r\n\timport { initBackEndControlRoutes } from '/@/router/backEnd';\r\n\timport {useUserInfo} from \"/@/stores/userInfo\";\r\n\timport { Session } from '/@/utils/storage';\r\n\timport { Search } from '@element-plus/icons-vue'\r\n\timport { ElMessage } from 'element-plus'\r\n\timport type { FormInstance, FormRules } from 'element-plus'\r\n\timport { workApplyApi } from '/@/api/specialWorkSystem/workApply';\r\n\r\n\r\n\tinterface stateType {\r\n\t\tform: Object,\r\n\t\tworkerList: Array<any>,\r\n\t\tworkTypeList: Array<any>,\r\n\t\tworkLevelList: Array<any>,\r\n\t\totherWorkList: Array<any>\r\n\t}\r\n\texport default defineComponent({\r\n\t\tname: 'workTicket',\r\n\t\tcomponents: {},\r\n\t\tsetup() {\r\n\t\t\tconst userInfo = useUserInfo()\r\n\t\t\tconst { userInfos } = storeToRefs(userInfo);\r\n\t\t\tconst state  = reactive<stateType>({\r\n\t\t\t\tform: {\r\n\t\t\t\t\toperatorUids: [],\r\n\t\t\t\t\tworkType: 1,\r\n\t\t\t\t\tworkLevel: null,\r\n\t\t\t\t\tworkContent: '',\r\n\t\t\t\t\tworkLocation: '',\r\n\t\t\t\t\tworkDetail:{\r\n\t\t\t\t\t\thotMethod: '',\r\n\t\t\t\t\t\totherSpecialWork: []\r\n\t\t\t\t\t},\r\n\t\t\t\t\tworkTimeLine: [],\r\n\t\t\t\t\texpStartTime: '',\r\n\t\t\t\t\texpEndTime: ''\r\n\t\t\t\t},\r\n\t\t\t\tworkerList:[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"张三\",\r\n\t\t\t\t\t\tvalue: 53\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"李四\",\r\n\t\t\t\t\t\tvalue: 54\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"测试一\",\r\n\t\t\t\t\t\tvalue: 55\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"测试二\",\r\n\t\t\t\t\t\tvalue: 56\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tworkTypeList: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"类型一\",\r\n\t\t\t\t\t\tvalue: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"类型二\",\r\n\t\t\t\t\t\tvalue: 2\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tworkLevelList: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"一级动火作业\",\r\n\t\t\t\t\t\tvalue: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"二级动火作业\",\r\n\t\t\t\t\t\tvalue: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"特级动火作业\",\r\n\t\t\t\t\t\tvalue: 3\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\totherWorkList: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"动火作业\",\r\n\t\t\t\t\t\tvalue: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"受限空间作业\",\r\n\t\t\t\t\t\tvalue: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"吊装作业\",\r\n\t\t\t\t\t\tvalue: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"动土作业\",\r\n\t\t\t\t\t\tvalue: 4\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"断路作业\",\r\n\t\t\t\t\t\tvalue: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"高处作业\",\r\n\t\t\t\t\t\tvalue: 6\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"临时用电作业\",\r\n\t\t\t\t\t\tvalue: 7\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlabel: \"盲板抽堵作业\",\r\n\t\t\t\t\t\tvalue: 8\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t});\r\n\t\t\tconst ruleFormRef = ref<FormInstance>()\r\n\t\t\tconst applyRules = reactive<FormRules>({\r\n\t\t\t\toperatorUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\tworkType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\tworkLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\tworkContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\tworkLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\tworkTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\t\"workDetail.hotMethod\": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],\r\n\t\t\t\t\"workDetail.otherSpecialWork\": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]\r\n\t\t\t});\r\n\t\t\tconst submitForm = async (formEl: FormInstance | undefined) => {\r\n\t\t\t\tif (!formEl) return\r\n\t\t\t\tawait formEl.validate(async (valid, fields) => {\r\n\t\t\t\t\tif (valid) {\r\n\t\t\t\t\t\tstate.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]\r\n\t\t\t\t\t\tstate.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]\r\n\t\t\t\t\t\tlet { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))\r\n\t\t\t\t\t\tdata.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')\r\n\t\t\t\t\t\tconsole.log(data,'data')\r\n\t\t\t\t\t\tconst res = await workApplyApi().postFireApply(data)\r\n\t\t\t\t\t\tif (res.data.code === '200') {\r\n\t\t\t\t\t\t\t\tElMessage({\r\n\t\t\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\t\t\tmessage: '提交成功!'\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tformEl.resetFields()\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tElMessage({\r\n\t\t\t\t\t\t\t\ttype: 'warning',\r\n\t\t\t\t\t\t\t\tmessage: res.data.msg\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.log('error submit!', fields)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\t// 折线图\r\n\t\t\tconst renderMenu = async (value: string) => {\r\n\t\t\t\tSession.set('projectId',value)\r\n\t\t\t\tuserInfos.value.projectId = value\r\n\t\t\t\tawait initBackEndControlRoutes();\r\n\t\t\t};\r\n\t\t\treturn {\r\n\t\t\t\trenderMenu,\r\n\t\t\t\tSearch,\r\n\t\t\t\truleFormRef,\r\n\t\t\t\tapplyRules,\r\n\t\t\t\tsubmitForm,\r\n\t\t\t\t...toRefs(state),\r\n\t\t\t};\r\n\t\t},\r\n\t});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n\t.home-container {\r\n\t\theight: 100%;\r\n\t\toverflow: hidden;\r\n\t\tposition: relative;\r\n\t\t.homeCard{\r\n\t\t\twidth: 100%;\r\n\t\t\tpadding: 20px;\r\n\t\t\tbox-sizing: border-box;\r\n\t\t\tbackground: #fff;\r\n\t\t\tborder-radius: 4px;\r\n\t\t\tmargin-bottom: 20px;\r\n\t\t}\r\n\t\t.applyBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tbackground: #fff;\r\n\t\t\theight: 80px;\r\n\t\t\tz-index: 5;\r\n\t\t\tbox-shadow: 0 -3px 8px rgba(150,150,150,.1);\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tjustify-content: center;\r\n\t\t}\r\n\t\t.el-row{\r\n\t\t\tmargin-bottom: 20px;\r\n\t\t}\r\n\t\t.el-row:last-child {\r\n\t\t\tmargin-bottom: 0;\r\n\t\t}\r\n\t\t.el-input{\r\n\t\t\twidth: 100% !important;\r\n\t\t}\r\n\t\t.el-date-editor::v-deep{\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t\t.el-select{\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t\t.el-cascader{\r\n\t\t\twidth: 100% !important;\r\n\t\t}\r\n\t}\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue b/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue
+--- a/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue	(date 1660894149383)
+@@ -1,317 +1,279 @@
+ <template>
+-	<div class="home-container">
+-		<div style="height: 100%">
+-		<el-form :model="form" label-width="120px" :rules="applyRules" ref="ruleFormRef">
+-			<div class="homeCard">
+-			<el-row>
+-				<el-col :span="12">
+-					<el-form-item label="作业人" prop="operatorUids">
+-						<el-select v-model="form.operatorUids" multiple>
+-							<el-option
+-									v-for="item in workerList"
+-									:key="item.value"
+-									:label="item.label"
+-									:value="item.value"
+-							/>
+-						</el-select>
+-					</el-form-item>
+-				</el-col>
+-			</el-row>
+-			<el-row>
+-				<el-col :span="12">
+-					<el-form-item label="作业等级" prop="workLevel">
+-						<el-select v-model="form.workLevel">
+-							<el-option
+-									v-for="item in workLevelList"
+-									:key="item.value"
+-									:label="item.label"
+-									:value="item.value"
+-							/>
+-						</el-select>
+-					</el-form-item>
+-				</el-col>
+-				<el-col :span="12">
+-					<el-form-item label="作业时间" prop="workTimeLine">
+-						<el-date-picker
+-								v-model="form.workTimeLine"
+-								format="YYYY-MM-DD HH:mm"
+-								value-format="YYYY-MM-DD HH:mm:00"
+-								type="datetimerange"
+-								range-separator="至"
+-								start-placeholder="开始时间"
+-								end-placeholder="结束时间"
+-						/>
+-					</el-form-item>
+-				</el-col>
+-			</el-row>
+-			<el-row>
+-				<el-col :span="12">
+-					<el-form-item label="作业内容" prop="workContent">
+-						<el-input
+-								v-model="form.workContent"
+-								autosize
+-								type="textarea"
+-								placeholder="请输入作业内容"
+-						/>
+-					</el-form-item>
+-				</el-col>
+-				<el-col :span="12">
+-					<el-form-item label="作业地址" prop="workLocation">
+-						<el-input
+-								v-model="form.workLocation"
+-								autosize
+-								type="textarea"
+-								placeholder="请输入作业地址"
+-						/>
+-					</el-form-item>
+-				</el-col>
+-			</el-row>
+-			<el-row>
+-				<el-col :span="12">
+-					<el-form-item label="动火方式" prop="workDetail.hotMethod">
+-						<el-input
+-								v-model="form.workDetail.hotMethod"
+-								autosize
+-								type="textarea"
+-								placeholder="请输入动火方式"
+-						/>
+-					</el-form-item>
+-				</el-col>
+-				<el-col :span="12">
+-					<el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+-						<el-select v-model="form.workDetail.otherSpecialWork" multiple>
+-							<el-option
+-									v-for="item in otherWorkList"
+-									:key="item.value"
+-									:label="item.label"
+-									:value="item.value"
+-							/>
+-						</el-select>
+-					</el-form-item>
+-				</el-col>
+-			</el-row>
+-			</div>
+-		</el-form>
+-		<div class="applyBtn">
+-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+-		</div>
+-	</div>
+-	</div>
++    <div class="home-container">
++        <div style="height: 100%">
++            <el-form :model="form" label-width="120px" :rules="applyRules" ref="ruleFormRef">
++                <div class="homeCard">
++                    <el-row>
++                        <el-col :span="12">
++                            <el-form-item label="作业人" prop="operatorUids">
++                                <el-select v-model="form.operatorUids" multiple>
++                                    <el-option v-for="item in workerList" :key="item.value" :label="item.label" :value="item.value" />
++                                </el-select>
++                            </el-form-item>
++                        </el-col>
++                    </el-row>
++                    <el-row>
++                        <el-col :span="12">
++                            <el-form-item label="作业等级" prop="workLevel">
++                                <el-select v-model="form.workLevel">
++                                    <el-option v-for="item in workLevelList" :key="item.value" :label="item.label" :value="item.value" />
++                                </el-select>
++                            </el-form-item>
++                        </el-col>
++                        <el-col :span="12">
++                            <el-form-item label="作业时间" prop="workTimeLine">
++                                <el-date-picker v-model="form.workTimeLine" format="YYYY-MM-DD HH:mm" value-format="YYYY-MM-DD HH:mm:00" type="datetimerange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
++                            </el-form-item>
++                        </el-col>
++                    </el-row>
++                    <el-row>
++                        <el-col :span="12">
++                            <el-form-item label="作业内容" prop="workContent">
++                                <el-input v-model="form.workContent" autosize type="textarea" placeholder="请输入作业内容" />
++                            </el-form-item>
++                        </el-col>
++                        <el-col :span="12">
++                            <el-form-item label="作业地址" prop="workLocation">
++                                <el-input v-model="form.workLocation" autosize type="textarea" placeholder="请输入作业地址" />
++                            </el-form-item>
++                        </el-col>
++                    </el-row>
++                    <el-row>
++                        <el-col :span="12">
++                            <el-form-item label="动火方式" prop="workDetail.hotMethod">
++                                <el-input v-model="form.workDetail.hotMethod" autosize type="textarea" placeholder="请输入动火方式" />
++                            </el-form-item>
++                        </el-col>
++                        <el-col :span="12">
++                            <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
++                                <el-select v-model="form.workDetail.otherSpecialWork" multiple>
++                                    <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" />
++                                </el-select>
++                            </el-form-item>
++                        </el-col>
++                    </el-row>
++                </div>
++            </el-form>
++            <div class="applyBtn">
++                <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
++            </div>
++        </div>
++    </div>
+ </template>
+ 
+ <script lang="ts">
+-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+-	import { storeToRefs } from 'pinia';
+-	import { initBackEndControlRoutes } from '/@/router/backEnd';
+-	import {useUserInfo} from "/@/stores/userInfo";
+-	import { Session } from '/@/utils/storage';
+-	import { Search } from '@element-plus/icons-vue'
+-	import { ElMessage } from 'element-plus'
+-	import type { FormInstance, FormRules } from 'element-plus'
+-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
++import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
++import { storeToRefs } from 'pinia';
++import { initBackEndControlRoutes } from '/@/router/backEnd';
++import { useUserInfo } from '/@/stores/userInfo';
++import { Session } from '/@/utils/storage';
++import { Search } from '@element-plus/icons-vue';
++import { ElMessage } from 'element-plus';
++import type { FormInstance, FormRules } from 'element-plus';
++import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+ 
+-
+-	interface stateType {
+-		form: Object,
+-		workerList: Array<any>,
+-		workTypeList: Array<any>,
+-		workLevelList: Array<any>,
+-		otherWorkList: Array<any>
+-	}
+-	export default defineComponent({
+-		name: 'workTicket',
+-		components: {},
+-		setup() {
+-			const userInfo = useUserInfo()
+-			const { userInfos } = storeToRefs(userInfo);
+-			const state  = reactive<stateType>({
+-				form: {
+-					operatorUids: [],
+-					workType: 1,
+-					workLevel: null,
+-					workContent: '',
+-					workLocation: '',
+-					workDetail:{
+-						hotMethod: '',
+-						otherSpecialWork: []
+-					},
+-					workTimeLine: [],
+-					expStartTime: '',
+-					expEndTime: ''
+-				},
+-				workerList:[
+-					{
+-						label: "张三",
+-						value: 53
+-					},
+-					{
+-						label: "李四",
+-						value: 54
+-					},
+-					{
+-						label: "测试一",
+-						value: 55
+-					},
+-					{
+-						label: "测试二",
+-						value: 56
+-					}
+-				],
+-				workTypeList: [
+-					{
+-						label: "类型一",
+-						value: 1
+-					},
+-					{
+-						label: "类型二",
+-						value: 2
+-					}
+-				],
+-				workLevelList: [
+-					{
+-						label: "一级动火作业",
+-						value: 1
+-					},
+-					{
+-						label: "二级动火作业",
+-						value: 2
+-					},
+-					{
+-						label: "特级动火作业",
+-						value: 3
+-					}
+-				],
+-				otherWorkList: [
+-					{
+-						label: "动火作业",
+-						value: 1
+-					},
+-					{
+-						label: "受限空间作业",
+-						value: 2
+-					},
+-					{
+-						label: "吊装作业",
+-						value: 3
+-					},
+-					{
+-						label: "动土作业",
+-						value: 4
+-					},
+-					{
+-						label: "断路作业",
+-						value: 5
+-					},
+-					{
+-						label: "高处作业",
+-						value: 6
+-					},
+-					{
+-						label: "临时用电作业",
+-						value: 7
+-					},
+-					{
+-						label: "盲板抽堵作业",
+-						value: 8
+-					}
+-				]
+-			});
+-			const ruleFormRef = ref<FormInstance>()
+-			const applyRules = reactive<FormRules>({
+-				operatorUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				"workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+-				"workDetail.otherSpecialWork": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+-			});
+-			const submitForm = async (formEl: FormInstance | undefined) => {
+-				if (!formEl) return
+-				await formEl.validate(async (valid, fields) => {
+-					if (valid) {
+-						state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+-						state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+-						let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+-						data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
+-						console.log(data,'data')
+-						const res = await workApplyApi().postFireApply(data)
+-						if (res.data.code === '200') {
+-								ElMessage({
+-									type: 'success',
+-									message: '提交成功!'
+-								});
+-								formEl.resetFields()
+-						} else {
+-							ElMessage({
+-								type: 'warning',
+-								message: res.data.msg
+-							});
+-						}
+-					} else {
+-						console.log('error submit!', fields)
+-					}
+-				})
+-			}
+-			// 折线图
+-			const renderMenu = async (value: string) => {
+-				Session.set('projectId',value)
+-				userInfos.value.projectId = value
+-				await initBackEndControlRoutes();
+-			};
+-			return {
+-				renderMenu,
+-				Search,
+-				ruleFormRef,
+-				applyRules,
+-				submitForm,
+-				...toRefs(state),
+-			};
+-		},
+-	});
++interface stateType {
++    form: Object;
++    workerList: Array<any>;
++    workTypeList: Array<any>;
++    workLevelList: Array<any>;
++    otherWorkList: Array<any>;
++}
++export default defineComponent({
++    name: 'workTicket',
++    components: {},
++    setup() {
++        const userInfo = useUserInfo();
++        const { userInfos } = storeToRefs(userInfo);
++        const state = reactive<stateType>({
++            form: {
++                operatorUids: [],
++                workType: 1,
++                workLevel: null,
++                workContent: '',
++                workLocation: '',
++                workDetail: {
++                    hotMethod: '',
++                    otherSpecialWork: []
++                },
++                workTimeLine: [],
++                expStartTime: '',
++                expEndTime: ''
++            },
++            workerList: [
++                {
++                    label: '张三',
++                    value: 53
++                },
++                {
++                    label: '李四',
++                    value: 54
++                },
++                {
++                    label: '测试一',
++                    value: 55
++                },
++                {
++                    label: '测试二',
++                    value: 56
++                }
++            ],
++            workTypeList: [
++                {
++                    label: '类型一',
++                    value: 1
++                },
++                {
++                    label: '类型二',
++                    value: 2
++                }
++            ],
++            workLevelList: [
++                {
++                    label: '一级动火作业',
++                    value: 1
++                },
++                {
++                    label: '二级动火作业',
++                    value: 2
++                },
++                {
++                    label: '特级动火作业',
++                    value: 3
++                }
++            ],
++            otherWorkList: [
++                {
++                    label: '动火作业',
++                    value: 1
++                },
++                {
++                    label: '受限空间作业',
++                    value: 2
++                },
++                {
++                    label: '吊装作业',
++                    value: 3
++                },
++                {
++                    label: '动土作业',
++                    value: 4
++                },
++                {
++                    label: '断路作业',
++                    value: 5
++                },
++                {
++                    label: '高处作业',
++                    value: 6
++                },
++                {
++                    label: '临时用电作业',
++                    value: 7
++                },
++                {
++                    label: '盲板抽堵作业',
++                    value: 8
++                }
++            ]
++        });
++        const ruleFormRef = ref<FormInstance>();
++        const applyRules = reactive<FormRules>({
++            operatorUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            'workDetail.hotMethod': [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
++            'workDetail.otherSpecialWork': [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
++        });
++        const submitForm = async (formEl: FormInstance | undefined) => {
++            if (!formEl) return;
++            await formEl.validate(async (valid, fields) => {
++                if (valid) {
++                    state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0];
++                    state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1];
++                    let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form));
++                    data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',');
++                    console.log(data, 'data');
++                    const res = await workApplyApi().postFireApply(data);
++                    if (res.data.code === '200') {
++                        ElMessage({
++                            type: 'success',
++                            message: '提交成功!'
++                        });
++                        formEl.resetFields();
++                    } else {
++                        ElMessage({
++                            type: 'warning',
++                            message: res.data.msg
++                        });
++                    }
++                } else {
++                    console.log('error submit!', fields);
++                }
++            });
++        };
++        // 折线图
++        const renderMenu = async (value: string) => {
++            Session.set('projectId', value);
++            userInfos.value.projectId = value;
++            await initBackEndControlRoutes();
++        };
++
++        return {
++            renderMenu,
++            Search,
++            ruleFormRef,
++            applyRules,
++            submitForm,
++            ...toRefs(state)
++        };
++    }
++});
+ </script>
+ 
+ <style scoped lang="scss">
+-	.home-container {
+-		height: 100%;
+-		overflow: hidden;
+-		position: relative;
+-		.homeCard{
+-			width: 100%;
+-			padding: 20px;
+-			box-sizing: border-box;
+-			background: #fff;
+-			border-radius: 4px;
+-			margin-bottom: 20px;
+-		}
+-		.applyBtn{
+-			width: 100%;
+-			background: #fff;
+-			height: 80px;
+-			z-index: 5;
+-			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+-			display: flex;
+-			align-items: center;
+-			justify-content: center;
+-		}
+-		.el-row{
+-			margin-bottom: 20px;
+-		}
+-		.el-row:last-child {
+-			margin-bottom: 0;
+-		}
+-		.el-input{
+-			width: 100% !important;
+-		}
+-		.el-date-editor::v-deep{
+-			width: 100%;
+-		}
+-		.el-select{
+-			width: 100%;
+-		}
+-		.el-cascader{
+-			width: 100% !important;
+-		}
+-	}
++.home-container {
++    height: 100%;
++    overflow: hidden;
++    position: relative;
++    .homeCard {
++        width: 100%;
++        padding: 20px;
++        box-sizing: border-box;
++        background: #fff;
++        border-radius: 4px;
++        margin-bottom: 20px;
++    }
++    .applyBtn {
++        width: 100%;
++        background: #fff;
++        height: 80px;
++        z-index: 5;
++        box-shadow: 0 -3px 8px rgba(150, 150, 150, 0.1);
++        display: flex;
++        align-items: center;
++        justify-content: center;
++    }
++    .el-row {
++        margin-bottom: 20px;
++    }
++    .el-row:last-child {
++        margin-bottom: 0;
++    }
++    .el-input {
++        width: 100% !important;
++    }
++    .el-date-editor::v-deep {
++        width: 100%;
++    }
++    .el-select {
++        width: 100%;
++    }
++    .el-cascader {
++        width: 100% !important;
++    }
++}
+ </style>
+Index: .idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml
+===================================================================
+diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml
+deleted file mode 100644
+--- a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22__Default_Changelist_.xml	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ /dev/null	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
+@@ -1,9 +0,0 @@
+-<changelist name="Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]" date="1660217002849" recycled="true" deleted="true">
+-  <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/shelved.patch" />
+-  <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/8/11 19:22 [Default Changelist]" />
+-  <binary>
+-    <option name="BEFORE_PATH" />
+-    <option name="AFTER_PATH" value="src/assets/companyLogo.png" />
+-    <option name="SHELVED_PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/companyLogo.png" />
+-  </binary>
+-</changelist>
+\ No newline at end of file
+Index: .idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/shelved.patch
+===================================================================
+diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/shelved.patch
+deleted file mode 100644
+--- a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/shelved.patch	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ /dev/null	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
+@@ -1,233 +0,0 @@
+-Index: src/layout/navBars/breadcrumb/user.vue
+-IDEA additional info:
+-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+-<+><template>\r\n    <div class=\"layout-navbars-breadcrumb-user pr15\" :style=\"{ flex: layoutUserFlexNum }\">\r\n        <div class=\"logo\">\r\n            <img src=\"../../../assets/menu/companyLogo.jpg\" />\r\n            <span style=\"font-size: 16px; color: #333; font-weight: bolder\"> | {{ systemName }}</span>\r\n        </div>\r\n        <div style=\"display: flex;align-items:center;padding-right: 5px\">\r\n        <div @click=\"backToMenu()\" class=\"backBtn\">返回首页</div>\r\n        <el-dropdown :show-timeout=\"70\" :hide-timeout=\"50\" trigger=\"click\" @command=\"onComponentSizeChange\">\r\n            <div class=\"layout-navbars-breadcrumb-user-icon\">\r\n                <i class=\"iconfont icon-ziti\" :title=\"$t('message.user.title0')\"></i>\r\n            </div>\r\n            <template #dropdown>\r\n                <el-dropdown-menu>\r\n                    <el-dropdown-item command=\"large\" :disabled=\"disabledSize === 'large'\">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>\r\n                    <el-dropdown-item command=\"default\" :disabled=\"disabledSize === 'default'\">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>\r\n                    <el-dropdown-item command=\"small\" :disabled=\"disabledSize === 'small'\">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>\r\n                </el-dropdown-menu>\r\n            </template>\r\n        </el-dropdown>\r\n<!--        <el-dropdown :show-timeout=\"70\" :hide-timeout=\"50\" trigger=\"click\" @command=\"onLanguageChange\">-->\r\n<!--            <div class=\"layout-navbars-breadcrumb-user-icon\">-->\r\n<!--                <i class=\"iconfont\" :class=\"disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'\" :title=\"$t('message.user.title1')\"></i>-->\r\n<!--            </div>-->\r\n<!--            <template #dropdown>-->\r\n<!--                <el-dropdown-menu>-->\r\n<!--                    <el-dropdown-item command=\"zh-cn\" :disabled=\"disabledI18n === 'zh-cn'\">简体中文</el-dropdown-item>-->\r\n<!--                    <el-dropdown-item command=\"en\" :disabled=\"disabledI18n === 'en'\">English</el-dropdown-item>-->\r\n<!--                    <el-dropdown-item command=\"zh-tw\" :disabled=\"disabledI18n === 'zh-tw'\">繁體中文</el-dropdown-item>-->\r\n<!--                </el-dropdown-menu>-->\r\n<!--            </template>-->\r\n<!--        </el-dropdown>-->\r\n<!--        <div class=\"layout-navbars-breadcrumb-user-icon\" @click=\"onSearchClick\">-->\r\n<!--            <el-icon :title=\"$t('message.user.title2')\">-->\r\n<!--                <ele-Search />-->\r\n<!--            </el-icon>-->\r\n<!--        </div>-->\r\n        <!--        <div class=\"layout-navbars-breadcrumb-user-icon\" @click=\"onLayoutSetingClick\">-->\r\n        <!--            <i class=\"icon-skin iconfont\" :title=\"$t('message.user.title3')\"></i>-->\r\n        <!--        </div>-->\r\n        <!--        <div class=\"layout-navbars-breadcrumb-user-icon\">-->\r\n        <!--            <el-popover placement=\"bottom\" trigger=\"click\" transition=\"el-zoom-in-top\" :width=\"300\" :persistent=\"false\">-->\r\n        <!--                <template #reference>-->\r\n        <!--                    <el-badge :is-dot=\"true\">-->\r\n        <!--                        <el-icon :title=\"$t('message.user.title4')\">-->\r\n        <!--                            <ele-Bell />-->\r\n        <!--                        </el-icon>-->\r\n        <!--                    </el-badge>-->\r\n        <!--                </template>-->\r\n        <!--                <template #default>-->\r\n        <!--                    <UserNews />-->\r\n        <!--                </template>-->\r\n        <!--            </el-popover>-->\r\n        <!--        </div>-->\r\n        <div class=\"layout-navbars-breadcrumb-user-icon mr10\" @click=\"onScreenfullClick\">\r\n            <i class=\"iconfont\" :title=\"isScreenfull ? $t('message.user.title6') : $t('message.user.title5')\" :class=\"!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'\"></i>\r\n        </div>\r\n        <el-dropdown :show-timeout=\"70\" :hide-timeout=\"50\" @command=\"onHandleCommandClick\">\r\n            <span class=\"layout-navbars-breadcrumb-user-link\">\r\n                <img :src=\"userInfos.photo\" class=\"layout-navbars-breadcrumb-user-link-photo mr5\" />\r\n                {{ userInfos.userName }}\r\n                <el-icon class=\"el-icon--right\">\r\n                    <ele-ArrowDown />\r\n                </el-icon>\r\n            </span>\r\n            <template #dropdown>\r\n                <el-dropdown-menu>\r\n                    <el-dropdown-item command=\"/homeMenu\">{{ $t('message.user.dropdown1') }}</el-dropdown-item>\r\n                    <!--                    <el-dropdown-item command=\"wareHouse\">{{ $t('message.user.dropdown6') }}</el-dropdown-item>-->\r\n<!--                    <el-dropdown-item command=\"/personal\">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->\r\n                    <!--\t\t\t\t\t<el-dropdown-item command=\"/404\">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->\r\n                    <!--\t\t\t\t\t<el-dropdown-item command=\"/401\">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->\r\n                    <el-dropdown-item divided command=\"logOut\">{{ $t('message.user.dropdown5') }}</el-dropdown-item>\r\n                </el-dropdown-menu>\r\n            </template>\r\n        </el-dropdown>\r\n        <Search ref=\"searchRef\" />\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { ref, getCurrentInstance, computed, reactive, toRefs, onMounted, defineComponent } from 'vue';\r\nimport { useRouter } from 'vue-router';\r\nimport { ElMessageBox, ElMessage } from 'element-plus';\r\nimport screenfull from 'screenfull';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useUserInfo } from '/@/stores/userInfo';\r\nimport { useThemeConfig } from '/@/stores/themeConfig';\r\nimport other from '/@/utils/other';\r\nimport { Session, Local } from '/@/utils/storage';\r\nimport UserNews from '/@/layout/navBars/breadcrumb/userNews.vue';\r\nimport Search from '/@/layout/navBars/breadcrumb/search.vue';\r\nimport { useLoginApi } from '/@/api/login';\r\nimport { useMenuApi } from '/@/api/systemManage/menu/index';\r\n\r\nconst menuApi = useMenuApi();\r\nimport { backEndComponent, getBackEndControlRoutes, initBackEndControlRoutes, setAddRoute, setFilterMenuAndCacheTagsViewRoutes } from '../../../router/backEnd';\r\nimport { NextLoading } from '/@/utils/loading';\r\nimport { useRequestOldRoutes } from '/@/stores/requestOldRoutes';\r\nimport { dynamicRoutes } from '/@/router/route';\r\n\r\nexport default defineComponent({\r\n    name: 'layoutBreadcrumbUser',\r\n    components: { UserNews, Search },\r\n    setup() {\r\n        const { t } = useI18n();\r\n        const { proxy } = <any>getCurrentInstance();\r\n        const router = useRouter();\r\n        const stores = useUserInfo();\r\n        const storesThemeConfig = useThemeConfig();\r\n        const { userInfos } = storeToRefs(stores);\r\n        const { themeConfig } = storeToRefs(storesThemeConfig);\r\n        const searchRef = ref();\r\n        const state = reactive({\r\n            isScreenfull: false,\r\n            disabledI18n: 'zh-cn',\r\n            disabledSize: 'large',\r\n            systemName: ''\r\n        });\r\n        // 设置分割样式\r\n        const layoutUserFlexNum = computed(() => {\r\n            let num: string | number = '';\r\n            const { layout, isClassicSplitMenu } = themeConfig.value;\r\n            const layoutArr: string[] = ['defaults', 'columns'];\r\n            if (layoutArr.includes(layout) || (layout === 'classic' && !isClassicSplitMenu)) num = '1';\r\n            else num = '';\r\n            return num;\r\n        });\r\n        // 全屏点击时\r\n        const onScreenfullClick = () => {\r\n            if (!screenfull.isEnabled) {\r\n                ElMessage.warning('暂不不支持全屏');\r\n                return false;\r\n            }\r\n            screenfull.toggle();\r\n            screenfull.on('change', () => {\r\n                if (screenfull.isFullscreen) state.isScreenfull = true;\r\n                else state.isScreenfull = false;\r\n            });\r\n        };\r\n        // 布局配置 icon 点击时\r\n        const onLayoutSetingClick = () => {\r\n            proxy.mittBus.emit('openSetingsDrawer');\r\n        };\r\n        // 下拉菜单点击时\r\n        const onHandleCommandClick = (path: string) => {\r\n            if (path === 'logOut') {\r\n                ElMessageBox({\r\n                    closeOnClickModal: false,\r\n                    closeOnPressEscape: false,\r\n                    title: t('message.user.logOutTitle'),\r\n                    message: t('message.user.logOutMessage'),\r\n                    showCancelButton: true,\r\n                    confirmButtonText: t('message.user.logOutConfirm'),\r\n                    cancelButtonText: t('message.user.logOutCancel'),\r\n                    buttonSize: 'default',\r\n                    beforeClose: (action, instance, done) => {\r\n                        if (action === 'confirm') {\r\n                            instance.confirmButtonLoading = true;\r\n                            instance.confirmButtonText = t('message.user.logOutExit');\r\n                            setTimeout(() => {\r\n                                done();\r\n                                setTimeout(() => {\r\n                                    instance.confirmButtonLoading = false;\r\n                                }, 300);\r\n                            }, 700);\r\n                        } else {\r\n                            done();\r\n                        }\r\n                    }\r\n                })\r\n                    .then(async () => {\r\n                        let res = await useLoginApi().signOut();\r\n                        if (res.data.code === '200') {\r\n                            Session.clear(); // 清除缓存/token等\r\n                            // 使用 reload 时,不需要调用 resetRoute() 重置路由\r\n                            window.location.reload();\r\n                        } else {\r\n                            ElMessage({\r\n                                type: 'warning',\r\n                                message: res.data.msg\r\n                            });\r\n                        }\r\n                    })\r\n                    .catch(() => {});\r\n            } else if (path === 'wareHouse') {\r\n                window.open('https://gitee.com/lyt-top/vue-next-admin');\r\n            } else {\r\n                router.push(path);\r\n            }\r\n        };\r\n        // 菜单搜索点击\r\n        const onSearchClick = () => {\r\n            searchRef.value.openSearch();\r\n        };\r\n        // 组件大小改变\r\n        const onComponentSizeChange = (size: string) => {\r\n            Local.remove('themeConfig');\r\n            themeConfig.value.globalComponentSize = size;\r\n            Local.set('themeConfig', themeConfig.value);\r\n            initComponentSize();\r\n            window.location.reload();\r\n        };\r\n        // 语言切换\r\n        const onLanguageChange = (lang: string) => {\r\n            Local.remove('themeConfig');\r\n            themeConfig.value.globalI18n = lang;\r\n            Local.set('themeConfig', themeConfig.value);\r\n            proxy.$i18n.locale = lang;\r\n            initI18n();\r\n            other.useTitle();\r\n        };\r\n        // 设置 element plus 组件的国际化\r\n        const setI18nConfig = (locale: string) => {\r\n            proxy.mittBus.emit('getI18nConfig', proxy.$i18n.messages[locale]);\r\n        };\r\n        // 初始化言语国际化\r\n        const initI18n = () => {\r\n            switch (Local.get('themeConfig').globalI18n) {\r\n                case 'zh-cn':\r\n                    state.disabledI18n = 'zh-cn';\r\n                    setI18nConfig('zh-cn');\r\n                    break;\r\n                case 'en':\r\n                    state.disabledI18n = 'en';\r\n                    setI18nConfig('en');\r\n                    break;\r\n                case 'zh-tw':\r\n                    state.disabledI18n = 'zh-tw';\r\n                    setI18nConfig('zh-tw');\r\n                    break;\r\n            }\r\n        };\r\n        // 初始化全局组件大小\r\n        const initComponentSize = () => {\r\n            switch (Local.get('themeConfig').globalComponentSize) {\r\n                case 'large':\r\n                    state.disabledSize = 'large';\r\n                    break;\r\n                case 'default':\r\n                    state.disabledSize = 'default';\r\n                    break;\r\n                case 'small':\r\n                    state.disabledSize = 'small';\r\n                    break;\r\n            }\r\n        };\r\n\r\n        const getSysName = async()=>{\r\n            if (window.nextLoading === undefined) NextLoading.start();\r\n            if (!Session.get('token')) return false;\r\n            const res = await menuApi.getMenuAdmin(Session.get('projectId') === null ? '' : Session.get('projectId'));\r\n            if(res.data.code === '200'){\r\n                state.systemName = res.data.data[1].project.projectName;\r\n                console.log(state.systemName)\r\n            }else{\r\n                console.log('有问题')\r\n            }\r\n        }\r\n        const backToMenu=()=>{\r\n            router.push({ path: 'homeMenu' })\r\n        }\r\n        // 页面加载时\r\n        onMounted(() => {\r\n            if (Local.get('themeConfig')) {\r\n                initI18n();\r\n                initComponentSize();\r\n            }\r\n            getSysName()\r\n        });\r\n        return {\r\n            userInfos,\r\n            backToMenu,\r\n            onLayoutSetingClick,\r\n            onHandleCommandClick,\r\n            onScreenfullClick,\r\n            onSearchClick,\r\n            onComponentSizeChange,\r\n            onLanguageChange,\r\n            searchRef,\r\n            layoutUserFlexNum,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.layout-navbars-breadcrumb-user {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n\r\n    .logo{\r\n        height: 50px;\r\n        padding: 5px 10px;\r\n        display: flex;\r\n        align-items: center;\r\n        overflow: hidden;\r\n        box-sizing: border-box;\r\n        img{\r\n            height: 100%;\r\n        }\r\n    }\r\n    &-link {\r\n        height: 100%;\r\n        display: flex;\r\n        align-items: center;\r\n        white-space: nowrap;\r\n        &-photo {\r\n            width: 25px;\r\n            height: 25px;\r\n            border-radius: 100%;\r\n        }\r\n    }\r\n    &-icon {\r\n        padding: 0 10px;\r\n        cursor: pointer;\r\n        color: var(--next-bg-topBarColor);\r\n        height: 50px;\r\n        line-height: 50px;\r\n        display: flex;\r\n        align-items: center;\r\n        &:hover {\r\n            background: var(--next-color-user-hover);\r\n            i {\r\n                display: inline-block;\r\n                animation: logoAnimation 0.3s ease-in-out;\r\n            }\r\n        }\r\n    }\r\n    ::v-deep(.el-dropdown) {\r\n        color: var(--next-bg-topBarColor);\r\n    }\r\n    ::v-deep(.el-badge) {\r\n        height: 40px;\r\n        line-height: 40px;\r\n        display: flex;\r\n        align-items: center;\r\n    }\r\n    ::v-deep(.el-badge__content.is-fixed) {\r\n        top: 12px;\r\n    }\r\n    .backBtn{\r\n        font-size: 16px;\r\n        cursor: pointer;\r\n        margin-right: 20px;\r\n\r\n        &:hover{\r\n            color: #409eff;\r\n            font-weight: bolder;\r\n        }\r\n    }\r\n}\r\n</style>\r\n
+-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+-<+>UTF-8
+-===================================================================
+-diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue
+---- a/src/layout/navBars/breadcrumb/user.vue	(revision b37d9a1f4f39fb04f48a63d11d759c673e5f4d6a)
+-+++ b/src/layout/navBars/breadcrumb/user.vue	(date 1660216734138)
+-@@ -1,80 +1,80 @@
+- <template>
+-     <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
+-         <div class="logo">
+--            <img src="../../../assets/menu/companyLogo.jpg" />
+-+            <img src="../../../assets/menu/companyLogo.png" />
+-             <span style="font-size: 16px; color: #333; font-weight: bolder"> | {{ systemName }}</span>
+-         </div>
+--        <div style="display: flex;align-items:center;padding-right: 5px">
+--        <div @click="backToMenu()" class="backBtn">返回首页</div>
+--        <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
+--            <div class="layout-navbars-breadcrumb-user-icon">
+--                <i class="iconfont icon-ziti" :title="$t('message.user.title0')"></i>
+--            </div>
+--            <template #dropdown>
+--                <el-dropdown-menu>
+--                    <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>
+--                    <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>
+--                    <el-dropdown-item command="small" :disabled="disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
+--                </el-dropdown-menu>
+--            </template>
+--        </el-dropdown>
+--<!--        <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">-->
+--<!--            <div class="layout-navbars-breadcrumb-user-icon">-->
+--<!--                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>-->
+--<!--            </div>-->
+--<!--            <template #dropdown>-->
+--<!--                <el-dropdown-menu>-->
+--<!--                    <el-dropdown-item command="zh-cn" :disabled="disabledI18n === 'zh-cn'">简体中文</el-dropdown-item>-->
+--<!--                    <el-dropdown-item command="en" :disabled="disabledI18n === 'en'">English</el-dropdown-item>-->
+--<!--                    <el-dropdown-item command="zh-tw" :disabled="disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>-->
+--<!--                </el-dropdown-menu>-->
+--<!--            </template>-->
+--<!--        </el-dropdown>-->
+--<!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">-->
+--<!--            <el-icon :title="$t('message.user.title2')">-->
+--<!--                <ele-Search />-->
+--<!--            </el-icon>-->
+--<!--        </div>-->
+--        <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">-->
+--        <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
+--        <!--        </div>-->
+--        <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
+--        <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
+--        <!--                <template #reference>-->
+--        <!--                    <el-badge :is-dot="true">-->
+--        <!--                        <el-icon :title="$t('message.user.title4')">-->
+--        <!--                            <ele-Bell />-->
+--        <!--                        </el-icon>-->
+--        <!--                    </el-badge>-->
+--        <!--                </template>-->
+--        <!--                <template #default>-->
+--        <!--                    <UserNews />-->
+--        <!--                </template>-->
+--        <!--            </el-popover>-->
+--        <!--        </div>-->
+--        <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
+--            <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
+--        </div>
+--        <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
+--            <span class="layout-navbars-breadcrumb-user-link">
+--                <img :src="userInfos.photo" class="layout-navbars-breadcrumb-user-link-photo mr5" />
+--                {{ userInfos.userName }}
+--                <el-icon class="el-icon--right">
+--                    <ele-ArrowDown />
+--                </el-icon>
+--            </span>
+--            <template #dropdown>
+--                <el-dropdown-menu>
+--                    <el-dropdown-item command="/homeMenu">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
+--                    <!--                    <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item>-->
+--<!--                    <el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->
+--                    <!--					<el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->
+--                    <!--					<el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->
+--                    <el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
+--                </el-dropdown-menu>
+--            </template>
+--        </el-dropdown>
+--        <Search ref="searchRef" />
+-+        <div style="display: flex; align-items: center; padding-right: 5px">
+-+            <div @click="backToMenu()" class="backBtn">返回首页</div>
+-+            <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
+-+                <div class="layout-navbars-breadcrumb-user-icon">
+-+                    <i class="iconfont icon-ziti" :title="$t('message.user.title0')"></i>
+-+                </div>
+-+                <template #dropdown>
+-+                    <el-dropdown-menu>
+-+                        <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>
+-+                        <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>
+-+                        <el-dropdown-item command="small" :disabled="disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
+-+                    </el-dropdown-menu>
+-+                </template>
+-+            </el-dropdown>
+-+            <!--        <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">-->
+-+            <!--            <div class="layout-navbars-breadcrumb-user-icon">-->
+-+            <!--                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>-->
+-+            <!--            </div>-->
+-+            <!--            <template #dropdown>-->
+-+            <!--                <el-dropdown-menu>-->
+-+            <!--                    <el-dropdown-item command="zh-cn" :disabled="disabledI18n === 'zh-cn'">简体中文</el-dropdown-item>-->
+-+            <!--                    <el-dropdown-item command="en" :disabled="disabledI18n === 'en'">English</el-dropdown-item>-->
+-+            <!--                    <el-dropdown-item command="zh-tw" :disabled="disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>-->
+-+            <!--                </el-dropdown-menu>-->
+-+            <!--            </template>-->
+-+            <!--        </el-dropdown>-->
+-+            <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">-->
+-+            <!--            <el-icon :title="$t('message.user.title2')">-->
+-+            <!--                <ele-Search />-->
+-+            <!--            </el-icon>-->
+-+            <!--        </div>-->
+-+            <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">-->
+-+            <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
+-+            <!--        </div>-->
+-+            <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
+-+            <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
+-+            <!--                <template #reference>-->
+-+            <!--                    <el-badge :is-dot="true">-->
+-+            <!--                        <el-icon :title="$t('message.user.title4')">-->
+-+            <!--                            <ele-Bell />-->
+-+            <!--                        </el-icon>-->
+-+            <!--                    </el-badge>-->
+-+            <!--                </template>-->
+-+            <!--                <template #default>-->
+-+            <!--                    <UserNews />-->
+-+            <!--                </template>-->
+-+            <!--            </el-popover>-->
+-+            <!--        </div>-->
+-+            <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
+-+                <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
+-+            </div>
+-+            <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
+-+                <span class="layout-navbars-breadcrumb-user-link">
+-+                    <img :src="userInfos.photo" class="layout-navbars-breadcrumb-user-link-photo mr5" />
+-+                    {{ userInfos.userName }}
+-+                    <el-icon class="el-icon--right">
+-+                        <ele-ArrowDown />
+-+                    </el-icon>
+-+                </span>
+-+                <template #dropdown>
+-+                    <el-dropdown-menu>
+-+                        <el-dropdown-item command="/homeMenu">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
+-+                        <!--                    <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item>-->
+-+                        <!--                    <el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->
+-+                        <!--					<el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->
+-+                        <!--					<el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->
+-+                        <el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
+-+                    </el-dropdown-menu>
+-+                </template>
+-+            </el-dropdown>
+-+            <Search ref="searchRef" />
+-         </div>
+-     </div>
+- </template>
+-@@ -248,27 +248,27 @@
+-             }
+-         };
+- 
+--        const getSysName = async()=>{
+-+        const getSysName = async () => {
+-             if (window.nextLoading === undefined) NextLoading.start();
+-             if (!Session.get('token')) return false;
+-             const res = await menuApi.getMenuAdmin(Session.get('projectId') === null ? '' : Session.get('projectId'));
+--            if(res.data.code === '200'){
+-+            if (res.data.code === '200') {
+-                 state.systemName = res.data.data[1].project.projectName;
+--                console.log(state.systemName)
+--            }else{
+--                console.log('有问题')
+-+                console.log(state.systemName);
+-+            } else {
+-+                console.log('有问题');
+-             }
+--        }
+--        const backToMenu=()=>{
+--            router.push({ path: 'homeMenu' })
+--        }
+-+        };
+-+        const backToMenu = () => {
+-+            router.push({ path: 'homeMenu' });
+-+        };
+-         // 页面加载时
+-         onMounted(() => {
+-             if (Local.get('themeConfig')) {
+-                 initI18n();
+-                 initComponentSize();
+-             }
+--            getSysName()
+-+            getSysName();
+-         });
+-         return {
+-             userInfos,
+-@@ -293,14 +293,14 @@
+-     align-items: center;
+-     justify-content: space-between;
+- 
+--    .logo{
+-+    .logo {
+-         height: 50px;
+-         padding: 5px 10px;
+-         display: flex;
+-         align-items: center;
+-         overflow: hidden;
+-         box-sizing: border-box;
+--        img{
+-+        img {
+-             height: 100%;
+-         }
+-     }
+-@@ -343,12 +343,12 @@
+-     ::v-deep(.el-badge__content.is-fixed) {
+-         top: 12px;
+-     }
+--    .backBtn{
+-+    .backBtn {
+-         font-size: 16px;
+-         cursor: pointer;
+-         margin-right: 20px;
+- 
+--        &:hover{
+-+        &:hover {
+-             color: #409eff;
+-             font-weight: bolder;
+-         }
+Index: src/utils/request.ts
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>import axios from 'axios';\r\nimport { ElMessage, ElMessageBox } from 'element-plus';\r\nimport JSONbig from 'json-bigint';\r\nimport Cookies from 'js-cookie';\r\nimport {useLoginApi} from \"/@/api/login\";\r\nimport { Session, } from '/@/utils/storage';\r\n\r\n// var jsonBig = require('json-bigint')({ \"storeAsString\": true });\r\n// 配置新建一个 axios 实例\r\nconst service = axios.create({\r\n    // baseURL: import.meta.env.VITE_API_URL as any,\r\n    timeout: 50000,\r\n    headers: { 'Content-Type': 'application/json' }\r\n});\r\n\r\nservice.interceptors.request.use(\r\n    (config) => {\r\n        for (let key in config.data) {\r\n            if (config.data[key] == '' && config.data[key] !== 0) {\r\n                config.data[key] = null;\r\n            }\r\n        }\r\n        if (Cookies.get('token')) {\r\n            (<any>config.headers).common['Authorization'] = `${Cookies.get('token')}`;\r\n            (<any>config.headers).common['uid'] = `${Cookies.get('uid')}`;\r\n        }\r\n        return config;\r\n    },\r\n    (error) => {\r\n        // 对请求错误做些什么\r\n        return Promise.reject(error);\r\n    }\r\n);\r\n\r\nservice.defaults.transformResponse = [\r\n    function (data) {\r\n        try {\r\n            // 正常同通过return JSON.parse(data)对数据进行转换\r\n            // 但是转化完成的数据可能超出安全数据长度\r\n            // 因此我们定制使用第三包来转化\r\n            return JSONbig.parse(data);\r\n        } catch (err) {\r\n            console.log(err);\r\n            // 转换失败返回一个空对象\r\n            return {};\r\n        }\r\n    }\r\n];\r\n\r\nservice.interceptors.response.use(\r\n    (response) => {\r\n        // 对响应数据做点什么\r\n        if (response.data.code && response.data.code === 'A0213') {\r\n            ElMessage.error('用户uid不存在');\r\n                Session.clear();\r\n                window.location.href = '/';\r\n        } else if (response.data.code && response.data.code === 'A0215') {\r\n            ElMessage.error('token失效');\r\n            // logOut;\r\n            useLoginApi().signOut().then(()=>{\r\n                Session.clear();\r\n                window.location.href = '/';\r\n            })\r\n        }\r\n        // if(response.data.code && response.data.code !== '200'){\r\n        return Promise.resolve(response);\r\n        // }\r\n        // Session.clear()\r\n        // window.location.href = '/'\r\n        // return Promise.reject(response)\r\n        // const res = response.data;\r\n        // debugger\r\n        // if (res.code && res.code !== 0) {\r\n        // \t// `token` 过期或者账号已在别处登录\r\n        // \tif (res.code === 401 || res.code === 4001) {\r\n        // \t\tSession.clear(); // 清除浏览器全部临时缓存\r\n        // \t\twindow.location.href = '/'; // 去登录页\r\n        // \t\tElMessageBox.alert('你已被登出,请重新登录', '提示', {})\r\n        // \t\t\t.then(() => {})\r\n        // \t\t\t.catch(() => {});\r\n        // }\r\n        // \treturn Promise.reject(service.interceptors.response);\r\n        // } else {\r\n        // \treturn response.data;\r\n        // }\r\n    },\r\n    (error) => {\r\n        // 对响应错误做点什么\r\n        if (error.message.indexOf('timeout') != -1) {\r\n            ElMessage.error('网络超时');\r\n            setTimeout(() => {\r\n                // Session.clear();\r\n                window.location.href = '/';\r\n            }, 1000);\r\n        } else if (error.message == 'Network Error') {\r\n            ElMessage.error('网络连接错误');\r\n            // setTimeout(() => {\r\n            //     Session.clear();\r\n            //     window.location.href = '/';\r\n            // }, 1000);\r\n        } else {\r\n            if (error.response.data) ElMessage.error(error.response.data.error);\r\n            else ElMessage.error('接口路径找不到');\r\n        }\r\n        return Promise.reject(error);\r\n    }\r\n);\r\n\r\nexport default service;\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/utils/request.ts b/src/utils/request.ts
+--- a/src/utils/request.ts	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/utils/request.ts	(date 1660891706579)
+@@ -2,8 +2,8 @@
+ import { ElMessage, ElMessageBox } from 'element-plus';
+ import JSONbig from 'json-bigint';
+ import Cookies from 'js-cookie';
+-import {useLoginApi} from "/@/api/login";
+-import { Session, } from '/@/utils/storage';
++import { useLoginApi } from '/@/api/login';
++import { Session } from '/@/utils/storage';
+ 
+ // var jsonBig = require('json-bigint')({ "storeAsString": true });
+ // 配置新建一个 axios 实例
+@@ -52,15 +52,21 @@
+         // 对响应数据做点什么
+         if (response.data.code && response.data.code === 'A0213') {
+             ElMessage.error('用户uid不存在');
+-                Session.clear();
+-                window.location.href = '/';
++            useLoginApi()
++                .signOut()
++                .then(() => {
++                    Session.clear();
++                    window.location.href = '/';
++                });
+         } else if (response.data.code && response.data.code === 'A0215') {
+             ElMessage.error('token失效');
+             // logOut;
+-            useLoginApi().signOut().then(()=>{
+-                Session.clear();
+-                window.location.href = '/';
+-            })
++            useLoginApi()
++                .signOut()
++                .then(() => {
++                    Session.clear();
++                    window.location.href = '/';
++                });
+         }
+         // if(response.data.code && response.data.code !== '200'){
+         return Promise.resolve(response);
+@@ -89,15 +95,15 @@
+         if (error.message.indexOf('timeout') != -1) {
+             ElMessage.error('网络超时');
+             setTimeout(() => {
+-                // Session.clear();
++                Session.clear();
+                 window.location.href = '/';
+             }, 1000);
+         } else if (error.message == 'Network Error') {
+             ElMessage.error('网络连接错误');
+-            // setTimeout(() => {
+-            //     Session.clear();
+-            //     window.location.href = '/';
+-            // }, 1000);
++            setTimeout(() => {
++                Session.clear();
++                window.location.href = '/';
++            }, 1000);
+         } else {
+             if (error.response.data) ElMessage.error(error.response.data.error);
+             else ElMessage.error('接口路径找不到');
+Index: src/views/safeKnowledge/bmgz/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n  <div class=\"home-container\">\r\n    <iframe src=\"http://39.104.85.193/bmgz\"></iframe>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: 'safeKnowledgeSys',\r\n  props: {\r\n\r\n  },\r\n  data(){\r\n    return{\r\n\r\n    }\r\n  },\r\n  created() {\r\n\r\n  },\r\n  methods:{\r\n\r\n  }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped lang=\"scss\">\r\n  .home-container{\r\n    height: calc(100vh - 144px);\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n\r\n    iframe{\r\n      width: 100%;\r\n      height: 100%;\r\n      border: none;\r\n    }\r\n  }\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/safeKnowledge/bmgz/index.vue b/src/views/safeKnowledge/bmgz/index.vue
+--- a/src/views/safeKnowledge/bmgz/index.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/safeKnowledge/bmgz/index.vue	(date 1660874968843)
+@@ -1,40 +1,31 @@
+ <template>
+-  <div class="home-container">
+-    <iframe src="http://39.104.85.193/bmgz"></iframe>
+-  </div>
++    <div class="home-container">
++        <iframe src="http://39.104.85.193/bmgz"></iframe>
++    </div>
+ </template>
+ 
+ <script>
+ export default {
+-  name: 'safeKnowledgeSys',
+-  props: {
+-
+-  },
+-  data(){
+-    return{
+-
+-    }
+-  },
+-  created() {
+-
+-  },
+-  methods:{
+-
+-  }
+-}
++    name: 'safeKnowledgeSys',
++    props: {},
++    data() {
++        return {};
++    },
++    created() {},
++    methods: {}
++};
+ </script>
+ 
+ <!-- Add "scoped" attribute to limit CSS to this component only -->
+ <style scoped lang="scss">
+-  .home-container{
++.home-container {
+     height: calc(100vh - 144px);
+     box-sizing: border-box;
+     overflow: hidden;
+-
+-    iframe{
+-      width: 100%;
+-      height: 100%;
+-      border: none;
++    iframe {
++        width: 100%;
++        height: 100%;
++        border: none;
+     }
+-  }
++}
+ </style>
+Index: src/views/outLink/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/outLink/index.vue b/src/views/outLink/index.vue
+new file mode 100644
+--- /dev/null	(date 1660899047297)
++++ b/src/views/outLink/index.vue	(date 1660899047297)
+@@ -0,0 +1,64 @@
++<template>
++    <div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
++        <a :href="currentRouteMeta.isLink" target="_blank" rel="opener" class="flex-margin"> {{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }} </a>
++    </div>
++</template>
++
++<script lang="ts">
++import { defineComponent, toRefs, reactive, computed, watch, onMounted } from 'vue';
++import { useRoute, RouteMeta } from 'vue-router';
++import { storeToRefs } from 'pinia';
++import { useThemeConfig } from '/@/stores/themeConfig';
++
++// 定义接口来定义对象的类型
++interface LinkViewState {
++    currentRouteMeta: {
++        isLink: string;
++        title: string;
++    };
++}
++interface LinkViewRouteMeta extends RouteMeta {
++    isLink: string;
++    title: string;
++}
++
++export default defineComponent({
++    name: 'index',
++    setup() {
++        const storesThemeConfig = useThemeConfig();
++        const { themeConfig } = storeToRefs(storesThemeConfig);
++        const route = useRoute();
++        const state = reactive<LinkViewState>({
++            currentRouteMeta: {
++                isLink: '',
++                title: ''
++            }
++        });
++        // 设置 link 的高度
++        const setLinkHeight = computed(() => {
++            let { isTagsview } = themeConfig.value;
++            if (isTagsview) return `115px`;
++            else return `80px`;
++        });
++        // 监听路由的变化,设置内容
++        watch(
++            () => route.path,
++            () => {
++                state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
++            },
++            {
++                immediate: true
++            }
++        );
++
++        onMounted(() => {
++            window.open(state.currentRouteMeta.isLink as string, '_blank');
++        });
++
++        return {
++            setLinkHeight,
++            ...toRefs(state)
++        };
++    }
++});
++</script>
+Index: src/views/loginPage/component/accountLogin.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <el-form size=\"large\" class=\"login-content-form\">\r\n        <el-form-item class=\"login-animation1\">\r\n            <el-input type=\"text\" :placeholder=\"$t('message.account.accountPlaceholder1')\" v-model=\"ruleForm.username\" clearable autocomplete=\"off\" size=\"large\">\r\n                <template #prefix>\r\n                    <el-icon class=\"el-input__icon\" style=\"margin-right: 20px\"><img src=\"../../../assets/loginPage/login_icon_user.png\" style=\"width: 24px; height: 24px\" /></el-icon>\r\n                </template>\r\n            </el-input>\r\n        </el-form-item>\r\n        <el-form-item class=\"login-animation2\">\r\n            <el-input :type=\"isShowPassword ? 'text' : 'password'\" :placeholder=\"$t('message.account.accountPlaceholder2')\" v-model=\"ruleForm.password\" autocomplete=\"off\" size=\"large\" @keyup.enter.native=\"onSignIn\">\r\n                <template #prefix>\r\n                    <el-icon class=\"el-input__icon\" style=\"margin-right: 20px\"><img src=\"../../../assets/loginPage/login_icon_password.png\" style=\"width: 24px; height: 24px\" /></el-icon>\r\n                </template>\r\n                <template #suffix>\r\n                    <i class=\"iconfont el-input__icon login-content-password\" :class=\"isShowPassword ? 'icon-yincangmima' : 'icon-xianshimima'\" @click=\"isShowPassword = !isShowPassword\"> </i>\r\n                </template>\r\n            </el-input>\r\n        </el-form-item>\r\n        <el-form-item class=\"login-animation4 codeDeal\">\r\n            <el-checkbox v-model=\"saveCode\" label=\"记住密码\" size=\"large\" />\r\n            <span class=\"forgetCode\">忘记密码?</span>\r\n        </el-form-item>\r\n        <el-form-item class=\"login-animation4\">\r\n            <el-button type=\"primary\" class=\"login-content-submit\" round @click=\"onSignIn\" :loading=\"loading.signIn\">\r\n                <span>登录系统</span>\r\n            </el-button>\r\n        </el-form-item>\r\n    </el-form>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { toRefs, reactive, defineComponent, computed } from 'vue';\r\nimport { useRoute, useRouter } from 'vue-router';\r\nimport { ElMessage } from 'element-plus';\r\nimport { useI18n } from 'vue-i18n';\r\nimport Cookies from 'js-cookie';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useThemeConfig } from '/@/stores/themeConfig';\r\nimport { initFrontEndControlRoutes } from '/@/router/frontEnd';\r\nimport { initBackEndControlRoutes } from '/@/router/backEnd';\r\nimport { Session } from '/@/utils/storage';\r\nimport { formatAxis } from '/@/utils/formatTime';\r\nimport { NextLoading } from '/@/utils/loading';\r\nimport { useLoginApi } from '/@/api/login';\r\nimport { useUserInfo } from '/@/stores/userInfo';\r\n\r\nexport default defineComponent({\r\n    name: 'accountLogin',\r\n    setup() {\r\n        const { t } = useI18n();\r\n        const userInfo = useUserInfo();\r\n        const route = useRoute();\r\n        const router = useRouter();\r\n        const state = reactive({\r\n            isShowPassword: false,\r\n            ruleForm: {\r\n                username: '',\r\n                password: ''\r\n            },\r\n            loading: {\r\n                signIn: false\r\n            }\r\n        });\r\n        // 时间获取\r\n        const currentTime = computed(() => {\r\n            return formatAxis(new Date());\r\n        });\r\n        // 登录\r\n        const onSignIn = async () => {\r\n            state.loading.signIn = true;\r\n            // 存储 token 到浏览器缓存\r\n            let res = await useLoginApi().signIn(state.ruleForm);\r\n            if (res.data.code === '200') {\r\n                await userInfo.setUserInfos(res.data.data);\r\n                Cookies.set('token', res.data.data.accessToken);\r\n                Cookies.set('projectId', '');\r\n                Cookies.set('uid', res.data.data.uid);\r\n                // Session.set('token', res.data.data.accessToken);\r\n                // Session.set('projectId', '');\r\n                // Session.set('uid', res.data.data.uid);\r\n                await signInSuccess();\r\n            } else {\r\n                state.loading.signIn = false;\r\n                ElMessage({\r\n                    type: 'warning',\r\n                    message: res.data.msg\r\n                });\r\n            }\r\n            state.loading.signIn = false;\r\n            // Session.set('token', Math.random().toString(36).substr(0));\r\n            // // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)\r\n            // Cookies.set('userName', state.ruleForm.username);\r\n            // if (!themeConfig.value.isRequestRoutes) {\r\n            // \t// 前端控制路由,2、请注意执行顺序\r\n            // \tawait initFrontEndControlRoutes();\r\n            // \tsignInSuccess();\r\n            // } else {\r\n            // \t// 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由\r\n            // \t// 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path \"/\"\r\n            // \tawait initBackEndControlRoutes();\r\n            // \t// 执行完 initBackEndControlRoutes,再执行 signInSuccess\r\n            // \tsignInSuccess();\r\n            // }\r\n        };\r\n        // 登录成功后的跳转\r\n        const signInSuccess = async () => {\r\n            // 初始化登录成功时间问候语\r\n            let currentTimeInfo = currentTime.value;\r\n            // 登录成功,跳到转首页\r\n            // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中\r\n            if (route.query?.redirect) {\r\n                router.push('/newMenu');\r\n                // router.push({\r\n                // \tpath: <string>route.query?.redirect,\r\n                // \tquery: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',\r\n                // });\r\n            } else {\r\n                router.push('/loginPage');\r\n            }\r\n            state.loading.signIn = true;\r\n            const signInText = t('message.signInText');\r\n            ElMessage.success(`${currentTimeInfo},${signInText}`);\r\n            // 登录成功提示\r\n            // 关闭 loading\r\n            // 添加 loading,防止第一次进入界面时出现短暂空白\r\n            // NextLoading.start();\r\n        };\r\n        return {\r\n            onSignIn,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.login-content-form {\r\n    margin-top: 40px;\r\n    width: 100%;\r\n\r\n    .el-input::v-deep .el-input__wrapper {\r\n        height: 56px;\r\n        border-radius: 28px;\r\n        padding: 0 30px;\r\n        background: #f2f2f2;\r\n        &:focus-within {\r\n            border: 1px solid #2053d7;\r\n        }\r\n    }\r\n    @for $i from 1 through 4 {\r\n        .login-animation#{$i} {\r\n            opacity: 0;\r\n            animation-name: error-num;\r\n            animation-duration: 0.5s;\r\n            animation-fill-mode: forwards;\r\n            animation-delay: calc($i/10) + s;\r\n        }\r\n    }\r\n    .codeDeal::v-deep .el-form-item__content {\r\n        display: flex;\r\n        justify-content: space-between;\r\n\r\n        .forgetCode {\r\n            color: #2053d7;\r\n            cursor: pointer;\r\n        }\r\n    }\r\n    .login-content-password {\r\n        width: 100%;\r\n        display: inline-block;\r\n        cursor: pointer;\r\n        &:hover {\r\n            color: #909399;\r\n        }\r\n    }\r\n    .login-content-code {\r\n        width: 100%;\r\n        padding: 0;\r\n        font-weight: bold;\r\n        letter-spacing: 5px;\r\n    }\r\n    .login-content-submit {\r\n        width: 100%;\r\n        height: 56px;\r\n        font-size: 16px;\r\n        border-radius: 28px;\r\n        letter-spacing: 4px;\r\n        font-weight: 300;\r\n        margin-top: 15px;\r\n        background: #2053d7;\r\n        transition: 0.3s;\r\n        &:hover {\r\n            letter-spacing: 6px;\r\n            background: #4e7aec;\r\n        }\r\n    }\r\n}\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
+--- a/src/views/loginPage/component/accountLogin.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/loginPage/component/accountLogin.vue	(date 1660870867919)
+@@ -109,15 +109,16 @@
+             let currentTimeInfo = currentTime.value;
+             // 登录成功,跳到转首页
+             // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
+-            if (route.query?.redirect) {
+-                router.push('/newMenu');
+-                // router.push({
+-                // 	path: <string>route.query?.redirect,
+-                // 	query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',
+-                // });
+-            } else {
+-                router.push('/loginPage');
+-            }
++            // if (route.query?.redirect) {
++            //     debugger;
++            router.push('/newMenu');
++            // router.push({
++            // 	path: <string>route.query?.redirect,
++            // 	query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',
++            // });
++            // } else {
++            //     router.push('/loginPage');
++            // }
+             state.loading.signIn = true;
+             const signInText = t('message.signInText');
+             ElMessage.success(`${currentTimeInfo},${signInText}`);
+Index: src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <div class=\"system-add-menu-container\">\r\n        <el-dialog v-model=\"ifShowInspectTaskDialog\" :title=\"title\" width=\"60%\">\r\n            <el-form :model=\"inspectTaskForm\" label-width=\"120px\" ref=\"inspectTaskFormRef\">\r\n                <el-row>\r\n                    <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n                        <el-form-item label=\"任务名称\" prop=\"unitName\">\r\n                            <el-input v-model=\"inspectTaskForm.taskName\" :disabled=\"!inspectPointConfirm\" class=\"input-add\" placeholder=\"请填写任务名称\"> </el-input>\r\n                        </el-form-item>\r\n                    </el-col>\r\n                    <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n                        <el-form-item label=\"任务类型\" prop=\"taskType\">\r\n                            <el-select v-model=\"inspectTaskForm.taskType\" :disabled=\"!inspectPointConfirm\" class=\"input-add\" placeholder=\"请选择任务类型\">\r\n                                <el-option v-for=\"item in workTypeList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"></el-option>\r\n                            </el-select>\r\n                        </el-form-item>\r\n                    </el-col>\r\n                    <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n                        <el-form-item label=\"巡检部门\" prop=\"execDepId\">\r\n                            <el-cascader @change=\"giveClassGroup\" :disabled=\"!inspectPointConfirm\" placeholder=\"请选择巡检部门\" :options=\"departmentList\" :props=\"{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }\" clearable filterable class=\"input-add\" v-model=\"inspectTaskForm.execDepId\"> </el-cascader>\r\n                        </el-form-item>\r\n                    </el-col>\r\n                    <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n                        <el-form-item label=\"巡检班组\" prop=\"execClassgroupId\">\r\n                            <el-select v-model=\"inspectTaskForm.execClassgroupId\" :disabled=\"!inspectPointConfirm\" placeholder=\"请选择巡检班组\" class=\"input-add\">\r\n                                <el-option v-for=\"item in classGroup\" :key=\"item.id\" :value=\"item.id\" :label=\"item.groupName\"></el-option>\r\n                            </el-select>\r\n                        </el-form-item>\r\n                    </el-col>\r\n                    <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n                        <el-form-item label=\"任务开始时间\" prop=\"startTime\">\r\n                            <el-date-picker v-model=\"inspectTaskForm.startTime\" :disabled=\"!inspectPointConfirm\" placeholder=\"请选择任务开始时间\" type=\"datetime\" format=\"YYYY/MM/DD HH:mm:ss\" value-format=\"YYYY-MM-DD HH:mm:ss\" class=\"input-add\" />\r\n                        </el-form-item>\r\n                    </el-col>\r\n                </el-row>\r\n\r\n                <div class=\"checkUnit-point\">\r\n                    <el-tabs class=\"active\" v-model=\"activeName\">\r\n                        <el-tab-pane label=\"巡检链\" name=\"inspectChain\">\r\n                            <el-table :data=\"inspectTaskForm.points\" fit style=\"width: 100%\">\r\n                                <el-table-column type=\"index\" label=\"序号\" width=\"60\" />\r\n                                <el-table-column prop=\"region\" label=\"巡检点\" show-overflow-tooltip align=\"center\"></el-table-column>\r\n                                <el-table-column prop=\"quotaContent\" label=\"指标作业\" show-overflow-tooltip align=\"center\"></el-table-column>\r\n                                <el-table-column prop=\"secondReferenceResult\" label=\"参数值\" show-overflow-tooltip align=\"center\">\r\n                                    <template #default=\"scope\">\r\n                                        <div :style=\"{color: scope.row.reportResult==1?'#ff0000':'#409eff'}\">\r\n                                            {{scope.row.dataReportType==1?'无':scope.row.secondReferenceResult}}\r\n                                        </div>\r\n                                    </template>\r\n                                </el-table-column>\r\n                                <el-table-column prop=\"quotaUnit\" label=\"指标单位\" show-overflow-tooltip align=\"center\"></el-table-column>\r\n                                <el-table-column prop=\"reportResult\" label=\"结果\" show-overflow-tooltip align=\"center\">\r\n                                    <template #default=\"scope\">\r\n                                        <div :style=\"{color: scope.row.reportResult==1?'#ff0000':'#409eff'}\">\r\n                                            {{scope.row.reportResult==0?'正常':(scope.row.reportResult==1?'异常':'无')}}\r\n                                        </div>\r\n                                    </template>\r\n                                </el-table-column>\r\n                                <!--                                <el-table-column label=\"操作\" width=\"150\" align=\"center\">-->\r\n                                <!--                                    <template #default=\"scope\">-->\r\n                                <!--                                        <el-button size=\"small\" text type=\"danger\" @click=\"onDelCheckUnit(scope.$index, scope.row)\">删除</el-button>-->\r\n                                <!--                                    </template>-->\r\n                                <!--                                </el-table-column>-->\r\n                            </el-table>\r\n                        </el-tab-pane>\r\n                    </el-tabs>\r\n                </div>\r\n                <div align=\"right\" v-show=\"inspectPointConfirm\">\r\n                    <el-button type=\"warning\" @click=\"inspectPointDialog = false\" size=\"default\" plain>取消</el-button>\r\n                    <el-button type=\"primary\" @click=\"submitInspectTask()\" size=\"default\">确认</el-button>\r\n                </div>\r\n            </el-form>\r\n        </el-dialog>\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { reactive, toRefs, ref } from 'vue';\r\nimport { RFIDApi } from '/@/api/intellectInspectSystem/RFID';\r\nimport { ElMessage } from 'element-plus/es';\r\nimport { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask';\r\nimport { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage';\r\nimport { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord';\r\ninterface dataState {\r\n    title: string;\r\n    pointTitle: string;\r\n    activeName: string;\r\n    inspectPointConfirm: boolean;\r\n    inspectPointDialog: boolean;\r\n    ifShowInspectTaskDialog: boolean;\r\n    inspectPointForm: inspectPointForm;\r\n    inspectTaskForm: {\r\n        execClassgroupId: number | null;\r\n        execDepId: number | null;\r\n        id: number | null;\r\n        startTime: string | null;\r\n        taskName: string | null;\r\n        taskType: number | null;\r\n        validTime: string | null;\r\n        points: Array<inspectPointForm>;\r\n    };\r\n    workTypeList: [];\r\n    departmentList: [];\r\n    timeList: [];\r\n    dataReportTypeList: Array<dataReport>;\r\n    firstReferenceValueList: Array<dataReport>;\r\n    secondReferenceSignList: Array<dataReport>;\r\n    thirdReferenceSignList: Array<dataReport>;\r\n    classGroupList: Array<classGroup>;\r\n    classGroup: Array<classGroup>;\r\n    quotaList: Array<quota>;\r\n    inspectPointAllList: Array<inspectPointAllState>;\r\n}\r\ninterface inspectPointAllState {\r\n    id: number;\r\n    code: string;\r\n    regionId: number;\r\n    rfidId: number;\r\n}\r\ninterface classGroup {\r\n    depId: number;\r\n}\r\ninterface dataReport {\r\n    id: number;\r\n    name: string;\r\n}\r\ninterface quota {\r\n    id: number;\r\n    type: string;\r\n    unit: string;\r\n}\r\ninterface inspectPointForm {\r\n    id: number | null;\r\n    unitId: number | null;\r\n    unitUuid: string | null;\r\n    pointId: number | null;\r\n    pointUuid: string | null;\r\n    regionId: number | null;\r\n    regionUuid: string | null;\r\n    rfidId: number | null;\r\n    quotaId: number | null;\r\n    quotaUnit: number | null;\r\n    reportResult: number | null\r\n    secondReferenceResult: number |null;\r\n    execSequence: number | null;\r\n    dataReportType: number | null;\r\n    firstReferenceValue: number | null;\r\n    secondReferenceSign: number | null;\r\n    secondReferenceValue: number | null;\r\n    thirdReferenceSign: number | null;\r\n    thirdReferenceValue: number | null;\r\n}\r\nexport default {\r\n    name: 'inspectTaskDialog',\r\n    setup(props: any, context: any) {\r\n        const inspectTaskFormRef = ref();\r\n        const data = reactive<dataState>({\r\n            title: '',\r\n            pointTitle: '',\r\n            activeName: 'inspectChain',\r\n            inspectPointConfirm: false,\r\n            inspectPointDialog: false,\r\n            ifShowInspectTaskDialog: false,\r\n            inspectPointForm: {\r\n                id: null,\r\n                unitId: null,\r\n                unitUuid: null,\r\n                pointId: null,\r\n                pointUuid: null,\r\n                regionId: null,\r\n                regionUuid: null,\r\n                rfidId: null,\r\n                quotaId: null,\r\n                quotaUnit: null,\r\n                execSequence: null,\r\n                secondReferenceResult:null,\r\n                reportResult: null,\r\n                dataReportType: null,\r\n                firstReferenceValue: null,\r\n                secondReferenceSign: null,\r\n                secondReferenceValue: null,\r\n                thirdReferenceSign: null,\r\n                thirdReferenceValue: null\r\n            },\r\n            inspectTaskForm: {\r\n                execClassgroupId: null,\r\n                execDepId: null,\r\n                id: null,\r\n                points: [],\r\n                startTime: null,\r\n                taskName: null,\r\n                taskType: null,\r\n                validTime: null\r\n            },\r\n            workTypeList: [],\r\n            departmentList: [],\r\n            timeList: [],\r\n            classGroupList: [],\r\n            classGroup: [],\r\n            quotaList: [],\r\n            inspectPointAllList: [],\r\n            dataReportTypeList: [\r\n                { id: 1, name: '选择' },\r\n                { id: 2, name: '填空' },\r\n                { id: 3, name: '选择并填空' }\r\n            ],\r\n            firstReferenceValueList: [\r\n                { id: 0, name: '正常' },\r\n                { id: 1, name: '异常' }\r\n            ],\r\n            secondReferenceSignList: [\r\n                { id: 1, name: '>' },\r\n                { id: 2, name: '>=' }\r\n            ],\r\n            thirdReferenceSignList: [\r\n                { id: 3, name: '<' },\r\n                { id: 4, name: '<=' }\r\n            ]\r\n        });\r\n\r\n        const openInspectPointDialog = (type: string, item: {}) => {\r\n            data.inspectPointDialog = true;\r\n            if (type === '新增') {\r\n                data.pointTitle = '新增巡检点';\r\n                data.inspectPointForm = {\r\n                    id: null,\r\n                    unitId: null,\r\n                    unitUuid: null,\r\n                    pointId: null,\r\n                    pointUuid: null,\r\n                    regionId: null,\r\n                    regionUuid: null,\r\n                    rfidId: null,\r\n                    quotaId: null,\r\n                    quotaUnit: null,\r\n                    reportResult: null,\r\n                    execSequence: null,\r\n                    secondReferenceResult:null,\r\n                    dataReportType: null,\r\n                    firstReferenceValue: null,\r\n                    secondReferenceSign: null,\r\n                    secondReferenceValue: null,\r\n                    thirdReferenceSign: null,\r\n                    thirdReferenceValue: null\r\n                };\r\n            } else {\r\n                data.pointTitle = '修改巡检点';\r\n                data.inspectPointForm = JSON.parse(JSON.stringify(item));\r\n            }\r\n        };\r\n\r\n        const showInspectRecordDialog = (type: string, item: { id: number; uuid: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: []) => {\r\n            data.quotaList = JSON.parse(JSON.stringify(quotaList));\r\n            data.timeList = JSON.parse(JSON.stringify(timeType));\r\n            data.inspectPointAllList = JSON.parse(JSON.stringify(inspectPointAllList));\r\n            data.workTypeList = JSON.parse(JSON.stringify(workTypeList));\r\n            data.departmentList = JSON.parse(JSON.stringify(department));\r\n            data.classGroupList = JSON.parse(JSON.stringify(classGroupList));\r\n            data.ifShowInspectTaskDialog = true;\r\n            data.inspectPointConfirm = false;\r\n            data.title = '查看巡检任务';\r\n            inspectRecordApi()\r\n                .getInspectRecordById({ id: item.id, uuid: item.uuid })\r\n                .then((res) => {\r\n                    if (res.data.code === '200') {\r\n                        data.inspectTaskForm.execDepId = res.data.data.execDepId;\r\n                        giveClassGroup();\r\n                        data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));\r\n                        console.log(data.inspectTaskForm,'this data')\r\n                    } else {\r\n                    }\r\n                })\r\n                .catch((error) => {});\r\n        };\r\n\r\n        // 格式化表格数据\r\n        // const toRefer =(row, column, cellValue, index)=>{\r\n        //     return row.secondReferenceResult==0?'正常':(row.reportResult==1?'异常':'无')\r\n        // }\r\n\r\n\r\n        const submitInspectPoint = async () => {\r\n            if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') {\r\n                if (data.inspectTaskForm.points.length === 0) {\r\n                    data.inspectPointForm.execSequence = 1;\r\n                } else {\r\n                    data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;\r\n                }\r\n                data.inspectTaskForm.points.push(data.inspectPointForm);\r\n                data.inspectPointDialog = false;\r\n            } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') {\r\n                let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id);\r\n                data.inspectTaskForm.points[result] = data.inspectPointForm;\r\n                data.inspectPointDialog = false;\r\n            } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') {\r\n                data.inspectPointForm.unitId = data.inspectTaskForm.id;\r\n                if (data.inspectTaskForm.points.length === 0) {\r\n                    data.inspectPointForm.execSequence = 1;\r\n                } else {\r\n                    data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;\r\n                }\r\n                let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm);\r\n                if (res.data.code === '200') {\r\n                    ElMessage({\r\n                        type: 'success',\r\n                        message: '巡检点新增成功',\r\n                        duration: 2000\r\n                    });\r\n                    data.inspectPointDialog = false;\r\n                    data.inspectTaskForm.points.push(data.inspectPointForm);\r\n                } else {\r\n                    ElMessage({\r\n                        type: 'warning',\r\n                        message: res.data.msg\r\n                    });\r\n                }\r\n            } else {\r\n                data.inspectPointForm.unitId = data.inspectTaskForm.id;\r\n                let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm);\r\n                if (res.data.code === '200') {\r\n                    ElMessage({\r\n                        type: 'success',\r\n                        message: '巡检点修改成功',\r\n                        duration: 2000\r\n                    });\r\n                    let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id);\r\n                    data.inspectTaskForm.points[result] = data.inspectPointForm;\r\n                    data.inspectPointDialog = false;\r\n                } else {\r\n                    ElMessage({\r\n                        type: 'warning',\r\n                        message: res.data.msg\r\n                    });\r\n                }\r\n            }\r\n        };\r\n        const deleteFlow = async (index: number, item: { id: number }) => {\r\n            if (data.pointTitle === '新增巡检点') {\r\n                data.inspectTaskForm.points.splice(index, 1);\r\n            } else {\r\n                let res = await inspectTaskApi().deleteChainOfInspectTask({ id: item.id, unitId: data.inspectTaskForm.id });\r\n                if (res.data.code === '200') {\r\n                    data.inspectTaskForm.points.splice(index, 1);\r\n                    ElMessage({\r\n                        type: 'success',\r\n                        message: '巡检点删除成功'\r\n                    });\r\n                } else {\r\n                    ElMessage({\r\n                        type: 'warning',\r\n                        message: res.data.msg\r\n                    });\r\n                }\r\n            }\r\n        };\r\n\r\n        const giveRegionAndRFID = () => {\r\n            data.inspectPointForm.regionId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.regionId as number;\r\n            data.inspectPointForm.rfidId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfidId as number;\r\n        };\r\n\r\n        const giveClassGroup = () => {\r\n            data.inspectTaskForm.execClassgroupId = null;\r\n            data.classGroup = data.classGroupList.filter((item) => item.depId === data.inspectTaskForm.execDepId);\r\n        };\r\n\r\n        const giveQuotaUnit = () => {\r\n            data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.unit as string;\r\n        };\r\n        const submitInspectTask = () => {\r\n            inspectTaskFormRef.value.validate(async (valid: Boolean) => {\r\n                if (valid) {\r\n                    if (data.title === '新增巡检任务') {\r\n                        let res = await inspectTaskApi().addInspectTask(data.inspectTaskForm);\r\n                        if (res.data.code === '200') {\r\n                            ElMessage({\r\n                                type: 'success',\r\n                                message: '巡检任务新增成功',\r\n                                duration: 2000\r\n                            });\r\n                            data.ifShowInspectTaskDialog = false;\r\n                            context.emit('refreshInspectTask');\r\n                        } else {\r\n                            ElMessage({\r\n                                type: 'warning',\r\n                                message: res.data.msg\r\n                            });\r\n                        }\r\n                    } else {\r\n                        let res = await inspectTaskApi().modInspectTask(data.inspectTaskForm);\r\n                        if (res.data.code === '200') {\r\n                            ElMessage({\r\n                                type: 'success',\r\n                                message: '巡检指标修改成功',\r\n                                duration: 2000\r\n                            });\r\n                            data.ifShowInspectTaskDialog = false;\r\n                            context.emit('refreshInspectTask');\r\n                        } else {\r\n                            ElMessage({\r\n                                type: 'warning',\r\n                                message: res.data.msg\r\n                            });\r\n                        }\r\n                    }\r\n                } else {\r\n                    ElMessage({\r\n                        type: 'warning',\r\n                        message: '请完善基本信息'\r\n                    });\r\n                }\r\n            });\r\n        };\r\n\r\n        return {\r\n            ...toRefs(data),\r\n            inspectTaskFormRef,\r\n            deleteFlow,\r\n            // toRefer,\r\n            giveQuotaUnit,\r\n            giveClassGroup,\r\n            submitInspectTask,\r\n            submitInspectPoint,\r\n            giveRegionAndRFID,\r\n            showInspectRecordDialog,\r\n            openInspectPointDialog\r\n        };\r\n    }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n    height: calc(100vh - 144px);\r\n    box-sizing: border-box;\r\n    overflow: hidden;\r\n    .homeCard {\r\n        width: 100%;\r\n        padding: 20px;\r\n        box-sizing: border-box;\r\n        background: #fff;\r\n        border-radius: 4px;\r\n\r\n        .main-card {\r\n            width: 100%;\r\n            height: 100%;\r\n            .cardTop {\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: space-between;\r\n                margin-bottom: 20px;\r\n                .mainCardBtn {\r\n                    margin: 0;\r\n                }\r\n            }\r\n            .pageBtn {\r\n                height: 60px;\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: right;\r\n\r\n                .demo-pagination-block + .demo-pagination-block {\r\n                    margin-top: 10px;\r\n                }\r\n                .demo-pagination-block .demonstration {\r\n                    margin-bottom: 16px;\r\n                }\r\n            }\r\n        }\r\n        &:last-of-type {\r\n            height: calc(100% - 100px);\r\n        }\r\n    }\r\n    .el-row {\r\n        display: flex;\r\n        align-items: center;\r\n        margin-bottom: 20px;\r\n        &:last-child {\r\n            margin-bottom: 0;\r\n        }\r\n        .grid-content {\r\n            align-items: center;\r\n            min-height: 36px;\r\n        }\r\n\r\n        .topInfo {\r\n            display: flex;\r\n            align-items: center;\r\n            font-size: 16px;\r\n            font-weight: bold;\r\n\r\n            & > div {\r\n                white-space: nowrap;\r\n                margin-right: 20px;\r\n            }\r\n        }\r\n    }\r\n}\r\n.stepItem {\r\n    width: 100%;\r\n    display: flex;\r\n    align-items: flex-start;\r\n    margin-bottom: 30px;\r\n    margin-left: 30px;\r\n    padding-bottom: 30px;\r\n    border-left: 2px solid #ccc;\r\n    &:first-of-type {\r\n        margin-top: 30px;\r\n    }\r\n    &:last-of-type {\r\n        margin-bottom: 0;\r\n        border-left: none;\r\n    }\r\n    .stepNum {\r\n        width: 30px;\r\n        height: 30px;\r\n        border-radius: 15px;\r\n        box-sizing: border-box;\r\n        color: #333;\r\n        border: 1px solid #999;\r\n        line-height: 28px;\r\n        text-align: center;\r\n        margin-right: 10px;\r\n        margin-left: -16px;\r\n        margin-top: -30px;\r\n    }\r\n    .stepCard {\r\n        width: 100%;\r\n        margin-top: -30px;\r\n\r\n        .box-card {\r\n            width: 100%;\r\n            &:deep(.el-card__header) {\r\n                padding: 10px 15px;\r\n            }\r\n            .card-header {\r\n                width: 100%;\r\n                display: flex;\r\n                justify-content: space-between;\r\n                align-items: center;\r\n                & > div:first-of-type {\r\n                    margin-right: 80px;\r\n                    font-size: 18px;\r\n                    font-weight: bold;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    &:hover .card-header {\r\n        color: #0098f5;\r\n    }\r\n    &:hover .stepNum {\r\n        border: 2px solid #0098f5;\r\n        color: #0098f5;\r\n    }\r\n}\r\n:deep(.el-date-editor) {\r\n    width: 100%;\r\n}\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue b/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
+--- a/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue	(date 1660874576126)
+@@ -43,16 +43,16 @@
+                                 <el-table-column prop="quotaContent" label="指标作业" show-overflow-tooltip align="center"></el-table-column>
+                                 <el-table-column prop="secondReferenceResult" label="参数值" show-overflow-tooltip align="center">
+                                     <template #default="scope">
+-                                        <div :style="{color: scope.row.reportResult==1?'#ff0000':'#409eff'}">
+-                                            {{scope.row.dataReportType==1?'无':scope.row.secondReferenceResult}}
++                                        <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }">
++                                            {{ scope.row.dataReportType == 1 ? '无' : scope.row.secondReferenceResult }}
+                                         </div>
+                                     </template>
+                                 </el-table-column>
+                                 <el-table-column prop="quotaUnit" label="指标单位" show-overflow-tooltip align="center"></el-table-column>
+                                 <el-table-column prop="reportResult" label="结果" show-overflow-tooltip align="center">
+                                     <template #default="scope">
+-                                        <div :style="{color: scope.row.reportResult==1?'#ff0000':'#409eff'}">
+-                                            {{scope.row.reportResult==0?'正常':(scope.row.reportResult==1?'异常':'无')}}
++                                        <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }">
++                                            {{ scope.row.reportResult == 0 ? '正常' : scope.row.reportResult == 1 ? '异常' : '无' }}
+                                         </div>
+                                     </template>
+                                 </el-table-column>
+@@ -140,8 +140,8 @@
+     rfidId: number | null;
+     quotaId: number | null;
+     quotaUnit: number | null;
+-    reportResult: number | null
+-    secondReferenceResult: number |null;
++    reportResult: number | null;
++    secondReferenceResult: number | null;
+     execSequence: number | null;
+     dataReportType: number | null;
+     firstReferenceValue: number | null;
+@@ -173,7 +173,7 @@
+                 quotaId: null,
+                 quotaUnit: null,
+                 execSequence: null,
+-                secondReferenceResult:null,
++                secondReferenceResult: null,
+                 reportResult: null,
+                 dataReportType: null,
+                 firstReferenceValue: null,
+@@ -235,7 +235,7 @@
+                     quotaUnit: null,
+                     reportResult: null,
+                     execSequence: null,
+-                    secondReferenceResult:null,
++                    secondReferenceResult: null,
+                     dataReportType: null,
+                     firstReferenceValue: null,
+                     secondReferenceSign: null,
+@@ -266,7 +266,7 @@
+                         data.inspectTaskForm.execDepId = res.data.data.execDepId;
+                         giveClassGroup();
+                         data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));
+-                        console.log(data.inspectTaskForm,'this data')
++                        console.log(data.inspectTaskForm, 'this data');
+                     } else {
+                     }
+                 })
+@@ -278,7 +278,6 @@
+         //     return row.secondReferenceResult==0?'正常':(row.reportResult==1?'异常':'无')
+         // }
+ 
+-
+         const submitInspectPoint = async () => {
+             if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') {
+                 if (data.inspectTaskForm.points.length === 0) {
+Index: src/views/newHome/index.vue
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+><template>\r\n    <div class=\"login-container\" :key=\"once\">\r\n        <div class=\"topPanel\">\r\n\r\n        </div>\r\n        <div class=\"topPanelBg\">\r\n\r\n        </div>\r\n        <div class=\"topPanelCont\">\r\n            <div class=\"topLogo\">\r\n                <img src=\"../../assets/newMenu/toplogo.png\" />\r\n            </div>\r\n            <div class=\"userInfo\">\r\n                <div @click=\"onScreenfullClick\" style=\"margin-right: 15px;cursor: pointer\">\r\n                    <i class=\"iconfont\" :title=\"isScreenfull ? $t('message.user.title6') : $t('message.user.title5')\" :class=\"!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'\"></i>\r\n                </div>\r\n                <div class=\"loginOut\" @click=\"onLoginOut\">退出登录</div>\r\n                <span></span>\r\n                <div class=\"avator\">\r\n                    <img src=\"../../assets/menu/admin.png\" />\r\n                    <div>admin</div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"leftCont\">\r\n\r\n        </div>\r\n        <div class=\"topCont\">\r\n            <div class=\"topInfo\">\r\n                <div class=\"topTit\">\r\n                    新疆国泰新华<br/>安全风险预警监测系统\r\n                </div>\r\n                <div class=\"topTime\">\r\n                    <div class=\"time\">\r\n                        {{time}}\r\n                    </div>\r\n                    <span></span>\r\n                    <div class=\"today\">\r\n                        <div>{{date}}</div>\r\n                        <div><span>{{weekDay}}</span><span>{{dayTime}}</span></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"line\">\r\n\r\n            </div>\r\n        </div>\r\n        <div class=\"menuGrid\">\r\n            <div class=\"gridCont\">\r\n                <div class=\"grid-content grid-content-1 cont-bg-1\" v-throttle @click=\"toRiskPlatform\">\r\n                    <div class=\"toplayer\">\r\n                        <div>\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon1.png\"/>\r\n                        <div>\r\n                            <div class=\"itemTit1\">安全风险综合预警<br/>预报平台</div>\r\n                            <div class=\"enTit1\">Security risk comprehensive early warning and forecast platform</div>\r\n                        </div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg1\" src=\"../../assets/newMenu/card-1.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-1\" v-throttle @click=\"render('2')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon2.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">双重预防系统</div>\r\n                            <div class=\"enTit\">Double prevention</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-4.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-1\" v-throttle @click=\"render('4')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon3.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">智能巡检系统</div>\r\n                            <div class=\"enTit\">Intelligent inspection system</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-8.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-1\" v-throttle @click=\"render('3')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon4.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">特殊作业系统</div>\r\n                            <div class=\"enTit\">special work</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-7.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-1\" v-throttle @click=\"render('7')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon5.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">目标责任管理系统</div>\r\n                            <div class=\"enTit\">Target Responsibility Management</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-2.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-2\" v-throttle @click=\"render('10')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon6.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">安全知识图谱系统</div>\r\n                            <div class=\"enTit\">Security Knowledge Graph</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-3.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-2\" v-throttle @click=\"render('9')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon7.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">设备综合管控系统</div>\r\n                            <div class=\"enTit\">Comprehensive equipment control</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-9.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-2\" v-throttle @click=\"render('6')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon8.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">应急管理系统</div>\r\n                            <div class=\"enTit\">Emergency management</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-5.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-2\" v-throttle @click=\"render('11')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon9.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">危险化学品全生命周期安全管理系统</div>\r\n                            <div class=\"enTit\">Full life cycle of hazardous chemicals</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-10.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-2\" v-throttle @click=\"render('8')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon10.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">事故管理系统</div>\r\n                            <div class=\"enTit\">Incident Management</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-6.png\" />\r\n                </div>\r\n                <div class=\"grid-content cont-bg-2\" @click=\"render('1')\">\r\n                    <div class=\"toplayer\">\r\n                        <img class=\"iconImg\" src=\"../../assets/newMenu/icon11.png\" />\r\n                        <div>\r\n                            <div class=\"itemTit\">安全基础信息系统</div>\r\n                            <div class=\"enTit\">Basic data permissions</div>\r\n                        </div>\r\n                    </div>\r\n                    <img class=\"bgImg\" src=\"../../assets/newMenu/card-11.png\" />\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"bot-rights\">\r\n            <img src=\"../../assets/newMenu/pic_line1.png\">\r\n            <div>技术支持:苏州国科鸿宇智能科技有限公司</div>\r\n            <img src=\"../../assets/newMenu/pic_line2.png\">\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { toRefs, reactive, computed, defineComponent, onMounted } from 'vue';\r\nimport { storeToRefs } from 'pinia';\r\nimport { useThemeConfig } from '/@/stores/themeConfig';\r\nimport logoMini from '/@/assets/logo-mini.svg';\r\nimport loginIconTwo from '/@/assets/login-icon-two.svg';\r\nimport { NextLoading } from '/@/utils/loading';\r\nimport { Session } from '/@/utils/storage';\r\nimport { useRoute, useRouter } from 'vue-router';\r\nimport { initBackEndControlRoutes } from '/@/router/backEnd';\r\nimport { useUserInfo } from '/@/stores/userInfo';\r\nimport { useRoutesList } from '/@/stores/routesList';\r\nimport pinia from '/@/stores';\r\nimport { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';\r\nimport { ElMessage } from 'element-plus';\r\nimport { ElMessageBox } from 'element-plus/es';\r\nimport { useLoginApi } from '/@/api/login';\r\nimport { useI18n } from 'vue-i18n';\r\nimport screenfull from 'screenfull';\r\nimport router from '../../router'\r\nimport Cookies from 'js-cookie'\r\n\r\n// 定义接口来定义对象的类型\r\ninterface LoginState {\r\n    tabsActiveName: string;\r\n    isScan: boolean;\r\n    count: number;\r\n    projectId: string;\r\n    once: number;\r\n    isScreenfull: boolean;\r\n    time:string;\r\n    date:string;\r\n    weekDay:string;\r\n    dayTime:string\r\n}\r\n\r\nexport default defineComponent({\r\n    name: 'loginIndex',\r\n    components: {},\r\n    setup() {\r\n        const { t } = useI18n();\r\n        const router = useRouter();\r\n        const userInfo = useUserInfo();\r\n        const { userInfos } = storeToRefs(userInfo);\r\n        const routeToStore = useRoutesList(pinia);\r\n        const { routesList } = storeToRefs(routeToStore);\r\n        const storesThemeConfig = useThemeConfig();\r\n        const { themeConfig } = storeToRefs(storesThemeConfig);\r\n        // 时间格式化\r\n        const timeForm = {\r\n            hour12: false,\r\n            year: 'numeric',\r\n            month: '2-digit',\r\n            day: '2-digit',\r\n            hour: '2-digit',\r\n            minute: '2-digit',\r\n            second: '2-digit'\r\n        }\r\n        const state = reactive<LoginState>({\r\n            tabsActiveName: 'account',\r\n            isScan: false,\r\n            count: 0,\r\n            projectId: '1',\r\n            once: 0,\r\n            time: '',\r\n            date: '',\r\n            weekDay: '',\r\n            dayTime: '',\r\n            isScreenfull: false\r\n        });\r\n        // 获取布局配置信息\r\n        const getThemeConfig = computed(() => {\r\n            return themeConfig.value;\r\n        });\r\n\r\n        // 当前时间\r\n        const getDateTime = ()=>{\r\n            const curTime = new Date().toLocaleString('zh', timeForm).replace(/\\//g,'-')\r\n            state.time = curTime.slice(10,16)\r\n            state.date = curTime.slice(0,10)\r\n            let week = ['日','一','二','三','四','五','六']\r\n            let day = new Date().getDay()\r\n            state.weekDay = '星期' + week[day]\r\n            let curHour = Number(curTime.slice(10,13))\r\n            if(curHour>=5&&curHour<=10){state.dayTime = '上午'}\r\n            if(curHour>10&&curHour<=12){state.dayTime = '中午'}\r\n            if(curHour>12&&curHour<=18){state.dayTime = '下午'}\r\n            if(curHour>18&&curHour<=22){state.dayTime = '晚上'}\r\n            if(curHour>22){state.dayTime = '午夜'}\r\n        }\r\n        // 下拉菜单点击时\r\n        const onLoginOut = () => {\r\n            ElMessageBox({\r\n                closeOnClickModal: false,\r\n                closeOnPressEscape: false,\r\n                title: t('message.user.logOutTitle'),\r\n                message: t('message.user.logOutMessage'),\r\n                showCancelButton: true,\r\n                confirmButtonText: t('message.user.logOutConfirm'),\r\n                cancelButtonText: t('message.user.logOutCancel'),\r\n                buttonSize: 'default',\r\n                beforeClose: (action, instance, done) => {\r\n                    if (action === 'confirm') {\r\n                        instance.confirmButtonLoading = true;\r\n                        instance.confirmButtonText = t('message.user.logOutExit');\r\n                        setTimeout(() => {\r\n                            done();\r\n                            setTimeout(() => {\r\n                                instance.confirmButtonLoading = false;\r\n                            }, 300);\r\n                        }, 700);\r\n                    } else {\r\n                        done();\r\n                    }\r\n                }\r\n            })\r\n                .then(async () => {\r\n                    let res = await useLoginApi().signOut();\r\n                    if (res.data.code === '200') {\r\n                        Session.clear(); // 清除缓存/token等\r\n                        // 使用 reload 时,不需要调用 resetRoute() 重置路由\r\n                        window.location.reload();\r\n                    } else {\r\n                        ElMessage({\r\n                            type: 'warning',\r\n                            message: res.data.msg\r\n                        });\r\n                    }\r\n                })\r\n                .catch(() => {});\r\n        };\r\n        //选择菜单\r\n        const render = (value: string) => {\r\n            state.projectId = value;\r\n            renderMenu();\r\n        };\r\n\r\n        // 全屏点击时\r\n        const onScreenfullClick = () => {\r\n            if (!screenfull.isEnabled) {\r\n                ElMessage.warning('暂不不支持全屏');\r\n                return false;\r\n            }\r\n            screenfull.toggle();\r\n            screenfull.on('change', () => {\r\n                if (screenfull.isFullscreen) state.isScreenfull = true;\r\n                else state.isScreenfull = false;\r\n            });\r\n        };\r\n        // 去风险大屏\r\n        const toRiskPlatform = ()=>{\r\n            router.push({\r\n                name: \"bigDataScreen\"\r\n            });\r\n        }\r\n        const throttle = (renderMenu: any, delay: number) => {\r\n            let flag = true;\r\n            let count = 0;\r\n            return function () {\r\n                if (!flag) return;\r\n                flag = false;\r\n                if (count === 0) {\r\n                    renderMenu.apply();\r\n                    count++;\r\n                    flag = true;\r\n                } else {\r\n                    setTimeout(() => {\r\n                        renderMenu.apply();\r\n                        flag = true;\r\n                    }, delay);\r\n                }\r\n            };\r\n        };\r\n\r\n        //调用菜单方法\r\n        const renderMenu = throttle(() => {\r\n            renderFun();\r\n        }, 2000);\r\n\r\n        //调后台菜单接口\r\n        const renderFun = async () => {\r\n            Cookies.set('projectId', state.projectId);\r\n            userInfos.value.projectId = state.projectId;\r\n            await initBackEndControlRoutes().then(() => {\r\n                let linkToMenu = [...routesList.value];\r\n                if (linkToMenu && linkToMenu.length > 1) {\r\n                    router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[1]));\r\n                } else {\r\n                    ElMessage({ type: 'warning', message: '你没有该子系统的权限' });\r\n                }\r\n            });\r\n        };\r\n\r\n        const linkToFirstMenu: any = (value: any) => {\r\n            let returnMenu = value;\r\n            if (returnMenu.children?.length > 0) {\r\n                return linkToFirstMenu(returnMenu.children[0]);\r\n            } else {\r\n                return returnMenu.path;\r\n            }\r\n        };\r\n        // //点击进入特殊作业\r\n        // const toSpecialWorkSys = () => {\r\n        // \trouter.push('/layoutPage');\r\n        // };\r\n        // 页面加载时\r\n        onMounted(() => {\r\n            state.once += 1;\r\n            NextLoading.done()\r\n            setInterval(()=>{\r\n                getDateTime()\r\n            },1000)\r\n            // loginBg();\r\n            // loginApp()\r\n        });\r\n        return {\r\n            render,\r\n            logoMini,\r\n            onLoginOut,\r\n            getDateTime,\r\n            toRiskPlatform,\r\n            onScreenfullClick,\r\n            loginIconTwo,\r\n            getThemeConfig,\r\n            ...toRefs(state)\r\n        };\r\n    }\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n    @media screen and (min-width: 1400px) {\r\n        .gridCont {\r\n            width: 100%;\r\n            height: 100%;\r\n            display: grid;\r\n            grid-gap: 20px;\r\n            grid-template-columns: repeat(3, 1fr);\r\n            grid-auto-flow: row;\r\n            justify-content: center;\r\n            .toplayer{\r\n                width: 100%;\r\n                height: 100%;\r\n                position: absolute;\r\n                left: 0;\r\n                top: 0;\r\n                display: flex;\r\n                align-items: center;\r\n                padding: 0 20px;\r\n                z-index: 99;\r\n\r\n                .itemTit {\r\n                    font-size: 28px;\r\n                    line-height: 34px;\r\n                    height: 40%;\r\n                    color: #072270;\r\n                }\r\n                .enTit{\r\n                    font-size: 18px;\r\n                    line-height: 20px;\r\n                    color: #072270;\r\n                }\r\n\r\n                .iconImg {\r\n                    width: 88px;\r\n                    height: 88px;\r\n                    margin-right: 20px;\r\n                }\r\n            }\r\n            .bgImg {\r\n                position: absolute;\r\n                width: 30%;\r\n                height: auto;\r\n                right: -10px;\r\n                top: 15px;\r\n            }\r\n        }\r\n\r\n\r\n        .grid-content-1{\r\n            grid-row-start: 1;\r\n            grid-row-end: 3;\r\n\r\n            .toplayer{\r\n                width: 100%;\r\n                height: 100%;\r\n                position: absolute;\r\n                left: 0;\r\n                top: 0;\r\n                display: flex;\r\n                align-items: center;\r\n                z-index: 99;\r\n\r\n                &>div{\r\n                    display: flex;\r\n                    align-items: flex-start;\r\n                }\r\n\r\n                .itemTit1 {\r\n                    font-size: 34px;\r\n                    line-height: 42px;\r\n                    height: 40%;\r\n                    letter-spacing: 1px;\r\n                    color: #072270;\r\n                    margin-bottom: 12px;\r\n                }\r\n                .enTit1{\r\n                    font-size: 22px;\r\n                    line-height: 24px;\r\n                    color: #072270;\r\n                }\r\n            }\r\n            .bgImg1 {\r\n                position: absolute;\r\n                width: 45%;\r\n                height: auto;\r\n                right: -20px;\r\n                top: 30%;\r\n            }\r\n        }\r\n\r\n        .bot-rights{\r\n            font-size: 18px;\r\n            color: #333;\r\n        }\r\n    }\r\n\r\n    @media screen and (min-width: 1200px) and (max-width: 1400px){\r\n        .gridCont {\r\n            width: 100%;\r\n            height: 100%;\r\n            display: grid;\r\n            grid-gap: 15px;\r\n            grid-template-columns: repeat(3, 1fr);\r\n            grid-auto-flow: row;\r\n            justify-content: center;\r\n\r\n            .toplayer{\r\n                width: 100%;\r\n                height: 100%;\r\n                position: absolute;\r\n                left: 0;\r\n                top: 0;\r\n                display: flex;\r\n                align-items: center;\r\n                padding: 0 20px;\r\n                z-index: 99;\r\n\r\n                .itemTit {\r\n                    font-size: 26px;\r\n                    line-height: 30px;\r\n                    height: 40%;\r\n                    color: #072270;\r\n                    margin-bottom: 2px;\r\n                }\r\n                .enTit{\r\n                    font-size: 14px;\r\n                    color: #072270;\r\n                }\r\n\r\n                .iconImg {\r\n                    width: 44px;\r\n                    height: 44px;\r\n                    margin-right: 10px;\r\n                }\r\n\r\n            }\r\n            .bgImg {\r\n                position: absolute;\r\n                width: 30%;\r\n                height: auto;\r\n                right: -10px;\r\n                top: 15px;\r\n            }\r\n        }\r\n\r\n        .grid-content-1{\r\n            grid-row-start: 1;\r\n            grid-row-end: 3;\r\n\r\n            .toplayer{\r\n                width: 100%;\r\n                height: 100%;\r\n                position: absolute;\r\n                left: 0;\r\n                top: 0;\r\n                display: flex;\r\n                align-items: center;\r\n                z-index: 99;\r\n\r\n                &>div{\r\n                    display: flex;\r\n                    align-items: flex-start;\r\n                }\r\n\r\n                .itemTit1 {\r\n                    font-size: 28px;\r\n                    line-height: 36px;\r\n                    height: 40%;\r\n                    letter-spacing: 1px;\r\n                    color: #072270;\r\n                    margin-bottom: 12px;\r\n                }\r\n                .enTit1{\r\n                    font-size: 16px;\r\n                    color: #072270;\r\n                }\r\n            }\r\n            .bgImg1 {\r\n                position: absolute;\r\n                width: 45%;\r\n                height: auto;\r\n                right: -20px;\r\n                top: 30%;\r\n            }\r\n        }\r\n        .bot-rights{\r\n            font-size: 15px;\r\n            color: #333;\r\n        }\r\n    }\r\n    @media screen and (max-width: 1200px){\r\n        .gridCont {\r\n            width: 100%;\r\n            height: 100%;\r\n            display: grid;\r\n            grid-gap: 10px;\r\n            grid-template-columns: repeat(3, 1fr);\r\n            grid-auto-flow: row;\r\n            justify-content: center;\r\n\r\n            .toplayer{\r\n                width: 100%;\r\n                height: 100%;\r\n                position: absolute;\r\n                left: 0;\r\n                top: 0;\r\n                display: flex;\r\n                align-items: center;\r\n                padding: 0 15px;\r\n                z-index: 99;\r\n\r\n                .itemTit {\r\n                    font-size: 18px;\r\n                    line-height: 22px;\r\n                    color: #072270;\r\n                }\r\n                .enTit{\r\n                    font-size: 12px;\r\n                    line-height: 14px;\r\n                    color: #072270;\r\n                }\r\n\r\n                .iconImg {\r\n                    width: 32px;\r\n                    height: 32px;\r\n                    margin-right: 10px;\r\n                }\r\n            }\r\n            .bgImg {\r\n                position: absolute;\r\n                width: 45%;\r\n                height: auto;\r\n                right: -10px;\r\n                top: 15px;\r\n            }\r\n        }\r\n\r\n        .grid-content-1{\r\n            grid-row-start: 1;\r\n            grid-row-end: 3;\r\n\r\n            .toplayer{\r\n                width: 100%;\r\n                height: 100%;\r\n                position: absolute;\r\n                left: 0;\r\n                top: 0;\r\n                display: flex;\r\n                align-items: center;\r\n                z-index: 99;\r\n\r\n                &>div{\r\n                    display: flex;\r\n                    align-items: flex-start;\r\n                }\r\n\r\n                .itemTit1 {\r\n                    font-size: 24px;\r\n                    line-height: 36px;\r\n                    height: 40%;\r\n                    letter-spacing: 1px;\r\n                    color: #072270;\r\n                    margin-bottom: 12px;\r\n                }\r\n                .enTit1{\r\n                    font-size: 14px;\r\n                    color: #072270;\r\n                }\r\n            }\r\n            .bgImg1 {\r\n                position: absolute;\r\n                width: 45%;\r\n                height: auto;\r\n                right: -20px;\r\n                top: 30%;\r\n            }\r\n        }\r\n        .bot-rights{\r\n            font-size: 12px;\r\n            color: #333;\r\n        }\r\n    }\r\n.login-container {\r\n    width: 100%;\r\n    height: 100%;\r\n    position: relative;\r\n    background: #fff;\r\n    .topPanel {\r\n        width: 100%;\r\n        height: 260px;\r\n        background: url('../../assets/newMenu/topbg.jpg') no-repeat center;\r\n        background-size: 100% 100%;\r\n        display: flex;\r\n        justify-content: center;\r\n        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);\r\n        animation: showDown 0.6s 1 ease forwards;\r\n\r\n        @keyframes showDown {\r\n            100% {\r\n                position: absolute;\r\n                top: 0;\r\n            }\r\n        }\r\n    }\r\n    .topPanelBg{\r\n        position: absolute;\r\n        width: 100%;\r\n        height: 60px;\r\n        top: 0;\r\n        left: 0;\r\n        background: rgba(255,255,255,.8);\r\n        z-index: 9;\r\n    }\r\n    .topPanelCont {\r\n        position: absolute;\r\n        width: 100%;\r\n        height: 60px;\r\n        padding: 0 50px;\r\n        top: 0;\r\n        left: 0;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n        z-index: 999;\r\n\r\n        .topLogo {\r\n            display: flex;\r\n            align-items: center;\r\n\r\n            img{\r\n                width: 146px;\r\n                height: auto;\r\n            }\r\n        }\r\n\r\n        .userInfo {\r\n            display: flex;\r\n            align-items: center;\r\n\r\n            .avator {\r\n                display: flex;\r\n                justify-content: right;\r\n\r\n                img {\r\n                    width: 20px;\r\n                    height: 20px;\r\n                    border-radius: 10px;\r\n                }\r\n                div {\r\n                    font-size: 15px;\r\n                    color: #333333;\r\n                    line-height: 20px;\r\n                    margin-left: 6px;\r\n                }\r\n            }\r\n            span {\r\n                width: 1px;\r\n                height: 20px;\r\n                background: #999;\r\n                margin: 0 15px;\r\n            }\r\n            .loginOut {\r\n                font-size: 15px;\r\n                color: #333;\r\n                line-height: 20px;\r\n                cursor: pointer;\r\n\r\n                &:hover {\r\n                    color: #006df5;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    .leftCont{\r\n        position: absolute;\r\n        left: 0;\r\n        top: 0;\r\n        width: 240px;\r\n        height: 100%;\r\n        z-index: 99;\r\n        background: url('../../assets/newMenu/leftbg.png') no-repeat center;\r\n        background-size: 100% 100%;\r\n    }\r\n    .topCont{\r\n        position: absolute;\r\n        width: 100%;\r\n        height: 200px;\r\n        left: 0;\r\n        top: 60px;\r\n        padding: 0 40px 0 120px;\r\n        z-index: 99999;\r\n        display: flex;\r\n        flex-direction: column;\r\n        justify-content: center;\r\n        align-items: flex-start;\r\n        .topInfo{\r\n            width: 100%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n            margin-bottom: 10px;\r\n\r\n            .topTit{\r\n                font-size: 44px;\r\n                font-family: \"PingFang SC\";\r\n                font-weight: bolder;\r\n                text-align: left;\r\n                color: #fff;\r\n                text-shadow: 0 3px 8px rgba(0,0,0,.2);\r\n            }\r\n\r\n            .topTime{\r\n                padding: 15px 10px;\r\n                box-sizing: border-box;\r\n                background: rgba(6,64,195,.8);\r\n                border-radius: 8px;\r\n                color: #fff;\r\n                font-family: \"PingFang SC\";\r\n                font-weight: 600;\r\n                font-size: 16px;\r\n                display: flex;\r\n                align-items: center;\r\n\r\n                .time{\r\n                    font-size: 48px;\r\n                }\r\n                &>span{\r\n                    width: 1px;\r\n                    height: 40px;\r\n                    margin: 0 15px;\r\n                    background: #fff;\r\n                }\r\n                .today{\r\n                    display: flex;\r\n                    flex-direction: column;\r\n                    align-items: flex-start;\r\n\r\n                    span{\r\n                        font-size: 14px;\r\n                    }\r\n\r\n                    span:first-of-type{\r\n                        margin-right: 10px;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        .line{\r\n            width: 120px;\r\n            height: 6px;\r\n            background: #00EEFF;\r\n        }\r\n    }\r\n    .menuGrid {\r\n        width: calc(100vw - 240px);\r\n        height: calc(100vh - 320px);\r\n        padding: 20px 20px 0;\r\n        position: absolute;\r\n        top: 260px;\r\n        left: 240px;\r\n        .gridCont {\r\n\r\n            .grid-content {\r\n                border-radius: 16px;\r\n                position: relative;\r\n                overflow: hidden;\r\n                cursor: pointer;\r\n                transition: 0.3s;\r\n                border: none;\r\n\r\n                &:hover {\r\n                    background-image: radial-gradient(ellipse farthest-side at 50% 100%,#48A3FF 0%,#fff 120%);\r\n                    box-shadow:  8px 8px 24px rgba(20,97,234,.2), -8px -8px 24px #fafafa;\r\n                }\r\n            }\r\n            .cont-bg-1{\r\n                background: #D9EAFF;\r\n            }\r\n            .cont-bg-2{\r\n                background: #CDD6FF;\r\n            }\r\n\r\n\r\n            /*.grid-content-2{*/\r\n            /*\tbackground-image: linear-gradient(135deg,#0098F5,#1461EA);*/\r\n            /*}*/\r\n\r\n            /*.grid-content-3{*/\r\n            /*\tbackground-image: linear-gradient(135deg,#006DF5,#1450EA);*/\r\n            /*}*/\r\n        }\r\n    }\r\n    .bot-rights{\r\n        width: calc(100vw - 240px);\r\n        height: 60px;\r\n        position: absolute;\r\n        bottom: 0;\r\n        left: 240px;\r\n        z-index: 9999;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        img{\r\n            width: 248px;\r\n            height: 8px;\r\n        }\r\n        div{\r\n            margin: 0 20px;\r\n        }\r\n    }\r\n}\r\n</style>\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue
+--- a/src/views/newHome/index.vue	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/views/newHome/index.vue	(date 1660871441429)
+@@ -1,17 +1,13 @@
+ <template>
+     <div class="login-container" :key="once">
+-        <div class="topPanel">
+-
+-        </div>
+-        <div class="topPanelBg">
+-
+-        </div>
++        <div class="topPanel"></div>
++        <div class="topPanelBg"></div>
+         <div class="topPanelCont">
+             <div class="topLogo">
+                 <img src="../../assets/newMenu/toplogo.png" />
+             </div>
+             <div class="userInfo">
+-                <div @click="onScreenfullClick" style="margin-right: 15px;cursor: pointer">
++                <div @click="onScreenfullClick" style="margin-right: 15px; cursor: pointer">
+                     <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
+                 </div>
+                 <div class="loginOut" @click="onLoginOut">退出登录</div>
+@@ -22,39 +18,36 @@
+                 </div>
+             </div>
+         </div>
+-        <div class="leftCont">
+-
+-        </div>
++        <div class="leftCont"></div>
+         <div class="topCont">
+             <div class="topInfo">
+-                <div class="topTit">
+-                    新疆国泰新华<br/>安全风险预警监测系统
+-                </div>
++                <div class="topTit">新疆国泰新华<br />安全风险预警监测系统</div>
+                 <div class="topTime">
+                     <div class="time">
+-                        {{time}}
++                        {{ time }}
+                     </div>
+                     <span></span>
+                     <div class="today">
+-                        <div>{{date}}</div>
+-                        <div><span>{{weekDay}}</span><span>{{dayTime}}</span></div>
+-                    </div>
+-                </div>
+-            </div>
+-            <div class="line">
+-
++                        <div>{{ date }}</div>
++                        <div>
++                            <span>{{ weekDay }}</span
++                            ><span>{{ dayTime }}</span>
++                        </div>
++                    </div>
++                </div>
+             </div>
++            <div class="line"></div>
+         </div>
+         <div class="menuGrid">
+             <div class="gridCont">
+                 <div class="grid-content grid-content-1 cont-bg-1" v-throttle @click="toRiskPlatform">
+                     <div class="toplayer">
+                         <div>
+-                        <img class="iconImg" src="../../assets/newMenu/icon1.png"/>
+-                        <div>
+-                            <div class="itemTit1">安全风险综合预警<br/>预报平台</div>
+-                            <div class="enTit1">Security risk comprehensive early warning and forecast platform</div>
+-                        </div>
++                            <img class="iconImg" src="../../assets/newMenu/icon1.png" />
++                            <div>
++                                <div class="itemTit1">安全风险综合预警<br />预报平台</div>
++                                <div class="enTit1">Security risk comprehensive early warning and forecast platform</div>
++                            </div>
+                         </div>
+                     </div>
+                     <img class="bgImg1" src="../../assets/newMenu/card-1.png" />
+@@ -162,9 +155,9 @@
+             </div>
+         </div>
+         <div class="bot-rights">
+-            <img src="../../assets/newMenu/pic_line1.png">
++            <img src="../../assets/newMenu/pic_line1.png" />
+             <div>技术支持:苏州国科鸿宇智能科技有限公司</div>
+-            <img src="../../assets/newMenu/pic_line2.png">
++            <img src="../../assets/newMenu/pic_line2.png" />
+         </div>
+     </div>
+ </template>
+@@ -188,8 +181,8 @@
+ import { useLoginApi } from '/@/api/login';
+ import { useI18n } from 'vue-i18n';
+ import screenfull from 'screenfull';
+-import router from '../../router'
+-import Cookies from 'js-cookie'
++import router from '../../router';
++import Cookies from 'js-cookie';
+ 
+ // 定义接口来定义对象的类型
+ interface LoginState {
+@@ -199,10 +192,10 @@
+     projectId: string;
+     once: number;
+     isScreenfull: boolean;
+-    time:string;
+-    date:string;
+-    weekDay:string;
+-    dayTime:string
++    time: string;
++    date: string;
++    weekDay: string;
++    dayTime: string;
+ }
+ 
+ export default defineComponent({
+@@ -226,7 +219,7 @@
+             hour: '2-digit',
+             minute: '2-digit',
+             second: '2-digit'
+-        }
++        };
+         const state = reactive<LoginState>({
+             tabsActiveName: 'account',
+             isScan: false,
+@@ -245,20 +238,30 @@
+         });
+ 
+         // 当前时间
+-        const getDateTime = ()=>{
+-            const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+-            state.time = curTime.slice(10,16)
+-            state.date = curTime.slice(0,10)
+-            let week = ['日','一','二','三','四','五','六']
+-            let day = new Date().getDay()
+-            state.weekDay = '星期' + week[day]
+-            let curHour = Number(curTime.slice(10,13))
+-            if(curHour>=5&&curHour<=10){state.dayTime = '上午'}
+-            if(curHour>10&&curHour<=12){state.dayTime = '中午'}
+-            if(curHour>12&&curHour<=18){state.dayTime = '下午'}
+-            if(curHour>18&&curHour<=22){state.dayTime = '晚上'}
+-            if(curHour>22){state.dayTime = '午夜'}
+-        }
++        const getDateTime = () => {
++            const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
++            state.time = curTime.slice(10, 16);
++            state.date = curTime.slice(0, 10);
++            let week = ['日', '一', '二', '三', '四', '五', '六'];
++            let day = new Date().getDay();
++            state.weekDay = '星期' + week[day];
++            let curHour = Number(curTime.slice(10, 13));
++            if (curHour >= 5 && curHour <= 10) {
++                state.dayTime = '上午';
++            }
++            if (curHour > 10 && curHour <= 12) {
++                state.dayTime = '中午';
++            }
++            if (curHour > 12 && curHour <= 18) {
++                state.dayTime = '下午';
++            }
++            if (curHour > 18 && curHour <= 22) {
++                state.dayTime = '晚上';
++            }
++            if (curHour > 22) {
++                state.dayTime = '午夜';
++            }
++        };
+         // 下拉菜单点击时
+         const onLoginOut = () => {
+             ElMessageBox({
+@@ -319,11 +322,11 @@
+             });
+         };
+         // 去风险大屏
+-        const toRiskPlatform = ()=>{
++        const toRiskPlatform = () => {
+             router.push({
+-                name: "bigDataScreen"
++                name: 'bigDataScreen'
+             });
+-        }
++        };
+         const throttle = (renderMenu: any, delay: number) => {
+             let flag = true;
+             let count = 0;
+@@ -377,10 +380,11 @@
+         // 页面加载时
+         onMounted(() => {
+             state.once += 1;
+-            NextLoading.done()
+-            setInterval(()=>{
+-                getDateTime()
+-            },1000)
++            NextLoading.done();
++            getDateTime();
++            setInterval(() => {
++                getDateTime();
++            }, 1000);
+             // loginBg();
+             // loginApp()
+         });
+@@ -400,288 +404,286 @@
+ </script>
+ 
+ <style scoped lang="scss">
+-    @media screen and (min-width: 1400px) {
+-        .gridCont {
+-            width: 100%;
+-            height: 100%;
+-            display: grid;
+-            grid-gap: 20px;
+-            grid-template-columns: repeat(3, 1fr);
+-            grid-auto-flow: row;
+-            justify-content: center;
+-            .toplayer{
+-                width: 100%;
+-                height: 100%;
+-                position: absolute;
+-                left: 0;
+-                top: 0;
+-                display: flex;
+-                align-items: center;
+-                padding: 0 20px;
+-                z-index: 99;
++@media screen and (min-width: 1400px) {
++    .gridCont {
++        width: 100%;
++        height: 100%;
++        display: grid;
++        grid-gap: 20px;
++        grid-template-columns: repeat(3, 1fr);
++        grid-auto-flow: row;
++        justify-content: center;
++        .toplayer {
++            width: 100%;
++            height: 100%;
++            position: absolute;
++            left: 0;
++            top: 0;
++            display: flex;
++            align-items: center;
++            padding: 0 20px;
++            z-index: 99;
+ 
+-                .itemTit {
+-                    font-size: 28px;
+-                    line-height: 34px;
+-                    height: 40%;
+-                    color: #072270;
+-                }
+-                .enTit{
+-                    font-size: 18px;
+-                    line-height: 20px;
+-                    color: #072270;
+-                }
++            .itemTit {
++                font-size: 28px;
++                line-height: 34px;
++                height: 40%;
++                color: #072270;
++            }
++            .enTit {
++                font-size: 18px;
++                line-height: 20px;
++                color: #072270;
++            }
+ 
+-                .iconImg {
+-                    width: 88px;
+-                    height: 88px;
+-                    margin-right: 20px;
+-                }
+-            }
+-            .bgImg {
+-                position: absolute;
+-                width: 30%;
+-                height: auto;
+-                right: -10px;
+-                top: 15px;
+-            }
+-        }
++            .iconImg {
++                width: 88px;
++                height: 88px;
++                margin-right: 20px;
++            }
++        }
++        .bgImg {
++            position: absolute;
++            width: 30%;
++            height: auto;
++            right: -10px;
++            top: 15px;
++        }
++    }
+ 
+-
+-        .grid-content-1{
+-            grid-row-start: 1;
+-            grid-row-end: 3;
++    .grid-content-1 {
++        grid-row-start: 1;
++        grid-row-end: 3;
+ 
+-            .toplayer{
+-                width: 100%;
+-                height: 100%;
+-                position: absolute;
+-                left: 0;
+-                top: 0;
+-                display: flex;
+-                align-items: center;
+-                z-index: 99;
++        .toplayer {
++            width: 100%;
++            height: 100%;
++            position: absolute;
++            left: 0;
++            top: 0;
++            display: flex;
++            align-items: center;
++            z-index: 99;
+ 
+-                &>div{
+-                    display: flex;
+-                    align-items: flex-start;
+-                }
++            & > div {
++                display: flex;
++                align-items: flex-start;
++            }
+ 
+-                .itemTit1 {
+-                    font-size: 34px;
+-                    line-height: 42px;
+-                    height: 40%;
+-                    letter-spacing: 1px;
+-                    color: #072270;
+-                    margin-bottom: 12px;
+-                }
+-                .enTit1{
+-                    font-size: 22px;
+-                    line-height: 24px;
+-                    color: #072270;
+-                }
+-            }
+-            .bgImg1 {
+-                position: absolute;
+-                width: 45%;
+-                height: auto;
+-                right: -20px;
+-                top: 30%;
+-            }
+-        }
++            .itemTit1 {
++                font-size: 34px;
++                line-height: 42px;
++                height: 40%;
++                letter-spacing: 1px;
++                color: #072270;
++                margin-bottom: 12px;
++            }
++            .enTit1 {
++                font-size: 22px;
++                line-height: 24px;
++                color: #072270;
++            }
++        }
++        .bgImg1 {
++            position: absolute;
++            width: 45%;
++            height: auto;
++            right: -20px;
++            top: 30%;
++        }
++    }
+ 
+-        .bot-rights{
+-            font-size: 18px;
+-            color: #333;
+-        }
+-    }
++    .bot-rights {
++        font-size: 18px;
++        color: #333;
++    }
++}
+ 
+-    @media screen and (min-width: 1200px) and (max-width: 1400px){
+-        .gridCont {
+-            width: 100%;
+-            height: 100%;
+-            display: grid;
+-            grid-gap: 15px;
+-            grid-template-columns: repeat(3, 1fr);
+-            grid-auto-flow: row;
+-            justify-content: center;
++@media screen and (min-width: 1200px) and (max-width: 1400px) {
++    .gridCont {
++        width: 100%;
++        height: 100%;
++        display: grid;
++        grid-gap: 15px;
++        grid-template-columns: repeat(3, 1fr);
++        grid-auto-flow: row;
++        justify-content: center;
+ 
+-            .toplayer{
+-                width: 100%;
+-                height: 100%;
+-                position: absolute;
+-                left: 0;
+-                top: 0;
+-                display: flex;
+-                align-items: center;
+-                padding: 0 20px;
+-                z-index: 99;
++        .toplayer {
++            width: 100%;
++            height: 100%;
++            position: absolute;
++            left: 0;
++            top: 0;
++            display: flex;
++            align-items: center;
++            padding: 0 20px;
++            z-index: 99;
+ 
+-                .itemTit {
+-                    font-size: 26px;
+-                    line-height: 30px;
+-                    height: 40%;
+-                    color: #072270;
+-                    margin-bottom: 2px;
+-                }
+-                .enTit{
+-                    font-size: 14px;
+-                    color: #072270;
+-                }
++            .itemTit {
++                font-size: 26px;
++                line-height: 30px;
++                height: 40%;
++                color: #072270;
++                margin-bottom: 2px;
++            }
++            .enTit {
++                font-size: 14px;
++                color: #072270;
++            }
+ 
+-                .iconImg {
+-                    width: 44px;
+-                    height: 44px;
+-                    margin-right: 10px;
+-                }
+-
+-            }
+-            .bgImg {
+-                position: absolute;
+-                width: 30%;
+-                height: auto;
+-                right: -10px;
+-                top: 15px;
+-            }
+-        }
++            .iconImg {
++                width: 44px;
++                height: 44px;
++                margin-right: 10px;
++            }
++        }
++        .bgImg {
++            position: absolute;
++            width: 30%;
++            height: auto;
++            right: -10px;
++            top: 15px;
++        }
++    }
+ 
+-        .grid-content-1{
+-            grid-row-start: 1;
+-            grid-row-end: 3;
++    .grid-content-1 {
++        grid-row-start: 1;
++        grid-row-end: 3;
+ 
+-            .toplayer{
+-                width: 100%;
+-                height: 100%;
+-                position: absolute;
+-                left: 0;
+-                top: 0;
+-                display: flex;
+-                align-items: center;
+-                z-index: 99;
++        .toplayer {
++            width: 100%;
++            height: 100%;
++            position: absolute;
++            left: 0;
++            top: 0;
++            display: flex;
++            align-items: center;
++            z-index: 99;
+ 
+-                &>div{
+-                    display: flex;
+-                    align-items: flex-start;
+-                }
++            & > div {
++                display: flex;
++                align-items: flex-start;
++            }
+ 
+-                .itemTit1 {
+-                    font-size: 28px;
+-                    line-height: 36px;
+-                    height: 40%;
+-                    letter-spacing: 1px;
+-                    color: #072270;
+-                    margin-bottom: 12px;
+-                }
+-                .enTit1{
+-                    font-size: 16px;
+-                    color: #072270;
+-                }
+-            }
+-            .bgImg1 {
+-                position: absolute;
+-                width: 45%;
+-                height: auto;
+-                right: -20px;
+-                top: 30%;
+-            }
+-        }
+-        .bot-rights{
+-            font-size: 15px;
+-            color: #333;
+-        }
+-    }
+-    @media screen and (max-width: 1200px){
+-        .gridCont {
+-            width: 100%;
+-            height: 100%;
+-            display: grid;
+-            grid-gap: 10px;
+-            grid-template-columns: repeat(3, 1fr);
+-            grid-auto-flow: row;
+-            justify-content: center;
++            .itemTit1 {
++                font-size: 28px;
++                line-height: 36px;
++                height: 40%;
++                letter-spacing: 1px;
++                color: #072270;
++                margin-bottom: 12px;
++            }
++            .enTit1 {
++                font-size: 16px;
++                color: #072270;
++            }
++        }
++        .bgImg1 {
++            position: absolute;
++            width: 45%;
++            height: auto;
++            right: -20px;
++            top: 30%;
++        }
++    }
++    .bot-rights {
++        font-size: 15px;
++        color: #333;
++    }
++}
++@media screen and (max-width: 1200px) {
++    .gridCont {
++        width: 100%;
++        height: 100%;
++        display: grid;
++        grid-gap: 10px;
++        grid-template-columns: repeat(3, 1fr);
++        grid-auto-flow: row;
++        justify-content: center;
+ 
+-            .toplayer{
+-                width: 100%;
+-                height: 100%;
+-                position: absolute;
+-                left: 0;
+-                top: 0;
+-                display: flex;
+-                align-items: center;
+-                padding: 0 15px;
+-                z-index: 99;
++        .toplayer {
++            width: 100%;
++            height: 100%;
++            position: absolute;
++            left: 0;
++            top: 0;
++            display: flex;
++            align-items: center;
++            padding: 0 15px;
++            z-index: 99;
+ 
+-                .itemTit {
+-                    font-size: 18px;
+-                    line-height: 22px;
+-                    color: #072270;
+-                }
+-                .enTit{
+-                    font-size: 12px;
+-                    line-height: 14px;
+-                    color: #072270;
+-                }
++            .itemTit {
++                font-size: 18px;
++                line-height: 22px;
++                color: #072270;
++            }
++            .enTit {
++                font-size: 12px;
++                line-height: 14px;
++                color: #072270;
++            }
+ 
+-                .iconImg {
+-                    width: 32px;
+-                    height: 32px;
+-                    margin-right: 10px;
+-                }
+-            }
+-            .bgImg {
+-                position: absolute;
+-                width: 45%;
+-                height: auto;
+-                right: -10px;
+-                top: 15px;
+-            }
+-        }
++            .iconImg {
++                width: 32px;
++                height: 32px;
++                margin-right: 10px;
++            }
++        }
++        .bgImg {
++            position: absolute;
++            width: 45%;
++            height: auto;
++            right: -10px;
++            top: 15px;
++        }
++    }
+ 
+-        .grid-content-1{
+-            grid-row-start: 1;
+-            grid-row-end: 3;
++    .grid-content-1 {
++        grid-row-start: 1;
++        grid-row-end: 3;
+ 
+-            .toplayer{
+-                width: 100%;
+-                height: 100%;
+-                position: absolute;
+-                left: 0;
+-                top: 0;
+-                display: flex;
+-                align-items: center;
+-                z-index: 99;
++        .toplayer {
++            width: 100%;
++            height: 100%;
++            position: absolute;
++            left: 0;
++            top: 0;
++            display: flex;
++            align-items: center;
++            z-index: 99;
+ 
+-                &>div{
+-                    display: flex;
+-                    align-items: flex-start;
+-                }
++            & > div {
++                display: flex;
++                align-items: flex-start;
++            }
+ 
+-                .itemTit1 {
+-                    font-size: 24px;
+-                    line-height: 36px;
+-                    height: 40%;
+-                    letter-spacing: 1px;
+-                    color: #072270;
+-                    margin-bottom: 12px;
+-                }
+-                .enTit1{
+-                    font-size: 14px;
+-                    color: #072270;
+-                }
+-            }
+-            .bgImg1 {
+-                position: absolute;
+-                width: 45%;
+-                height: auto;
+-                right: -20px;
+-                top: 30%;
+-            }
+-        }
+-        .bot-rights{
+-            font-size: 12px;
+-            color: #333;
+-        }
+-    }
++            .itemTit1 {
++                font-size: 24px;
++                line-height: 36px;
++                height: 40%;
++                letter-spacing: 1px;
++                color: #072270;
++                margin-bottom: 12px;
++            }
++            .enTit1 {
++                font-size: 14px;
++                color: #072270;
++            }
++        }
++        .bgImg1 {
++            position: absolute;
++            width: 45%;
++            height: auto;
++            right: -20px;
++            top: 30%;
++        }
++    }
++    .bot-rights {
++        font-size: 12px;
++        color: #333;
++    }
++}
+ .login-container {
+     width: 100%;
+     height: 100%;
+@@ -704,13 +706,13 @@
+             }
+         }
+     }
+-    .topPanelBg{
++    .topPanelBg {
+         position: absolute;
+         width: 100%;
+         height: 60px;
+         top: 0;
+         left: 0;
+-        background: rgba(255,255,255,.8);
++        background: rgba(255, 255, 255, 0.8);
+         z-index: 9;
+     }
+     .topPanelCont {
+@@ -729,7 +731,7 @@
+             display: flex;
+             align-items: center;
+ 
+-            img{
++            img {
+                 width: 146px;
+                 height: auto;
+             }
+@@ -773,7 +775,7 @@
+             }
+         }
+     }
+-    .leftCont{
++    .leftCont {
+         position: absolute;
+         left: 0;
+         top: 0;
+@@ -783,7 +785,7 @@
+         background: url('../../assets/newMenu/leftbg.png') no-repeat center;
+         background-size: 100% 100%;
+     }
+-    .topCont{
++    .topCont {
+         position: absolute;
+         width: 100%;
+         height: 200px;
+@@ -795,62 +797,62 @@
+         flex-direction: column;
+         justify-content: center;
+         align-items: flex-start;
+-        .topInfo{
++        .topInfo {
+             width: 100%;
+             display: flex;
+             align-items: center;
+             justify-content: space-between;
+             margin-bottom: 10px;
+ 
+-            .topTit{
++            .topTit {
+                 font-size: 44px;
+-                font-family: "PingFang SC";
++                font-family: 'PingFang SC';
+                 font-weight: bolder;
+                 text-align: left;
+                 color: #fff;
+-                text-shadow: 0 3px 8px rgba(0,0,0,.2);
++                text-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
+             }
+ 
+-            .topTime{
++            .topTime {
+                 padding: 15px 10px;
+                 box-sizing: border-box;
+-                background: rgba(6,64,195,.8);
++                background: rgba(6, 64, 195, 0.8);
+                 border-radius: 8px;
+                 color: #fff;
+-                font-family: "PingFang SC";
++                font-family: 'PingFang SC';
+                 font-weight: 600;
+                 font-size: 16px;
+                 display: flex;
+                 align-items: center;
+ 
+-                .time{
++                .time {
+                     font-size: 48px;
+                 }
+-                &>span{
++                & > span {
+                     width: 1px;
+                     height: 40px;
+                     margin: 0 15px;
+                     background: #fff;
+                 }
+-                .today{
++                .today {
+                     display: flex;
+                     flex-direction: column;
+                     align-items: flex-start;
+ 
+-                    span{
++                    span {
+                         font-size: 14px;
+                     }
+ 
+-                    span:first-of-type{
++                    span:first-of-type {
+                         margin-right: 10px;
+                     }
+                 }
+             }
+         }
+-        .line{
++        .line {
+             width: 120px;
+             height: 6px;
+-            background: #00EEFF;
++            background: #00eeff;
+         }
+     }
+     .menuGrid {
+@@ -861,7 +863,6 @@
+         top: 260px;
+         left: 240px;
+         .gridCont {
+-
+             .grid-content {
+                 border-radius: 16px;
+                 position: relative;
+@@ -871,17 +872,16 @@
+                 border: none;
+ 
+                 &:hover {
+-                    background-image: radial-gradient(ellipse farthest-side at 50% 100%,#48A3FF 0%,#fff 120%);
+-                    box-shadow:  8px 8px 24px rgba(20,97,234,.2), -8px -8px 24px #fafafa;
++                    background-image: radial-gradient(ellipse farthest-side at 50% 100%, #48a3ff 0%, #fff 120%);
++                    box-shadow: 8px 8px 24px rgba(20, 97, 234, 0.2), -8px -8px 24px #fafafa;
+                 }
+             }
+-            .cont-bg-1{
+-                background: #D9EAFF;
++            .cont-bg-1 {
++                background: #d9eaff;
+             }
+-            .cont-bg-2{
+-                background: #CDD6FF;
++            .cont-bg-2 {
++                background: #cdd6ff;
+             }
+-
+ 
+             /*.grid-content-2{*/
+             /*	background-image: linear-gradient(135deg,#0098F5,#1461EA);*/
+@@ -892,7 +892,7 @@
+             /*}*/
+         }
+     }
+-    .bot-rights{
++    .bot-rights {
+         width: calc(100vw - 240px);
+         height: 60px;
+         position: absolute;
+@@ -903,11 +903,11 @@
+         align-items: center;
+         justify-content: center;
+ 
+-        img{
++        img {
+             width: 248px;
+             height: 8px;
+         }
+-        div{
++        div {
+             margin: 0 20px;
+         }
+     }
+Index: src/api/specialWorkSystem/approveRule/index.ts
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>import request from '/@/utils/request';\r\n\r\nexport function approveRuleApi() {\r\n    return {\r\n        // v1\r\n        getApproveRuleList: (data: object) => {\r\n            return request({\r\n                url: import.meta.env.VITE_API_URL + `/rule/listByPage`,\r\n                method: 'post',\r\n                data: data\r\n            });\r\n        },\r\n        // v1\r\n        addApproveRule: (data: object) => {\r\n            return request({\r\n                url: import.meta.env.VITE_API_URL + `/rule/save`,\r\n                method: 'post',\r\n                data: data\r\n            });\r\n        },\r\n        // v1\r\n        modApproveRule: (data: object) => {\r\n            return request({\r\n                url: import.meta.env.VITE_API_URL + `/rule/update`,\r\n                method: 'post',\r\n                data: data\r\n            });\r\n        },\r\n        // v1\r\n        deleteApproveRule: (data: object) => {\r\n            return request({\r\n                url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/delete`,\r\n                method: 'post',\r\n                data: data\r\n            });\r\n        },\r\n        // v1\r\n        getAllApproveRuleList: (data: {}) => {\r\n            return request({\r\n                url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`,\r\n                method: 'post',\r\n                data\r\n            });\r\n        }\r\n    };\r\n}\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/api/specialWorkSystem/approveRule/index.ts b/src/api/specialWorkSystem/approveRule/index.ts
+--- a/src/api/specialWorkSystem/approveRule/index.ts	(revision 2e0110788cc8563381d4d8050b559d8f4448c6bf)
++++ b/src/api/specialWorkSystem/approveRule/index.ts	(date 1660889194066)
+@@ -29,7 +29,7 @@
+         // v1
+         deleteApproveRule: (data: object) => {
+             return request({
+-                url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/delete`,
++                url: import.meta.env.VITE_API_URL + `/rule/del`,
+                 method: 'post',
+                 data: data
+             });
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50__Default_Changelist_.xml
new file mode 100644
index 0000000..14ea69a
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50__Default_Changelist_.xml
@@ -0,0 +1,9 @@
+<changelist name="Uncommitted_changes_before_Update_at_2022_8_19_16_50_[Default_Changelist]" date="1660899123237" recycled="true" deleted="true">
+  <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_19_16_50_[Default_Changelist]/shelved.patch" />
+  <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/8/19 16:50 [Default Changelist]" />
+  <binary>
+    <option name="BEFORE_PATH" value=".idea/shelf/Uncommitted_changes_before_Update_at_2022_8_11_19_22_[Default_Changelist]/companyLogo.png" />
+    <option name="AFTER_PATH" />
+    <option name="SHELVED_PATH" />
+  </binary>
+</changelist>
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
index c738754..3b4f398 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -13,7 +13,6 @@
     <!--    </router-view>-->
     <el-config-provider :size="getGlobalComponentSize" :locale="i18nLocale">
         <router-view v-show="themeConfig.lockScreenTime > 1" />
-        <router-view v-show="themeConfig.lockScreenTime > 1" />
         <LockScreen v-if="themeConfig.isLockScreen" />
         <Setings ref="setingsRef" v-show="themeConfig.lockScreenTime > 1" />
         <CloseFull v-if="!themeConfig.isLockScreen" />
diff --git a/src/api/specialWorkSystem/approveRule/index.ts b/src/api/specialWorkSystem/approveRule/index.ts
index f881c8c..a95e65d 100644
--- a/src/api/specialWorkSystem/approveRule/index.ts
+++ b/src/api/specialWorkSystem/approveRule/index.ts
@@ -29,7 +29,7 @@
         // v1
         deleteApproveRule: (data: object) => {
             return request({
-                url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/delete`,
+                url: import.meta.env.VITE_API_URL + `/rule/del`,
                 method: 'post',
                 data: data
             });
diff --git a/src/layout/routerView/link.vue b/src/layout/routerView/link.vue
index a48f002..ca1c5f9 100644
--- a/src/layout/routerView/link.vue
+++ b/src/layout/routerView/link.vue
@@ -1,9 +1,7 @@
 <template>
-	<div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
-		<a :href="currentRouteMeta.isLink" target="_blank" rel="opener" class="flex-margin">
-			{{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }}
-		</a>
-	</div>
+    <div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
+        <a :href="currentRouteMeta.isLink" target="_blank" rel="opener" class="flex-margin"> {{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }} </a>
+    </div>
 </template>
 
 <script lang="ts">
@@ -14,48 +12,48 @@
 
 // 定义接口来定义对象的类型
 interface LinkViewState {
-	currentRouteMeta: {
-		isLink: string;
-		title: string;
-	};
+    currentRouteMeta: {
+        isLink: string;
+        title: string;
+    };
 }
 interface LinkViewRouteMeta extends RouteMeta {
-	isLink: string;
-	title: string;
+    isLink: string;
+    title: string;
 }
 
 export default defineComponent({
-	name: 'layoutLinkView',
-	setup() {
-		const storesThemeConfig = useThemeConfig();
-		const { themeConfig } = storeToRefs(storesThemeConfig);
-		const route = useRoute();
-		const state = reactive<LinkViewState>({
-			currentRouteMeta: {
-				isLink: '',
-				title: '',
-			},
-		});
-		// 设置 link 的高度
-		const setLinkHeight = computed(() => {
-			let { isTagsview } = themeConfig.value;
-			if (isTagsview) return `115px`;
-			else return `80px`;
-		});
-		// 监听路由的变化,设置内容
-		watch(
-			() => route.path,
-			() => {
-				state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
-			},
-			{
-				immediate: true,
-			}
-		);
-		return {
-			setLinkHeight,
-			...toRefs(state),
-		};
-	},
+    name: 'layoutLinkView',
+    setup() {
+        const storesThemeConfig = useThemeConfig();
+        const { themeConfig } = storeToRefs(storesThemeConfig);
+        const route = useRoute();
+        const state = reactive<LinkViewState>({
+            currentRouteMeta: {
+                isLink: '',
+                title: ''
+            }
+        });
+        // 设置 link 的高度
+        const setLinkHeight = computed(() => {
+            let { isTagsview } = themeConfig.value;
+            if (isTagsview) return `115px`;
+            else return `80px`;
+        });
+        // 监听路由的变化,设置内容
+        watch(
+            () => route.path,
+            () => {
+                state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
+            },
+            {
+                immediate: true
+            }
+        );
+        return {
+            setLinkHeight,
+            ...toRefs(state)
+        };
+    }
 });
 </script>
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 72c5505..fe82a55 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -2,8 +2,8 @@
 import { ElMessage, ElMessageBox } from 'element-plus';
 import JSONbig from 'json-bigint';
 import Cookies from 'js-cookie';
-import {useLoginApi} from "/@/api/login";
-import { Session, } from '/@/utils/storage';
+import { useLoginApi } from '/@/api/login';
+import { Session } from '/@/utils/storage';
 
 // var jsonBig = require('json-bigint')({ "storeAsString": true });
 // 配置新建一个 axios 实例
@@ -52,15 +52,21 @@
         // 对响应数据做点什么
         if (response.data.code && response.data.code === 'A0213') {
             ElMessage.error('用户uid不存在');
-                Session.clear();
-                window.location.href = '/';
+            useLoginApi()
+                .signOut()
+                .then(() => {
+                    Session.clear();
+                    window.location.href = '/';
+                });
         } else if (response.data.code && response.data.code === 'A0215') {
             ElMessage.error('token失效');
             // logOut;
-            useLoginApi().signOut().then(()=>{
-                Session.clear();
-                window.location.href = '/';
-            })
+            useLoginApi()
+                .signOut()
+                .then(() => {
+                    Session.clear();
+                    window.location.href = '/';
+                });
         }
         // if(response.data.code && response.data.code !== '200'){
         return Promise.resolve(response);
@@ -89,15 +95,15 @@
         if (error.message.indexOf('timeout') != -1) {
             ElMessage.error('网络超时');
             setTimeout(() => {
-                // Session.clear();
+                Session.clear();
                 window.location.href = '/';
             }, 1000);
         } else if (error.message == 'Network Error') {
             ElMessage.error('网络连接错误');
-            // setTimeout(() => {
-            //     Session.clear();
-            //     window.location.href = '/';
-            // }, 1000);
+            setTimeout(() => {
+                Session.clear();
+                window.location.href = '/';
+            }, 1000);
         } else {
             if (error.response.data) ElMessage.error(error.response.data.error);
             else ElMessage.error('接口路径找不到');
diff --git a/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue b/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
index e065d90..3724421 100644
--- a/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
+++ b/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
@@ -43,16 +43,16 @@
                                 <el-table-column prop="quotaContent" label="指标作业" show-overflow-tooltip align="center"></el-table-column>
                                 <el-table-column prop="secondReferenceResult" label="参数值" show-overflow-tooltip align="center">
                                     <template #default="scope">
-                                        <div :style="{color: scope.row.reportResult==1?'#ff0000':'#409eff'}">
-                                            {{scope.row.dataReportType==1?'无':scope.row.secondReferenceResult}}
+                                        <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }">
+                                            {{ scope.row.dataReportType == 1 ? '无' : scope.row.secondReferenceResult }}
                                         </div>
                                     </template>
                                 </el-table-column>
                                 <el-table-column prop="quotaUnit" label="指标单位" show-overflow-tooltip align="center"></el-table-column>
                                 <el-table-column prop="reportResult" label="结果" show-overflow-tooltip align="center">
                                     <template #default="scope">
-                                        <div :style="{color: scope.row.reportResult==1?'#ff0000':'#409eff'}">
-                                            {{scope.row.reportResult==0?'正常':(scope.row.reportResult==1?'异常':'无')}}
+                                        <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }">
+                                            {{ scope.row.reportResult == 0 ? '正常' : scope.row.reportResult == 1 ? '异常' : '无' }}
                                         </div>
                                     </template>
                                 </el-table-column>
@@ -140,8 +140,8 @@
     rfidId: number | null;
     quotaId: number | null;
     quotaUnit: number | null;
-    reportResult: number | null
-    secondReferenceResult: number |null;
+    reportResult: number | null;
+    secondReferenceResult: number | null;
     execSequence: number | null;
     dataReportType: number | null;
     firstReferenceValue: number | null;
@@ -173,7 +173,7 @@
                 quotaId: null,
                 quotaUnit: null,
                 execSequence: null,
-                secondReferenceResult:null,
+                secondReferenceResult: null,
                 reportResult: null,
                 dataReportType: null,
                 firstReferenceValue: null,
@@ -235,7 +235,7 @@
                     quotaUnit: null,
                     reportResult: null,
                     execSequence: null,
-                    secondReferenceResult:null,
+                    secondReferenceResult: null,
                     dataReportType: null,
                     firstReferenceValue: null,
                     secondReferenceSign: null,
@@ -266,7 +266,7 @@
                         data.inspectTaskForm.execDepId = res.data.data.execDepId;
                         giveClassGroup();
                         data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));
-                        console.log(data.inspectTaskForm,'this data')
+                        console.log(data.inspectTaskForm, 'this data');
                     } else {
                     }
                 })
@@ -277,7 +277,6 @@
         // const toRefer =(row, column, cellValue, index)=>{
         //     return row.secondReferenceResult==0?'正常':(row.reportResult==1?'异常':'无')
         // }
-
 
         const submitInspectPoint = async () => {
             if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') {
diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
index 604b58f..05fea55 100644
--- a/src/views/loginPage/component/accountLogin.vue
+++ b/src/views/loginPage/component/accountLogin.vue
@@ -109,15 +109,16 @@
             let currentTimeInfo = currentTime.value;
             // 登录成功,跳到转首页
             // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
-            if (route.query?.redirect) {
-                router.push('/newMenu');
-                // router.push({
-                // 	path: <string>route.query?.redirect,
-                // 	query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',
-                // });
-            } else {
-                router.push('/loginPage');
-            }
+            // if (route.query?.redirect) {
+            //     debugger;
+            router.push('/newMenu');
+            // router.push({
+            // 	path: <string>route.query?.redirect,
+            // 	query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '',
+            // });
+            // } else {
+            //     router.push('/loginPage');
+            // }
             state.loading.signIn = true;
             const signInText = t('message.signInText');
             ElMessage.success(`${currentTimeInfo},${signInText}`);
diff --git a/src/views/outLink/index.vue b/src/views/outLink/index.vue
new file mode 100644
index 0000000..4288641
--- /dev/null
+++ b/src/views/outLink/index.vue
@@ -0,0 +1,64 @@
+<template>
+    <div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
+        <a :href="currentRouteMeta.isLink" target="_blank" rel="opener" class="flex-margin"> {{ $t(currentRouteMeta.title) }}:{{ currentRouteMeta.isLink }} </a>
+    </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, toRefs, reactive, computed, watch, onMounted } from 'vue';
+import { useRoute, RouteMeta } from 'vue-router';
+import { storeToRefs } from 'pinia';
+import { useThemeConfig } from '/@/stores/themeConfig';
+
+// 定义接口来定义对象的类型
+interface LinkViewState {
+    currentRouteMeta: {
+        isLink: string;
+        title: string;
+    };
+}
+interface LinkViewRouteMeta extends RouteMeta {
+    isLink: string;
+    title: string;
+}
+
+export default defineComponent({
+    name: 'index',
+    setup() {
+        const storesThemeConfig = useThemeConfig();
+        const { themeConfig } = storeToRefs(storesThemeConfig);
+        const route = useRoute();
+        const state = reactive<LinkViewState>({
+            currentRouteMeta: {
+                isLink: '',
+                title: ''
+            }
+        });
+        // 设置 link 的高度
+        const setLinkHeight = computed(() => {
+            let { isTagsview } = themeConfig.value;
+            if (isTagsview) return `115px`;
+            else return `80px`;
+        });
+        // 监听路由的变化,设置内容
+        watch(
+            () => route.path,
+            () => {
+                state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
+            },
+            {
+                immediate: true
+            }
+        );
+
+        onMounted(() => {
+            window.open(state.currentRouteMeta.isLink as string, '_blank');
+        });
+
+        return {
+            setLinkHeight,
+            ...toRefs(state)
+        };
+    }
+});
+</script>
diff --git a/src/views/safeKnowledge/bmgz/index.vue b/src/views/safeKnowledge/bmgz/index.vue
index be13f8a..5a754e9 100644
--- a/src/views/safeKnowledge/bmgz/index.vue
+++ b/src/views/safeKnowledge/bmgz/index.vue
@@ -1,40 +1,31 @@
 <template>
-  <div class="home-container">
-    <iframe src="http://39.104.85.193/bmgz"></iframe>
-  </div>
+    <div class="home-container">
+        <iframe src="http://39.104.85.193/bmgz"></iframe>
+    </div>
 </template>
 
 <script>
 export default {
-  name: 'safeKnowledgeSys',
-  props: {
-
-  },
-  data(){
-    return{
-
-    }
-  },
-  created() {
-
-  },
-  methods:{
-
-  }
-}
+    name: 'safeKnowledgeSys',
+    props: {},
+    data() {
+        return {};
+    },
+    created() {},
+    methods: {}
+};
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped lang="scss">
-  .home-container{
+.home-container {
     height: calc(100vh - 144px);
     box-sizing: border-box;
     overflow: hidden;
-
-    iframe{
-      width: 100%;
-      height: 100%;
-      border: none;
+    iframe {
+        width: 100%;
+        height: 100%;
+        border: none;
     }
-  }
+}
 </style>
diff --git a/src/views/specialWorkSystem/workApplyManage/myJobApply/index.vue b/src/views/specialWorkSystem/workApplyManage/myJobApply/index.vue
index 7a1a175..c8dd308 100644
--- a/src/views/specialWorkSystem/workApplyManage/myJobApply/index.vue
+++ b/src/views/specialWorkSystem/workApplyManage/myJobApply/index.vue
@@ -1,807 +1,785 @@
 <template>
-	<div class="home-container">
-		<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
-			<el-tab-pane label="申请中" name="1">
-				<div style="height: 100%">
-					<el-row class="homeCard">
-							<el-col :span="8">
-								<div class="grid-content topInfo">
-									<el-input v-model="searchWord" placeholder="作业证名称"></el-input>
-									<el-button type="primary">查询</el-button>
-									<el-button plain>重置</el-button>
-								</div>
-							</el-col>
-					</el-row>
-					<div class="homeCard">
-						<div class="main-card">
-							<el-row class="cardTop">
-								<el-col :span="12" class="mainCardBtn">
-									<el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
-<!--									<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
-<!--									<el-button type="success" size="default">设置分类</el-button>-->
-								</el-col>
-								<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-							</el-row>
-							<el-table
-									ref="multipleTableRef"
-									:data="applyData"
-									style="width: 100%"
-									height="calc(100% - 100px)"
-									:header-cell-style="{background: '#fafafa'}"
-							>
-								<el-table-column property="workPermitNo" label="作业申请单号" width="180"/>
-								<el-table-column property="applyUname" label="申请人"/>
-								<el-table-column property="depName" label="部门名称"/>
-								<el-table-column property="operators" label="作业人"/>
-								<el-table-column property="workTypeDesc" label="作业类型"/>
-								<el-table-column property="workLevelDesc" label="作业等级"/>
-								<el-table-column property="applyTime" label="申请时间" width="180"/>
-								<el-table-column label="申请状态" width="180">
-									<template #default="scope">
-										<el-tag type="success">{{ scope.row.statusDesc}}</el-tag>
-									</template>
-								</el-table-column>
-								<el-table-column fixed="right" label="操作" align="center" width="250">
-									<template #default="scope">
-										<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-										<el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button>
-										<el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">取消</el-button>
-									</template>
-								</el-table-column>
-							</el-table>
-							<div class="pageBtn">
-								<el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
-							</div>
-						</div>
-					</div>
-				</div>
-				<el-dialog v-model="dialogDetails" title="作业申请详情">
-					<el-form :model="details" label-width="120px">
-						<el-form-item label="作业申请单号">
-							<el-input
-									v-model="details.workPermitNo"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="申请人">
-							<el-input
-									v-model="details.applyUname"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="部门名称">
-							<el-input
-									v-model="details.depName"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="作业人">
-							<el-input
-									v-model="details.operators"
-									readonly
-									type="textarea"
-							/>
-						</el-form-item>
-						<el-form-item label="作业类型">
-							<el-input
-									v-model="details.workTypeDesc"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="作业等级">
-							<el-input
-									v-model="details.workLevelDesc"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="作业内容">
-							<el-input
-									v-model="details.workContent"
-									readonly
-									type="textarea"
-							/>
-						</el-form-item>
-						<el-form-item label="作业地址">
-							<el-input
-									v-model="details.workLocation"
-									readonly
-									type="textarea"
-							/>
-						</el-form-item>
-						<el-form-item label="作业方式">
-							<el-input
-									v-model="details.workDetail.hotMethod"
-									readonly
-									type="textarea"
-							/>
-						</el-form-item>
-						<el-form-item label="关联其他作业">
-							<el-input
-									v-model="details.workDetail.otherSpecialWork"
-									readonly
-									type="textarea"
-							/>
-						</el-form-item>
-						<el-form-item label="期望开始时间">
-							<el-input
-									v-model="details.expStartTime"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="期望结束时间">
-							<el-input
-									v-model="details.expEndTime"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="申请时间">
-							<el-input
-									v-model="details.applyTime"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item label="当前状态">
-							<el-input
-									v-model="details.statusDesc"
-									readonly
-							/>
-						</el-form-item>
-						<el-form-item>
-							<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-						</el-form-item>
-					</el-form>
-				</el-dialog>
-				<el-dialog v-model="dialogStatus" title="作业申请进度">
-					<el-form v-if="approveInfo.operators.length>0" style="margin-bottom: 40px">
-						<el-form-item label="申请作业人">
-							<el-input
-									v-model="approveInfo.operators"
-									readonly
-									type="textarea"
-							/>
-						</el-form-item>
-					</el-form>
-					<div style="display: flex;flex-direction: column-reverse">
-						<div v-for="(item,index) in approveInfo.approvalSteps" class="stepItem">
-							<div class="stepNum">{{item.stepSerial}}</div>
-							<div class="stepCard">
-								<el-card class="box-card" shadow="always">
-									<div class="text">审批结果:<span>{{item.approvalResultDesc}}</span></div>
-									<div class="text">审批类型:<span>{{item.typeDesc}}</span></div>
-									<div class="text" v-show="item.startApprovalTime !=null">开始时间:<span>{{item.startApprovalTime}}</span></div>
-									<div class="approveUnit">
-										<div class="item-tit"><span>审批人</span><span>审批状态</span></div>
-										<div class="item-cont" v-for="i in item.stepUnits"><span>{{i.approvalUname}}</span><span>{{i.resultDesc}}</span></div>
-									</div>
-									<div class="approveItem">
-										<div class="item-tit"><span>审批项目</span><span>类型</span><div>措施标准</div></div>
-										<div class="item-cont" v-for="i in item.stepItems"><span>{{i.itemName}}</span><span>{{i.typeDesc}}</span>
-											<div v-if="i.measure !== null">
-												<div><span>作业类型:</span><span>{{i.measure.workTypeDesc}}</span></div>
-												<div><span>措施内容:</span><span>{{i.measure.context}}</span></div>
-											</div>
-											<div v-if="i.stand !== null">
-												<div><span>标题名称:</span><span>{{i.stand.title}}</span></div>
-												<div><span>标准内容:</span><span>{{i.stand.typeDesc}}</span></div>
-											</div>
-										</div>
-									</div>
-									<div class="text" v-show="item.expFinishApprovalTime !=null">期望结束时间:<span>{{item.expFinishApprovalTime}}</span></div>
-									<div class="text" v-show="item.finishApprovalTime !=null">结束时间:<span>{{item.finishApprovalTime}}</span></div>
-								</el-card>
-							</div>
-						</div>
-					</div>
-				</el-dialog>
-				<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-					<span>您确定要取消该条申请吗?</span>
-					<template #footer>
-                <span class="dialog-footer">
-                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
-                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-                </span>
-					</template>
-				</el-dialog>
-			</el-tab-pane>
-			<el-tab-pane label="已通过" name="2">
-				<div style="height: 100%">
-					<el-row class="homeCard">
-						<el-col :span="8">
-							<div class="grid-content topInfo">
-								<el-input v-model="searchWord" placeholder="作业证名称"></el-input>
-								<el-button type="primary">查询</el-button>
-								<el-button plain>重置</el-button>
-							</div>
-						</el-col>
-					</el-row>
-					<div class="homeCard">
-						<div class="main-card">
-							<el-table
-									ref="multipleTableRef"
-									:data="passedData"
-									style="width: 100%"
-									height="calc(100% - 48px)"
-									:header-cell-style="{background: '#fafafa'}"
-									@selection-change="handleSelectionChange"
-							>
-								<el-table-column type="selection" width="55" />
-								<el-table-column type="index" label="编号" width="200"/>
-								<el-table-column property="level" label="作业证等级" width="180" sortable />
-								<el-table-column property="applyDate" label="申请日期" sortable />
-								<el-table-column property="name" label="申请人" width="180"/>
-								<el-table-column property="department" label="申请部门" width="180" />
-								<el-table-column label="申请状态" width="180">
-									<template #default="scope">
-										<el-tag type="success">{{ scope.row.status }}</el-tag>
-									</template>
-								</el-table-column>
-							</el-table>
-							<div class="pageBtn">
-								<el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
-							</div>
-						</div>
-					</div>
-				</div>
-			</el-tab-pane>
-		</el-tabs>
-	</div>
+    <div class="home-container">
+        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+            <el-tab-pane label="申请中" name="1">
+                <div style="height: 100%">
+                    <el-row class="homeCard">
+                        <el-col :span="8">
+                            <div class="grid-content topInfo">
+                                <el-input v-model="searchWord" placeholder="作业证名称"></el-input>
+                                <el-button type="primary">查询</el-button>
+                                <el-button plain>重置</el-button>
+                            </div>
+                        </el-col>
+                    </el-row>
+                    <div class="homeCard">
+                        <div class="main-card">
+                            <el-row class="cardTop">
+                                <el-col :span="12" class="mainCardBtn">
+                                    <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
+                                    <!--									<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+                                    <!--									<el-button type="success" size="default">设置分类</el-button>-->
+                                </el-col>
+                                <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                            </el-row>
+                            <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
+                                <el-table-column property="workPermitNo" label="作业申请单号" width="180" />
+                                <el-table-column property="applyUname" label="申请人" />
+                                <el-table-column property="depName" label="部门名称" />
+                                <el-table-column property="operators" label="作业人" />
+                                <el-table-column property="workTypeDesc" label="作业类型" />
+                                <el-table-column property="workLevelDesc" label="作业等级" />
+                                <el-table-column property="applyTime" label="申请时间" width="180" />
+                                <el-table-column label="申请状态" width="180">
+                                    <template #default="scope">
+                                        <el-tag type="success">{{ scope.row.statusDesc }}</el-tag>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column fixed="right" label="操作" align="center" width="250">
+                                    <template #default="scope">
+                                        <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                        <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button>
+                                        <el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">取消</el-button>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                            <div class="pageBtn">
+                                <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <el-dialog v-model="dialogDetails" title="作业申请详情">
+                    <el-form :model="details" label-width="120px">
+                        <el-form-item label="作业申请单号">
+                            <el-input v-model="details.workPermitNo" readonly />
+                        </el-form-item>
+                        <el-form-item label="申请人">
+                            <el-input v-model="details.applyUname" readonly />
+                        </el-form-item>
+                        <el-form-item label="部门名称">
+                            <el-input v-model="details.depName" readonly />
+                        </el-form-item>
+                        <el-form-item label="作业人">
+                            <el-input v-model="details.operators" readonly type="textarea" />
+                        </el-form-item>
+                        <el-form-item label="作业类型">
+                            <el-input v-model="details.workTypeDesc" readonly />
+                        </el-form-item>
+                        <el-form-item label="作业等级">
+                            <el-input v-model="details.workLevelDesc" readonly />
+                        </el-form-item>
+                        <el-form-item label="作业内容">
+                            <el-input v-model="details.workContent" readonly type="textarea" />
+                        </el-form-item>
+                        <el-form-item label="作业地址">
+                            <el-input v-model="details.workLocation" readonly type="textarea" />
+                        </el-form-item>
+                        <el-form-item label="作业方式">
+                            <el-input v-model="details.workDetail.hotMethod" readonly type="textarea" />
+                        </el-form-item>
+                        <el-form-item label="关联其他作业">
+                            <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" />
+                        </el-form-item>
+                        <el-form-item label="期望开始时间">
+                            <el-input v-model="details.expStartTime" readonly />
+                        </el-form-item>
+                        <el-form-item label="期望结束时间">
+                            <el-input v-model="details.expEndTime" readonly />
+                        </el-form-item>
+                        <el-form-item label="申请时间">
+                            <el-input v-model="details.applyTime" readonly />
+                        </el-form-item>
+                        <el-form-item label="当前状态">
+                            <el-input v-model="details.statusDesc" readonly />
+                        </el-form-item>
+                        <el-form-item>
+                            <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-dialog>
+                <el-dialog v-model="dialogStatus" title="作业申请进度">
+                    <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px">
+                        <el-form-item label="申请作业人">
+                            <el-input v-model="approveInfo.operators" readonly type="textarea" />
+                        </el-form-item>
+                    </el-form>
+                    <div style="display: flex; flex-direction: column-reverse">
+                        <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem">
+                            <div class="stepNum">{{ item.stepSerial }}</div>
+                            <div class="stepCard">
+                                <el-card class="box-card" shadow="always">
+                                    <div class="text">
+                                        审批结果:<span>{{ item.approvalResultDesc }}</span>
+                                    </div>
+                                    <div class="text">
+                                        审批类型:<span>{{ item.typeDesc }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.startApprovalTime != null">
+                                        开始时间:<span>{{ item.startApprovalTime }}</span>
+                                    </div>
+                                    <div class="approveUnit">
+                                        <div class="item-tit"><span>审批人</span><span>审批状态</span></div>
+                                        <div class="item-cont" v-for="i in item.stepUnits">
+                                            <span>{{ i.approvalUname }}</span
+                                            ><span>{{ i.resultDesc }}</span>
+                                        </div>
+                                    </div>
+                                    <div class="approveItem">
+                                        <div class="item-tit">
+                                            <span>审批项目</span><span>类型</span>
+                                            <div>措施标准</div>
+                                        </div>
+                                        <div class="item-cont" v-for="i in item.stepItems">
+                                            <span>{{ i.itemName }}</span
+                                            ><span>{{ i.typeDesc }}</span>
+                                            <div v-if="i.measure !== null">
+                                                <div>
+                                                    <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>措施内容:</span><span>{{ i.measure.context }}</span>
+                                                </div>
+                                            </div>
+                                            <div v-if="i.stand !== null">
+                                                <div>
+                                                    <span>标题名称:</span><span>{{ i.stand.title }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="text" v-show="item.expFinishApprovalTime != null">
+                                        期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.finishApprovalTime != null">
+                                        结束时间:<span>{{ item.finishApprovalTime }}</span>
+                                    </div>
+                                </el-card>
+                            </div>
+                        </div>
+                    </div>
+                </el-dialog>
+                <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+                    <span>您确定要取消该条申请吗?</span>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                            <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                        </span>
+                    </template>
+                </el-dialog>
+            </el-tab-pane>
+            <el-tab-pane label="已通过" name="2">
+                <div style="height: 100%">
+                    <el-row class="homeCard">
+                        <el-col :span="8">
+                            <div class="grid-content topInfo">
+                                <el-input v-model="searchWord" placeholder="作业证名称"></el-input>
+                                <el-button type="primary">查询</el-button>
+                                <el-button plain>重置</el-button>
+                            </div>
+                        </el-col>
+                    </el-row>
+                    <div class="homeCard">
+                        <div class="main-card">
+                            <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                                <el-table-column type="selection" width="55" />
+                                <el-table-column type="index" label="编号" width="200" />
+                                <el-table-column property="level" label="作业证等级" width="180" sortable />
+                                <el-table-column property="applyDate" label="申请日期" sortable />
+                                <el-table-column property="name" label="申请人" width="180" />
+                                <el-table-column property="department" label="申请部门" width="180" />
+                                <el-table-column label="申请状态" width="180">
+                                    <template #default="scope">
+                                        <el-tag type="success">{{ scope.row.status }}</el-tag>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                            <div class="pageBtn">
+                                <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </el-tab-pane>
+        </el-tabs>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import { useUserInfo } from '/@/stores/userInfo';
-	import { Session } from '/@/utils/storage';
-	import { useRouter } from 'vue-router';
-	import { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue';
-	import { ElTable } from 'element-plus';
-	import { FormInstance, FormRules, ElMessage } from 'element-plus';
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-	import type { TabsPaneContext } from 'element-plus'
+import { toRefs, reactive, defineComponent, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { useRouter } from 'vue-router';
+import { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+import type { TabsPaneContext } from 'element-plus';
 
-	// 定义接口来定义对象的类型
-	interface stateType {
-		applyData: Array<string>;
-		workTimeList: Array<string>;
-		multipleSelection: Array<any>;
-		deleteArr: Array<any>;
-		approveInfo: Object;
-		dialogDetails: boolean;
-		dialogStatus: boolean;
-		deleteDialog: boolean;
-		pageIndex1: number;
-		pageSize1: number;
-		chosenIndex: null | number;
-		deleteId: null | number;
-		searchWord: string;
-		totalSize1: number;
-		activeName:string;
-		addRecord: {};
-		details: {};
-		statusInfo:{}
-	}
+// 定义接口来定义对象的类型
+interface stateType {
+    applyData: Array<string>;
+    workTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    approveInfo: Object;
+    dialogDetails: boolean;
+    dialogStatus: boolean;
+    deleteDialog: boolean;
+    pageIndex1: number;
+    pageSize1: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize1: number;
+    activeName: string;
+    addRecord: {};
+    details: {};
+    statusInfo: {};
+    workType: Array<type>;
+}
+interface type {
+    id: number;
+    name: string;
+}
 
-	export default defineComponent({
-		name: 'myApply',
-		components: {},
-		setup() {
-			const userInfo = useUserInfo();
-			const { userInfos } = storeToRefs(userInfo);
-			const router = useRouter();
-			const state = reactive<stateType>({
-				pageIndex1: 1,
-				pageSize1: 10,
-				totalSize1: 0,
-				activeName: '1',
-				chosenIndex: null,
-				searchWord: '',
-				applyData: [],
-				workTimeList: [],
-				multipleSelection: [],
-				approveInfo: {
-					approvalSteps:[],
-					operators: []
-				},
-				dialogDetails: false,
-				dialogStatus: false,
-				deleteDialog: false,
-				addRecord: {},
-				details: {},
-				statusInfo:{},
-				deleteId: null,
-				deleteArr: []
-			});
-			interface User {
-				name: string;
-				list: [];
-				info: string;
-			}
+export default defineComponent({
+    name: 'myApply',
+    components: {},
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+        const router = useRouter();
+        const state = reactive<stateType>({
+            pageIndex1: 1,
+            pageSize1: 10,
+            totalSize1: 0,
+            activeName: '1',
+            chosenIndex: null,
+            searchWord: '',
+            applyData: [],
+            workTimeList: [],
+            multipleSelection: [],
+            approveInfo: {
+                approvalSteps: [],
+                operators: []
+            },
+            dialogDetails: false,
+            dialogStatus: false,
+            deleteDialog: false,
+            addRecord: {},
+            details: {},
+            statusInfo: {},
+            deleteId: null,
+            deleteArr: [],
+            workType: [
+                { id: 1, name: '动火作业' },
+                { id: 2, name: '受限空间作业' },
+                { id: 3, name: '吊装作业' },
+                { id: 4, name: '动土作业' },
+                { id: 5, name: '断路作业' },
+                { id: 6, name: '高处作业' },
+                { id: 7, name: '临时用电作业' },
+                { id: 8, name: '盲板抽堵作业' }
+            ]
+        });
+        interface User {
+            name: string;
+            list: [];
+            info: string;
+        }
 
-			// 刷新
-			const reLoadData = async () => {
-				getListByPage();
-			};
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
 
-			// 填写表单
-			const toApply =()=>{
-				router.push({
-					path: 'workTicket',
-				});
-			}
+        // 填写表单
+        const toApply = () => {
+            router.push({
+                path: 'workTicket'
+            });
+        };
 
-			const handleClick = (tab: TabsPaneContext, event: Event) => {
-				console.log(tab, event)
-			}
+        const handleClick = (tab: TabsPaneContext, event: Event) => {
+            console.log(tab, event);
+        };
 
-			// 分页获取工作时间组列表
-			const getListByPage = async () => {
-				const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { name: state.searchWord } };
-				let res = await workApplyApi().getApplyListtPage(data);
-				if (res.data.code === '200') {
-					state.applyData = JSON.parse(JSON.stringify(res.data.data))
-					state.applyData = state.applyData.map((item) => {
-						if (item.operators == null || item.operators == []){
-							item.operators = [];
-						} else {
-							item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);
-						}
-						return item;
-					});
-					state.totalSize1 = res.data.total
-					console.log('0212121')
-				} else {
-					ElMessage({
-						type: 'warning',
-						message: res.data.msg
-					});
-				}
-			};
+        // 分页获取工作时间组列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { name: state.searchWord } };
+            let res = await workApplyApi().getApplyListtPage(data);
+            if (res.data.code === '200') {
+                state.applyData = JSON.parse(JSON.stringify(res.data.data));
+                state.applyData = state.applyData.map((item) => {
+                    if (item.operators == null || item.operators == []) {
+                        item.operators = [];
+                    } else {
+                        item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);
+                    }
+                    return item;
+                });
+                state.totalSize1 = res.data.total;
+                console.log('0212121');
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-			// 表格数据格式化
-			const toNames = (row, column, cellValue, index) => {
-				if (row.list == []) {
-					return [];
-				} else {
-					const nameList = [];
-					for (let i = 0; i < row.list.length; i++) {
-						for (let t = 0; t < state.workTimeList.length; t++) {
-							if (row.list[i] == state.workTimeList[t].id) {
-								nameList.push(state.workTimeList[t].name);
-							}
-						}
-					}
-					return nameList.join();
-				}
-			};
+        // 表格数据格式化
+        const toNames = (row, column, cellValue, index) => {
+            if (row.list == []) {
+                return [];
+            } else {
+                const nameList = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.workTimeList.length; t++) {
+                        if (row.list[i] == state.workTimeList[t].id) {
+                            nameList.push(state.workTimeList[t].name);
+                        }
+                    }
+                }
+                return nameList.join();
+            }
+        };
 
-			// 关键词查询记录
-			const searchRecord = async () => {
-				if (state.searchWord == '') {
-					ElMessage({
-						type: 'warning',
-						message: '请输入查询关键词'
-					});
-				} else {
-					getListByPage();
-				}
-			};
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
 
-			const clearSearch = async () => {
-				state.searchWord = '';
-				getListByPage();
-			};
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
 
-			// 查看进度
-			const viewStatus = (row)=>{
-				getStatus({ workApplyId: row.workApplyId });
-				state.dialogStatus = true
-			};
+        // 查看进度
+        const viewStatus = (row) => {
+            getStatus({ workApplyId: row.workApplyId });
+            state.dialogStatus = true;
+        };
 
-			// 查询进度方法
-			const getStatus = async (data: any) => {
-				let res = await workApplyApi().getStatus(data);
-				if (res.data.code === '200') {
-					state.approveInfo = JSON.parse(JSON.stringify(res.data.data))
-					state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname);
-					console.log(state.approveInfo,'steps')
-				} else {
-					ElMessage({
-						type: 'warning',
-						message: res.data.msg
-					});
-				}
-			};
+        // 查询进度方法
+        const getStatus = async (data: any) => {
+            let res = await workApplyApi().getStatus(data);
+            if (res.data.code === '200') {
+                state.approveInfo = JSON.parse(JSON.stringify(res.data.data));
+                state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname);
+                console.log(state.approveInfo, 'steps');
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-			const deleteRecordBtn = (row) => {
-				state.deleteId = row.workApplyId;
-				state.deleteDialog = true;
-			};
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.workApplyId;
+            state.deleteDialog = true;
+        };
 
-			// 取消申请方法
-			const deleteRecord = async (data: any) => {
-				let res = await workApplyApi().cancelApply(data);
-				if (res.data.code === '200') {
-					ElMessage({
-						type: 'success',
-						message: res.data.msg
-					});
-					getListByPage();
-				} else {
-					ElMessage({
-						type: 'warning',
-						message: res.data.msg
-					});
-				}
-			};
+        // 取消申请方法
+        const deleteRecord = async (data: any) => {
+            let res = await workApplyApi().cancelApply(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-			const conFirmDelete = () => {
-				deleteRecord({ workApplyId: state.deleteId });
-				state.deleteDialog = false;
-			};
+        const conFirmDelete = () => {
+            deleteRecord({ workApplyId: state.deleteId });
+            state.deleteDialog = false;
+        };
 
-			const handleSizeChange1 = (val: number) => {
-				state.pageSize1 = val;
-				getListByPage();
-			};
-			const handleCurrentChange1 = (val: number) => {
-				state.pageIndex1 = val;
-				getListByPage();
-			};
+        const handleSizeChange1 = (val: number) => {
+            state.pageSize1 = val;
+            getListByPage();
+        };
+        const handleCurrentChange1 = (val: number) => {
+            state.pageIndex1 = val;
+            getListByPage();
+        };
 
-			// 查看记录
-			const viewRecord = (row) => {
-				state.details = JSON.parse(JSON.stringify(row));
-				state.details.workDetail.otherSpecialWork = state.details.workDetail.otherSpecialWork.split(',')
-				if(state.details.workDetail.otherSpecialWork == null || state.details.workDetail.otherSpecialWork == []){state.details.workDetail.otherSpecialWork = []}
-				else{
-					state.details.workDetail.otherSpecialWork.map(item =>{
-						console.log(item,'item')
-						if(item == '1'){
-							item = '动火作业'
-							return item
-						} else if(item == '2'){
-							item = '受限空间作业'
-							return item
-						} else if(item == '3'){
-							item = '吊装作业'
-							return item
-						} else if(item == '4'){
-							item = '动土作业'
-							return item
-						} else if(item == '5'){
-							item = '断路作业'
-							return item
-						} else if(item == '6'){
-							item = '高处作业'
-							return item
-						} else if(item == '7'){
-							item = '临时用电作业'
-							return item
-						} else {
-							item = '盲板抽堵作业'
-							return item
-						}
-					})
-				}
-				console.log(state.details.workDetail.otherSpecialWork,'666666')
-				state.dialogDetails = true;
-			};
+        // 查看记录
+        const viewRecord = (row: any) => {
+            row.workDetail.otherSpecialWork = JSON.parse(JSON.stringify(row.workDetail.otherSpecialWork.split(','))).map((item: Array<string>) => {
+                return state.workType.find((i: { id: number }) => i.id === Number(item))?.name;
+            });
+            state.details = JSON.parse(JSON.stringify(row));
+            // state.details.workDetail.otherSpecialWork = state.details.workDetail.otherSpecialWork.split(',');
+            // if (state.details.workDetail.otherSpecialWork == null || state.details.workDetail.otherSpecialWork == []) {
+            //     state.details.workDetail.otherSpecialWork = [];
+            // } else {
+            //     state.details.workDetail.otherSpecialWork.map((item) => {
+            //         console.log(item, 'item');
+            //         if (item == '1') {
+            //             item = '动火作业';
+            //             return item;
+            //         } else if (item == '2') {
+            //             item = '受限空间作业';
+            //             return item;
+            //         } else if (item == '3') {
+            //             item = '吊装作业';
+            //             return item;
+            //         } else if (item == '4') {
+            //             item = '动土作业';
+            //             return item;
+            //         } else if (item == '5') {
+            //             item = '断路作业';
+            //             return item;
+            //         } else if (item == '6') {
+            //             item = '高处作业';
+            //             return item;
+            //         } else if (item == '7') {
+            //             item = '临时用电作业';
+            //             return item;
+            //         } else {
+            //             item = '盲板抽堵作业';
+            //             return item;
+            //         }
+            //     });
+            // }
+            // console.log(state.details.workDetail.otherSpecialWork, '666666');
+            state.dialogDetails = true;
+        };
 
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
 
-			// 折线图
-			const renderMenu = async (value: string) => {
-				Session.set('projectId', value);
-				userInfos.value.projectId = value;
-				await initBackEndControlRoutes();
-			};
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+        });
 
-			// 页面载入时执行方法
-			onMounted(() => {
-				getListByPage();
-			});
-
-			return {
-				View,
-				Edit,
-				Delete,
-				Refresh,
-				Plus,
-				Finished,
-				reLoadData,
-				toApply,
-				handleClick,
-				toNames,
-				searchRecord,
-				clearSearch,
-				viewRecord,
-				viewStatus,
-				deleteRecordBtn,
-				conFirmDelete,
-				getListByPage,
-				handleSizeChange1,
-				handleCurrentChange1,
-				...toRefs(state)
-			};
-		}
-	});
+        return {
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            Finished,
+            reLoadData,
+            toApply,
+            handleClick,
+            toNames,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            viewStatus,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            handleSizeChange1,
+            handleCurrentChange1,
+            ...toRefs(state)
+        };
+    }
+});
 </script>
 
 <style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 144px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.demo-tabs{
-			width: 100%;
-			height: 100%;
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 144px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .demo-tabs {
+        width: 100%;
+        height: 100%;
 
-			&::v-deep(.el-tabs__content){
-				height: calc(100% - 60px);
-			}
+        &::v-deep(.el-tabs__content) {
+            height: calc(100% - 60px);
+        }
 
-			.el-tab-pane{
-				height: 100%;
-			}
-		}
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
+        .el-tab-pane {
+            height: 100%;
+        }
+    }
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
 
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
 
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.stepItem{
-			display: flex;
-			align-items: flex-start;
-			margin-top: 30px;
-			margin-left: 30px;
-			padding-bottom: 30px;
-			padding-left: 40px;
-			border-left: 1px solid #a0cfff;
-			position: relative;
-			&:first-of-type{
-				margin-top: 30px;
-			}
-			&:first-of-type{
-				margin-bottom: 0;
-				border-left: none;
-			}
-			.stepNum {
-				position: absolute;
-				width: 40px;
-				height: 40px;
-				border-radius: 20px;
-				box-sizing: border-box;
-				font-size: 18px;
-				color: #333;
-				border: 1px solid #a0cfff;
-				line-height: 38px;
-				text-align: center;
-				left: -20px;
-				top: -30px;
-				background: #d9ecff;
-			}
-			.stepCard {
-				width: 100%;
-				margin-top: -30px;
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .stepItem {
+        display: flex;
+        align-items: flex-start;
+        margin-top: 30px;
+        margin-left: 30px;
+        padding-bottom: 30px;
+        padding-left: 40px;
+        border-left: 1px solid #a0cfff;
+        position: relative;
+        &:first-of-type {
+            margin-top: 30px;
+        }
+        &:first-of-type {
+            margin-bottom: 0;
+            border-left: none;
+        }
+        .stepNum {
+            position: absolute;
+            width: 40px;
+            height: 40px;
+            border-radius: 20px;
+            box-sizing: border-box;
+            font-size: 18px;
+            color: #333;
+            border: 1px solid #a0cfff;
+            line-height: 38px;
+            text-align: center;
+            left: -20px;
+            top: -30px;
+            background: #d9ecff;
+        }
+        .stepCard {
+            width: 100%;
+            margin-top: -30px;
 
-				.box-card {
-					width: 100%;
+            .box-card {
+                width: 100%;
 
-					.card-header {
-						display: flex;
-						justify-content: space-between;
-						align-items: center;
+                .card-header {
+                    display: flex;
+                    justify-content: space-between;
+                    align-items: center;
 
-						span{
-							font-weight: bold;
-							margin-left: 10px;
-						}
-					}
+                    span {
+                        font-weight: bold;
+                        margin-left: 10px;
+                    }
+                }
 
-					.text {
-						width: 100%;
-						font-size: 14px;
-						margin-bottom: 10px;
-						padding-left: 10px;
+                .text {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 10px;
+                    padding-left: 10px;
 
-						span{
-							font-weight: bolder;
-							color: #409EFF;
-						}
+                    span {
+                        font-weight: bolder;
+                        color: #409eff;
+                    }
 
-						&:last-of-type{
-							margin-bottom: 0;
-						}
-					}
-					.approveUnit{
-						width: 100%;
-						font-size: 14px;
-						margin-bottom: 20px;
-						padding: 10px 15px;
-						border: 1px solid #fff;
-						background: #ECF8FF;
-						border-radius: 6px;
-						.item-tit{
-							width: 100%;
-							display: flex;
-							color: #409EFF;
-							align-items: flex-start;
-							justify-content: space-between;
-							padding-bottom: 10px;
-							border-bottom: 1px solid #a0cfff;
+                    &:last-of-type {
+                        margin-bottom: 0;
+                    }
+                }
+                .approveUnit {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    border: 1px solid #fff;
+                    background: #ecf8ff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
 
-							&>span{
-								flex: 1;
-							}
-							&>div{
-								flex: 2;
-								text-align: center;
-							}
-						}
-						.item-cont{
-							width: 100%;
-							display: flex;
-							align-items: center;
-							justify-content: space-between;
-							padding: 10px 0;
-							border-bottom: 1px solid  #c6e2ff;
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
 
-							&>span{
-								flex: 1;
-							}
-							&>div{
-								flex: 2;
-								text-align: center;
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
 
-								&>div{
-									text-align: left;
-									width: 100%;
-									display: flex;
-									justify-content: center;
-									align-items: center;
-									span{
-										width: 45%;
-										&:first-of-type{
-											width: 30%;
-										}
-									}
-								}
-							}
-							&:last-of-type{
-								border-bottom: 0;
-							}
-						}
-					}
-					.approveItem{
-						width: 100%;
-						font-size: 14px;
-						margin-bottom: 20px;
-						padding: 10px 15px;
-						background: #ECF8FF;
-						border: 1px solid #fff;
-						border-radius: 6px;
-						.item-tit{
-							width: 100%;
-							display: flex;
-							color: #409EFF;
-							align-items: flex-start;
-							justify-content: space-between;
-							padding-bottom: 10px;
-							border-bottom: 1px solid #a0cfff;
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: center;
+                                span {
+                                    width: 45%;
+                                    &:first-of-type {
+                                        width: 30%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+                .approveItem {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    background: #ecf8ff;
+                    border: 1px solid #fff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
 
-							&>span{
-								flex: 1;
-							}
-							&>div{
-								flex: 2;
-								text-align: center;
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
 
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
 
-							}
-						}
-						.item-cont{
-							width: 100%;
-							display: flex;
-							align-items: center;
-							justify-content: space-between;
-							padding: 10px 0;
-							border-bottom: 1px solid  #c6e2ff;
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: center;
+                                span {
+                                    width: 45%;
+                                    &:first-of-type {
+                                        width: 30%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+            }
+        }
+        &:hover .card-header {
+            color: #0098f5;
+        }
+        &:hover .stepNum {
+            border: 2px solid #0098f5;
+            color: #0098f5;
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
 
-							&>span{
-								flex: 1;
-							}
-							&>div{
-								flex: 2;
-								text-align: center;
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
 
-								&>div{
-									text-align: left;
-									width: 100%;
-									display: flex;
-									justify-content: center;
-									align-items: center;
-									span{
-										width: 45%;
-										&:first-of-type{
-											width: 30%;
-										}
-									}
-								}
-							}
-							&:last-of-type{
-								border-bottom: 0;
-							}
-						}
-					}
-				}
-			}
-			&:hover .card-header{
-				color: #0098F5;
-			}
-			&:hover .stepNum{
-				border: 2px solid #0098F5;
-				color: #0098F5;
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
-
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
-
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-		.el-card{
-			border: 0;
-		}
-	}
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+    .el-card {
+        border: 0;
+    }
+}
 </style>
diff --git a/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue b/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue
index 7d162b9..88aab2a 100644
--- a/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue
+++ b/src/views/specialWorkSystem/workApplyManage/workTicket/index.vue
@@ -1,317 +1,279 @@
 <template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-form :model="form" label-width="120px" :rules="applyRules" ref="ruleFormRef">
-			<div class="homeCard">
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="作业人" prop="operatorUids">
-						<el-select v-model="form.operatorUids" multiple>
-							<el-option
-									v-for="item in workerList"
-									:key="item.value"
-									:label="item.label"
-									:value="item.value"
-							/>
-						</el-select>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="作业等级" prop="workLevel">
-						<el-select v-model="form.workLevel">
-							<el-option
-									v-for="item in workLevelList"
-									:key="item.value"
-									:label="item.label"
-									:value="item.value"
-							/>
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="作业时间" prop="workTimeLine">
-						<el-date-picker
-								v-model="form.workTimeLine"
-								format="YYYY-MM-DD HH:mm"
-								value-format="YYYY-MM-DD HH:mm:00"
-								type="datetimerange"
-								range-separator="至"
-								start-placeholder="开始时间"
-								end-placeholder="结束时间"
-						/>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="作业内容" prop="workContent">
-						<el-input
-								v-model="form.workContent"
-								autosize
-								type="textarea"
-								placeholder="请输入作业内容"
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="作业地址" prop="workLocation">
-						<el-input
-								v-model="form.workLocation"
-								autosize
-								type="textarea"
-								placeholder="请输入作业地址"
-						/>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="动火方式" prop="workDetail.hotMethod">
-						<el-input
-								v-model="form.workDetail.hotMethod"
-								autosize
-								type="textarea"
-								placeholder="请输入动火方式"
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
-						<el-select v-model="form.workDetail.otherSpecialWork" multiple>
-							<el-option
-									v-for="item in otherWorkList"
-									:key="item.value"
-									:label="item.label"
-									:value="item.value"
-							/>
-						</el-select>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			</div>
-		</el-form>
-		<div class="applyBtn">
-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
-		</div>
-	</div>
-	</div>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-form :model="form" label-width="120px" :rules="applyRules" ref="ruleFormRef">
+                <div class="homeCard">
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="作业人" prop="operatorUids">
+                                <el-select v-model="form.operatorUids" multiple>
+                                    <el-option v-for="item in workerList" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="作业等级" prop="workLevel">
+                                <el-select v-model="form.workLevel">
+                                    <el-option v-for="item in workLevelList" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="作业时间" prop="workTimeLine">
+                                <el-date-picker v-model="form.workTimeLine" format="YYYY-MM-DD HH:mm" value-format="YYYY-MM-DD HH:mm:00" type="datetimerange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="作业内容" prop="workContent">
+                                <el-input v-model="form.workContent" autosize type="textarea" placeholder="请输入作业内容" />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="作业地址" prop="workLocation">
+                                <el-input v-model="form.workLocation" autosize type="textarea" placeholder="请输入作业地址" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="动火方式" prop="workDetail.hotMethod">
+                                <el-input v-model="form.workDetail.hotMethod" autosize type="textarea" placeholder="请输入动火方式" />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+                                <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+                                    <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </div>
+            </el-form>
+            <div class="applyBtn">
+                <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+            </div>
+        </div>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Search } from '@element-plus/icons-vue';
+import { ElMessage } from 'element-plus';
+import type { FormInstance, FormRules } from 'element-plus';
+import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
 
+interface stateType {
+    form: Object;
+    workerList: Array<any>;
+    workTypeList: Array<any>;
+    workLevelList: Array<any>;
+    otherWorkList: Array<any>;
+}
+export default defineComponent({
+    name: 'workTicket',
+    components: {},
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+        const state = reactive<stateType>({
+            form: {
+                operatorUids: [],
+                workType: 1,
+                workLevel: null,
+                workContent: '',
+                workLocation: '',
+                workDetail: {
+                    hotMethod: '',
+                    otherSpecialWork: []
+                },
+                workTimeLine: [],
+                expStartTime: '',
+                expEndTime: ''
+            },
+            workerList: [
+                {
+                    label: '张三',
+                    value: 53
+                },
+                {
+                    label: '李四',
+                    value: 54
+                },
+                {
+                    label: '测试一',
+                    value: 55
+                },
+                {
+                    label: '测试二',
+                    value: 56
+                }
+            ],
+            workTypeList: [
+                {
+                    label: '类型一',
+                    value: 1
+                },
+                {
+                    label: '类型二',
+                    value: 2
+                }
+            ],
+            workLevelList: [
+                {
+                    label: '一级动火作业',
+                    value: 1
+                },
+                {
+                    label: '二级动火作业',
+                    value: 2
+                },
+                {
+                    label: '特级动火作业',
+                    value: 3
+                }
+            ],
+            otherWorkList: [
+                {
+                    label: '动火作业',
+                    value: 1
+                },
+                {
+                    label: '受限空间作业',
+                    value: 2
+                },
+                {
+                    label: '吊装作业',
+                    value: 3
+                },
+                {
+                    label: '动土作业',
+                    value: 4
+                },
+                {
+                    label: '断路作业',
+                    value: 5
+                },
+                {
+                    label: '高处作业',
+                    value: 6
+                },
+                {
+                    label: '临时用电作业',
+                    value: 7
+                },
+                {
+                    label: '盲板抽堵作业',
+                    value: 8
+                }
+            ]
+        });
+        const ruleFormRef = ref<FormInstance>();
+        const applyRules = reactive<FormRules>({
+            operatorUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            'workDetail.hotMethod': [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            'workDetail.otherSpecialWork': [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
+        const submitForm = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0];
+                    state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1];
+                    let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form));
+                    data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',');
+                    console.log(data, 'data');
+                    const res = await workApplyApi().postFireApply(data);
+                    if (res.data.code === '200') {
+                        ElMessage({
+                            type: 'success',
+                            message: '提交成功!'
+                        });
+                        formEl.resetFields();
+                    } else {
+                        ElMessage({
+                            type: 'warning',
+                            message: res.data.msg
+                        });
+                    }
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
 
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'workTicket',
-		components: {},
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			const state  = reactive<stateType>({
-				form: {
-					operatorUids: [],
-					workType: 1,
-					workLevel: null,
-					workContent: '',
-					workLocation: '',
-					workDetail:{
-						hotMethod: '',
-						otherSpecialWork: []
-					},
-					workTimeLine: [],
-					expStartTime: '',
-					expEndTime: ''
-				},
-				workerList:[
-					{
-						label: "张三",
-						value: 53
-					},
-					{
-						label: "李四",
-						value: 54
-					},
-					{
-						label: "测试一",
-						value: 55
-					},
-					{
-						label: "测试二",
-						value: 56
-					}
-				],
-				workTypeList: [
-					{
-						label: "类型一",
-						value: 1
-					},
-					{
-						label: "类型二",
-						value: 2
-					}
-				],
-				workLevelList: [
-					{
-						label: "一级动火作业",
-						value: 1
-					},
-					{
-						label: "二级动火作业",
-						value: 2
-					},
-					{
-						label: "特级动火作业",
-						value: 3
-					}
-				],
-				otherWorkList: [
-					{
-						label: "动火作业",
-						value: 1
-					},
-					{
-						label: "受限空间作业",
-						value: 2
-					},
-					{
-						label: "吊装作业",
-						value: 3
-					},
-					{
-						label: "动土作业",
-						value: 4
-					},
-					{
-						label: "断路作业",
-						value: 5
-					},
-					{
-						label: "高处作业",
-						value: 6
-					},
-					{
-						label: "临时用电作业",
-						value: 7
-					},
-					{
-						label: "盲板抽堵作业",
-						value: 8
-					}
-				]
-			});
-			const ruleFormRef = ref<FormInstance>()
-			const applyRules = reactive<FormRules>({
-				operatorUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				"workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				"workDetail.otherSpecialWork": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
-			});
-			const submitForm = async (formEl: FormInstance | undefined) => {
-				if (!formEl) return
-				await formEl.validate(async (valid, fields) => {
-					if (valid) {
-						state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
-						state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
-						let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
-						data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
-						console.log(data,'data')
-						const res = await workApplyApi().postFireApply(data)
-						if (res.data.code === '200') {
-								ElMessage({
-									type: 'success',
-									message: '提交成功!'
-								});
-								formEl.resetFields()
-						} else {
-							ElMessage({
-								type: 'warning',
-								message: res.data.msg
-							});
-						}
-					} else {
-						console.log('error submit!', fields)
-					}
-				})
-			}
-			// 折线图
-			const renderMenu = async (value: string) => {
-				Session.set('projectId',value)
-				userInfos.value.projectId = value
-				await initBackEndControlRoutes();
-			};
-			return {
-				renderMenu,
-				Search,
-				ruleFormRef,
-				applyRules,
-				submitForm,
-				...toRefs(state),
-			};
-		},
-	});
+        return {
+            renderMenu,
+            Search,
+            ruleFormRef,
+            applyRules,
+            submitForm,
+            ...toRefs(state)
+        };
+    }
+});
 </script>
 
 <style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
-			margin-bottom: 20px;
-		}
-		.applyBtn{
-			width: 100%;
-			background: #fff;
-			height: 80px;
-			z-index: 5;
-			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
-			display: flex;
-			align-items: center;
-			justify-content: center;
-		}
-		.el-row{
-			margin-bottom: 20px;
-		}
-		.el-row:last-child {
-			margin-bottom: 0;
-		}
-		.el-input{
-			width: 100% !important;
-		}
-		.el-date-editor::v-deep{
-			width: 100%;
-		}
-		.el-select{
-			width: 100%;
-		}
-		.el-cascader{
-			width: 100% !important;
-		}
-	}
+.home-container {
+    height: 100%;
+    overflow: hidden;
+    position: relative;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+        margin-bottom: 20px;
+    }
+    .applyBtn {
+        width: 100%;
+        background: #fff;
+        height: 80px;
+        z-index: 5;
+        box-shadow: 0 -3px 8px rgba(150, 150, 150, 0.1);
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+    .el-row {
+        margin-bottom: 20px;
+    }
+    .el-row:last-child {
+        margin-bottom: 0;
+    }
+    .el-input {
+        width: 100% !important;
+    }
+    .el-date-editor::v-deep {
+        width: 100%;
+    }
+    .el-select {
+        width: 100%;
+    }
+    .el-cascader {
+        width: 100% !important;
+    }
+}
 </style>
diff --git a/src/views/specialWorkSystem/workFlow/approveBasic/index.vue b/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
index 8720d1f..d6fda36 100644
--- a/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
+++ b/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
@@ -22,7 +22,7 @@
                     <el-row class="cardTop">
                         <el-col :span="12" class="mainCardBtn">
                             <el-button type="primary" :icon="Plus" size="default" @click="openApproveBasicDialog('新增', {})">新建</el-button>
-                            <!--                            <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreApproveBasic" plain>批量删除</el-button>
                         </el-col>
                         <el-button type="primary" :icon="Refresh" size="default" />
                     </el-row>
@@ -199,6 +199,33 @@
                 type: 'warning'
             })
                 .then(async () => {
+                    let res = await approveBasicApi().deleteApproveBasic({ ids: [row.ruleStandId] });
+                    if (res.data.code === '200') {
+                        state.deleteList.ids = [];
+                        ElMessage({
+                            type: 'success',
+                            duration: 2000,
+                            message: '删除成功'
+                        });
+                        await getInspectionTask();
+                    } else {
+                        ElMessage({
+                            type: 'warning',
+                            message: res.data.msg
+                        });
+                    }
+                })
+                .catch(() => {});
+        };
+
+        // 批量删除
+        const deleteMoreApproveBasic = (row: any) => {
+            ElMessageBox.confirm(`此操作将永久删除这些标准项,是否继续?`, '提示', {
+                confirmButtonText: '确认',
+                cancelButtonText: '取消',
+                type: 'warning'
+            })
+                .then(async () => {
                     let res = await approveBasicApi().deleteApproveBasic(state.deleteList);
                     if (res.data.code === '200') {
                         ElMessage({
@@ -274,6 +301,7 @@
             parseNumber,
             handleSelectionChange,
             deleteApproveBasic,
+            deleteMoreApproveBasic,
             getInspectionTask,
             onHandleSizeChange,
             onHandleCurrentChange,
diff --git a/src/views/specialWorkSystem/workFlow/approveRule/index.vue b/src/views/specialWorkSystem/workFlow/approveRule/index.vue
index 0893fd7..50ed8ff 100644
--- a/src/views/specialWorkSystem/workFlow/approveRule/index.vue
+++ b/src/views/specialWorkSystem/workFlow/approveRule/index.vue
@@ -4,9 +4,7 @@
             <el-row class="homeCard">
                 <div class="basic-line">
                     <span>规则名称:</span>
-                    <el-select v-model="tableData.params.searchParams.ruleName" clearable filterable class="input-box" placeholder="任务类型">
-                        <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                    </el-select>
+                    <el-input v-model="tableData.params.searchParams.ruleName" class="input-box" placeholder="规则名称"> </el-input>
                 </div>
                 <div class="basic-line">
                     <span>部门:</span>
@@ -34,7 +32,7 @@
                     <el-row class="cardTop">
                         <el-col :span="12" class="mainCardBtn">
                             <el-button type="primary" :icon="Plus" size="default" @click="openApproveRuleDialog('新增', {})">新建</el-button>
-                            <!--                            <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" @click="deleteApproveRule" plain>批量删除</el-button>
                         </el-col>
                         <el-button type="primary" :icon="Refresh" size="default" />
                     </el-row>
@@ -63,7 +61,6 @@
                             <template #default="scope">
                                 <el-button link type="primary" size="small" :icon="View" @click="openApproveRuleDialog('查看', scope.row)">查看</el-button>
                                 <el-button link type="primary" size="small" :icon="Edit" @click="openApproveRuleDialog('修改', scope.row)">修改</el-button>
-                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteApproveRule(scope.row)">删除</el-button>
                             </template>
                         </el-table-column>
                     </el-table>
@@ -217,7 +214,34 @@
 
         // 删除
         const deleteApproveRule = (row: any) => {
-            ElMessageBox.confirm(`此操作将永久删除该任务:“${row.unitName}”,是否继续?`, '提示', {
+            ElMessageBox.confirm(`此操作将永久删除该审批规则,是否继续?`, '提示', {
+                confirmButtonText: '确认',
+                cancelButtonText: '取消',
+                type: 'warning'
+            })
+                .then(async () => {
+                    let res = await approveRuleApi().deleteApproveRule({ ids: [row.id] });
+                    state.deleteList.ids = [];
+                    if (res.data.code === '200') {
+                        ElMessage({
+                            type: 'success',
+                            duration: 2000,
+                            message: '删除成功'
+                        });
+                        await getApproveRule();
+                    } else {
+                        ElMessage({
+                            type: 'warning',
+                            message: res.data.msg
+                        });
+                    }
+                })
+                .catch(() => {});
+        };
+
+        // 批量删除
+        const deleteMoreApproveRule = (row: any) => {
+            ElMessageBox.confirm(`此操作将永久删除这些审批规则,是否继续?`, '提示', {
                 confirmButtonText: '确认',
                 cancelButtonText: '取消',
                 type: 'warning'
@@ -301,6 +325,7 @@
             parseNumber,
             deleteApproveRule,
             getApproveRule,
+            deleteMoreApproveRule,
             handleSelectionChange,
             onHandleSizeChange,
             onHandleCurrentChange,
@@ -437,15 +462,6 @@
         border: 2px solid #0098f5;
         color: #0098f5;
     }
-}
-.el-input {
-    width: 100% !important;
-}
-:deep(.el-date-editor) {
-    width: 100%;
-}
-.el-select {
-    width: 100%;
 }
 :deep(.el-textarea.is-disabled .el-textarea__inner) {
     background-color: var(--el-card-bg-color);
diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
index 7b5cd4b..4bc20a5 100644
--- a/src/views/system/menu/index.vue
+++ b/src/views/system/menu/index.vue
@@ -191,6 +191,7 @@
         onMounted(() => {
             getMenuList();
             getRoleList();
+            console.log(1);
         });
         return {
             parseRole,

--
Gitblit v1.9.2