8
0
duy 10 сар өмнө
parent
commit
f2ebb39d2f

+ 7 - 0
src/api/modules/wbs/wbsforelement.js

@@ -17,4 +17,11 @@ export default {
             data: form,
         });
     },
+    async getExportTem(form) {
+        return HcApi({
+            url: "/api/blade-manager/wbsFormElement/export-template",
+            method: "get",
+            params: form,
+        });
+    },
 };

+ 122 - 4
src/views/desk/wbs/create-new-excel.vue

@@ -92,7 +92,9 @@
                 <el-button size="small" type="success" @click="addRowClick"
                     >新增</el-button
                 >
-                <el-button size="small" type="primary">快捷导入</el-button>
+                <el-button size="small" type="primary" @click="uploadClick"
+                    >快捷导入</el-button
+                >
                 <el-button size="small" type="warning">下载导入模板</el-button>
             </template>
 
@@ -150,18 +152,71 @@
             </hc-table>
         </hc-card-item>
     </hc-dialog>
+    <!-- 模板导入 -->
+    <hc-dialog v-model="fileModal" title="模板导入" @save="saveFileImport">
+        <hc-card-item>
+            <template #header>
+                <div class="text-sm text-red">
+                    提示:必须按照系统要求的模版格式上传,否则系统识别无效
+                </div>
+            </template>
+
+            <template #extra>
+                <el-button
+                    size="small"
+                    type="primary"
+                    @click="downLoadFile"
+                    :loading="downloadLoading"
+                    >下载导入模板</el-button
+                >
+                <el-button
+                    size="small"
+                    type="primary"
+                    @click="importModalClick"
+                    :loading="uploadsLoading"
+                    >本地上传</el-button
+                >
+            </template>
+            <hc-table :column="fileTableColumn" :datas="fileTableData">
+                <template #elementAllowDeviation="{ row }">
+                    <div class="flex">
+                        <el-select
+                            v-model="row.allow"
+                            :popper-append-to-body="false"
+                            placeholder="请选择"
+                        >
+                            <el-option :key="1" label="-" value="-"></el-option>
+                            <el-option :key="2" label=">" value=">"></el-option>
+                            <el-option :key="3" label="<" value="<"></el-option>
+                            <el-option :key="4" label="≥" value="≥"></el-option>
+                            <el-option :key="5" label="≤" value="≤"></el-option>
+                            <el-option :key="6" label="±" value="±"></el-option>
+                            <el-option
+                                :key="7"
+                                label="【】"
+                                value="【】"
+                            ></el-option>
+                        </el-select>
+                        <hc-table-input v-model="row.elementAllowDeviation" />
+                    </div>
+                </template>
+            </hc-table>
+        </hc-card-item>
+    </hc-dialog>
 </template>
 <script setup>
 import { ref, watch } from "vue";
 import { getDictionaryData, getDictionaryName } from "~src/utils/tools";
 import mainApi from "~api/wbs/wbsforelement";
 import { useAppStore } from "~src/store";
+import { HcDelMsg, HcUploadFileApi } from "hc-vue3-ui";
 import {
     deepClone,
     formValidate,
     getArrValue,
     isNullES,
     getObjValue,
+    downloadBlob,
 } from "js-fast-way";
 const store = useAppStore();
 const userInfo = ref(store.getUserInfo);
@@ -324,6 +379,7 @@ const saveFormAndElementHandle = async () => {
     formModel.value.nodeType = -1;
     formModel.value.type = 2; //	'1'节点 '2'表
     formModel.value.parentId = node.value.id;
+    formModel.value.nodeName = node.value.nodeName;
     for (let i = 0; i < editEleList.value.length; i++) {
         if (!editEleList.value[i].eName) {
             window.$message.warning("请填写第" + (i + 1) + "条元素名称");
@@ -346,9 +402,9 @@ const saveFormAndElementHandle = async () => {
         });
         submitLoading.value = true;
         formModel.value.elementList = editEleList;
-        const { error, code } = await mainApi.saveFormAndElement(
-            formModel.value
-        );
+        const { error, code } = await mainApi.saveFormAndElement({
+            ...formModel.value,
+        });
         submitLoading.value = false;
         if (!error && code === 200) {
             window?.$message?.success("操作成功");
@@ -363,4 +419,66 @@ const dialogClose = () => {
     isShow.value = false;
     emit("close");
 };
+const fileModal = ref(false);
+const uploadClick = () => {
+    fileModal.value = true;
+    fileTableData.value = [];
+};
+const fileTableColumn = [
+    { key: "elementName", name: "元素名称" },
+    { key: "elementType", name: "数据类型" },
+    { key: "elementLength", name: "长度" },
+    { key: "elementAllowDeviation", name: "允许偏差值" },
+    { key: "elementInspectionMethod", name: "检查方法和频率" },
+];
+const fileTableData = ref([]);
+const downloadLoading = ref(false);
+const downLoadFile = async () => {
+    downloadLoading.value = true;
+    const { error, disposition, res } = await mainApi.getExportTem();
+    //处理数据
+    downloadLoading.value = false;
+    if (!error) {
+        if (disposition) {
+            downloadBlob(res, disposition);
+        } else {
+            window.$message?.error("数据异常");
+        }
+    }
+};
+const uploadsLoading = ref(false);
+const importModalClick = () => {
+    HcUploadFileApi({
+        multiple: false,
+        url: "/api/blade-manager/wbsFormElement/import-wbsElement",
+        target: "/api/blade-manager/wbsFormElement/import-wbsElement",
+        progress: () => {
+            uploadsLoading.value = true;
+        },
+        success: (file, res) => {
+            fileTableData.value = getArrValue(res.data);
+        },
+        error: (file) => {
+            uploadsLoading.value = false;
+            window.$message.error(`${file.name} 上传失败`);
+        },
+        finish: () => {
+            uploadsLoading.value = false;
+            window.$message.success("上传完成");
+        },
+    });
+};
+const saveFileImport = () => {
+    fileModal.value = false;
+    fileTableData.value.forEach((ele) => {
+        editEleList.value.push({
+            eName: ele.elementName,
+            eAllowDeviation: ele.elementAllowDeviation,
+            eName: ele.elementInspectionMethod,
+            eLength: ele.elementLength,
+            eType: ele.elementType,
+        });
+    });
+    // editEleList.value
+};
 </script>

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

@@ -595,6 +595,7 @@ const rowDelClick = () => {};
 const isCreateShow = ref(false);
 const createClose = () => {
     isCreateShow.value = false;
+    getTableData();
 };
 const createNew = () => {
     const { id } = nodeInfo.value;

+ 12 - 5
src/views/desk/wbs/tree-node-edit.vue

@@ -168,7 +168,7 @@
                     clearable
                     class="is-right-btn"
                 >
-                    <template v-if="formModel.pKeyId" #append>
+                    <template v-if="nodeDetail.id" #append>
                         <el-button hc-btn type="primary" @click="addAliasName"
                             >添加</el-button
                         >
@@ -258,7 +258,7 @@ const isShow = defineModel("modelValue", {
 const formModel = ref(props.node);
 const wbsType = ref(props.type);
 const wbsId = ref(props.wid);
-
+const nodeDetail = ref(props.node);
 const nodeTypelist = ref(props.nodeType);
 const majorDataType = ref(props.majorType);
 const testProps = ref(props.treeProps);
@@ -276,6 +276,7 @@ watch(
     ],
     ([node, type, wid, nodeType, majorType, treeProps]) => {
         formModel.value = node;
+        nodeDetail.value = node;
         wbsType.value = type;
         wbsId.value = wid;
 
@@ -320,10 +321,11 @@ const formAliasRules = {
 
 //显示节点别名弹窗
 const aliasArr = ref([]);
-const aliasShowClick = () => {
+const aliasShowClick = async () => {
     isAliasShow.value = true;
     aliasArr.value = [];
-    const { fullName } = deepClone(formModel.value);
+
+    const { fullName } = deepClone(nodeDetail.value);
     if (isNullES(fullName)) return;
     aliasArr.value = fullName.split(",");
 };
@@ -331,7 +333,9 @@ const aliasShowClick = () => {
 //添加别名
 const addAliasName = async () => {
     const formRes = await formValidate(formAliasRef.value);
+
     if (!formRes) return false;
+
     const { aliasName } = deepClone(formAliasModel.value);
     if (aliasArr.value.indexOf(aliasName) !== -1) {
         window.$message.warning("请不要重复别名");
@@ -350,8 +354,11 @@ const aliasNameClose = (index) => {
 const submitAliasLoading = ref(false);
 const aliasSubmit = async () => {
     submitAliasLoading.value = true;
-    const { id } = formModel.value;
+
+    const { id } = nodeDetail.value;
+
     const fullName = aliasArr.value.join(",");
+    formModel.value.fullName = fullName;
     const { isRes } = await mainApi.submitFullName({
         id: id,
         fullNames: fullName,