Bläddra i källkod

划分树引用元素表处理。

ZaiZai 2 år sedan
förälder
incheckning
1cac690f68
2 ändrade filer med 73 tillägg och 11 borttagningar
  1. 8 0
      src/api/modules/data-fill/division.js
  2. 65 11
      src/views/data-fill/division.vue

+ 8 - 0
src/api/modules/data-fill/division.js

@@ -33,4 +33,12 @@ export default {
             params: form
         },msg);
     },
+    //添加合同段节点树
+    async addWbsContractInfo(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-manager/wbsPrivate/add-wbs-contract-info',
+            method: 'post',
+            params: form
+        },msg);
+    },
 }

+ 65 - 11
src/views/data-fill/division.vue

@@ -268,7 +268,7 @@
                             @select="searchTreeSelect"/>
                     </div>
                     <div class="dialog-table">
-                        <HcTable :column="dialogTableColumn" :datas="dialogTableData" isCheck @selection-change="dialogTableSelection"/>
+                        <HcTable ref="dialogTableRef" :column="dialogTableColumn" :datas="dialogTableData" isCheck @selection-change="dialogTableSelection"/>
                     </div>
                     <div class="dialog-pages">
                         <HcPages :pages="searchFormPage" @change="searchFormPageChange"/>
@@ -973,9 +973,13 @@ const toBackClick = () => {
 //添加独立表单
 const addingFormModal = ref(false)
 const addingFormClick = () => {
-    addingFormLoading.value = false
-    addingFormModal.value = true
-
+    const { isLeaf } = treeNodeInfo.value
+    if (isLeaf) {
+        addingFormLoading.value = false
+        addingFormModal.value = true
+    } else {
+        window?.$message?.warning('请先选择一个最子级的节点')
+    }
 }
 
 //树配置
@@ -1000,10 +1004,10 @@ const addingFormTreeLoadNode = async (node, resolve) => {
 //树被点击
 const addingFormTreeItem = ref({})
 const addingFormTreeClick = async (data) => {
+    searchTreeTitle.value = ''
     addingFormTreeItem.value = data
-    const resData = await tabTypeLazyTree(data?.primaryKeyId,'', true)
-    console.log(resData)
-    dialogTableData.value = resData
+    searchFormPage.value.current = 1
+    getDialogTableData()
 }
 
 //搜索
@@ -1015,7 +1019,11 @@ const querySearchTree = async (key, resolve) => {
     resolve(resData)
 }
 const searchTreeSelect = (item) => {
-    console.log(item)
+    dialogTableRef.value?.clearSelection()
+    dialogTableKeys.value = []
+    dialogTableData.value = [item]
+    searchFormPage.value.current = 1
+    searchFormPage.value.total = 0
 }
 
 //搜索
@@ -1023,9 +1031,11 @@ const searchFormPage = ref({current: 1, size: 20, total: 0})
 const searchFormPageChange = ({current, size}) => {
     searchFormPage.value.current = current
     searchFormPage.value.size = size
+    getDialogTableData()
 }
 
 //表格数据
+const dialogTableRef = ref(null)
 const dialogTableColumn = ref([
     {key:'title', name: '表单名称'},
     {key:'tableType', name: '元素表类型'},
@@ -1034,6 +1044,24 @@ const dialogTableColumn = ref([
     {key:'fillRate', name: '填报率'}
 ])
 const dialogTableData = ref([])
+const getDialogTableData = async () => {
+    //处理初始数据
+    dialogTableRef.value?.clearSelection()
+    dialogTableKeys.value = []
+    const primaryKeyId = addingFormTreeItem.value?.primaryKeyId ?? ''
+    const searchTitle = searchTreeTitle.value ?? ''
+    //获取数据
+    const resData = await tabTypeLazyTree(primaryKeyId, searchTitle, true)
+    const records = getArrValue(resData?.records)
+    console.log(records)
+    //处理返回的数据
+    dialogTableData.value = records
+    if (records.length > 0) {
+        searchFormPage.value.total = data.total || 0
+    } else {
+        searchFormPage.value.total = 0
+    }
+}
 
 //多选
 const dialogTableKeys = ref([]);
@@ -1061,17 +1089,43 @@ const tabTypeLazyTree = async (parentId = '12345678910', titleName = '', search
     return resData
 }
 
-
 //保存
 const addingFormLoading = ref(false)
-const addingFormSave = () => {
-
+const addingFormSave = async () => {
+    const rows = dialogTableKeys.value
+    if (rows.length > 0) {
+        addingFormLoading.value = true
+        const { primaryKeyId } = treeItemInfo.value
+        const ids = rowsToId(rows, 'primaryKeyId')
+        //发起请求
+        const { error, code } = await divisionApi.addWbsContractInfo({
+            projectId: projectId.value,
+            contractId: contractId.value,
+            nodeId: primaryKeyId,
+            primaryKeyIds: ids
+        })
+        //处理结果
+        addingFormLoading.value = false
+        if (!error && code === 200) {
+            window.$message?.success('操作成功')
+            window?.location?.reload()  //刷新页面
+        }
+    } else {
+        window.$message?.warning('请先勾选数据')
+    }
 }
 //关闭
 const addingFormClose = () => {
     addingFormModal.value = false
+    dialogTableKeys.value = []
 }
 
+//拼接ID
+const rowsToId = (rows, key = 'id') => {
+    return rows.map((obj) => {
+        return obj[key];
+    }).join(",")
+}
 
 //左右拖动,改变树形结构宽度
 const leftWidth = ref(382);