浏览代码

合同工程清单

ZaiZai 1 年之前
父节点
当前提交
7288faa75f
共有 4 个文件被更改,包括 78 次插入139 次删除
  1. 1 1
      package.json
  2. 35 0
      src/styles/app/element.scss
  3. 32 1
      src/views/project/debit/contract/check-list.vue
  4. 10 137
      yarn.lock

+ 1 - 1
package.json

@@ -18,7 +18,7 @@
         "dayjs": "^1.11.10",
         "echarts": "^5.4.3",
         "element-plus": "2.4.2",
-        "hc-vue3-ui": "^2.4.6",
+        "hc-vue3-ui": "^2.4.9",
         "js-base64": "^3.7.5",
         "js-fast-way": "0.3.0",
         "js-md5": "^0.8.3",

+ 35 - 0
src/styles/app/element.scss

@@ -84,3 +84,38 @@
 .hc-card-item-box {
     background: #f9f9f9 !important;
 }
+
+
+.hc-el-upload-drag {
+    position: relative;
+    .el-upload-dragger {
+        padding: 15px 0;
+    }
+    .hc-ui-upload-btn .hc-uploader-drop {
+        position: relative;
+        text-align: center;
+        .upload-icon {
+            font-size: 66px;
+            position: relative;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            color: #cacaca;
+            transition: color 0.2s;
+        }
+        .text {
+            color: #101010;
+            margin-top: 10px;
+            transition: color 0.2s;
+        }
+    }
+    .hc-uploader-accept {
+        margin-top: 10px;
+    }
+    &:hover {
+        border-color: var(--el-color-primary-light-5);
+        .hc-ui-upload-btn .hc-uploader-drop .text {
+            color: var(--el-color-primary);
+        }
+    }
+}

+ 32 - 1
src/views/project/debit/contract/check-list.vue

@@ -9,7 +9,7 @@
             <hc-new-card scrollbar title="合同工程清单明细">
                 <template #extra>
                     <el-button hc-btn type="primary">增补清单</el-button>
-                    <el-button hc-btn type="primary">导入</el-button>
+                    <el-button hc-btn type="primary" @click="leadModalShow = true">导入</el-button>
                     <el-button hc-btn type="primary">导出</el-button>
                 </template>
                 <div class="relative">
@@ -19,6 +19,7 @@
                 </div>
             </hc-new-card>
         </div>
+
         <!-- 节点数据 -->
         <hc-new-dialog v-model="treeModalShow" widths="1100px" :title="treeModalTitle" @save="treeModalSave">
             <el-form ref="formRef" class="p-4" label-position="left" label-width="auto" :model="formModel" :rules="formRules">
@@ -80,12 +81,34 @@
                 </el-row>
             </el-form>
         </hc-new-dialog>
+
+        <!-- 导入清单 -->
+        <hc-new-dialog v-model="leadModalShow" scrollbar widths="1100px" title="合同工程清单导入" @save="leadModalSave">
+            <div class="hc-el-upload-drag">
+                <el-upload
+                    ref="leadUploadRef" hc drag :show-file-list="false" :auto-upload="false" :headers="getHeader()"
+                    action="/api/blade-resource/oss/endpoint/upload-file" :data="leadUploadData"
+                    accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
+                >
+                    <div class="hc-ui-upload-btn">
+                        <div class="hc-uploader-drop">
+                            <div class="upload-icon">
+                                <HcIcon name="upload-cloud" />
+                            </div>
+                            <div class="text">将文件拖动到此处,或点击上传</div>
+                        </div>
+                        <div class="hc-uploader-accept">支持的文件格式: Excel(xls、xlsx)</div>
+                    </div>
+                </el-upload>
+            </div>
+        </hc-new-dialog>
     </div>
 </template>
 
 <script setup>
 import { nextTick, onMounted, ref } from 'vue'
 import { getRandom } from 'js-fast-way'
+import { getHeader } from 'hc-vue3-ui'
 import infoTable from './components/check-list/info-table.vue'
 
 defineOptions({
@@ -198,4 +221,12 @@ const formRules = ref({})
 const treeModalSave = () => {
 
 }
+
+//合同工程清单导入
+const leadModalShow = ref(false)
+const leadUploadRef = ref(null)
+const leadUploadData = ref({})
+const leadModalSave = () => {
+    leadModalShow.value = false
+}
 </script>

+ 10 - 137
yarn.lock

@@ -683,16 +683,6 @@
   resolved "http://47.110.251.215:9000/@vitejs/plugin-vue/-/plugin-vue-4.4.1.tgz#5050895fb8b2258d2f228110849df4a8a94b9038"
   integrity sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA==
 
-"@vue/compiler-core@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/compiler-core/-/compiler-core-3.3.7.tgz#865a5734c971686d9737d85a0c5a08de045b6162"
-  integrity sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==
-  dependencies:
-    "@babel/parser" "^7.23.0"
-    "@vue/shared" "3.3.7"
-    estree-walker "^2.0.2"
-    source-map-js "^1.0.2"
-
 "@vue/compiler-core@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313"
@@ -703,14 +693,6 @@
     estree-walker "^2.0.2"
     source-map-js "^1.0.2"
 
-"@vue/compiler-dom@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz#a245aa03f9bfcdb537a239bf02842072de0644c9"
-  integrity sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==
-  dependencies:
-    "@vue/compiler-core" "3.3.7"
-    "@vue/shared" "3.3.7"
-
 "@vue/compiler-dom@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b"
@@ -719,22 +701,6 @@
     "@vue/compiler-core" "3.3.8"
     "@vue/shared" "3.3.8"
 
-"@vue/compiler-sfc@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz#219d04b3013c7b15fbc536e2279e07810b731cc2"
-  integrity sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==
-  dependencies:
-    "@babel/parser" "^7.23.0"
-    "@vue/compiler-core" "3.3.7"
-    "@vue/compiler-dom" "3.3.7"
-    "@vue/compiler-ssr" "3.3.7"
-    "@vue/reactivity-transform" "3.3.7"
-    "@vue/shared" "3.3.7"
-    estree-walker "^2.0.2"
-    magic-string "^0.30.5"
-    postcss "^8.4.31"
-    source-map-js "^1.0.2"
-
 "@vue/compiler-sfc@3.3.8", "@vue/compiler-sfc@^3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1"
@@ -751,14 +717,6 @@
     postcss "^8.4.31"
     source-map-js "^1.0.2"
 
-"@vue/compiler-ssr@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz#eff4a70f7ceb800d60e68d208b96a030c0f1b636"
-  integrity sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==
-  dependencies:
-    "@vue/compiler-dom" "3.3.7"
-    "@vue/shared" "3.3.7"
-
 "@vue/compiler-ssr@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce"
@@ -772,17 +730,6 @@
   resolved "http://47.110.251.215:9000/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
   integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
 
-"@vue/reactivity-transform@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz#eb9f5110af5085079b851d162205394bc790d539"
-  integrity sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==
-  dependencies:
-    "@babel/parser" "^7.23.0"
-    "@vue/compiler-core" "3.3.7"
-    "@vue/shared" "3.3.7"
-    estree-walker "^2.0.2"
-    magic-string "^0.30.5"
-
 "@vue/reactivity-transform@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2"
@@ -794,13 +741,6 @@
     estree-walker "^2.0.2"
     magic-string "^0.30.5"
 
-"@vue/reactivity@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/reactivity/-/reactivity-3.3.7.tgz#48b6671a45ba33039da2c0eb25ae702f924486a9"
-  integrity sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==
-  dependencies:
-    "@vue/shared" "3.3.7"
-
 "@vue/reactivity@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d"
@@ -808,14 +748,6 @@
   dependencies:
     "@vue/shared" "3.3.8"
 
-"@vue/runtime-core@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/runtime-core/-/runtime-core-3.3.7.tgz#c1eece1c98f936dc69dd0667d11b464579b128fd"
-  integrity sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==
-  dependencies:
-    "@vue/reactivity" "3.3.7"
-    "@vue/shared" "3.3.7"
-
 "@vue/runtime-core@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb"
@@ -824,15 +756,6 @@
     "@vue/reactivity" "3.3.8"
     "@vue/shared" "3.3.8"
 
-"@vue/runtime-dom@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz#e7cf88cc01591fdf6e3164825554fdadc3137ffc"
-  integrity sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==
-  dependencies:
-    "@vue/runtime-core" "3.3.7"
-    "@vue/shared" "3.3.7"
-    csstype "^3.1.2"
-
 "@vue/runtime-dom@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4"
@@ -842,14 +765,6 @@
     "@vue/shared" "3.3.8"
     csstype "^3.1.2"
 
-"@vue/server-renderer@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/server-renderer/-/server-renderer-3.3.7.tgz#0cc3dc6ad39a54693e6e8f853caa3c7bb43b0364"
-  integrity sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==
-  dependencies:
-    "@vue/compiler-ssr" "3.3.7"
-    "@vue/shared" "3.3.7"
-
 "@vue/server-renderer@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2"
@@ -858,11 +773,6 @@
     "@vue/compiler-ssr" "3.3.8"
     "@vue/shared" "3.3.8"
 
-"@vue/shared@3.3.7":
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/@vue/shared/-/shared-3.3.7.tgz#0091852fe5cc4237c8440fe32f3ab6bc920ae6d9"
-  integrity sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==
-
 "@vue/shared@3.3.8":
   version "3.3.8"
   resolved "http://47.110.251.215:9000/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d"
@@ -980,7 +890,7 @@ asynckit@^0.4.0:
   resolved "http://47.110.251.215:9000/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
   integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
 
-axios@^1.6.0, axios@^1.6.1:
+axios@^1.6.1:
   version "1.6.1"
   resolved "http://47.110.251.215:9000/axios/-/axios-1.6.1.tgz#76550d644bf0a2d469a01f9244db6753208397d7"
   integrity sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==
@@ -1269,27 +1179,6 @@ echarts@^5.4.3:
     tslib "2.3.0"
     zrender "5.4.4"
 
-element-plus@2.4.1:
-  version "2.4.1"
-  resolved "http://47.110.251.215:9000/element-plus/-/element-plus-2.4.1.tgz#8a5faa69e856d82494b94d77fb485d9e727c8bc1"
-  integrity sha512-t7nl+vQlkBKVk1Ag6AufSDyFV8YIXxTFsaya4Nz/0tiRlcz65WPN4WMFeNURuFJleu1HLNtP4YyQKMuS7El8uA==
-  dependencies:
-    "@ctrl/tinycolor" "^3.4.1"
-    "@element-plus/icons-vue" "^2.0.6"
-    "@floating-ui/dom" "^1.0.1"
-    "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
-    "@types/lodash" "^4.14.182"
-    "@types/lodash-es" "^4.17.6"
-    "@vueuse/core" "^9.1.0"
-    async-validator "^4.2.5"
-    dayjs "^1.11.3"
-    escape-html "^1.0.3"
-    lodash "^4.17.21"
-    lodash-es "^4.17.21"
-    lodash-unified "^1.0.2"
-    memoize-one "^6.0.0"
-    normalize-wheel-es "^1.2.0"
-
 element-plus@2.4.2:
   version "2.4.2"
   resolved "http://47.110.251.215:9000/element-plus/-/element-plus-2.4.2.tgz#2a24632e0904ccd7bbbd64c269704f6b9969833c"
@@ -1679,21 +1568,21 @@ has-flag@^4.0.0:
   resolved "http://47.110.251.215:9000/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
-hc-vue3-ui@^2.4.6:
-  version "2.4.6"
-  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-2.4.6.tgz#798e99e6d16e410f30cf184ff967b43624ca6092"
-  integrity sha512-6s3G8B1wtIbqdk8k8Jfi9tiQR5jYWxoOC28SbcRuXKdakUibnUu2nkQshVHlNHrjOD6CLXYXBh+oVIxYJEMhOQ==
+hc-vue3-ui@^2.4.9:
+  version "2.4.9"
+  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-2.4.9.tgz#352186862cf94b63b3296dbe8db722a0d0c378ae"
+  integrity sha512-z+QdqZ2aMqfmjMql2mUZaTCfRW88llKu/JKfrGZTDaJ5/Rxw+wIMUYmEGuSdhIx4pJBuOsRBFWpZljF4JcdFtA==
   dependencies:
-    axios "^1.6.0"
+    axios "^1.6.1"
     dayjs "^1.11.10"
-    element-plus "2.4.1"
-    js-fast-way "^0.2.9"
+    element-plus "2.4.2"
+    js-fast-way "^0.3.0"
     js-md5 "^0.8.3"
     lottie-web "^5.12.2"
     simple-uploader.js "^0.6.0"
     sortablejs "^1.15.0"
     split.js "^1.6.5"
-    vue "3.3.7"
+    vue "3.3.8"
     vuedraggable "^2.24.3"
 
 human-signals@^2.1.0:
@@ -1825,16 +1714,11 @@ js-base64@^3.7.5:
   resolved "http://47.110.251.215:9000/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca"
   integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==
 
-js-fast-way@0.3.0:
+js-fast-way@0.3.0, js-fast-way@^0.3.0:
   version "0.3.0"
   resolved "http://47.110.251.215:9000/js-fast-way/-/js-fast-way-0.3.0.tgz#787fe8a5a8949620fc77f646e636e2440bf7086b"
   integrity sha512-Ed0+crf2RQJ9S7EdcIerYQ1nasWYHIal/D5LsqQne0Gx+DN69kQKpk0q754f/qIiF9yVRrnav6rT0CzTmFnjvA==
 
-js-fast-way@^0.2.9:
-  version "0.2.9"
-  resolved "http://47.110.251.215:9000/js-fast-way/-/js-fast-way-0.2.9.tgz#fd193f1a63644315331274474232d18d2c494c35"
-  integrity sha512-ORSz9K/vLBu0Xo9dXgAS9nbqi35BsooPZYj1EpkjOWEVQ8hz3dUFGwTG2r7huZyxxnWd2fXoZwSe0X77aPwhlg==
-
 js-md5@^0.8.3:
   version "0.8.3"
   resolved "http://47.110.251.215:9000/js-md5/-/js-md5-0.8.3.tgz#921bab7efa95bfc9d62b87ee08a57f8fe4305b69"
@@ -2655,17 +2539,6 @@ vue-router@^4.2.5:
   dependencies:
     "@vue/devtools-api" "^6.5.0"
 
-vue@3.3.7:
-  version "3.3.7"
-  resolved "http://47.110.251.215:9000/vue/-/vue-3.3.7.tgz#972a218682443a3819d121261b2bff914417f4f0"
-  integrity sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==
-  dependencies:
-    "@vue/compiler-dom" "3.3.7"
-    "@vue/compiler-sfc" "3.3.7"
-    "@vue/runtime-dom" "3.3.7"
-    "@vue/server-renderer" "3.3.7"
-    "@vue/shared" "3.3.7"
-
 vue@3.3.8:
   version "3.3.8"
   resolved "http://47.110.251.215:9000/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc"