iZaiZaiA %!s(int64=2) %!d(string=hai) anos
pai
achega
359173b381

+ 1 - 1
src/config/index.js

@@ -17,7 +17,7 @@ export default {
     statusWhiteList: [],    //http的status默认放行列表
     ossUrl: 'https://bladex-test-info.oss-cn-chengdu.aliyuncs.com', //oss地址
     smsPhone: '',  //测试接受短信验证码的手机号
-    dev_version: '202209261812',    //开发版本号
+    dev_version: '202209271024',    //开发版本号
     prod_host: 'http://47.110.251.215:8090',  //线上
     dev_host: 'http://192.168.4.6', //黄键楠
     //dev_host: 'http://192.168.3.13', //祝炜

+ 53 - 24
src/styles/app/element.scss

@@ -447,30 +447,6 @@
 }
 
 
-//设置表单样式
-.hc-excel-table-form-view {
-    position: relative;
-    display: flex;
-    justify-content: center;
-    td {
-        padding: 6px;
-        font-family: "EUDC", 宋体, v-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important;
-        .el-input {
-            background-color: #ffffff !important;
-            border-radius: 3px;
-            .el-input__wrapper {
-                background-color: inherit;
-            }
-            .el-input__wrapper.is-focus, .el-input__wrapper:hover {
-                box-shadow: 0 0 0 1.5px var(--el-input-focus-border-color) inset;
-                background-color: #eddac4;
-            }
-            //公式 #dcdcdc
-            //焦点 #eddac4
-        }
-    }
-}
-
 //设置表单的上传
 .hc-upload-table-form {
     position: relative;
@@ -510,4 +486,57 @@
     right: 0;
 }
 
+// 树样式
+.hc-tree-node {
+    .data-custom-tree-node {
+        position: relative;
+        display: flex;
+        align-items: center;
+        width: 100%;
+        color: var(--el-text-color-primary);
+        .label {
+            flex: auto;
+            font-size: 16px;
+        }
+        .label.level-name {
+            font-size: 18px;
+            font-weight: bold;
+        }
+    }
+    .el-tree-node__content {
+        height: 28px;
+    }
+    .el-tree-node__label {
+        flex: 1;
+        user-select: none;
+    }
+    .el-tree-node.is-expanded.is-current.is-focusable {
+        background: #cacaca;
+        border-radius: 4px;
+    }
+}
 
+
+//设置表单样式
+.hc-excel-table-form-view {
+    position: relative;
+    display: flex;
+    justify-content: center;
+    td {
+        padding: 6px;
+        font-family: "EUDC", 宋体, v-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important;
+        .el-input {
+            background-color: #ffffff !important;
+            border-radius: 3px;
+            .el-input__wrapper {
+                background-color: inherit;
+            }
+            .el-input__wrapper.is-focus, .el-input__wrapper:hover {
+                box-shadow: 0 0 0 1.5px var(--el-input-focus-border-color) inset;
+                background-color: #eddac4;
+            }
+            //公式 #dcdcdc
+            //焦点 #eddac4
+        }
+    }
+}

+ 53 - 0
src/styles/app/tree.scss

@@ -0,0 +1,53 @@
+// 树的线样式
+.tree-line {
+    :deep(.el-tree-node) {
+        position: relative;
+        padding-left: 12px; // 缩进量
+
+    }
+    :deep(.el-tree-node__children) {
+        padding-left: 12px; // 缩进量
+    }
+    // 竖线
+    :deep(.el-tree-node::before) {
+        content:"";
+        height: 100%;
+        width: 1px;
+        position: absolute;
+        left: 1px;
+        top: -26px;
+        border-width: 1px;
+        border-left: 2px dashed var(--el-color-primary);
+    }
+    // 当前层最后⼀个节点的竖线⾼度固定
+    :deep(.el-tree-node:last-child::before) {
+        height: 38px; // 可以⾃⼰调节到合适数值
+    }
+    // 横线
+    :deep(.el-tree-node::after) {
+        content:"";
+        width: 16px;
+        height: 20px;
+        position: absolute;
+        left: 2px;
+        top: 12px;
+        border-width: 1px;
+        border-top: 2px dashed var(--el-color-primary);
+    }
+    // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
+    & > :deep(.el-tree-node::after) {
+        border-top: none;
+    }
+    & > :deep(.el-tree-node::before) {
+        border-left: none;
+    }
+    // 展开关闭的icon
+    :deep(.el-tree-node__expand-icon) {
+        font-size: 16px;
+        &.is-leaf {
+            color: transparent;
+            font-size: 0px;
+        }
+    }
+}
+

+ 1 - 68
src/views/data-fill/components/DivisionTree.vue

@@ -144,20 +144,8 @@ const ElTreeRelationClick = (e,data,node) => {
 </script>
 
 <style lang="scss" scoped>
+@import "../../../styles/app/tree.scss";
 .data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
     .menu-icon {
         position: absolute;
         pointer-events: none;
@@ -182,63 +170,8 @@ const ElTreeRelationClick = (e,data,node) => {
         cursor: pointer;
     }
 }
-
-// 树样式
-.tree-line {
-    :deep(.el-tree-node) {
-        position: relative;
-        padding-left: 16px; // 缩进量
-    }
-    :deep(.el-tree-node__children) {
-        padding-left: 16px; // 缩进量
-    }
-    // 竖线
-    :deep(.el-tree-node::before) {
-        content:"";
-        height: 100%;
-        width: 1px;
-        position: absolute;
-        left: -3px;
-        top: -26px;
-        border-width: 1px;
-        border-left: 1px dashed #ccc;
-    }
-    // 当前层最后⼀个节点的竖线⾼度固定
-    :deep(.el-tree-node:last-child::before) {
-        height: 38px; // 可以⾃⼰调节到合适数值
-    }
-    // 横线
-    :deep(.el-tree-node::after) {
-        content:"";
-        width: 24px;
-        height: 20px;
-        position: absolute;
-        left: -3px;
-        top: 12px;
-        border-width: 1px;
-        border-top: 1px dashed #ccc;
-    }
-    // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
-    & > :deep(.el-tree-node::after) {
-        border-top: none;
-    }
-    & > :deep(.el-tree-node::before) {
-        border-left: none;
-    }
-    // 展开关闭的icon
-    :deep(.el-tree-node__expand-icon) {
-        font-size: 16px;
-        &.is-leaf {
-            color: transparent;
-            font-size: 0px;
-        }
-    }
-}
 </style>
 <style lang="scss">
-.hc-tree-node .el-tree-node__label {
-    flex: 1;
-}
 .hc-tree-node.page-division-tree.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content .el-tree-node__label .data-custom-tree-node .label.division {
     font-size: 22px;
     font-weight: bold;

+ 1 - 67
src/views/data-fill/components/DivisionTree1.vue

@@ -139,73 +139,7 @@ const ElTreeRelationClick = (e,data,node) => {
 </script>
 
 <style lang="scss" scoped>
-.data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
-}
-
-// 树样式
-.tree-line {
-    :deep(.el-tree-node) {
-        position: relative;
-        padding-left: 16px; // 缩进量
-    }
-    :deep(.el-tree-node__children) {
-        padding-left: 16px; // 缩进量
-    }
-    // 竖线
-    :deep(.el-tree-node::before) {
-        content:"";
-        height: 100%;
-        width: 1px;
-        position: absolute;
-        left: -3px;
-        top: -26px;
-        border-width: 1px;
-        border-left: 1px dashed #ccc;
-    }
-    // 当前层最后⼀个节点的竖线⾼度固定
-    :deep(.el-tree-node:last-child::before) {
-        height: 38px; // 可以⾃⼰调节到合适数值
-    }
-    // 横线
-    :deep(.el-tree-node::after) {
-        content:"";
-        width: 24px;
-        height: 20px;
-        position: absolute;
-        left: -3px;
-        top: 12px;
-        border-width: 1px;
-        border-top: 1px dashed #ccc;
-    }
-    // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
-    & > :deep(.el-tree-node::after) {
-        border-top: none;
-    }
-    & > :deep(.el-tree-node::before) {
-        border-left: none;
-    }
-    // 展开关闭的icon
-    :deep(.el-tree-node__expand-icon) {
-        font-size: 16px;
-        &.is-leaf {
-            color: transparent;
-            font-size: 0px;
-        }
-    }
-}
+@import "../../../styles/app/tree.scss";
 </style>
 <style lang="scss">
 .hc-tree-node .el-tree-node__label {

+ 2 - 14
src/views/data-fill/components/HcTreeData.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node" ref="ElTreeRef" :props="ElTreeProps" :data="datas" highlight-current accordion node-key="primaryKeyId"
+    <ElTree class="hc-tree-node tree-line" ref="ElTreeRef" :props="ElTreeProps" :data="datas" highlight-current accordion node-key="primaryKeyId"
             :default-expanded-keys="TreeExpandKey" @node-click="ElTreeClick" @node-contextmenu="ElTreeLabelContextMenu">
         <template #default="{ node, data }">
             <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
@@ -179,20 +179,8 @@ defineExpose({
 </script>
 
 <style lang="scss" scoped>
+@import "../../../styles/app/tree.scss";
 .data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
     .menu-icon {
         position: relative;
         font-size: 20px;

+ 2 - 1
src/views/data-fill/components/HcTreeNode.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node-box" ref="ElTreeRef" :props="ElTreeProps" :data="ElTreeData" :node-key="nodeKey" highlight-current accordion show-checkbox :check-strictly="isStrictly" :expand-on-click-node="false" @check="ElTreeCheckChange">
+    <ElTree class="hc-tree-node-box hc-tree-node tree-line" ref="ElTreeRef" :props="ElTreeProps" :data="ElTreeData" :node-key="nodeKey" highlight-current accordion show-checkbox :check-strictly="isStrictly" :expand-on-click-node="false" @check="ElTreeCheckChange">
         <template #default="{ node, data }">
             <div class="custom-tree-node">
                 <div class="label" @dblclick="ElTreeDblClick(data)">
@@ -122,6 +122,7 @@ const ElTreeBtnClick = (item) => {
 </script>
 
 <style lang="scss" scoped>
+@import "../../../styles/app/tree.scss";
 .custom-tree-node {
     position: relative;
     width: 100%;

+ 28 - 8
src/views/data-fill/components/ListItem.vue

@@ -238,7 +238,7 @@ const getExcelHtml = async (item,index) => {
                     onRightClick(event, KeyName, index)
                 },
                 onBlur: (event, KeyName, reg, val, msg) => {
-                    if (reg) {
+                    if (val && reg) {
                         console.log(KeyName, val, reg, msg)
                         let regx = new RegExp(reg);
                         console.log(regx)
@@ -248,12 +248,15 @@ const getExcelHtml = async (item,index) => {
                 }
             })
             item.isTableFormRender = true
+            item.isRenderTableForm = true
         } else {
             item.isTableForm = false
+            item.isRenderTableForm = true
             window?.$message?.warning('暂无表单')
         }
     } else {
         item.isTableForm = false
+        item.isRenderTableForm = false
         window?.$message?.warning('pkeyId为空')
     }
 }
@@ -357,15 +360,19 @@ const copyClick = async (item,index) => {
     const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
     if (pkeyIds) {
         if (isStatus.value !== '3') {
-            const res = await saveExcelBussData(item,index,false)
-            if (res) {
-                const {error, code} = await wbsApi.copeBussTab({pkeyId: pkeyIds})
-                if (!error && code === 200) {
-                    window?.$message?.success('操作成功')
-                    renewData()
+            if (!item.isRenderTableForm) {
+                await copeBussTab()
+            } else if (!item.isTableForm) {
+                window?.$message?.warning('暂无表单数据')
+            } else if (item.isRenderTableForm) {
+                const res = await saveExcelBussData(item,index,false)
+                if (res) {
+                    await copeBussTab()
+                } else {
+                    window?.$message?.warning('复制本表操作失败')
                 }
             } else {
-                window?.$message?.warning('复制本表操作失败')
+                window?.$message?.warning(`数据异常了, isRenderTableForm: ${item.isRenderTableForm}, isTableForm: ${item.isTableForm}, pkeyIds:${pkeyIds}`)
             }
         } else {
             window?.$message?.warning('已上报的资料,不允许复制')
@@ -375,6 +382,17 @@ const copyClick = async (item,index) => {
     }
 }
 
+const copeBussTab = async (pkeyIds) => {
+    const {error, code} = await wbsApi.copeBussTab({
+        pkeyId: pkeyIds
+    })
+    if (!error && code === 200) {
+        window?.$message?.success('操作成功')
+        renewData()
+    }
+}
+
+
 //隐藏本表
 const hideClick = async (item) => {
     const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
@@ -416,6 +434,8 @@ const uploadClick = (item) => {
             uploadData.value = getFormDataInit(item,pkeyIds)
             //获取文件列表
             getBussFileList(pkeyIds)
+        } else if (!item.isRenderTableForm) {
+            window?.$message?.warning('请先展开表单')
         } else if (!item.isTableForm) {
             window?.$message?.warning('暂无表单数据')
         } else {

+ 2 - 80
src/views/data-fill/components/WbsTree.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node tree-line wbs-tree-node" :class="ui" ref="ElTreeRef" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
+    <ElTree class="hc-tree-node tree-line" :class="ui" ref="ElTreeRef" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
             :default-expanded-keys="defaultExpandedCids" @node-click="ElTreeClick" @node-contextmenu="ElTreeLabelContextMenu" :indent="0">
         <template #default="{ node, data }">
             <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
@@ -252,20 +252,8 @@ defineExpose({
 </script>
 
 <style lang="scss" scoped>
+@import "../../../styles/app/tree.scss";
 .data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
     .menu-icon {
         position: absolute;
         pointer-events: none;
@@ -293,70 +281,4 @@ defineExpose({
         cursor: context-menu;
     }
 }
-
-// 树样式
-.tree-line {
-    :deep(.el-tree-node) {
-        position: relative;
-        padding-left: 12px; // 缩进量
-    }
-    :deep(.el-tree-node__children) {
-        padding-left: 12px; // 缩进量
-    }
-    // 竖线
-    :deep(.el-tree-node::before) {
-        content:"";
-        height: 100%;
-        width: 1px;
-        position: absolute;
-        left: 1px;
-        top: -26px;
-        border-width: 1px;
-        border-left: 2px dashed var(--el-color-primary);
-    }
-    // 当前层最后⼀个节点的竖线⾼度固定
-    :deep(.el-tree-node:last-child::before) {
-        height: 38px; // 可以⾃⼰调节到合适数值
-    }
-    // 横线
-    :deep(.el-tree-node::after) {
-        content:"";
-        width: 16px;
-        height: 20px;
-        position: absolute;
-        left: 2px;
-        top: 12px;
-        border-width: 1px;
-        border-top: 2px dashed var(--el-color-primary);
-    }
-    // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
-    & > :deep(.el-tree-node::after) {
-        border-top: none;
-    }
-    & > :deep(.el-tree-node::before) {
-        border-left: none;
-    }
-    // 展开关闭的icon
-    :deep(.el-tree-node__expand-icon) {
-        font-size: 16px;
-        &.is-leaf {
-            color: transparent;
-            font-size: 0px;
-        }
-    }
-}
-</style>
-<style lang="scss">
-.hc-tree-node.wbs-tree-node {
-    .el-tree-node__content {
-        height: 28px;
-    }
-    .el-tree-node__label {
-        flex: 1;
-    }
-    &.el-tree--highlight-current .el-tree-node.is-current {
-        background: #cacaca;
-        border-radius: 4px;
-    }
-}
 </style>

+ 3 - 3
src/views/data-fill/division.vue

@@ -12,7 +12,7 @@
             </div>
             <div class="hc-tree-box">
                 <el-scrollbar>
-                    <WbsTree ui="page-division-tree" :menus="ElTreeMenu" :autoExpandKeys="treeAutoExpandKeys" :projectId="projectId" :contractId="contractId" line isColor @nodeTap="wbsElTreeClick" @menuTap="ElTreeMenuClick"/>
+                    <WbsTree ui="page-division-tree" :menus="ElTreeMenu" :autoExpandKeys="treeAutoExpandKeys" :projectId="projectId" :contractId="contractId" isColor @nodeTap="wbsElTreeClick" @menuTap="ElTreeMenuClick"/>
                 </el-scrollbar>
             </div>
             <!--左右拖动-->
@@ -184,7 +184,7 @@
                         <div class="hc-tree-title-box">导入并识别成功</div>
                         <div class="hc-tree-bar-box">
                             <el-scrollbar>
-                                <WbsTree :projectId="projectId" :contractId="contractId" line @nodeTap="wbsElTreeClick"/>
+                                <WbsTree :projectId="projectId" :contractId="contractId" @nodeTap="wbsElTreeClick"/>
                             </el-scrollbar>
                         </div>
                     </div>
@@ -192,7 +192,7 @@
                         <div class="hc-tree-title-box">未被系统识别:手动关联</div>
                         <div class="hc-tree-bar-box">
                             <el-scrollbar>
-                                <DivisionTree :projectId="projectId" :contractId="contractId" line @relationTap="ElTreeRelationClick"/>
+                                <DivisionTree :projectId="projectId" :contractId="contractId" @relationTap="ElTreeRelationClick"/>
                             </el-scrollbar>
                         </div>
                     </div>

+ 2 - 14
src/views/ledger/components/WbsTree.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node" ref="ElTreeRef" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
+    <ElTree class="hc-tree-node tree-line" ref="ElTreeRef" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
             :default-expanded-keys="defaultExpandedCids" @node-click="ElTreeClick" @node-contextmenu="ElTreeLabelContextMenu">
         <template #default="{ node, data }">
             <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
@@ -242,20 +242,8 @@ defineExpose({
 </script>
 
 <style lang="scss" scoped>
+@import "../../../styles/app/tree.scss";
 .data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
     .menu-icon {
         position: relative;
         font-size: 20px;

+ 2 - 8
src/views/other-file/components/ProjectTree.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node" :props="ElTreeProps" :data="datas" highlight-current accordion node-key="id" :default-expanded-keys="TreeExpandKey" @node-click="ElTreeClick">
+    <ElTree class="hc-tree-node tree-line" :props="ElTreeProps" :data="datas" highlight-current accordion node-key="id" :default-expanded-keys="TreeExpandKey" @node-click="ElTreeClick">
         <template #default="{ node, data }">
             <div class="data-custom-tree-node" :id="`${idPrefix}${data['id']}`">{{ node.label }}</div>
         </template>
@@ -62,11 +62,5 @@ const ElTreeClick = async (data,node) => {
 </script>
 
 <style lang="scss" scoped>
-.data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-}
+@import "../../../styles/app/tree.scss";
 </style>

+ 2 - 16
src/views/other-file/components/WbsTree.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
+    <ElTree class="hc-tree-node tree-line" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
             :default-expanded-keys="defaultExpandedCids" @node-click="ElTreeClick">
         <template #default="{ node, data }">
             <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
@@ -144,19 +144,5 @@ const getNodeExpandKeys = async (node, newKeys) => {
 </script>
 
 <style lang="scss" scoped>
-.data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
-}
+@import "../../../styles/app/tree.scss";
 </style>

+ 2 - 16
src/views/other/components/WbsTree.vue

@@ -1,5 +1,5 @@
 <template>
-    <ElTree class="hc-tree-node" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
+    <ElTree class="hc-tree-node tree-line" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
             :default-expanded-keys="defaultExpandedCids" @node-click="ElTreeClick">
         <template #default="{ node, data }">
             <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
@@ -138,19 +138,5 @@ const getNodeExpandKeys = async (node, newKeys) => {
 </script>
 
 <style lang="scss" scoped>
-.data-custom-tree-node {
-    position: relative;
-    display: flex;
-    align-items: center;
-    width: 100%;
-    color: var(--ui-TC);
-    .label {
-        flex: auto;
-        font-size: 16px;
-    }
-    .label.level-name {
-        font-size: 18px;
-        font-weight: bold;
-    }
-}
+@import "../../../styles/app/tree.scss";
 </style>