ZaiZai %!s(int64=2) %!d(string=hai) anos
pai
achega
2d455b6741

+ 2 - 5
src/layout/index.vue

@@ -8,11 +8,8 @@
             class="hc-aside-box"
         >
             <div class="hc-aside-logo-box" @click="logoClick">
-                <template v-if="appLogoIcon">
-                    <img id="logo-icon" :src="appLogoIcon" alt="">
-                    <img v-show="!isCollapse" id="logo-name" :src="appLogoName" alt="">
-                </template>
-                <div v-else id="logo-icon" />
+                <img id="logo-icon" :src="appLogoIcon" alt="">
+                <img v-show="!isCollapse" id="logo-name" :src="appLogoName" alt="">
             </div>
             <div class="hc-aside-menu-box">
                 <el-scrollbar>

+ 319 - 46
src/styles/app/theme.scss

@@ -18,13 +18,13 @@ html {
 
 //深色主题设置
 html.dark {
-    --hc-body-bg-color: #101014;
-    --hc-bg-color: #292929;
-    --hc-text-color: rgba(255, 255, 255, 0.82);
+    --hc-body-bg-color: #050c17;
+    --hc-bg-color: #050c17;
+    --hc-text-color: #7780A1;
     --hc-shadow: 4px 4px 8px 0 rgba(0,0,0,0.15), -4px -4px 8px 0 #3d3d3d;
-    --el-bg-color-overlay: #393939;
-    --hc-border-color: #474646;
-    --hc-label-color: #8f9eb2;
+    --el-bg-color-overlay: #050c17;
+    --hc-border-color: rgba(119, 128, 161, .2);
+    --hc-label-color: #5A6382;
     html, body, #app {
         background: var(--el-bg-color-overlay);
     }
@@ -34,14 +34,15 @@ html.dark {
     }
     //左侧菜单
     .hc-layout-box .hc-aside-box {
-        color: var(--el-text-color-primary);
+        color: #5A6382;
         background: var(--el-bg-color-overlay);
         box-shadow: initial;
         border: 1px solid var(--hc-border-color);
         border-left: 0;
         border-bottom: 0;
+        border-radius: 0 !important;
         &.home-index {
-            color: var(--el-text-color-primary);
+            color: #5A6382;
             background: var(--el-bg-color-overlay);
             backdrop-filter: initial;
             -webkit-backdrop-filter: initial;
@@ -56,15 +57,53 @@ html.dark {
         }
         //菜单
         .el-menu-item, .el-sub-menu__title {
-            color: var(--hc-label-color);
+            color: #5A6382;
         }
         .el-menu-item.is-active {
             color: inherit;
+            .hc-aside-menu-item {
+                color: var(--el-color-primary);
+                background-color: var(--hc-shadow-color-2);
+                box-shadow: none;
+                &::before, &::after {
+                    display: none;
+                }
+            }
         }
         .hc-aside-bar-box:before {
-            background-image: linear-gradient(90deg, rgba(102, 102, 102, 0) 11%, #474646 35%, #474646 64%, rgba(102, 102, 102, 0) 86%);
+            background-image: linear-gradient(90deg, rgba(102, 102, 102, 0) 11%, #2c2c2c 35%, #2c2c2c 64%, rgba(102, 102, 102, 0) 86%);
+        }
+        .hc-aside-menu-box {
+            .el-scrollbar__bar.is-horizontal {
+                display: none !important;
+            }
+        }
+        .hc-aside-menu.el-menu--collapse .el-menu-item.is-active .hc-aside-menu-item,
+        .hc-aside-menu.el-menu--collapse .el-sub-menu.is-active .hc-aside-menu-item
+        {
+            color: var(--el-color-primary) !important;
+            background: var(--hc-shadow-color-2);
+            box-shadow: none;
+        }
+        .hc-aside-menu.el-menu--collapse .el-sub-menu:not(.is-active):hover,
+        .hc-aside-menu.el-menu--collapse .el-menu-item:not(.is-active):hover {
+            .hc-aside-menu-item {
+                color: var(--el-color-primary);
+                background: var(--hc-shadow-color-2);
+            }
         }
     }
+    .aside-menu-popper.el-popper .el-menu--vertical .el-menu .el-menu-item,
+    .aside-menu-popper.el-popper .el-menu--vertical .el-menu .el-sub-menu {
+        &:hover {
+            background: var(--hc-shadow-color-2);
+        }
+    }
+    .hc-layout-box .hc-aside-box .hc-aside-bar-box div.active {
+        color: var(--el-color-primary);
+        background-color: var(--hc-shadow-color-2);
+        box-shadow: none;
+    }
     //左栏
     .hc-layout-box .hc-layout-left-box {
         color: var(--el-text-color-primary);
@@ -89,12 +128,36 @@ html.dark {
     }
     //小图标时的菜单
     .aside-menu-popper.el-popper .el-menu--vertical .el-menu {
-        background-color: #393939;
-        color: #8f9eb2;
+        background-color: var(--el-bg-color-overlay);
+        --el-menu-text-color: #5A6382;
+        color: #5A6382;
+    }
+    .aside-menu-popper.el-popper .el-menu--vertical .el-menu .el-sub-menu.is-active .el-sub-menu__title {
+        color: var(--el-color-primary);
+        background: transparent;
+    }
+    .aside-menu-popper.el-popper .el-menu--vertical .el-menu .el-menu-item.is-active .hc-aside-menu-item {
+        color: var(--el-color-primary);
+        background: var(--hc-shadow-color-2);
+    }
+    .aside-menu-popper.el-popper .el-menu--vertical .el-menu .el-sub-menu:not(.is-active) .el-sub-menu__title:hover {
+        color: var(--el-color-primary);
+        background: var(--hc-shadow-color-2);
+    }
+    .el-popper.is-light {
+        background: var(--el-bg-color-overlay);
+        border: 1px solid var(--hc-border-color);
+    }
+    .el-cascader-panel {
+        --el-cascader-menu-text-color: var(--hc-label-color);
+        --el-cascader-node-background-hover: var(--hc-shadow-color-2);
+        .el-cascader-menu {
+            border-color: var(--hc-border-color);
+        }
     }
     //卡片
-    .hc-card-box.el-card {
-        box-shadow: initial;
+    .el-card.hc-card-box {
+        box-shadow: none;
         color: var(--hc-text-color);
         border: 1px solid var(--hc-border-color);
         .el-card__header {
@@ -121,21 +184,50 @@ html.dark {
             border-top: 1px solid var(--hc-border-color);
         }
     }
+    .hc-layout-box .hc-container-view .hc-header-view .hc-header-top-menu-bar .hc-top-menu-bar .bar-menu-content .bar-menu-btn {
+        background: #0C1622;
+        color: #7780A1;
+        border-color: var(--hc-border-color);
+        &:hover:not([class*='cur']) {
+            color: var(--el-color-primary);
+            background: var(--hc-shadow-color-2);
+        }
+        &:active:not([class*='cur']) {
+            color: var(--el-color-primary);
+            background: var(--hc-shadow-color-2);
+        }
+        &.cur {
+            color: var(--el-color-primary);
+            background: var(--hc-shadow-color-2);
+            border-color: var(--hc-shadow-color-2);
+        }
+    }
 
     //顶部项目合同下拉框
     .hc-layout-box .hc-container-view .hc-header-view .hc-header-content .hc-header-cascader-box .el-cascader .el-input .el-input__wrapper {
-        background: #696969;
+        background: #0C1622;
+        color: #7780A1;
+        border-color: var(--hc-border-color);
+        box-shadow: none;
     }
     .hc-layout-box .hc-container-view .hc-header-view .hc-header-content .hc-header-cascader-box .el-cascader .el-input.is-focus .el-input__wrapper {
-        box-shadow: var(--hc-shadow);
+        box-shadow: none;
     }
     .hc-layout-box .hc-container-view .hc-header-view .hc-header-content .hc-header-cascader-box .el-cascader .el-input .el-input__wrapper .el-input__inner,
     .hc-layout-box .hc-container-view .hc-header-view .hc-header-content .hc-header-cascader-box .el-cascader .el-input .el-input__wrapper .el-input__suffix {
-        color: var(--hc-text-color);
+        color: #7780A1;
     }
     //顶部图标按钮
     .header-icon-bar {
-        background: #696969;
+        background: #0C1622;
+        color: #7780A1;
+        border-color: var(--hc-border-color);
+        box-shadow: none;
+    }
+    .el-dropdown {
+        color: var(--hc-text-color);
+    }
+    .el-dropdown-menu__item {
         color: var(--hc-text-color);
     }
     //顶部用户信息
@@ -147,15 +239,109 @@ html.dark {
             border-color: var(--hc-border-color);
         }
     }
+    .header-pover-menu-list .list-item:hover {
+        color: var(--el-color-primary);
+        background: var(--hc-shadow-color-2);
+    }
+    .hc-layout-box .hc-layout-left-box .hc-project-box {
+        .hc-project-icon-box {
+            color: var(--hc-shadow-color-8);
+        }
+        .project-name-box {
+            .project-alias {
+                color: white;
+            }
+            .project-name {
+                color: var(--hc-text-color);
+            }
+        }
+    }
+    //树
+    .tree-line1 {
+        .el-tree-node:before, .el-tree-node:after {
+            border-color: var(--hc-shadow-color-3);
+        }
+    }
+    .data-custom-tree-node .submit-counts {
+        color: var(--hc-text-color) !important;
+    }
+    .data-custom-tree-node .menu-icon1 {
+        background: transparent;
+    }
+    .hc-context-menu-box {
+        background-color: var(--el-bg-color-overlay);
+        border: 2px solid var(--hc-border-color);
+        .hc-context-menu-item {
+            color: var(--hc-text-color);
+            &:hover {
+                color: var(--el-color-primary);
+                background: var(--hc-shadow-color-2);
+            }
+        }
+    }
+    .hc-layout-box .hc-layout-left-box .hc-tree-foot-tip-box .dot-view.black:before,
+    .hc-tree-mp-tip-box .dot-view:before{
+        border: 1px solid var(--hc-border-color);
+    }
+    .hc-expansion-contraction-tree {
+        color: var(--hc-label-color);
+        &:hover {
+            color: var(--el-color-primary);
+            background: var(--hc-shadow-color-1);
+        }
+    }
+
+    //输入框
+    .el-input, .el-date-editor {
+        --el-input-text-color: white;
+        --el-input-border-color: var(--hc-border-color);
+        --el-input-hover-border-color: var(--hc-shadow-color-5);
+        --el-input-placeholder-color: #4A5370;
+    }
+
+    .hc-table-form-action-tip .hc-alert {
+        background-color: var(--el-bg-color-overlay);
+        border: 1px solid var(--hc-border-color);
+        box-shadow: none;
+    }
 
     //按钮
+    .el-button--primary.is-link, .el-button--primary.is-plain, .el-button--primary.is-text {
+        --el-button-bg-color: var(--hc-shadow-color-3);
+        --el-button-hover-bg-color: var(--hc-shadow-color-6);
+    }
     .el-button[hc-btn] {
         border-color: var(--hc-border-color);
+        box-shadow: none;
     }
     .el-button[hc-btn].is-disabled:not([class*=el-button--]) {
         --el-button-disabled-text-color: var(--el-color-info-light-5);
         --el-button-disabled-bg-color: var(--el-color-info-light-9);
     }
+    .text-gray-400 {
+        color: var(--hc-label-color);
+    }
+
+    .el-button[hc-btn]:not([class*=el-button--]) {
+        --el-button-bg-color: var(--hc-shadow-color-1);
+        --el-button-hover-bg-color: var(--hc-shadow-color-4);
+    }
+
+    .ui-drag-modal-box .ui-drag-modal-dialog {
+        background-color: var(--el-bg-color-overlay);
+        border: 3px solid var(--hc-border-color);
+    }
+    .ui-drag-modal-box .ui-drag-modal-dialog .ui-drag-modal-dialog-header .ui-drag-modal-dialog-extra .dialog-icon {
+        color: var(--hc-text-color);
+    }
+
+    .sort-node-body-box.list-group .list-group-item:hover {
+        background-color: var(--hc-shadow-color-3);
+    }
+
+    .copy-node-form-box {
+        border-color: var(--hc-border-color);
+    }
 
     //日期范围
     .el-date-editor .el-range-separator {
@@ -164,8 +350,8 @@ html.dark {
 
     //切换卡片
     .hc-sb-table .el-tabs .el-tabs__header .el-tabs__nav .el-tabs__item {
-        background: var(--hc-bg-color);
-        --el-text-color-primary: var(--hc-label-color);
+        background: var(--hc-shadow-color-1);
+        --el-text-color-primary: var(--hc-text-color);
         &:after {
             background-color: var(--hc-border-color);
         }
@@ -182,12 +368,13 @@ html.dark {
         border-color: var(--hc-border-color);
         .el-table[hc] {
             --el-table-bg-color: initial;
-            --el-table-header-bg-color: var(--hc-bg-color);
-            --el-table-header-text-color: var(--hc-label-color);
+            --el-table-border-color: var(--hc-border-color);
+            --el-table-header-bg-color: var(--el-bg-color-overlay);
+            --el-table-header-text-color: var(--hc-text-color);
             --el-table-tr-bg-color: var(--el-bg-color-overlay);
-            --el-fill-color-lighter: #363535;
-            --el-table-text-color: var(--hc-text-color);
-            --el-table-row-hover-bg-color: #454545;
+            --el-fill-color-lighter: #0F1825;
+            --el-table-text-color: white;
+            --el-table-row-hover-bg-color: #0F1825;
         }
         .el-table[hc].el-table--border {
             --el-table-border-color: var(--hc-border-color);
@@ -204,17 +391,31 @@ html.dark {
         .el-table__header-wrapper tr td.el-table-fixed-column--right,
         .el-table__header-wrapper tr th.el-table-fixed-column--left,
         .el-table__header-wrapper tr th.el-table-fixed-column--right {
-            --el-bg-color: #444444;
+            --el-bg-color: inherit;
         }
     }
+    .task-tag-data-box, .el-form-item--large .el-form-item__content .form-item-div {
+        border-color: var(--hc-border-color);
+    }
 
     //分页
+    .el-pagination {
+        --el-pagination-text-color: white;
+        --el-pagination-button-color: white;
+        --el-pagination-button-bg-color: #1B2433;
+    }
     .card-page-box .el-pagination.is-background .btn-next, .card-page-box .el-pagination.is-background .btn-prev, .card-page-box .el-pagination.is-background .el-pager li {
         border-color: var(--hc-border-color);
     }
     //弹窗
     .el-overlay-dialog .el-dialog {
+        --el-dialog-border-radius: 10px;
         background: var(--el-bg-color-overlay);
+        border: 3px solid var(--hc-border-color);
+        box-shadow: none;
+        .el-dialog__body {
+            color: var(--hc-text-color);
+        }
         &.hc-modal-border {
             .el-dialog__header {
                 border-color: var(--hc-border-color);
@@ -225,7 +426,23 @@ html.dark {
         }
     }
     .el-message-box {
+        border-width: 3px;
         background: var(--el-bg-color-overlay);
+        border-color: var(--hc-border-color);
+        box-shadow: none;
+        .el-button {
+            --el-button-border-color: var(--hc-border-color);
+            --el-button-text-color: var(--hc-text-color);
+            --el-button-hover-bg-color: var(--hc-shadow-color-3);
+            --el-button-hover-border-color: transparent;
+        }
+        .el-button--primary {
+            --el-button-text-color: var(--el-color-primary);
+            --el-button-bg-color: var(--hc-shadow-color-2);
+            --el-button-border-color: transparent;
+            --el-button-hover-bg-color: var(--el-color-primary-light-3);
+            --el-button-hover-border-color: var(--el-color-primary-light-3);
+        }
     }
 
     //表单
@@ -253,11 +470,16 @@ html.dark {
     .hc-order-service .order-service-content .content-box .comment-card-box {
         border: 1px solid var(--hc-border-color);
         background: var(--el-bg-color-overlay);
-        .card-content-box .user-info-box .text-lg {
-            color: var(--hc-text-color);
+        .card-content-box .user-info-box {
+            .text-lg {
+                color: white;
+            }
+            .text-gray {
+                color: var(--hc-text-color) !important;
+            }
         }
         .card-content-box .desc_para {
-            color: var(--hc-text-color);
+            color: white;
         }
         .collapse-comment-box .user-comment-info-box .user-comment-box .user-comment-content-box {
             color: var(--hc-text-color);
@@ -310,8 +532,11 @@ html.dark {
             color: var(--hc-label-color);
         }
         &.active {
+            box-shadow: none;
+            color: var(--el-color-primary);
+            background: var(--hc-shadow-color-2);
             .label-box {
-                color: var(--hc-text-color);
+                color: var(--el-color-primary);
             }
         }
         &:hover:not(.active) {
@@ -330,7 +555,7 @@ html.dark {
         --el-tree-node-hover-bg-color: var(--hc-bg-color);
     }
     .hc-tree-node.tree-line .el-tree-node.is-expanded.is-current.is-focusable {
-        background: var(--hc-bg-color);
+        background: #181c21;
     }
     .data-custom-tree-node .menu-icon {
         background: initial;
@@ -340,7 +565,7 @@ html.dark {
         color: var(--hc-label-color);
     }
     .el-tree.hc-tree-node.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
-        background-color: var(--hc-bg-color);
+        background-color: #181c21;
         .data-custom-tree-node {
             color: var(--hc-text-color);
         }
@@ -375,36 +600,47 @@ html.dark {
         background-color: var(--el-bg-color-overlay);
         border-color: var(--hc-border-color);
         .hc-collapse-item-header .item-title {
-            color: var(--hc-label-color);
+            color: var(--hc-text-color);
         }
         .el-collapse-item__header .el-collapse-item__arrow {
-            color: var(--hc-label-color);
+            color: var(--hc-text-color);
         }
     }
     .data-fill-list-box .el-collapse .el-collapse-item.is-active .el-collapse-item__header.is-active {
         background: var(--hc-bg-color);
         .item-title, .el-collapse-item__arrow {
-            color: var(--hc-text-color);
+            color: white;
         }
     }
     .data-fill-list-box .data-fill-list-item-content .data-fill-table-tip-box {
         border-color: var(--hc-border-color);
     }
+    .data-fill-list-box .data-fill-list-item-content .data-fill-table-form-box {
+        border-color: var(--hc-border-color);
+    }
+    .data-fill-list-box .data-fill-list-item-content .hc-window-switch-box .icon-btn-view {
+        box-shadow: none;
+    }
 
     //切换按钮
     .hc-new-switch {
-        background: var(--hc-bg-color);
-        box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.15) inset, -4px -4px 8px 0 var(--hc-bg-color) inset;
+        box-shadow: none;
+        background: transparent;
+        border: 1px solid var(--hc-border-color);
         .switch-bg {
             color: var(--hc-label-color);
         }
         .switch-bg.dots {
-            color: var(--hc-text-color);
-            box-shadow: 4px 4px 8px 0 rgba(54, 92, 167, 0.15), -3px -2px 8px 0 var(--hc-bg-color);
+            box-shadow: none;
+            color: var(--el-color-primary);
+            background: var(--hc-shadow-color-2);
         }
     }
+    .special-box, .adding-form-dialog-box .dialog-tree-box {
+        border-color: var(--hc-border-color);
+    }
     //多级菜单
-    .hc-ledger-query-menu.el-menu {
+    .el-menu.hc-ledger-query-menu {
         --el-menu-text-color: var(--hc-label-color);
         .el-sub-menu .el-menu-item.is-active {
             background: var(--hc-bg-color);
@@ -537,29 +773,29 @@ html.dark {
         box-shadow: initial;
         border-bottom: 0;
     }
-    .hc-project-menu.el-menu .el-sub-menu {
+    .el-menu.hc-project-menu .el-sub-menu {
         border-color: var(--hc-border-color);
         .el-sub-menu__title {
             color: var(--hc-label-color);
         }
     }
-    .hc-project-menu.el-menu .el-sub-menu.is-opened .el-sub-menu__title {
+    .el-menu.hc-project-menu .el-sub-menu.is-opened .el-sub-menu__title {
         background: var(--hc-bg-color);
         color: var(--hc-text-color);
     }
-    .hc-project-menu.el-menu .el-menu-item.is-active {
+    .el-menu.hc-project-menu .el-menu-item.is-active {
         background: #4e4e4e;
         color: var(--hc-text-color);
     }
-    .hc-project-menu.el-menu .el-sub-menu .el-sub-menu__title,
-    .hc-project-menu.el-menu .el-sub-menu .el-menu-item {
+    .el-menu.hc-project-menu .el-sub-menu .el-sub-menu__title,
+    .el-menu.hc-project-menu .el-sub-menu .el-menu-item {
         &:hover {
             background: var(--hc-bg-color);
             color: var(--hc-text-color);
         }
     }
 
-    //材料进场
+        //材料进场
     .hc-switch-tab-content {
         border-color: var(--hc-border-color);
     }
@@ -590,4 +826,41 @@ html.dark {
     .hc-menu-simple-box .item-box .menu-icon {
         background: initial;
     }
+
+    .data-fill-list-box .data-fill-list-item-content .data-fill-table-tip-box .table-tip-foot {
+        background: var(--el-bg-color-overlay);
+    }
+
+    .hc-order-service .order-service-content .page-top-btn {
+        color: var(--el-color-primary);
+        background: var(--hc-shadow-color-2);
+    }
+
+    .time-line-box .el-timeline.hc-time-line .el-timeline-item.primary .el-timeline-item__wrapper .el-timeline-item__content .reply-name {
+        color: var(--el-color-primary);
+    }
+
+    //表单颜色
+    .hc-table-form-data-item .hc-excel-table-form, .hc-excel-table-form-view {
+        .el-input, .el-date-editor {
+            --el-input-text-color: #606266;
+            --el-input-hover-border: #c0c4cc;
+            --el-input-border-color: #dcdfe6;
+            --el-input-bg-color: #ffffff;
+            --el-input-icon-color: #a8abb2;
+            --el-input-placeholder-color: #a8abb2;
+            --el-input-hover-border-color: #c0c4cc;
+            --el-input-clear-hover-color: #909399;
+        }
+        .el-date-editor .el-range-input {
+            color: #4c4e50;
+        }
+        .el-radio, .el-checkbox {
+            color: #606266;
+        }
+    }
+    .el-overlay {
+        background-color: rgb(255 255 255/0.05);
+        backdrop-filter: blur(4px);
+    }
 }

+ 1 - 1
src/styles/other/order-service.scss

@@ -138,7 +138,7 @@
         .page-top-btn {
             position: absolute;
             z-index: 10;
-            bottom: 8px;
+            bottom: 20px;
             right: -20px;
             width: 40px;
             height: 40px;

+ 10 - 6
src/views/error/403.vue

@@ -1,22 +1,26 @@
 <template>
     <div class="error-page">
-        <div class="img" :style="`background-image: url(${svg403});`"/>
+        <div class="img" :style="`background-image: url(${svg403});`" />
         <div class="content">
             <h1>403</h1>
-            <div class="desc">抱歉,你无权访问该页面</div>
+            <div class="desc">
+                抱歉,你无权访问该页面
+            </div>
             <div class="actions">
-                <el-button type="primary" block @click="goToHome">返回首页</el-button>
+                <el-button type="primary" block @click="goToHome">
+                    返回首页
+                </el-button>
             </div>
         </div>
     </div>
 </template>
 
 <script setup>
-import router from '~src/router/index';
-import svg403 from '~src/assets/view/403.svg';
+import router from '~src/router/index'
+import svg403 from '~src/assets/view/403.svg'
 
 const goToHome = () => {
-    router.push({path: '/'});
+    router.push({ path: '/' })
 }
 </script>
 

+ 10 - 6
src/views/error/404.vue

@@ -1,22 +1,26 @@
 <template>
     <div class="error-page">
-        <div class="img" :style="`background-image: url(${svg404});`"/>
+        <div class="img" :style="`background-image: url(${svg404});`" />
         <div class="content">
             <h1>404</h1>
-            <div class="desc">抱歉,你访问的页面不存在</div>
+            <div class="desc">
+                抱歉,你访问的页面不存在
+            </div>
             <div class="actions">
-                <el-button type="primary" block @click="goToHome">返回首页</el-button>
+                <el-button type="primary" block @click="goToHome">
+                    返回首页
+                </el-button>
             </div>
         </div>
     </div>
 </template>
 
 <script setup>
-import router from '~src/router/index';
-import svg404 from '~src/assets/view/404.svg';
+import router from '~src/router/index'
+import svg404 from '~src/assets/view/404.svg'
 
 const goToHome = () => {
-    router.push({path: '/'});
+    router.push({ path: '/' }) 
 }
 </script>
 

+ 10 - 6
src/views/error/500.vue

@@ -1,22 +1,26 @@
 <template>
     <div class="error-page">
-        <div class="img" :style="`background-image: url(${svg500});`"/>
+        <div class="img" :style="`background-image: url(${svg500});`" />
         <div class="content">
             <h1>500</h1>
-            <div class="desc">抱歉,服务器出错了</div>
+            <div class="desc">
+                抱歉,服务器出错了
+            </div>
             <div class="actions">
-                <el-button type="primary" block @click="goToHome">返回首页</el-button>
+                <el-button type="primary" block @click="goToHome">
+                    返回首页
+                </el-button>
             </div>
         </div>
     </div>
 </template>
 
 <script setup>
-import router from '~src/router/index';
-import svg500 from '~src/assets/view/500.svg';
+import router from '~src/router/index'
+import svg500 from '~src/assets/view/500.svg'
 
 const goToHome = () => {
-    router.push({path: '/'});
+    router.push({ path: '/' })
 }
 </script>
 

+ 251 - 186
src/views/gauge/bezier.vue

@@ -1,81 +1,87 @@
 <template>
     <div class="hc-layout-box">
-        <HcCard :scrollbar="false" actionSize="lg">
+        <HcCard :scrollbar="false" action-size="lg">
             <template #header>
                 <HcTooltip keys="gauge-bezier-add">
-                    <el-button :disabled="searchForm.partId.length<1" hc-btn type="primary" @click="addLineEleModal">
-                        <HcIcon name="add-box"/>
+                    <el-button :disabled="searchForm.partId.length < 1" hc-btn type="primary" @click="addLineEleModal">
+                        <HcIcon name="add-box" />
                         <span>添加线元</span>
                     </el-button>
                 </HcTooltip>
                 <HcTooltip keys="gauge-bezier-to">
                     <el-button hc-btn @click="showToModalClick">
-                        <HcIcon name="repeat"/>
+                        <HcIcon name="repeat" />
                         <span>转换坐标</span>
                     </el-button>
                 </HcTooltip>
                 <HcTooltip keys="gauge-bezier-pile">
                     <el-button hc-btn @click="pileModalClick">
-                        <HcIcon name="settings-6"/>
+                        <HcIcon name="settings-6" />
                         <span>逐桩坐标</span>
                     </el-button>
                 </HcTooltip>
                 <HcTooltip keys="gauge-bezier-import">
                     <el-button hc-btn @click="importModalClick">
-                        <HcIcon name="upload-cloud"/>
+                        <HcIcon name="upload-cloud" />
                         <span>导入</span>
                     </el-button>
                 </HcTooltip>
                 <HcTooltip keys="gauge-bezier-export">
                     <el-button :loading="downloadLoading" hc-btn @click="exportModalClick">
-                        <HcIcon name="download"/>
+                        <HcIcon name="download" />
                         <span>导出</span>
                     </el-button>
                 </HcTooltip>
             </template>
             <template #extra>
                 <div class="w-60">
-                    <el-select v-model="searchForm.partId" block clearable placeholder="片段查询" size="large"
-                               @change="searchClick">
-                        <el-option v-for="item in partData" :label="item.name" :value="item.id"/>
+                    <el-select
+                        v-model="searchForm.partId" block clearable placeholder="片段查询" size="large"
+                        @change="searchClick"
+                    >
+                        <el-option v-for="item in partData" :label="item.name" :value="item.id" />
                     </el-select>
                 </div>
                 <HcTooltip keys="gauge-bezier-add-part">
                     <div class="hc-extra-icon-btn" @click="AddPartClick">
-                        <HcIcon name="add-circle"/>
+                        <HcIcon name="add-circle" />
                     </div>
                 </HcTooltip>
                 <HcTooltip keys="gauge-bezier-admin-part">
                     <div class="hc-extra-icon-btn" @click="AdminPartClick">
-                        <HcIcon name="list-settings"/>
+                        <HcIcon name="list-settings" />
                     </div>
                 </HcTooltip>
             </template>
 
             <HcTable :column="tableColumn" :datas="tableData" :loading="tableLoading">
-                <template #name="{row}">
-                    {{ row['valueStr'] }}~{{ row['valueEndStr'] }}
+                <template #name="{ row }">
+                    {{ row.valueStr }}~{{ row.valueEndStr }}
                 </template>
-                <template #type="{row}">
+                <template #type="{ row }">
                     {{ getTypeName(row?.type) }}
                 </template>
                 <!-- <template #angle="{row}">
                     {{row['du']}}°{{row['fen']}}′{{row['miao']}}″
                 </template> -->
-                <template #action="{row}">
+                <template #action="{ row }">
                     <HcTooltip keys="gauge-station-edit">
-                        <el-button size="small" text type="primary" @click="handleTableEdit(row)">编辑</el-button>
+                        <el-button size="small" text type="primary" @click="handleTableEdit(row)">
+                            编辑
+                        </el-button>
                     </HcTooltip>
                     <HcTooltip keys="gauge-station-del">
-                        <el-button size="small" text type="danger" @click="handleTableDelete(row)">删除</el-button>
+                        <el-button size="small" text type="danger" @click="handleTableDelete(row)">
+                            删除
+                        </el-button>
                     </HcTooltip>
                 </template>
             </HcTable>
             <template #action>
-                <HcPages :pages="searchForm" @change="pageChange"/>
+                <HcPages :pages="searchForm" @change="pageChange" />
             </template>
         </HcCard>
-        <!--管理片段弹框-->
+        <!-- 管理片段弹框 -->
         <el-dialog v-model="showAdminPartModal" class="hc-modal-border" title="管理片段" width="47rem">
             <div class="admin-part-data-table">
                 <el-scrollbar>
@@ -83,30 +89,45 @@
                         <el-table :data="AdminPartTableData" hc stripe>
                             <el-table-column label="片段名称" prop="name">
                                 <template #default="scope">
-                                    <el-input v-if="scope.row.isEdit" v-model="scope.row.name" placeholder="片段名称"/>
-                                    <div v-else>{{ scope.row.name }}</div>
+                                    <el-input v-if="scope.row.isEdit" v-model="scope.row.name" placeholder="片段名称" />
+                                    <div v-else>
+                                        {{ scope.row.name }}
+                                    </div>
                                 </template>
                             </el-table-column>
                             <el-table-column label="桩号前缀" prop="prefix">
                                 <template #default="scope">
-                                    <el-input v-if="scope.row.isEdit" v-model="scope.row.prefix"
-                                              placeholder="桩号前缀"/>
-                                    <div v-else>{{ scope.row.prefix }}</div>
+                                    <el-input
+                                        v-if="scope.row.isEdit" v-model="scope.row.prefix"
+                                        placeholder="桩号前缀"
+                                    />
+                                    <div v-else>
+                                        {{ scope.row.prefix }}
+                                    </div>
                                 </template>
                             </el-table-column>
                             <el-table-column align="center" label="操作" width="130">
                                 <template #default="scope">
-                                    <el-button v-if="scope.row.isEdit" size="small" text type="primary"
-                                               @click="handleAdminPartSave(scope.row)">保存
+                                    <el-button
+                                        v-if="scope.row.isEdit" size="small" text type="primary"
+                                        @click="handleAdminPartSave(scope.row)"
+                                    >
+                                        保存
                                     </el-button>
                                     <HcTooltip v-else keys="gauge-station-edit">
-                                        <el-button size="small" text type="primary"
-                                                   @click="handleAdminPartEdit(scope.row)">编辑
+                                        <el-button
+                                            size="small" text type="primary"
+                                            @click="handleAdminPartEdit(scope.row)"
+                                        >
+                                            编辑
                                         </el-button>
                                     </HcTooltip>
                                     <HcTooltip keys="gauge-station-del">
-                                        <el-button size="small" text type="danger"
-                                                   @click="handleAdminPartDelete(scope.row,scope.$index)">删除
+                                        <el-button
+                                            size="small" text type="danger"
+                                            @click="handleAdminPartDelete(scope.row, scope.$index)"
+                                        >
+                                            删除
                                         </el-button>
                                     </HcTooltip>
                                 </template>
@@ -117,139 +138,176 @@
             </div>
             <template #footer>
                 <div class="dialog-footer">
-                    <el-button size="large" @click="showAdminPartModal = false">取消</el-button>
-                    <el-button hc-btn type="primary" @click="AddAdminPart">新增</el-button>
+                    <el-button size="large" @click="showAdminPartModal = false">
+                        取消
+                    </el-button>
+                    <el-button hc-btn type="primary" @click="AddAdminPart">
+                        新增
+                    </el-button>
                 </div>
             </template>
         </el-dialog>
-        <!--新增片段弹框-->
+        <!-- 新增片段弹框 -->
         <el-dialog v-model="showAddPartModal" class="hc-modal-border" draggable title="新增片段" width="38rem">
             <el-form ref="partFormRef" :model="partForm" :rules="partRules" label-width="auto" size="large">
                 <el-form-item label="名称" prop="name">
-                    <el-input v-model="partForm.name" placeholder="请输入名称"/>
+                    <el-input v-model="partForm.name" placeholder="请输入名称" />
                 </el-form-item>
                 <el-form-item label="桩号前缀" prop="prefix">
-                    <el-input v-model="partForm.prefix" placeholder="只允许输入大写的英文字母"/>
+                    <el-input v-model="partForm.prefix" placeholder="只允许输入大写的英文字母" />
                 </el-form-item>
             </el-form>
             <template #footer>
                 <div class="dialog-footer">
-                    <el-button size="large" @click="showAddPartModal = false">取消</el-button>
-                    <el-button :loading="savePartLoading" hc-btn type="primary" @click="savePartInfo">保存</el-button>
+                    <el-button size="large" @click="showAddPartModal = false">
+                        取消
+                    </el-button>
+                    <el-button :loading="savePartLoading" hc-btn type="primary" @click="savePartInfo">
+                        保存
+                    </el-button>
                 </div>
             </template>
         </el-dialog>
-        <!--添加/编辑线元弹框-->
-        <el-dialog v-model="showLineEleModal"
-                   :title="(formLineEleValue.id === -1 || !formLineEleValue.id)?'添加线元':'编辑线元'" class="hc-modal-border"
-                   draggable width="40rem">
+        <!-- 添加/编辑线元弹框 -->
+        <el-dialog
+            v-model="showLineEleModal"
+            :title="(formLineEleValue.id === -1 || !formLineEleValue.id) ? '添加线元' : '编辑线元'" class="hc-modal-border"
+            draggable width="40rem"
+        >
             <el-form :model="formLineEleValue" label-width="auto" size="large">
                 <el-form-item label="类型">
                     <el-radio-group v-model="formLineEleValue.type">
-                        <el-radio v-for="item in lineElementType" :label="item.value">{{ item.label }}</el-radio>
+                        <el-radio v-for="item in lineElementType" :label="item.value">
+                            {{ item.label }}
+                        </el-radio>
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item label="开始里程">
-                    <el-input v-model="formLineEleValue.value" placeholder="请输入开始里程"/>
+                    <el-input v-model="formLineEleValue.value" placeholder="请输入开始里程" />
                 </el-form-item>
                 <el-form-item label="X">
-                    <el-input v-model="formLineEleValue.x" placeholder="请输入X"/>
+                    <el-input v-model="formLineEleValue.x" placeholder="请输入X" />
                 </el-form-item>
                 <el-form-item label="Y">
-                    <el-input v-model="formLineEleValue.y" placeholder="请输入Y"/>
+                    <el-input v-model="formLineEleValue.y" placeholder="请输入Y" />
                 </el-form-item>
                 <el-form-item v-if="formLineEleValue.type !== 0" label="半径">
-                    <el-input v-model="formLineEleValue.r" placeholder="请输入半径"/>
+                    <el-input v-model="formLineEleValue.r" placeholder="请输入半径" />
                 </el-form-item>
                 <el-form-item v-if="formLineEleValue.type === 3" label="结束半径">
-                    <el-input v-model="formLineEleValue.r2" placeholder="请输入半径"/>
+                    <el-input v-model="formLineEleValue.r2" placeholder="请输入半径" />
                 </el-form-item>
                 <el-form-item v-if="formLineEleValue.type !== 0" label="转向">
                     <el-radio-group v-model="formLineEleValue.swing">
-                        <el-radio label="左转">左转</el-radio>
-                        <el-radio label="右转">右转</el-radio>
+                        <el-radio label="左转">
+                            左转
+                        </el-radio>
+                        <el-radio label="右转">
+                            右转
+                        </el-radio>
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item label="线长度">
-                    <el-input v-model="formLineEleValue.l" placeholder="请输入线长度"/>
+                    <el-input v-model="formLineEleValue.l" placeholder="请输入线长度" />
                 </el-form-item>
                 <div class="flex">
                     <el-form-item class="flex-1" label="方位角">
                         <el-input v-model="formLineEleValue.du" placeholder="输入度">
-                            <template #suffix>度</template>
+                            <template #suffix>
+                                度
+                            </template>
                         </el-input>
                     </el-form-item>
                     <el-form-item class="flex-1 ml-4" no-label>
                         <el-input v-model="formLineEleValue.fen" placeholder="输入分">
-                            <template #suffix>分</template>
+                            <template #suffix>
+                                分
+                            </template>
                         </el-input>
                     </el-form-item>
                     <el-form-item class="flex-1 ml-4" no-label>
                         <el-input v-model="formLineEleValue.miao" placeholder="输入秒">
-                            <template #suffix>秒</template>
+                            <template #suffix>
+                                秒
+                            </template>
                         </el-input>
                     </el-form-item>
                 </div>
                 <el-form-item v-if="formLineEleValue.type !== 3" label="断链前里程">
-                    <el-input v-model="formLineEleValue.dlq" placeholder="请输入断链前里程"/>
+                    <el-input v-model="formLineEleValue.dlq" placeholder="请输入断链前里程" />
                 </el-form-item>
                 <el-form-item v-if="formLineEleValue.type !== 3" label="断链后里程">
-                    <el-input v-model="formLineEleValue.dlh" placeholder="请输入断链后里程"/>
+                    <el-input v-model="formLineEleValue.dlh" placeholder="请输入断链后里程" />
                 </el-form-item>
                 <el-form-item label="顺序">
-                    <el-input v-model="formLineEleValue.orderNum" placeholder="请输入顺序"/>
+                    <el-input v-model="formLineEleValue.orderNum" placeholder="请输入顺序" />
                 </el-form-item>
             </el-form>
             <template #footer>
                 <div class="dialog-footer">
-                    <el-button size="large" @click="showLineEleModal = false">取消</el-button>
-                    <el-button v-if="formLineEleValue.id === -1 || !formLineEleValue.id" size="large"
-                               @click="refreshable">刷新
+                    <el-button size="large" @click="showLineEleModal = false">
+                        取消
+                    </el-button>
+                    <el-button
+                        v-if="formLineEleValue.id === -1 || !formLineEleValue.id" size="large"
+                        @click="refreshable"
+                    >
+                        刷新
+                    </el-button>
+                    <el-button :loading="saveLoading" hc-btn type="primary" @click="saveLineEleClick">
+                        保存
                     </el-button>
-                    <el-button :loading="saveLoading" hc-btn type="primary" @click="saveLineEleClick">保存</el-button>
                 </div>
             </template>
         </el-dialog>
-        <!--里程转换坐标-->
+        <!-- 里程转换坐标 -->
         <el-dialog v-model="showToModal" class="hc-modal-border" draggable title="里程转换坐标" width="38rem">
             <el-form :model="formToValue" label-width="auto" size="large">
                 <el-form-item label="里程">
-                    <el-input v-model="formToValue.value" placeholder="请输入名称"/>
+                    <el-input v-model="formToValue.value" placeholder="请输入名称" />
                 </el-form-item>
                 <el-form-item label="偏移">
-                    <el-input v-model="formToValue.b" placeholder="请输入偏移"/>
+                    <el-input v-model="formToValue.b" placeholder="请输入偏移" />
                 </el-form-item>
                 <el-form-item label="夹角">
-                    <el-input v-model="formToValue.jj" placeholder="请输入夹角"/>
+                    <el-input v-model="formToValue.jj" placeholder="请输入夹角" />
                 </el-form-item>
                 <el-form-item label="X">
-                    <div class="form-item-div">{{ formToValue.x }}</div>
+                    <div class="form-item-div">
+                        {{ formToValue.x }}
+                    </div>
                 </el-form-item>
                 <el-form-item label="Y">
-                    <div class="form-item-div">{{ formToValue.y }}</div>
+                    <div class="form-item-div">
+                        {{ formToValue.y }}
+                    </div>
                 </el-form-item>
             </el-form>
             <template #footer>
                 <div class="dialog-footer">
-                    <el-button size="large" @click="showToModal = false">取消</el-button>
-                    <el-button hc-btn type="primary" @click="queryPsChange">转换</el-button>
+                    <el-button size="large" @click="showToModal = false">
+                        取消
+                    </el-button>
+                    <el-button hc-btn type="primary" @click="queryPsChange">
+                        转换
+                    </el-button>
                 </div>
             </template>
         </el-dialog>
-        <!--逐桩坐标弹框-->
+        <!-- 逐桩坐标弹框 -->
         <el-dialog v-model="showPileModal" class="hc-modal-border" draggable title="逐桩坐标" width="62rem">
             <el-form :model="formPileValue" inline label-position="top" label-width="auto" size="large">
                 <el-form-item label="开始桩号">
-                    <el-input v-model="formPileValue.x" placeholder="开始桩号"/>
+                    <el-input v-model="formPileValue.x" placeholder="开始桩号" />
                 </el-form-item>
                 <el-form-item label="结束桩号">
-                    <el-input v-model="formPileValue.y" placeholder="结束桩号"/>
+                    <el-input v-model="formPileValue.y" placeholder="结束桩号" />
                 </el-form-item>
                 <el-form-item label="桩距">
-                    <el-input v-model="formPileValue.value" placeholder="桩距"/>
+                    <el-input v-model="formPileValue.value" placeholder="桩距" />
                 </el-form-item>
                 <el-form-item label="偏距">
-                    <el-input v-model="formPileValue.b" placeholder="偏距"/>
+                    <el-input v-model="formPileValue.b" placeholder="偏距" />
                 </el-form-item>
                 <el-form-item label=" ">
                     <el-button :loading="generateLoading" attr-type="button" type="primary" @click="generateClick">
@@ -266,36 +324,47 @@
                                     {{ scope.$index + 1 }}
                                 </template>
                             </el-table-column>
-                            <el-table-column label="里程" prop="valueStr"/>
-                            <el-table-column label="偏距" prop="b"/>
-                            <el-table-column label="X" prop="xxStr"/>
-                            <el-table-column label="Y" prop="yyStr"/>
+                            <el-table-column label="里程" prop="valueStr" />
+                            <el-table-column label="偏距" prop="b" />
+                            <el-table-column label="X" prop="xxStr" />
+                            <el-table-column label="Y" prop="yyStr" />
                         </el-table>
                     </div>
                 </el-scrollbar>
             </div>
         </el-dialog>
-        <!--导入弹框-->
+        <!-- 导入弹框 -->
         <el-dialog v-model="showImportModal" class="hc-modal-border" title="导入线元" width="32rem">
             <div class="text-center">
-                <el-upload ref="uploadRef" v-model:file-list="fileList" :accept="accept" :action="action"
-                           :auto-upload="false" :data="addition" :headers="getTokenHeader()" :limit="1"
-                           :on-error="handleUploadError" :on-exceed="handleUploadExceed"
-                           :on-progress="handleUploadProgress" :on-success="handleUploadFinish">
+                <el-upload
+                    ref="uploadRef" v-model:file-list="fileList" :accept="accept" :action="action"
+                    :auto-upload="false" :data="addition" :headers="getTokenHeader()" :limit="1"
+                    :on-error="handleUploadError" :on-exceed="handleUploadExceed"
+                    :on-progress="handleUploadProgress" :on-success="handleUploadFinish"
+                >
                     <template #trigger>
-                        <el-button :loading="importLoading" type="primary">选择文件</el-button>
+                        <el-button :loading="importLoading" type="primary">
+                            选择文件
+                        </el-button>
                     </template>
                 </el-upload>
             </div>
             <template #footer>
                 <div class="lr-dialog-footer">
                     <div class="left">
-                        <el-button size="large" @click="tmportTmpClick">下载导入模板</el-button>
+                        <el-button size="large" @click="tmportTmpClick">
+                            下载导入模板
+                        </el-button>
                     </div>
                     <div class="right">
-                        <el-button size="large" @click="showImportModal = false">取消</el-button>
-                        <el-button :disabled="fileList.length <= 0" :loading="importLoading" hc-btn type="primary"
-                                   @click="handleImportClick">确认导入
+                        <el-button size="large" @click="showImportModal = false">
+                            取消
+                        </el-button>
+                        <el-button
+                            :disabled="fileList.length <= 0" :loading="importLoading" hc-btn type="primary"
+                            @click="handleImportClick"
+                        >
+                            确认导入
                         </el-button>
                     </div>
                 </div>
@@ -305,19 +374,17 @@
 </template>
 
 <script setup>
-import {ref, onMounted} from "vue";
-import {useAppStore} from "~src/store";
-import bezierApi from '~api/gauge/bezier';
-import {getTokenHeader} from '~src/api/request/header';
-import {
-    downloadBlob, formValidate, deepClone, isObjNull, getObjValue, getArrValue
-} from "js-fast-way"
-import {genFileId} from "element-plus";
+import { onMounted, ref } from 'vue'
+import { useAppStore } from '~src/store'
+import bezierApi from '~api/gauge/bezier'
+import { getTokenHeader } from '~src/api/request/header'
+import { deepClone, downloadBlob, formValidate, getArrValue, getObjValue, isObjNull } from 'js-fast-way'
+import { genFileId } from 'element-plus'
 
 //初始变量
 const useAppState = useAppStore()
-const projectId = ref(useAppState.getProjectId);
-const contractId = ref(useAppState.getContractId);
+const projectId = ref(useAppState.getProjectId)
+const contractId = ref(useAppState.getContractId)
 
 //渲染完成
 onMounted(() => {
@@ -327,28 +394,28 @@ onMounted(() => {
 //获取下拉列表
 const partData = ref([])
 const queryPartList = async () => {
-    const {error, code, data} = await bezierApi.queryPartList({
+    const { error, code, data } = await bezierApi.queryPartList({
         projectId: projectId.value,
-        contractId: contractId.value
+        contractId: contractId.value,
     })
     if (!error && code === 200) {
         let records = getArrValue(data)
         partData.value = records
-        AdminPartTableData.value = deepClone(records);
+        AdminPartTableData.value = deepClone(records)
         if (records.length > 0 && !searchForm.value.partId) {
-            searchForm.value.partId = records[0].id;
+            searchForm.value.partId = records[0].id
             partNo.value = records[0].prefix
             getTableData()
         }
     } else {
         partData.value = []
-        AdminPartTableData.value = [];
-        searchForm.value.partId = null;
+        AdminPartTableData.value = []
+        searchForm.value.partId = null
     }
 }
 
 //搜索表单
-const searchForm = ref({partId: '', current: 1, size: 20, total: 0})
+const searchForm = ref({ partId: '', current: 1, size: 20, total: 0 })
 const partNo = ref('')
 //重新搜索数据
 const searchClick = (id) => {
@@ -362,7 +429,7 @@ const searchClick = (id) => {
 }
 
 //分页被点击
-const pageChange = ({current, size}) => {
+const pageChange = ({ current, size }) => {
     searchForm.value.current = current
     searchForm.value.size = size
     getTableData()
@@ -370,22 +437,22 @@ const pageChange = ({current, size}) => {
 
 //获取数据
 const tableColumn = ref([
-    {key: 'name', name: '里程'},
-    {key: 'orderNum', name: '排序'},
-    {key: 'l', name: '长度'},
-    {key: 'angleStr', name: '方位角'},
-    {key: 'type', name: '类型'},
-    {key: 'swing', name: '转向'},
-    {key: 'xxStr', name: 'X'},
-    {key: 'yyStr', name: 'Y'},
-    {key: 'r', name: '半径'},
-    {key: 'action', name: '操作', width: '130'}
+    { key: 'name', name: '里程' },
+    { key: 'orderNum', name: '排序' },
+    { key: 'l', name: '长度' },
+    { key: 'angleStr', name: '方位角' },
+    { key: 'type', name: '类型' },
+    { key: 'swing', name: '转向' },
+    { key: 'xxStr', name: 'X' },
+    { key: 'yyStr', name: 'Y' },
+    { key: 'r', name: '半径' },
+    { key: 'action', name: '操作', width: '130' },
 ])
 const tableData = ref([])
 const tableLoading = ref(false)
 const getTableData = async () => {
     tableLoading.value = true
-    const {error, code, data} = await bezierApi.queryListData(searchForm.value)
+    const { error, code, data } = await bezierApi.queryListData(searchForm.value)
     tableLoading.value = false
     if (!error && code === 200) {
         tableData.value = getArrValue(data['records'])
@@ -399,14 +466,14 @@ const getTableData = async () => {
 //编辑表格
 const handleTableEdit = (row) => {
     const form = deepClone(row)
-    formLineEleValue.value['id'] = form['id'];
-    formLineEleValue.value['type'] = form['type'];
-    formLineEleValue.value['projectId'] = projectId.value;
-    formLineEleValue.value['contractId'] = contractId.value;
-    formLineEleValue.value['partId'] = searchForm.value.partId;
+    formLineEleValue.value['id'] = form['id']
+    formLineEleValue.value['type'] = form['type']
+    formLineEleValue.value['projectId'] = projectId.value
+    formLineEleValue.value['contractId'] = contractId.value
+    formLineEleValue.value['partId'] = searchForm.value.partId
     let mile = ['x', 'y', 'fen', 'miao', 'du', 'value', 'l', 'dlq', 'dlh', 'swing', 'r', 'r2', 'orderNum']
     mile.forEach((key) => {
-        formLineEleValue.value[key] = form[key] + '';
+        formLineEleValue.value[key] = form[key] + ''
     })
     saveLoading.value = false
     showLineEleModal.value = true
@@ -421,12 +488,12 @@ const handleTableDelete = (row) => {
             if (action === 'confirm') {
                 saveDelMileage(row.id)
             }
-        }
+        },
     })
 }
 //确认删除
 const saveDelMileage = async (rid) => {
-    const {error, code} = await bezierApi.saveDelMileage({id: rid}, false)
+    const { error, code } = await bezierApi.saveDelMileage({ id: rid }, false)
     //判断状态
     if (!error && code === 200) {
         window?.$message?.success('删除成功')
@@ -438,20 +505,20 @@ const saveDelMileage = async (rid) => {
 
 //线元类型
 const showLineEleModal = ref(false)
-const formLineEleValue = ref({type: 0})
+const formLineEleValue = ref({ type: 0 })
 const lineElementType = ref([
-    {value: 0, label: "直线段"},
-    {value: 1, label: "圆曲线"},
-    {value: 2, label: "入缓和曲线"},
-    {value: 3, label: "出缓和曲线"},
-    {value: 4, label: "不完整缓和曲线"},
+    { value: 0, label: '直线段' },
+    { value: 1, label: '圆曲线' },
+    { value: 2, label: '入缓和曲线' },
+    { value: 3, label: '出缓和曲线' },
+    { value: 4, label: '不完整缓和曲线' },
 ])
 //获取类型名称
 const getTypeName = (val) => {
     if (val !== -1 || val >= 0) {
-        return lineElementType.value[val].label || '';
+        return lineElementType.value[val].label || ''
     } else {
-        return '-';
+        return '-'
     }
 }
 //添加线元
@@ -463,17 +530,17 @@ const addLineEleModal = () => {
 //刷新
 const refreshable = () => {
     getNextMileagexy({
-        orderNum: formLineEleValue.value['orderNum']
+        orderNum: formLineEleValue.value['orderNum'],
     })
 }
 //保存
 const saveLoading = ref(false)
 const saveLineEleClick = async () => {
     let form = formLineEleValue.value
-    form.partId = searchForm.value.partId;
+    form.partId = searchForm.value.partId
     if (form.id === -1 || !form.id) {
         saveLoading.value = true
-        const {error, code} = await bezierApi.saveAddMileage(form)
+        const { error, code } = await bezierApi.saveAddMileage(form)
         saveLoading.value = false
         if (!error && code === 200) {
             window?.$message?.success('保存成功')
@@ -482,7 +549,7 @@ const saveLineEleClick = async () => {
         }
     } else {
         saveLoading.value = true
-        const {error, code} = await bezierApi.saveUpdateMileage(form)
+        const { error, code } = await bezierApi.saveUpdateMileage(form)
         saveLoading.value = false
         if (!error && code === 200) {
             window?.$message?.success('保存成功')
@@ -493,50 +560,50 @@ const saveLineEleClick = async () => {
 }
 //获取数据
 const getNextMileagexy = async (obj = {}) => {
-    const {error, code, data} = await bezierApi.getNextMileagexy({
+    const { error, code, data } = await bezierApi.getNextMileagexy({
         ...obj,
         projectId: projectId.value,
-        contractId: contractId.value
+        contractId: contractId.value,
     })
     if (!error && code === 200) {
         const res = getObjValue(data)
         if (!isObjNull(res)) {
             let mile = ['x', 'y', 'fen', 'miao', 'du', 'value', 'l', 'dlq', 'dlh', 'swing', 'r', 'r2', 'orderNum']
             mile.forEach((key) => {
-                formLineEleValue.value[key] = res[key] + '';
+                formLineEleValue.value[key] = res[key] + ''
             })
-            formLineEleValue.value['type'] = res['type'];
-            formLineEleValue.value['projectId'] = projectId.value;
-            formLineEleValue.value['contractId'] = contractId.value;
-            formLineEleValue.value['partId'] = searchForm.value.partId;
+            formLineEleValue.value['type'] = res['type']
+            formLineEleValue.value['projectId'] = projectId.value
+            formLineEleValue.value['contractId'] = contractId.value
+            formLineEleValue.value['partId'] = searchForm.value.partId
         } else {
-            formLineEleValue.value = {type: 0}
-            formLineEleValue.value['projectId'] = projectId.value;
-            formLineEleValue.value['contractId'] = contractId.value;
-            formLineEleValue.value['partId'] = searchForm.value.partId;
+            formLineEleValue.value = { type: 0 }
+            formLineEleValue.value['projectId'] = projectId.value
+            formLineEleValue.value['contractId'] = contractId.value
+            formLineEleValue.value['partId'] = searchForm.value.partId
         }
     }
 }
 
 //转换坐标
 const showToModal = ref(false)
-const formToValue = ref({value: '', b: '0', jj: '90', x: '', y: ''})
+const formToValue = ref({ value: '', b: '0', jj: '90', x: '', y: '' })
 const showToModalClick = () => {
-    formToValue.value = {value: '', b: '0', jj: '90', x: '', y: ''}
+    formToValue.value = { value: '', b: '0', jj: '90', x: '', y: '' }
     showToModal.value = true
 }
 //转换坐标
 const queryPsChange = async () => {
-    const {error, code, data} = await bezierApi.queryPsChange({
+    const { error, code, data } = await bezierApi.queryPsChange({
         ...formToValue.value,
         projectId: projectId.value,
-        partId: searchForm.value.partId
+        partId: searchForm.value.partId,
     })
     //判断状态
     if (!error && code === 200) {
         const res = getObjValue(data)
-        formToValue.value['x'] = res?.x + '';
-        formToValue.value['y'] = res?.y + '';
+        formToValue.value['x'] = res?.x + ''
+        formToValue.value['y'] = res?.y + ''
         window?.$message?.success('转换成功')
     }
 }
@@ -545,7 +612,7 @@ const queryPsChange = async () => {
 const showPileModal = ref(false)
 const formPileValue = ref({})
 const pileModalClick = () => {
-    formPileValue.value = {x: '0', y: '0', value: '0', b: '0'}
+    formPileValue.value = { x: '0', y: '0', value: '0', b: '0' }
     pileTable.value = []
     generateLoading.value = false
     showPileModal.value = true
@@ -555,17 +622,17 @@ const generateLoading = ref(false)
 const pileTable = ref([])
 const generateClick = async () => {
     generateLoading.value = true
-    const {error, code, data} = await bezierApi.getZzList({
+    const { error, code, data } = await bezierApi.getZzList({
         ...formPileValue.value,
         projectId: projectId.value,
-        partId: searchForm.value.partId
+        partId: searchForm.value.partId,
     })
     //判断状态
     generateLoading.value = false
     if (!error && code === 200) {
-        pileTable.value = getArrValue(data);
+        pileTable.value = getArrValue(data)
     } else {
-        pileTable.value = [];
+        pileTable.value = []
     }
 }
 
@@ -577,15 +644,15 @@ const importLoading = ref(false)
 const uploadRef = ref(null)
 const addition = ref({})
 const fileList = ref([])
-const action = '/api/blade-business/mileage/import';
-const accept = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel';
+const action = '/api/blade-business/mileage/import'
+const accept = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'
 
 //导入
 const importModalClick = () => {
     addition.value = {
         projectId: projectId.value,
         contractId: contractId.value,
-        partId: searchForm.value.partId
+        partId: searchForm.value.partId,
     }
     importLoading.value = false
     showImportModal.value = true
@@ -639,7 +706,7 @@ const exportModalClick = () => {
             if (action === 'confirm') {
                 getExportExcel()
             }
-        }
+        },
     })
 }
 //确定导出
@@ -647,10 +714,10 @@ const downloadLoading = ref(false)
 const getExportExcel = async () => {
     //批量下载
     downloadLoading.value = true
-    const {error, disposition, res} = await bezierApi.getExportExcel({
+    const { error, disposition, res } = await bezierApi.getExportExcel({
         projectId: projectId.value,
         partId: searchForm.value.partId,
-        partNo: partNo.value
+        partNo: partNo.value,
     })
     //处理数据
     downloadLoading.value = false
@@ -666,12 +733,12 @@ const getExportExcel = async () => {
 
 //片段管理表单
 const partFormRef = ref(null)
-const partForm = ref({name: '', prefix: ''})
+const partForm = ref({ name: '', prefix: '' })
 const partRules = {
     name: {
         required: true,
-        trigger: "blur",
-        message: "请输入名称"
+        trigger: 'blur',
+        message: '请输入名称',
     },
     prefix: {
         required: true,
@@ -683,22 +750,22 @@ const partRules = {
                 callback()
             }
         },
-        trigger: "blur",
-    }
+        trigger: 'blur',
+    },
 }
 
 //管理片段
 const showAdminPartModal = ref(false)
 const AdminPartTableData = ref([])
 const AdminPartClick = () => {
-    AdminPartTableData.value = deepClone(partData.value);
+    AdminPartTableData.value = deepClone(partData.value)
     showAdminPartModal.value = true
 }
 
 //新增片段弹框
 const showAddPartModal = ref(false)
 const AddPartClick = () => {
-    partForm.value = {name: '', prefix: ''}
+    partForm.value = { name: '', prefix: '' }
     savePartLoading.value = false
     showAddPartModal.value = true
 }
@@ -708,10 +775,10 @@ const savePartInfo = async () => {
     const validate = await formValidate(partFormRef.value)
     if (validate) {
         savePartLoading.value = true
-        const {error, code} = await bezierApi.savePartAdd({
+        const { error, code } = await bezierApi.savePartAdd({
             ...partForm.value,
             projectId: projectId.value,
-            contractId: contractId.value
+            contractId: contractId.value,
         })
         savePartLoading.value = false
         if (!error && code === 200) {
@@ -725,7 +792,7 @@ const savePartInfo = async () => {
 //新增
 const AddAdminPart = () => {
     AdminPartTableData.value.push({
-        id: '', name: '', prefix: '', isEdit: true
+        id: '', name: '', prefix: '', isEdit: true,
     })
 }
 //编辑
@@ -745,10 +812,10 @@ const handleAdminPartSave = async (row) => {
     } else if (!reg.test(row.prefix) && row.name.indexOf('主线') < 0) {
         window?.$message?.warning('桩号前缀,只允许输入大写的英文字母')
     } else if (row.id) {
-        const {error, code} = await bezierApi.savePartUpdate({
+        const { error, code } = await bezierApi.savePartUpdate({
             ...row,
             projectId: projectId.value,
-            contractId: contractId.value
+            contractId: contractId.value,
         })
         if (!error && code === 200) {
             window?.$message?.success('保存成功')
@@ -756,15 +823,15 @@ const handleAdminPartSave = async (row) => {
             queryPartList()
         }
     } else if (!row.id) {
-        const {error, code, data} = await bezierApi.savePartAdd({
+        const { error, code, data } = await bezierApi.savePartAdd({
             ...row,
             projectId: projectId.value,
-            contractId: contractId.value
+            contractId: contractId.value,
         })
         if (!error && code === 200) {
             window?.$message?.success('保存成功')
             row.isEdit = false
-            alert(222);
+            alert(222)
             row.id = data.id
             partData.value.push(data)
             //queryPartList()不要刷新
@@ -774,7 +841,7 @@ const handleAdminPartSave = async (row) => {
 
 //删除
 const handleAdminPartDelete = (row, index) => {
-    if (!!row.id) {
+    if (row.id) {
         window?.$messageBox?.alert('关联平曲线一起删除', '是否删除当前数据?', {
             showCancelButton: true,
             confirmButtonText: '确定删除',
@@ -783,7 +850,7 @@ const handleAdminPartDelete = (row, index) => {
                 if (action === 'confirm') {
                     handleAdminPartDeleteSub(row, index)
                 }
-            }
+            },
         })
     } else {
         AdminPartTableData.value.splice(index, 1)
@@ -791,8 +858,8 @@ const handleAdminPartDelete = (row, index) => {
 }
 
 const handleAdminPartDeleteSub = async (row, index) => {
-    const {error, code} = await bezierApi.delPartData({
-        ids: row.id
+    const { error, code } = await bezierApi.delPartData({
+        ids: row.id,
     })
     if (!error && code === 200) {
         window?.$message?.success('删除成功')
@@ -800,8 +867,6 @@ const handleAdminPartDeleteSub = async (row, index) => {
     }
 
 }
-
-
 </script>
 
 <style lang="scss" scoped>

+ 246 - 213
src/views/tentative/detect/test.vue

@@ -1,25 +1,28 @@
 <template>
     <div class="hc-page-layout-box">
-        <div :style="'width:' + leftWidth + 'px;'" class="hc-layout-left-box">
+        <div :style="`width:${leftWidth}px;`" class="hc-layout-left-box">
             <div class="hc-project-box">
                 <div class="hc-project-icon-box">
-                    <HcIcon name="stack"/>
+                    <HcIcon name="stack" />
                 </div>
                 <div class="ml-2 project-name-box">
-                    <span class="text-xl text-cut project-alias">{{ projectInfo['projectAlias'] }}</span>
-                    <div class="text-xs text-cut project-name">{{ projectInfo['name'] }}</div>
+                    <span class="text-xl text-cut project-alias">{{ projectInfo.projectAlias }}</span>
+                    <div class="text-xs text-cut project-name">
+                        {{ projectInfo.name }}
+                    </div>
                 </div>
             </div>
             <div class="hc-tree-box">
                 <el-scrollbar>
                     <TestTree
-                        :autoExpandKeys="treeAutoExpandKeys"
-                        :projectId="projectId"
-                        :tenantId="userInfo?.tenant_id"
-                        :wbsTempId="projectInfo?.referenceWbsTemplateIdTrial"
-                        :wbsType="2"
-                        @nodeTap="wbsElTreeClick"/>
-                        <!-- <HcLazyTree
+                        :auto-expand-keys="treeAutoExpandKeys"
+                        :project-id="projectId"
+                        :tenant-id="userInfo?.tenant_id"
+                        :wbs-temp-id="projectInfo?.referenceWbsTemplateIdTrial"
+                        :wbs-type="2"
+                        @nodeTap="wbsElTreeClick"
+                    />
+                    <!-- <HcLazyTree
                                 :isType="false"
                                 :autoExpandKeys="treeAutoExpandKeys"
                                 @load="treeLoadNode"
@@ -27,132 +30,155 @@
                         /> -->
                 </el-scrollbar>
             </div>
-            <!--左右拖动-->
-            <div class="horizontal-drag-line" @mousedown="onmousedown"/>
+            <!-- 左右拖动 -->
+            <div class="horizontal-drag-line" @mousedown="onmousedown" />
         </div>
         <div class="hc-page-content-box">
-            <HcCard :scrollbar="false" actionSize="lg">
+            <HcCard :scrollbar="false" action-size="lg">
                 <template #header>
                     <HcTooltip keys="tentative_detect_test_add">
                         <el-button :disabled="!primaryKeyId" hc-btn type="primary" @click="addFormModalClick">
-                            <HcIcon name="add-circle"/>
+                            <HcIcon name="add-circle" />
                             <span>新增</span>
                         </el-button>
                     </HcTooltip>
                     <HcTooltip keys="tentative_detect_test_copy">
-                        <el-button :disabled="tableCheckedKeys.length <= 0" :loading="copyLoading" hc-btn
-                                   @click="copyDataClick">
-                            <HcIcon name="file-copy-2"/>
+                        <el-button
+                            :disabled="tableCheckedKeys.length <= 0" :loading="copyLoading" hc-btn
+                            @click="copyDataClick"
+                        >
+                            <HcIcon name="file-copy-2" />
                             <span>复制</span>
                         </el-button>
                     </HcTooltip>
                     <HcTooltip keys="tentative_detect_test_del">
-                        <el-button :disabled="tableCheckedKeys.length <= 0" :loading="removeLoading" hc-btn
-                                   @click="delModalClick">
-                            <HcIcon name="delete-bin-2"/>
+                        <el-button
+                            :disabled="tableCheckedKeys.length <= 0" :loading="removeLoading" hc-btn
+                            @click="delModalClick"
+                        >
+                            <HcIcon name="delete-bin-2" />
                             <span>删除</span>
                         </el-button>
                     </HcTooltip>
                     <HcTooltip keys="tentative_detect_test_print">
-                        <el-button :disabled="tableCheckedKeys.length <= 0" :loading="printPdfLoading" hc-btn
-                                   @click="printPdfClick">
-                            <HcIcon name="printer"/>
+                        <el-button
+                            :disabled="tableCheckedKeys.length <= 0" :loading="printPdfLoading" hc-btn
+                            @click="printPdfClick"
+                        >
+                            <HcIcon name="printer" />
                             <span>批量打印</span>
                         </el-button>
                     </HcTooltip>
                     <HcTooltip keys="tentative_detect_test_report">
-                        <el-button :disabled="tableCheckedKeys.length <= 0" :loading="reportPdfLoading" hc-btn
-                                   @click="reportPdfClick">
-                            <HcIcon name="send-plane-2"/>
+                        <el-button
+                            :disabled="tableCheckedKeys.length <= 0" :loading="reportPdfLoading" hc-btn
+                            @click="reportPdfClick"
+                        >
+                            <HcIcon name="send-plane-2" />
                             <span>批量上报</span>
                         </el-button>
                     </HcTooltip>
                     <HcTooltip keys="tentative_detect_test_quit">
-                        <el-button :disabled="tableCheckedKeys.length <= 0" :loading="quitPdfLoading" hc-btn
-                                   @click="quitPdfClick">
-                            <HcIcon name="delete-bin-3"/>
+                        <el-button
+                            :disabled="tableCheckedKeys.length <= 0" :loading="quitPdfLoading" hc-btn
+                            @click="quitPdfClick"
+                        >
+                            <HcIcon name="delete-bin-3" />
                             <span>批量废除</span>
                         </el-button>
                     </HcTooltip>
                     <HcTooltip keys="tentative_detect_test_null">
-                        <el-button :disabled="tableCheckedKeys.length <= 0" :loading="printNullPdfLoading" hc-btn
-                                   @click="printNullPdfClick">
-                            <HcIcon name="printer"/>
+                        <el-button
+                            :disabled="tableCheckedKeys.length <= 0" :loading="printNullPdfLoading" hc-btn
+                            @click="printNullPdfClick"
+                        >
+                            <HcIcon name="printer" />
                             <span>打印空表</span>
                         </el-button>
                     </HcTooltip>
                 </template>
                 <template #extra>
-                    <el-button :type="authBtnTabKey === '1'?'primary':''" hc-btn @click="authBtnTabClick('1')">
-                        <HcIcon name="folder-user"/>
+                    <el-button :type="authBtnTabKey === '1' ? 'primary' : ''" hc-btn @click="authBtnTabClick('1')">
+                        <HcIcon name="folder-user" />
                         <span>施工自检</span>
                     </el-button>
-                    <el-button :type="authBtnTabKey === '2'?'primary':''" hc-btn @click="authBtnTabClick('2')">
-                        <HcIcon name="folder-shield"/>
+                    <el-button :type="authBtnTabKey === '2' ? 'primary' : ''" hc-btn @click="authBtnTabClick('2')">
+                        <HcIcon name="folder-shield" />
                         <span>监理质检</span>
                     </el-button>
                 </template>
                 <template #search>
                     <div class="w-40">
-                        <el-input v-model="searchForm.trialUserName" clearable placeholder="请输入试验人员"
-                                  @keyup="keyUpEvent"/>
+                        <el-input
+                            v-model="searchForm.trialUserName" clearable placeholder="请输入试验人员"
+                            @keyup="keyUpEvent"
+                        />
                     </div>
                     <div class="w-40 ml-2">
                         <el-select v-model="searchForm.queryStatus" clearable placeholder="请选择是否合格">
-                            <el-option v-for="item in qualifiedData" :key="item.value" :label="item['label']"
-                                       :value="item['value']"/>
+                            <el-option
+                                v-for="item in qualifiedData" :key="item.value" :label="item.label"
+                                :value="item.value"
+                            />
                         </el-select>
                     </div>
                     <div class="w-64 ml-2">
-                        <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate"/>
+                        <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate" />
                     </div>
                     <div class="w-72 ml-2">
-                        <el-input v-model="searchForm.queryValue" clearable placeholder="请输入项目名称关键字"
-                                  @keyup="keyUpEvent"/>
+                        <el-input
+                            v-model="searchForm.queryValue" clearable placeholder="请输入项目名称关键字"
+                            @keyup="keyUpEvent"
+                        />
                     </div>
                     <div class="ml-2">
                         <el-button type="primary" @click="searchClick">
-                            <HcIcon name="search-2"/>
+                            <HcIcon name="search-2" />
                             <span>搜索</span>
                         </el-button>
                     </div>
                 </template>
-                <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck
-                         @selection-change="tableSelection">
-                    <template #recordNo="{row}">
-                        <span class="text-link" @click="tableRowEdit(row,'1')">{{ row?.recordNo }}</span>
+                <HcTable
+                    ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" is-check
+                    @selection-change="tableSelection"
+                >
+                    <template #recordNo="{ row }">
+                        <span class="text-link" @click="tableRowEdit(row, '1')">{{ row?.recordNo }}</span>
                     </template>
-                    <template #reportNo="{row}">
-                        <span class="text-link" @click="tableRowEdit(row,'2')">{{ row?.reportNo }}</span>
+                    <template #reportNo="{ row }">
+                        <span class="text-link" @click="tableRowEdit(row, '2')">{{ row?.reportNo }}</span>
                     </template>
-                    <template #trialProjectName="{row}">
+                    <template #trialProjectName="{ row }">
                         <span class="text-link font-bold" @click="tableRowPdf(row)">{{ row?.trialProjectName }}</span>
                     </template>
-                    <template #taskStatus="{row}">
+                    <template #taskStatus="{ row }">
                         <!-- <el-tag :type="`${row.status === 2 ? 'success' : row.status === 0 ? 'warning' : row.status === 1 ? 'danger' : 'info'}`" -->
                         <el-tag
-                            v-if="row['taskStatus']"
+                            v-if="row.taskStatus"
                             :type="`${row.taskStatus === '已审批' ? 'success' : row.taskStatus === '待审批' ? 'warning' : row.taskStatus === '已废除' ? 'danger' : 'info'}`"
-                            class="mx-1" effect="dark">{{ row['taskStatus'] }}
+                            class="mx-1" effect="dark"
+                        >
+                            {{ row.taskStatus }}
                         </el-tag>
                     </template>
-                    <template #detectionCategory="{row}">
+                    <template #detectionCategory="{ row }">
                         <!-- <span>{{arrKeyValue(categoryData, 'dictKey', 'dictValue', row.detectionCategory)}}</span> -->
                         <span>{{ row.detectionCategoryName }}</span>
                     </template>
-                    <template #isUploadCertificate="{row}">
+                    <template #isUploadCertificate="{ row }">
                         <!-- <span>{{row.isUploadCertificate == 0 ? '是':row.isUploadCertificate == -1?'' : '否'}}</span> -->
                         <span>{{ row.isUploadCertificateName }}</span>
                     </template>
-                    <template #contractId="{row}">
+                    <template #contractId="{ row }">
                         <span>{{ contractInfo?.name }}</span>
                     </template>
-                    <template #detectionResult="{row}">
-                        <span>{{ row?.reportNo&&row?.reportNo.length>0?row.detectionResultName:'' }}</span>
+                    <template #detectionResult="{ row }">
+                        <span>{{ row?.reportNo && row?.reportNo.length > 0 ? row.detectionResultName : '' }}</span>
                     </template>
-                    <template #action="{row}">
+                    <template #action="{ row }">
                         <HcTooltip keys="tentative_detect_test_annex">
-                            <el-button plain size="small" type="primary" @click="viewAttachmentModalClick(row)">附件
+                            <el-button plain size="small" type="primary" @click="viewAttachmentModalClick(row)">
+                                附件
                             </el-button>
                         </HcTooltip>
                         <HcTooltip keys="tentative_detect_test_info">
@@ -163,20 +189,22 @@
                     </template>
                 </HcTable>
                 <template #action>
-                    <HcPages :pages="searchForm" @change="pageChange"/>
+                    <HcPages :pages="searchForm" @change="pageChange" />
                 </template>
             </HcCard>
         </div>
 
-        <!--查看附件-->
-        <HcDialog :footer="false" :show="viewAttachmentModal" isTable title="查看附件" widths="70rem"
-                  @close="viewAttachmentModalClose">
+        <!-- 查看附件 -->
+        <HcDialog
+            :footer="false" :show="viewAttachmentModal" is-table title="查看附件" widths="70rem"
+            @close="viewAttachmentModalClose"
+        >
             <template #extra>
-                <HcNewSwitch :datas="tabTypeTab" :keys="tabTypeKey" @change="tabTypeChange"/>
+                <HcNewSwitch :datas="tabTypeTab" :keys="tabTypeKey" @change="tabTypeChange" />
             </template>
             <div v-loading="viewAttachmentLoading" class="hc-switch-tab-content">
                 <div class="h-full w-full flex">
-                    <div v-if="viewAttachmentData.length>0" class="pdf-file-list-box">
+                    <div v-if="viewAttachmentData.length > 0" class="pdf-file-list-box">
                         <template v-for="item in viewAttachmentData">
                             <div :class="[item.isCheck ? 'cur' : '']" class="file-item" @click="viewCurFile(item)">
                                 {{ item.fileName || '' }}
@@ -184,65 +212,71 @@
                         </template>
                     </div>
                     <div v-else class="pdf-file-list-box">
-                        <HcNoData></HcNoData>
+                        <HcNoData />
                     </div>
-                    <iframe v-if="attachmentPdfUrl" :src="attachmentPdfUrl" frameborder='1' height='100%' width='80%'/>
+                    <iframe v-if="attachmentPdfUrl" :src="attachmentPdfUrl" frameborder="1" height="100%" width="80%" />
                     <div class="hc-no-table-form">
                         <div class="table-form-no">
-                            <HcDragUpload :datas="uploadData" :fileList="fileListData" @delFile="delFileData"
-                                          @finished="uploadFinished" @progress="uploadprogress"/>
-
+                            <HcDragUpload
+                                :datas="uploadData" :file-list="fileListData" @delFile="delFileData"
+                                @finished="uploadFinished" @progress="uploadprogress"
+                            />
                         </div>
                     </div>
                 </div>
             </div>
         </HcDialog>
 
-        <!--查看样品信息-->
-        <HcDialog :footer="false" :show="samplingRecordModal" isTable title="查看样品信息" widths="60%"
-                  @close="samplingRecordModalClose">
-            <HcTable :column="samplingTableColumn" :datas="samplingTableData" :isIndex="false"
-                     :loading="samplingTableLoading"></HcTable>
+        <!-- 查看样品信息 -->
+        <HcDialog
+            :footer="false" :show="samplingRecordModal" is-table title="查看样品信息" widths="60%"
+            @close="samplingRecordModalClose"
+        >
+            <HcTable
+                :column="samplingTableColumn" :datas="samplingTableData" :is-index="false"
+                :loading="samplingTableLoading"
+            />
         </HcDialog>
-        <!--批量上报审批-->
-        <HcReportModal :addition="reportAddition" :contractId="contractId" :ids="reportIds"
-                       :projectId="projectId" :show="showReportModal" :taskName="reportTaskName"
-                       :trialSelfInspectionRecordId="1"
-                       :typeData="reportTypeData" title="批量上报审批" type="wbs"
-                       url="informationWriteQuery/batchTask" @finish="showReportFinish"
-                       @hide="showReportModal = false"/>
-
+        <!-- 批量上报审批 -->
+        <HcReportModal
+            :addition="reportAddition" :contract-id="contractId" :ids="reportIds"
+            :project-id="projectId" :show="showReportModal" :task-name="reportTaskName"
+            :trial-self-inspection-record-id="1"
+            :type-data="reportTypeData" title="批量上报审批" type="wbs"
+            url="informationWriteQuery/batchTask" @finish="showReportFinish"
+            @hide="showReportModal = false"
+        />
     </div>
 </template>
 
 <script setup>
-import {ref, watch, onMounted,onActivated} from "vue";
-import {useRouter} from 'vue-router'
-import {useAppStore} from "~src/store";
-import TestTree from "../material/components/TestTree.vue"
-import {getStoreValue, setStoreValue, delStoreValue} from '~src/utils/storage'
-import HcDragUpload from "./components/HcDragUpload.vue"
-import dataApi from "~api/tentative/detect/test";
-import {getDictionary} from "~api/other";
-import {eVisaTaskCheckApi} from "~api/other"
-import wbsApi from "~api/data-fill/wbs"
-import samplingApi from "~api/tentative/material/sampling"
-import {getArrValue, arrKeyValue, isString, arrToId,getObjValue} from "js-fast-way"
-
-import {Loading} from "element-plus/es/components/loading/src/service";
-import notableform from '~src/assets/view/notableform.svg';
-import {delMessage} from "~uti/tools";
+import { onActivated, onMounted, ref, watch } from 'vue'
+import { useRouter } from 'vue-router'
+import { useAppStore } from '~src/store'
+import TestTree from '../material/components/TestTree.vue'
+import { delStoreValue, getStoreValue, setStoreValue } from '~src/utils/storage'
+import HcDragUpload from './components/HcDragUpload.vue'
+import dataApi from '~api/tentative/detect/test'
+import { getDictionary } from '~api/other'
+import { eVisaTaskCheckApi } from '~api/other'
+import wbsApi from '~api/data-fill/wbs'
+import samplingApi from '~api/tentative/material/sampling'
+import { arrKeyValue, arrToId, getArrValue, getObjValue, isString } from 'js-fast-way'
+
+import { Loading } from 'element-plus/es/components/loading/src/service'
+import notableform from '~src/assets/view/notableform.svg'
+import { delMessage } from '~uti/tools'
 
 //变量
 const router = useRouter()
 const useAppState = useAppStore()
-const userInfo = ref(useAppState.getUserInfo);
-const projectId = ref(useAppState.getProjectId);
-const contractId = ref(useAppState.getContractId);
-const projectInfo = ref(useAppState.getProjectInfo);
-const contractInfo = ref(useAppState.getContractInfo);
+const userInfo = ref(useAppState.getUserInfo)
+const projectId = ref(useAppState.getProjectId)
+const contractId = ref(useAppState.getContractId)
+const projectInfo = ref(useAppState.getProjectInfo)
+const contractInfo = ref(useAppState.getContractInfo)
 const isCollapse = ref(useAppState.getCollapse)
-const isBubble = ref(useAppState.getBubble);
+const isBubble = ref(useAppState.getBubble)
 
 //监听
 watch(() => [
@@ -275,34 +309,34 @@ onActivated(() => {
     getTableData()
 })
 const qualifiedData = ref([
-    {label: '不合格', value: '0'},
-    {label: '合格', value: '1'}
+    { label: '不合格', value: '0' },
+    { label: '合格', value: '1' },
 ])
 
 //加载树形结构数据
-const treeLoadNode = async ({node, item, level},resolve) => {
-    let contractIdRelation = '', parentId = '0', primaryKeyId = '';
+const treeLoadNode = async ({ node, item, level }, resolve) => {
+    let contractIdRelation = '', parentId = '0', primaryKeyId = ''
     if (level !== 0) {
-        const nodeData = getObjValue(item);
+        const nodeData = getObjValue(item)
         contractIdRelation = nodeData?.contractIdRelation || ''
-        parentId =nodeData?.id
+        parentId = nodeData?.id
         primaryKeyId = nodeData?.id || ''
     }
     //获取数据
-    const {data} = await samplingApi.queryLazyTree({
+    const { data } = await samplingApi.queryLazyTree({
         wbsId: projectInfo.value?.referenceWbsTemplateIdTrial,
         tenantId: userInfo.value?.tenant_id,
         projectId: projectId.value,
         parentId,
-        wbsType: 2
+        wbsType: 2,
     })
     resolve(getArrValue(data))
 }
 //获取检测类别类型
 const categoryData = ref([])
 const getCategoryData = async () => {
-    const {data} = await getDictionary({
-        code: 'trial_detection_category'
+    const { data } = await getDictionary({
+        code: 'trial_detection_category',
     })
     const arrData = getArrValue(data)
     arrData.forEach(item => {
@@ -314,7 +348,7 @@ const getCategoryData = async () => {
 //搜索表单
 const searchForm = ref({
     trialUserName: null, queryStatus: null, queryValue: null, type: '1',
-    current: 1, size: 20, total: 0
+    current: 1, size: 20, total: 0,
 })
 
 //树相关的变量
@@ -322,7 +356,7 @@ const primaryKeyId = ref('')
 const nodeDataInfo = ref({})
 
 //树被点击
-const wbsElTreeClick = ({data, keys}) => {
+const wbsElTreeClick = ({ data, keys }) => {
     nodeDataInfo.value = data
     primaryKeyId.value = data['primaryKeyId'] || ''
     setStoreValue('testTreeItem', data)
@@ -330,8 +364,8 @@ const wbsElTreeClick = ({data, keys}) => {
     treeAutoExpandKeys.value = keys
     setStoreValue('testTreeExpandKeys', keys)
     //改变搜索表单数据
-    searchForm.value.nodeId = data['primaryKeyId'];
-    searchForm.value.current = 1;
+    searchForm.value.nodeId = data['primaryKeyId']
+    searchForm.value.current = 1
     getTableData()
 }
 
@@ -340,25 +374,25 @@ const authBtnTabKey = ref('1')
 const authBtnTabClick = (val) => {
     if (val !== authBtnTabKey.value) {
         authBtnTabKey.value = val
-        searchForm.value.type = val;
-        searchForm.value.current = 1;
+        searchForm.value.type = val
+        searchForm.value.current = 1
         getTableData()
     }
 }
 //contractType,  1施工,2监理
 const setContractType = (contractType) => {
-    let typeValue = '1';
+    let typeValue = '1'
     if (contractType > 0) {
         typeValue = contractType + ''
     }
     authBtnTabKey.value = typeValue
     searchForm.value.type = typeValue
-    searchForm.value.current = 1;
+    searchForm.value.current = 1
 }
 
 //日期时间被选择
 const betweenTime = ref(null)
-const betweenTimeUpdate = ({arr}) => {
+const betweenTimeUpdate = ({ arr }) => {
     betweenTime.value = arr
     if (arr.length > 0) {
         searchForm.value.startTime = arr[0]
@@ -371,20 +405,20 @@ const betweenTimeUpdate = ({arr}) => {
 
 //回车搜索
 const keyUpEvent = (e) => {
-    if (e.key === "Enter") {
-        searchForm.value.current = 1;
+    if (e.key === 'Enter') {
+        searchForm.value.current = 1
         getTableData()
     }
 }
 
 //搜索
 const searchClick = () => {
-    searchForm.value.current = 1;
+    searchForm.value.current = 1
     getTableData()
 }
 
 //分页被点击
-const pageChange = ({current, size}) => {
+const pageChange = ({ current, size }) => {
     searchForm.value.current = current
     searchForm.value.size = size
     getTableData()
@@ -393,24 +427,24 @@ const pageChange = ({current, size}) => {
 //表格数据
 const tableRef = ref(null)
 const tableColumn = ref([
-    {key: 'recordNo', name: '记录编号', width: 220},
-    {key: 'reportNo', name: '报告编号', width: 220},
-    {key: 'samplingLocation', name: '取样地点', width: 220},
-    {key: 'trialProjectName', name: '试验项目名称', width: 220},
-    {key: 'detectionResult', name: '检测结果', width: 160},
-    {key: 'taskStatus', name: '任务状态', width: 140},
-    {key: 'detectionCategory', name: '检测类别', width: 120},
-    {key: 'isUploadCertificate', name: '是否上传合格证', width: 130},
-    {key: 'contractId', name: '合同段', width: 220},
-    {key: 'company', name: '单位', width: 160},
-    {key: 'specificationNumber', name: '样品编号', width: 220},
-    {key: 'specificationModel', name: '规格类型', width: 200},
+    { key: 'recordNo', name: '记录编号', width: 220 },
+    { key: 'reportNo', name: '报告编号', width: 220 },
+    { key: 'samplingLocation', name: '取样地点', width: 220 },
+    { key: 'trialProjectName', name: '试验项目名称', width: 220 },
+    { key: 'detectionResult', name: '检测结果', width: 160 },
+    { key: 'taskStatus', name: '任务状态', width: 140 },
+    { key: 'detectionCategory', name: '检测类别', width: 120 },
+    { key: 'isUploadCertificate', name: '是否上传合格证', width: 130 },
+    { key: 'contractId', name: '合同段', width: 220 },
+    { key: 'company', name: '单位', width: 160 },
+    { key: 'specificationNumber', name: '样品编号', width: 220 },
+    { key: 'specificationModel', name: '规格类型', width: 200 },
 
     //{key:'projectPosition', name: '工程部位及用途', width: 160},
-    {key: 'projectPositionName', name: '工程部位及用途', width: 160},
-    {key: 'reportDate', name: '报告日期', width: 170},
-    {key: 'trialUserName', name: '试验人员', width: 170},
-    {key: 'action', name: '操作', width: 150, fixed: 'right', align: 'center'},
+    { key: 'projectPositionName', name: '工程部位及用途', width: 160 },
+    { key: 'reportDate', name: '报告日期', width: 170 },
+    { key: 'trialUserName', name: '试验人员', width: 170 },
+    { key: 'action', name: '操作', width: 150, fixed: 'right', align: 'center' },
 ])
 const tableData = ref([])
 
@@ -418,10 +452,10 @@ const tableData = ref([])
 const tableLoading = ref(false)
 const getTableData = async () => {
     tableLoading.value = true
-    const {error, code, data} = await dataApi.queryPage({
+    const { error, code, data } = await dataApi.queryPage({
         ...searchForm.value,
         projectId: projectId.value,
-        contractId: contractId.value
+        contractId: contractId.value,
     })
     //处理数据
     tableLoading.value = false
@@ -435,7 +469,7 @@ const getTableData = async () => {
 }
 
 //多选
-const tableCheckedKeys = ref([]);
+const tableCheckedKeys = ref([])
 const tableSelection = (rows) => {
     tableCheckedKeys.value = rows
 }
@@ -449,7 +483,7 @@ const addFormModalClick = () => {
             nodeId: primaryKeyId.value,
             dataType: authBtnTabKey.value,
             isaddType: true,
-        }
+        },
     })
 }
 
@@ -457,22 +491,22 @@ const addFormModalClick = () => {
 const tableRowEdit = (row, tabTypeKey) => {
     setStoreValue('test-form', row)
     setStoreValue('prenodeDataInfo', nodeDataInfo.value)
-    console.log(JSON.stringify(nodeDataInfo.value), 'JSON.stringify(nodeDataInfo.value)');
+    console.log(JSON.stringify(nodeDataInfo.value), 'JSON.stringify(nodeDataInfo.value)')
     router.push({
         path: '/tentative/detect/test-form',
         query: {
             id: row.id,
             nodeId: row.nodeId,
             dataType: row.type,
-            tabTypeKey: tabTypeKey
+            tabTypeKey: tabTypeKey,
             // prenodeDataInfo:JSON.stringify(nodeDataInfo.value)
 
-        }
+        },
     })
 }
 
 //预览PDF
-const tableRowPdf = ({pdfUrl}) => {
+const tableRowPdf = ({ pdfUrl }) => {
     if (pdfUrl) {
         window.open(pdfUrl, '_blank')
     } else {
@@ -482,7 +516,7 @@ const tableRowPdf = ({pdfUrl}) => {
 
 //复制
 const copyDataClick = () => {
-    const rows = tableCheckedKeys.value;
+    const rows = tableCheckedKeys.value
     if (rows.length > 0) {
         const ids = arrToId(rows)
         copyDataApi(ids)
@@ -496,8 +530,8 @@ const copyLoading = ref(false)
 const copyDataApi = async (ids) => {
     //请求数据
     copyLoading.value = true
-    const {error, code, msg} = await dataApi.copyData({
-        ids: ids
+    const { error, code, msg } = await dataApi.copyData({
+        ids: ids,
     }, false)
     //处理数据
     copyLoading.value = false
@@ -511,7 +545,7 @@ const copyDataApi = async (ids) => {
 
 //删除
 const delModalClick = () => {
-    const rows = tableCheckedKeys.value;
+    const rows = tableCheckedKeys.value
     if (rows.length > 0) {
         delMessage(() => {
             const ids = arrToId(rows)
@@ -527,8 +561,8 @@ const removeLoading = ref(false)
 const removeDataApi = async (ids) => {
     //请求数据
     removeLoading.value = true
-    const {error, code, msg} = await dataApi.removeData({
-        ids: ids
+    const { error, code, msg } = await dataApi.removeData({
+        ids: ids,
     }, false)
     //处理数据
     removeLoading.value = false
@@ -543,13 +577,13 @@ const removeDataApi = async (ids) => {
 //批量打印
 const printPdfLoading = ref(false)
 const printPdfClick = async () => {
-    const rows = tableCheckedKeys.value;
+    const rows = tableCheckedKeys.value
     if (rows.length > 0) {
         const ids = arrToId(rows)
         //请求数据
         printPdfLoading.value = true
-        const {error, code, msg, data} = await dataApi.printPdf({
-            ids: ids
+        const { error, code, msg, data } = await dataApi.printPdf({
+            ids: ids,
         }, false)
         //处理数据
         const pdfUrl = isString(data) ? data || '' : ''
@@ -567,7 +601,7 @@ const printPdfClick = async () => {
 //批量废除
 const quitPdfLoading = ref(false)
 const quitPdfClick = async () => {
-    const rows = tableCheckedKeys.value;
+    const rows = tableCheckedKeys.value
     if (rows.length > 0) {
         const ids = arrToId(rows)
         const res1 = rows.some(item => item.taskStatus === '未上报')
@@ -579,8 +613,8 @@ const quitPdfClick = async () => {
         } else {
             //请求数据
             quitPdfLoading.value = true
-            const {error, code, msg, data} = await dataApi.batchAbolish({
-                ids: ids
+            const { error, code, msg, data } = await dataApi.batchAbolish({
+                ids: ids,
             }, false)
             //处理数据
             if (!error && code === 200) {
@@ -608,7 +642,7 @@ const showReportModal = ref(false)
 const reportLoading = ref(false)
 const reportTypeData = ref([])
 const reportPdfClick = async () => {
-    const rows = tableCheckedKeys.value;
+    const rows = tableCheckedKeys.value
     if (rows.length > 0) {
         const info = getStoreValue('prenodeDataInfo') || {}
         const res1 = rows.some(item => item.pdfUrl.length < 1)
@@ -623,15 +657,15 @@ const reportPdfClick = async () => {
             reportIds.value = ids
             const taskCheck = await eVisaTaskCheckApi({
                 projectId: projectId.value,
-                contractId: contractId.value
+                contractId: contractId.value,
             })
             //处理数据
-            let newArr = [];
+            let newArr = []
             for (let i = 0; i < rows.length; i++) {
                 newArr.push(rows[i]['tableIds'])
             }
-            reportTypeData.value = [...newArr];
-            console.log(reportTypeData.value, ' reportTypeData.value');
+            reportTypeData.value = [...newArr]
+            console.log(reportTypeData.value, ' reportTypeData.value')
             reportLoading.value = false
             if (taskCheck) {
                 //初始弹出弹窗,防呆
@@ -642,10 +676,10 @@ const reportPdfClick = async () => {
                 }
                 showReportModal.value = true
                 //请求文件题名
-                const {data} = await wbsApi.queryDocumentTitle({
+                const { data } = await wbsApi.queryDocumentTitle({
                     // primaryKeyId: info['primaryKeyId'],
                     primaryKeyId: rows[0].id,
-                    classify: authBtnTabKey.value
+                    classify: authBtnTabKey.value,
                 })
                 reportTaskName.value = isString(data) ? data : ''
 
@@ -668,13 +702,13 @@ const showReportFinish = () => {
 //打印空表
 const printNullPdfLoading = ref(false)
 const printNullPdfClick = async () => {
-    const rows = tableCheckedKeys.value;
+    const rows = tableCheckedKeys.value
     if (rows.length > 0) {
         const ids = arrToId(rows)
         //请求数据
         printNullPdfLoading.value = true
-        const {error, code, msg, data} = await dataApi.printNullPdf({
-            ids: ids
+        const { error, code, msg, data } = await dataApi.printNullPdf({
+            ids: ids,
         }, false)
         //处理数据
         const pdfUrl = isString(data) ? data || '' : ''
@@ -694,14 +728,14 @@ const viewAttachmentModal = ref(false)
 const viewAttachmentLoading = ref(false)
 const viewAttachmentId = ref('')
 const viewAttachmentData = ref([])
-const viewAttachmentModalClick = async ({id}) => {
+const viewAttachmentModalClick = async ({ id }) => {
     viewAttachmentId.value = id
     viewAttachmentModal.value = true
     getAttachmentModalClick(viewAttachmentId.value, '1')
 
 }
 const getCaption = (obj) => {
-    const index = obj.lastIndexOf("pdf")
+    const index = obj.lastIndexOf('pdf')
 
     return index
 }
@@ -709,8 +743,8 @@ const getCaption = (obj) => {
 //获取附件
 const getAttachmentModalClick = async (id, type) => {
     viewAttachmentLoading.value = true
-    const {error, code, data} = await dataApi.ancillaryDocumentsList({id: id, type: type})
-    console.log(data, 'data');
+    const { error, code, data } = await dataApi.ancillaryDocumentsList({ id: id, type: type })
+    console.log(data, 'data')
     viewAttachmentLoading.value = false
     if (!error && code === 200) {
         viewAttachmentData.value = getArrValue(data)
@@ -724,7 +758,7 @@ const getAttachmentModalClick = async (id, type) => {
 
 }
 const refeshAttachmentModalClick = async (id, type) => {
-    const {error, code, data} = await dataApi.ancillaryDocumentsList({id: id, type: type})
+    const { error, code, data } = await dataApi.ancillaryDocumentsList({ id: id, type: type })
     //处理数据
     viewAttachmentLoading.value = false
     if (!error && code === 200) {
@@ -745,12 +779,12 @@ const curFileData = ref({})
 //类型tab数据和相关处理
 const tabTypeKey = ref('1')
 const tabTypeTab = ref([
-    {key: '1', name: '生产合格证'},
-    {key: '2', name: '厂家质检报告'},
-    {key: '3', name: '其他文件'},
-]);
+    { key: '1', name: '生产合格证' },
+    { key: '2', name: '厂家质检报告' },
+    { key: '3', name: '其他文件' },
+])
 const tabTypeChange = (item) => {
-    console.log(1111111111);
+    console.log(1111111111)
     tabTypeKey.value = item?.key
     getAttachmentModalClick(viewAttachmentId.value, item?.key)
     fileListData.value = []
@@ -771,7 +805,7 @@ const listuploadref = ref('1')
 //截取文件名称
 const splitFileName = (str) => {
     // if(str.indexOf("https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload") != -1){
-    if (str.indexOf("https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload") != -1) {
+    if (str.indexOf('https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload') != -1) {
         let a = str.split('//')[2].split('/')[2]
         return a
     } else {
@@ -781,11 +815,11 @@ const splitFileName = (str) => {
 }
 //查看当前文件pdf
 const viewCurFile = (item) => {
-    console.log(item, 'item');
+    console.log(item, 'item')
     if (item) {
         curFileData.value = item
         let arr = []
-        arr.push({name: item.fileName, url: item.url})
+        arr.push({ name: item.fileName, url: item.url })
         fileListData.value = getArrValue(arr)
         viewAttachmentData.value.forEach((ele) => {
             ele.isCheck = false
@@ -798,30 +832,30 @@ const viewCurFile = (item) => {
 
 //上传进度
 const uploadprogress = (res) => {
-    console.log('进度');
+    console.log('进度')
 }
 
 //上传完成
 const uploadFinished = async (res) => {
-    const {error, code, data} = await dataApi.updateAncillaryDocument(
+    const { error, code, data } = await dataApi.updateAncillaryDocument(
         {
             selfId: viewAttachmentId.value,
             url: res.link,
             type: tabTypeKey.value,
 
         })
-    console.log(data, 'data');
+    console.log(data, 'data')
     if (!error && code === 200) {
         refeshAttachmentModalClick(viewAttachmentId.value, tabTypeKey.value)
     }
 }
 //上传文件delFileData
 const delFileData = async (res) => {
-    console.log('删除文件', curFileData.value);
+    console.log('删除文件', curFileData.value)
     if (curFileData.value.isDel == 0) {
         window.$message.warning('该文件不可删除')
     } else {
-        const {error, code, data} = await dataApi.removedocuments(
+        const { error, code, data } = await dataApi.removedocuments(
             {
                 id: curFileData.value.id,
             })
@@ -835,26 +869,26 @@ const delFileData = async (res) => {
 
 //样品信息数据
 const samplingTableColumn = ref([
-    {key: 'materialName', name: '样品名称'},
-    {key: 'samplingDate', name: '取样时间'},
-    {key: 'specificationNumber', name: '样品编号'},
-    {key: 'specificationModel', name: '规格型号'},
-    {key: 'materialCount', name: '试样数量'},
-    {key: 'calculationUnit', name: '计算单位'},
-    {key: 'proposedPosition', name: '拟用部位'},
-    {key: 'representativeCount', name: '代表数量'},
-    {key: 'userName', name: '取样人'},
+    { key: 'materialName', name: '样品名称' },
+    { key: 'samplingDate', name: '取样时间' },
+    { key: 'specificationNumber', name: '样品编号' },
+    { key: 'specificationModel', name: '规格型号' },
+    { key: 'materialCount', name: '试样数量' },
+    { key: 'calculationUnit', name: '计算单位' },
+    { key: 'proposedPosition', name: '拟用部位' },
+    { key: 'representativeCount', name: '代表数量' },
+    { key: 'userName', name: '取样人' },
 ])
 const samplingTableData = ref([])
 const samplingTableLoading = ref(false)
 
 //取样记录
 const samplingRecordModal = ref(false)
-const samplingRecordModalClick = async ({id}) => {
+const samplingRecordModalClick = async ({ id }) => {
     samplingRecordModal.value = true
     samplingTableLoading.value = true
-    const {error, code, data} = await dataApi.getSampleList({
-        id: id
+    const { error, code, data } = await dataApi.getSampleList({
+        id: id,
     })
     //处理数据
     samplingTableLoading.value = false
@@ -872,18 +906,18 @@ const samplingRecordModalClose = () => {
 }
 
 //左右拖动,改变树形结构宽度
-const leftWidth = ref(382);
+const leftWidth = ref(382)
 const onmousedown = () => {
     const leftNum = isCollapse.value ? 142 : 272
     document.onmousemove = (ve) => {
-        let diffVal = ve.clientX - leftNum;
+        let diffVal = ve.clientX - leftNum
         if (diffVal >= 310 && diffVal <= 900) {
-            leftWidth.value = diffVal;
+            leftWidth.value = diffVal
         }
     }
     document.onmouseup = () => {
-        document.onmousemove = null;
-        document.onmouseup = null;
+        document.onmousemove = null
+        document.onmouseup = null
     }
 }
 </script>
@@ -918,5 +952,4 @@ const onmousedown = () => {
         flex: 1;
     }
 }
-
 </style>