8
0
Pārlūkot izejas kodu

关联节点修改

duy 10 mēneši atpakaļ
vecāks
revīzija
e5984b52de

+ 15 - 0
src/api/modules/wbs/private.js

@@ -164,4 +164,19 @@ export default {
             params: form,
         });
     },
+    //私有wbs关联节点
+    async LinekNodeTreelist(form) {
+        return HcApi({
+            url: "/api/blade-manager/wbsPrivate/getlinek-node-treelist",
+            method: "post",
+            params: form,
+        });
+    },
+    async LinekNodeTree(form) {
+        return HcApi({
+            url: "/api/blade-manager/wbsPrivate/link-node-tree",
+            method: "post",
+            params: form,
+        });
+    },
 };

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

@@ -441,7 +441,7 @@ const queryValue = ref("");
 const getEditEleList = async () => {
     const { data } = await mainApi.getTableElements({
         id: tableId.value,
-        search: "",
+        search: queryValue.value,
         type: type.value,
     });
     editEleList.value = getArrValue(data);

+ 46 - 16
src/views/project/list/independent/allocateWbs.vue

@@ -1,5 +1,4 @@
 <template>
-    <!-- 树节点调整排序 -->
     <hc-dialog
         v-model="isShow"
         title="分配WBS"
@@ -18,6 +17,7 @@
                     accordion
                     highlight-current
                     @node-click="treeClick"
+                    :default-checked-keys="checkedLinkNodesKeys"
                 >
                     <template #default="{ node, data }">
                         <span
@@ -70,6 +70,10 @@ const props = defineProps({
         type: Object,
         default: () => ({}),
     },
+    type: {
+        type: [String, Number],
+        default: "0", //私有wbs为1,独立表单库为0
+    },
 });
 const store = useAppStore();
 const userInfo = ref(store.getUserInfo);
@@ -83,15 +87,17 @@ watch(
 const projectId = ref(props.projectId);
 const wbsId = ref(props.wbsId);
 const wbsType = ref(props.wbsType);
-const data = ref(props.data);
+const dataInfo = ref(props.data);
+const type = ref(props.type);
 //监听数据
 watch(
-    () => [props.projectId, props.wbsId, props.wbsType, props.data],
-    ([pid, wid, wtype, info]) => {
+    () => [props.projectId, props.wbsId, props.wbsType, props.data, props.type],
+    ([pid, wid, wtype, info, tpe]) => {
         projectId.value = pid;
         wbsId.value = wid;
         wbsType.value = wtype;
-        data.value = info;
+        dataInfo.value = info;
+        type.value = tpe;
     },
     { deep: true }
 );
@@ -99,11 +105,21 @@ watch(
 watch(isShow, (val) => {
     selectData.value = [];
     if (val) {
+        if (type.value === 1) {
+            getLinekNodeTreelistData();
+        }
     } else {
         emit("close");
     }
 });
-
+//获取关联的节点
+const checkedLinkNodesKeys = ref([]);
+const getLinekNodeTreelistData = async () => {
+    const { data } = await privateApi.LinekNodeTreelist({
+        pkeyid: dataInfo.value.pkeyId,
+    });
+    checkedLinkNodesKeys.value = getArrValue(data);
+};
 //关闭弹窗
 const dialogClose = () => {
     selectData.value = [];
@@ -154,16 +170,30 @@ const submitLoading = ref(false);
 const submitClick = async () => {
     const nodesIdArray = selectData.value.map((obj) => obj.primaryKeyId);
     const commaSeparatedIds = nodesIdArray.join(","); // 使用逗号连接数组中的所有元素
-    submitLoading.value = true;
-    const { code, error, msg } = await privateApi.syncFormToContractNode({
-        nodeIds: commaSeparatedIds,
-        projectId: projectId.value,
-        primaryKeyId: data.value.id,
-    });
-    submitLoading.value = false;
-    if (!error && code === 200) {
-        window.$message.success(msg);
-        dialogClose();
+
+    if (type.value === 1) {
+        submitLoading.value = true;
+        const { code, error, msg } = await privateApi.LinekNodeTree({
+            nodeids: commaSeparatedIds,
+            pkeyid: dataInfo.value.id,
+        });
+        submitLoading.value = false;
+        if (!error && code === 200) {
+            window.$message.success(msg);
+            dialogClose();
+        }
+    } else {
+        submitLoading.value = true;
+        const { code, error, msg } = await privateApi.syncFormToContractNode({
+            nodeIds: commaSeparatedIds,
+            projectId: projectId.value,
+            primaryKeyId: dataInfo.value.id,
+        });
+        submitLoading.value = false;
+        if (!error && code === 200) {
+            window.$message.success(msg);
+            dialogClose();
+        }
     }
 };
 </script>

+ 60 - 2
src/views/project/list/wbs-tree.vue

@@ -163,11 +163,13 @@
                                             >预览</el-link
                                         >
                                         <el-link
+                                            @click="hideClick(row)"
                                             v-if="row.status === 1"
                                             type="warning"
                                             >隐藏表单</el-link
                                         >
                                         <el-link
+                                            @click="hideClick(row)"
                                             v-if="row.status === 0"
                                             type="success"
                                             >取消隐藏</el-link
@@ -243,8 +245,21 @@
                                         @click="elementFormulasClick(row)"
                                         >编辑元素公式</el-link
                                     >
-                                    <el-link type="warning">表单同步</el-link>
-                                    <el-link type="primary">关联节点</el-link>
+                                    <el-link
+                                        type="warning"
+                                        @click="syncTable(row)"
+                                        v-loading="syncTableLoading"
+                                        >表单同步</el-link
+                                    >
+                                    <el-link
+                                        v-if="
+                                            treeItem.nodeType === 1000 ||
+                                            treeItem.nodeType === 1001
+                                        "
+                                        type="primary"
+                                        @click="linkNodeClick(row)"
+                                        >关联节点</el-link
+                                    >
                                     <el-link
                                         v-del-com:[delInfoTableRow]="row"
                                         type="danger"
@@ -423,6 +438,15 @@
             :eKey="eKey"
             :type="0"
         ></createNewExcel>
+
+        <!-- 分配WBS -->
+        <allocateWbs
+            v-model="isAllocateShow"
+            :wbsType="isType"
+            :projectId="projectInfo.id"
+            :data="allocateWbsInfo"
+            :type="1"
+        ></allocateWbs>
     </hc-drawer>
 </template>
 
@@ -447,6 +471,7 @@ import editElePage from "../../desk/wbs/edit-ele.vue";
 import tableSort from "../../desk/wbs/table-sort.vue";
 import previewPage from "./previewPage.vue";
 import createNewExcel from "../../desk/wbs/create-new-excel.vue";
+import allocateWbs from "../list/independent/allocateWbs.vue";
 
 const props = defineProps({
     type: {
@@ -1191,6 +1216,39 @@ const handleEdit = (row) => {
     initTableId.value = row.initTableId;
     eKey.value = row.ekey;
 };
+//隐藏表单
+const hideClick = async (row) => {
+    //隐藏按钮
+    const { code, error } = await wbsTreeApi.updateStatus({
+        pKeyId: row.pkeyId,
+    });
+    if (!error && code === 200) {
+        if (row.status == 0) {
+            row.status = 1;
+        } else {
+            row.status = 0;
+        }
+    }
+};
+//表单同步
+const syncTableLoading = ref(false);
+const syncTable = async (row) => {
+    syncTableLoading.value = true;
+    const { code, error } = await wbsTreeApi.syncCurrentFormInProject({
+        pKeyId: row.pkeyId,
+    });
+    syncTableLoading.value = false;
+    if (!error && code === 200) {
+        window?.$message.success("操作成功");
+    }
+};
+//关联节点
+const isAllocateShow = ref(false);
+const allocateWbsInfo = ref({});
+const linkNodeClick = (row) => {
+    allocateWbsInfo.value = row;
+    isAllocateShow.value = true;
+};
 </script>
 
 <style scoped lang="scss">