duy 9 mesi fa
parent
commit
3cc6929bd3

+ 92 - 2
src/views/desk/test-param.vue

@@ -100,13 +100,63 @@
             >
         </template>
     </hc-dialog>
+
+    <!-- 模板导入 -->
+    <hc-dialog v-model="fileModal" title="模板导入">
+        <hc-card-item>
+            <template #header>
+                <div class="text-sm text-red">
+                    提示:必须按照系统要求的模版格式上传,否则系统识别无效
+                </div>
+            </template>
+
+            <el-button
+                size="small"
+                type="primary"
+                @click="downLoadFile"
+                :loading="downloadLoading"
+                >下载导入模板</el-button
+            >
+            <el-button
+                size="small"
+                type="primary"
+                @click="importModalClick"
+                :loading="uploadsLoading"
+                >本地上传</el-button
+            >
+            <el-form class="mt-4" :model="formLabelAlign">
+                <el-form-item
+                    label="数据覆盖:"
+                    :rules="[
+                        {
+                            required: true,
+                            message: '请选择数据是否覆盖',
+                            trigger: 'blur',
+                        },
+                    ]"
+                >
+                    <el-switch
+                        v-model="formLabelAlign.isCovered"
+                        active-text="是"
+                        active-color="#13ce66"
+                        inactive-color="#ff4949"
+                        inactive-text="否"
+                        active-value="1"
+                        inactive-value="0"
+                    >
+                    </el-switch>
+                </el-form-item>
+            </el-form>
+        </hc-card-item>
+    </hc-dialog>
 </template>
 
 <script setup>
 import { onMounted, ref } from "vue";
 import mainApi from "~api/desk/test-params";
-import { getArrValue, isNullES, deepClone } from "js-fast-way";
+import { getArrValue, isNullES, deepClone, arrToId } from "js-fast-way";
 import temperatureDensity from "./wbs/temperature-density.vue";
+import { HcUploadFileApi, HcDelMsg } from "hc-vue3-ui";
 onMounted(() => {
     getTableData();
 });
@@ -166,7 +216,9 @@ const rowRemoveApi = (ids) => {
         getTableData();
     });
 };
-const impotClick = () => {};
+const impotClick = () => {
+    fileModal.value = true;
+};
 const tableColumn = [
     { key: "valueN", name: "N值" },
     { key: "assuranceRateNinetyNinePercent", name: "保证率99" },
@@ -199,6 +251,44 @@ const pageChange = ({ current, size }) => {
     searchForm.value.size = size;
     getTableData();
 };
+
+//模板导入
+const fileModal = ref(false);
+const formLabelAlign = ref({ isCovered: 0 });
+
+const downLoadFile = () => {
+    window.open(
+        "https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20221206/0fe37d67c97e9a971b45a72584b7abf0.xlsx",
+        "压实度评标参数模板"
+    );
+};
+const downloadLoading = ref(false);
+
+const importModalClick = () => {
+    HcUploadFileApi({
+        multiple: false,
+        url: "/api/blade-manager/trial/param/compaction/import-excel",
+        target: "/api/blade-manager/trial/param/compaction/import-excel",
+        params: { isCovered: formLabelAlign.value.isCovered },
+        progress: () => {
+            uploadsLoading.value = true;
+        },
+        success: (file, res) => {
+            getTableData();
+        },
+        error: (file) => {
+            uploadsLoading.value = false;
+            window.$message.error(`${file.name} 上传失败`);
+        },
+        finish: () => {
+            uploadsLoading.value = false;
+            window.$message.success("上传完成");
+            fileModal.value = false;
+            getTableData();
+        },
+    });
+};
+const uploadsLoading = ref(false);
 </script>
 
 <style scoped lang="scss"></style>

+ 8 - 1
src/views/desk/wbs/drawer-wbs.vue

@@ -11,7 +11,12 @@
                     {{ dataInfo.wbsName }}
                 </div>
                 <div class="hc-flex">
-                    <el-button hc-btn type="primary">导入划分</el-button>
+                    <el-button
+                        hc-btn
+                        type="primary"
+                        v-if="curTreeNode && curTreeNode.level == 2"
+                        >导入划分</el-button
+                    >
                     <el-button
                         hc-btn
                         type="primary"
@@ -527,7 +532,9 @@ const treeMenuClick = async ({ key, data, node, keys }) => {
 
 //树节点被点击
 const nodeInfo = ref({});
+const curTreeNode = ref({});
 const treeNodeTap = async ({ data, node, keys }) => {
+    curTreeNode.value = node;
     autoExpandKeys.value = keys || [];
     setStoreValue("autoExpandKeys", keys);
     await getNodeDetail(data, node);

+ 90 - 2
src/views/desk/wbs/temperature-density.vue

@@ -77,10 +77,58 @@
             >
         </template>
     </hc-dialog>
+    <!-- 模板导入 -->
+    <hc-dialog v-model="fileModal" title="模板导入">
+        <hc-card-item>
+            <template #header>
+                <div class="text-sm text-red">
+                    提示:必须按照系统要求的模版格式上传,否则系统识别无效
+                </div>
+            </template>
+
+            <el-button
+                size="small"
+                type="primary"
+                @click="downLoadFile"
+                :loading="downloadLoading"
+                >下载导入模板</el-button
+            >
+            <el-button
+                size="small"
+                type="primary"
+                @click="importModalClick"
+                :loading="uploadsLoading"
+                >本地上传</el-button
+            >
+            <el-form class="mt-4" :model="formLabelAlign">
+                <el-form-item
+                    label="数据覆盖:"
+                    :rules="[
+                        {
+                            required: true,
+                            message: '请选择数据是否覆盖',
+                            trigger: 'blur',
+                        },
+                    ]"
+                >
+                    <el-switch
+                        v-model="formLabelAlign.isCovered"
+                        active-text="是"
+                        active-color="#13ce66"
+                        inactive-color="#ff4949"
+                        inactive-text="否"
+                        active-value="1"
+                        inactive-value="0"
+                    >
+                    </el-switch>
+                </el-form-item>
+            </el-form>
+        </hc-card-item>
+    </hc-dialog>
 </template>
 <script setup>
 import { ref, watch } from "vue";
-import { HcDelMsg } from "hc-vue3-ui";
+import { HcDelMsg, HcUploadFileApi } from "hc-vue3-ui";
 import { arrToId, deepClone, getArrValue, isNullES } from "js-fast-way";
 import mainApi from "~api/desk/temperture-density";
 
@@ -147,7 +195,9 @@ const rowRemoveApi = (ids) => {
         getTableData();
     });
 };
-const impotClick = () => {};
+const impotClick = () => {
+    fileModal.value = true;
+};
 const tableColumn = [
     { key: "temperature", name: "温度" },
     { key: "waterDensity", name: "密度" },
@@ -189,5 +239,43 @@ const pageChange = ({ current, size }) => {
     searchForm.value.size = size;
     getTableData();
 };
+
+//模板导入
+const fileModal = ref(false);
+const formLabelAlign = ref({ isCovered: 0 });
+
+const downLoadFile = () => {
+    window.open(
+        "https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20221206/0fe37d67c97e9a971b45a72584b7abf0.xlsx",
+        "压实度评标参数模板"
+    );
+};
+const downloadLoading = ref(false);
+
+const importModalClick = () => {
+    HcUploadFileApi({
+        multiple: false,
+        url: "/api/blade-manager/trial/param/temperature-density/import-excel",
+        target: "/api/blade-manager/trial/param/temperature-density/import-excel",
+        params: { isCovered: formLabelAlign.value.isCovered },
+        progress: () => {
+            uploadsLoading.value = true;
+        },
+        success: (file, res) => {
+            getTableData();
+        },
+        error: (file) => {
+            uploadsLoading.value = false;
+            window.$message.error(`${file.name} 上传失败`);
+        },
+        finish: () => {
+            uploadsLoading.value = false;
+            window.$message.success("上传完成");
+            fileModal.value = false;
+            getTableData();
+        },
+    });
+};
+const uploadsLoading = ref(false);
 </script>
 <style lang="css" scoped></style>