Przeglądaj źródła

编辑元素表单

duy 10 miesięcy temu
rodzic
commit
3872cffba5

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

@@ -24,4 +24,11 @@ export default {
             params: form,
         });
     },
+    async upateBatchNodeTableInfo(form) {
+        return HcApi({
+            url: "api/blade-manager/wbsTree/update-batch-node-tableInfo",
+            method: "post",
+            data: form,
+        });
+    },
 };

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

@@ -206,18 +206,11 @@
 </template>
 <script setup>
 import { ref, watch } from "vue";
-import { getDictionaryData, getDictionaryName } from "~src/utils/tools";
+import { getDictionaryData } 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";
+import { HcUploadFileApi } from "hc-vue3-ui";
+import { formValidate, getArrValue, downloadBlob } from "js-fast-way";
 const store = useAppStore();
 const userInfo = ref(store.getUserInfo);
 const props = defineProps({
@@ -330,47 +323,7 @@ const addRowClick = () => {
     editEleList.value.push({});
 };
 const submitLoading = ref(false);
-const editSubmitClick = async () => {
-    const formRes = await formValidate(formRef.value);
-    if (!formRes) return false;
-    for (let i = 0; i < editEleList.value.length; i++) {
-        if (!editEleList.value[i].id) {
-            window.$message.warning("请先将新增的元素点击保存");
-            return;
-        }
-        if (!editEleList.value[i].eName) {
-            window.$message.warning("请填写第" + (i + 1) + "条元素名称");
-            return;
-        }
-        if (!editEleList.value[i].eType) {
-            window.$message.warning("请选择第" + (i + 1) + "条数据类型");
-            return;
-        }
-        if (!editEleList[i].value.eLength) {
-            window.$message.warning("请填写第" + (i + 1) + "条数据长度");
-            return;
-        }
-    }
-    if (editEleList.value.length > 0) {
-        editEleList.value.forEach((element) => {
-            element.eAllowDeviation =
-                (element.allow ? element.allow : "") +
-                (element.deviation ? element.deviation : "");
-        });
-        submitLoading.value = true;
-        const { error, code } = await mainApi.updateBatchElements(
-            editEleList.value,
-            curEleTable.value.initTableName
-        );
-        submitLoading.value = false;
-        if (!error && code === 200) {
-            window?.$message?.success("操作成功");
-            dialogClose();
-        }
-    } else {
-        window.$message.warning("请填写完整元素表信息");
-    }
-};
+
 const saveFormAndElementHandle = async () => {
     const formRes = await formValidate(formRef.value);
     if (!formRes) return false;
@@ -479,6 +432,5 @@ const saveFileImport = () => {
             eType: ele.elementType,
         });
     });
-    // editEleList.value
 };
 </script>

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

@@ -103,7 +103,10 @@
                                             @click="createNew"
                                             >创建元素表</el-button
                                         >
-                                        <el-button size="small" type="warning"
+                                        <el-button
+                                            size="small"
+                                            type="warning"
+                                            @click="editEleClick"
                                             >编辑元素表单</el-button
                                         >
                                         <el-button size="small" type="success"
@@ -205,6 +208,14 @@
             :tableTypelist="tableTypelist"
             :ownerTypeList="ownerTypeList"
         ></createNewExcel>
+        <!-- 编辑元素表信息 -->
+        <editElePage
+            v-model="editEleShow"
+            @close="editClose"
+            :tableTypelist="tableTypelist"
+            :ownerTypeList="ownerTypeList"
+            :tab="tableData"
+        ></editElePage>
     </hc-drawer>
 </template>
 
@@ -227,6 +238,7 @@ import mainApi from "~api/wbs/tree";
 import { useAppStore } from "~src/store";
 import TreeNodeEditDialog from "./tree-node-edit.vue";
 import createNewExcel from "./create-new-excel.vue";
+import editElePage from "./edit-ele.vue";
 //缓存
 const store = useAppStore();
 const userInfo = ref(store.getUserInfo);
@@ -605,6 +617,20 @@ const createNew = () => {
         window.$message.warning("请先选择在哪个节点下创建表");
     }
 };
+//编辑元素表单
+const editEleShow = ref(false);
+const editClose = () => {
+    editEleShow.value = false;
+    getTableData();
+};
+const editEleClick = () => {
+    const { id } = nodeInfo.value;
+    if (id) {
+        editEleShow.value = true;
+    } else {
+        window.$message.warning("请先选择编辑哪个节点");
+    }
+};
 </script>
 
 <style lang="scss">

+ 107 - 0
src/views/desk/wbs/edit-ele.vue

@@ -0,0 +1,107 @@
+<template>
+    <hc-dialog
+        v-model="isShow"
+        is-footer-center
+        title="编辑元素表单信息"
+        @close="dialogClose"
+        @save="saveElementHandle"
+        widths="56rem"
+        :loading="submitLoading"
+    >
+        <hc-table :column="tableColumn" :datas="tableData">
+            <template #tableType="{ row }">
+                <el-select v-model="row.tableType" placeholder="请选择">
+                    <el-option
+                        v-for="item in tableTypelist"
+                        :key="item.id"
+                        :label="item.label"
+                        :value="item.value"
+                    ></el-option>
+                </el-select>
+            </template>
+            <template #tableOwner="{ row }">
+                <el-select v-model="row.tableOwner" placeholder="请选择">
+                    <el-option
+                        v-for="item in ownerTypeList"
+                        :key="item.id"
+                        :label="item.label"
+                        :value="item.value"
+                    ></el-option>
+                </el-select>
+            </template>
+        </hc-table>
+    </hc-dialog>
+</template>
+<script setup>
+import { ref, watch } from "vue";
+import mainApi from "~api/wbs/wbsforelement";
+const props = defineProps({
+    ownerTypeList: {
+        type: Array,
+        default: () => [],
+    },
+    tableTypelist: {
+        type: Array,
+        default: () => [],
+    },
+    tab: {
+        type: Array,
+        default: () => [],
+    },
+});
+//事件
+const emit = defineEmits(["close"]);
+//双向绑定
+// eslint-disable-next-line no-undef
+const isShow = defineModel("modelValue", {
+    default: false,
+});
+//监听显示
+watch(isShow, (val) => {
+    if (val) {
+        // getDataTypelist();
+    } else {
+        emit("close");
+    }
+});
+const ownerTypeList = ref(props.ownerTypeList);
+const tableTypelist = ref(props.tableTypelist);
+const tableData = ref(props.tab);
+//监听数据
+watch(
+    () => [props.ownerTypeList, props.tableTypelist, props.tab],
+    ([own, table, tabdata]) => {
+        ownerTypeList.value = own;
+        tableTypelist.value = table;
+        tableData.value = tabdata;
+        tableData.value.forEach((ele) => {
+            ele.tableType = Number(ele.tableType);
+            ele.tableOwner = Number(ele.tableOwner);
+        });
+    },
+    { deep: true }
+);
+//关闭弹窗
+const dialogClose = () => {
+    isShow.value = false;
+    emit("close");
+};
+const submitLoading = ref(false);
+const saveElementHandle = async () => {
+    submitLoading.value = true;
+    const { error, code } = await mainApi.upateBatchNodeTableInfo(
+        tableData.value
+    );
+    submitLoading.value = false;
+    if (!error && code === 200) {
+        window?.$message?.success("操作成功");
+        dialogClose();
+    }
+};
+const tableColumn = [
+    { key: "tableName", name: "表名" },
+    { key: "tableType", name: "表类型" },
+    { key: "tableOwner", name: "所属方" },
+    { key: "fillRate", name: "填报率" },
+];
+</script>