8
0
ZaiZai 1 rok pred
rodič
commit
ba1fcc08b8

+ 1 - 0
src/views/exctab/element/add-col-tab.vue

@@ -100,6 +100,7 @@ const dialogSubmit = async () => {
     submitLoading.value = false
     if (!isRes) return
     window.$message.success('操作成功')
+    dialogClose()
     emit('finish')
 }
 

+ 1 - 0
src/views/exctab/element/element-lib.vue

@@ -124,6 +124,7 @@ const dialogSubmit = async () => {
     submitLoading.value = false
     if (!isRes) return
     window.$message.success('操作成功')
+    dialogClose()
     emit('finish')
 }
 

+ 107 - 17
src/views/exctab/element/web-temp.vue

@@ -5,17 +5,17 @@
                 <hc-card scrollbar>
                     <template #header>
                         <div class="w-full">
-                            <el-select v-model="formModel.name" filterable block placeholder="请选择清表模板">
+                            <el-select v-model="formModelName" filterable block placeholder="请选择清表模板">
                                 <el-option v-for="item in excelData" :key="item.id" :label="item.wbsName" :value="item.id" />
                             </el-select>
                         </div>
                     </template>
                     <template #search>
-                        <div v-if="formModel.name" class="w-full">
+                        <div v-if="formModelName" class="w-full">
                             <hc-search-input v-model="filterText" placeholder="输入关键字搜索" @search="treeFilterClick" />
                         </div>
                     </template>
-                    <template v-if="formModel.name">
+                    <template v-if="formModelName">
                         <template v-if="isTreeMode === 1">
                             <hc-lazy-tree
                                 v-if="isShow" ref="treeRef1" :h-props="treeProps" tree-key="id" :show-checkbox="tabsKey === '2'" check-strictly
@@ -49,7 +49,23 @@
                             </template>
                         </hc-table>
                     </template>
-                    内容区域
+                    <div v-if="tabsKey === '2'">
+                        <el-form ref="formRef" :model="formModel" :rules="formRules" label-position="top" label-width="auto" size="large">
+                            <el-form-item label="元素表名:" prop="nodeName">
+                                <el-input v-model="formModel.nodeName" type="textarea" placeholder="请输入元素表名" />
+                            </el-form-item>
+                            <el-form-item label="清表类型:" prop="tableType">
+                                <el-select v-model="formModel.tableType" filterable block placeholder="请选择清表类型">
+                                    <el-option v-for="item in excelTypeData" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="所属方:" prop="tableOwner">
+                                <el-select v-model="formModel.tableOwner" filterable block placeholder="请选择所属方">
+                                    <el-option v-for="item in ownerTypeList" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </el-form-item>
+                        </el-form>
+                    </div>
                 </hc-tab-card>
             </div>
         </div>
@@ -104,6 +120,7 @@ watch(isShow, (val) => {
 
 //获取数据详情
 const tableData = ref([])
+const formModelName = ref('')
 const getInfoData = () => {
     getWbsTypeList()
     //处理元素字段信息
@@ -159,7 +176,7 @@ const treeLoadNode = async ({ item, level }, resolve) => {
     const parentId = level === 0 ? 0 : item.id
     const { data } = await mainApi.getLazyTree({
         parentId: parentId,
-        wbsId: formModel.value.name,
+        wbsId: formModelName.value,
         wbsType: '1',
     })
     const res = getArrValue(data)
@@ -175,7 +192,7 @@ const getTreeAllData = async () => {
     const { data } = await mainApi.getAllTree({
         tenantId: '000000',
         type: 1,
-        wbsId: formModel.value.name,
+        wbsId: formModelName.value,
     })
     treeData.value = getArrValue(data)
 }
@@ -234,29 +251,102 @@ const tabsData = ref([
     { key: '1', name: '关联元素表' },
     { key: '2', name: '新增元素表' },
 ])
-const tabsChange = ({ key }) => {
+const tabsChange = async ({ key }) => {
     tabsKey.value = key
+    const form = getObjValue(dataInfo.value)
+    const tree = getObjValue(nodeInfo.value)
+    //默认表单数据
+    formModel.value = {
+        wbsId: formModelName.value,
+        parentId: tree.id,
+        nodeName: form.name,
+        excelTabId: form.id,
+        elementList: tableData.value,
+    }
+    //判断当前选项卡
     if (key === '1') {
-        getNodeTable(nodeInfo.value.id)
+        formModel.value.submitStatus = 1
+        getNodeTable(nodeInfo.value.id).then()
     } else if (key === '2') {
-
+        //默认表单数据
+        formModel.value.submitStatus = 2
+        //获取下拉数据
+        excelTypeData.value = await getDictionaryData('table_type')
+        ownerTypeList.value = await getDictionaryData('owner_type')
+        //设置默认类型
+        if (form.tabType > 0 && form.tabType < 100) {
+            formModel.value.tableType = form.tabType
+        }
     }
 }
 
-//表单
+const excelTypeData = ref([])
+const ownerTypeList = ref([])
+
+//基础表单
+const formRef = ref(null)
 const formModel = ref({})
+const formRules = {
+    nodeName: {
+        required: true,
+        trigger: 'blur',
+        message: '请输入元素表名',
+    },
+    tableType: {
+        required: true,
+        trigger: 'blur',
+        message: '请选择清表类型',
+    },
+    tableOwner: {
+        required: true,
+        trigger: 'blur',
+        message: '请选择所属方',
+    },
+}
 
 //提交
 const submitLoading = ref(false)
 const dialogSubmit = async () => {
-    /*const isForm = await formValidate(formRef.value)
+    const isForm = await formValidate(formRef.value)
     if (!isForm) return false
-    submitLoading.value = true
-    const { isRes } = await mainApi.submitExcelElement(formModel.value)
-    submitLoading.value = false
-    if (!isRes) return*/
-    window.$message.success('操作成功')
-    emit('finish')
+    if (tabsKey.value === '1') {
+        submitLoading.value = true
+        const { isRes } = await mainApi.submitExcelElement(formModel.value)
+        submitLoading.value = false
+        if (!isRes) return
+        window.$message.success('操作成功')
+        emit('finish')
+    } else {
+        submitLoading.value = true
+        let nodeIds1, nodeIds2
+        if (treeRef1.value) {
+            nodeIds1 = treeRef1.value?.treeRef?.getCheckedKeys()
+        }
+        if (treeRef1.value) {
+            nodeIds2 = treeRef2.value?.treeRef?.getCheckedKeys()
+        }
+        const selectNodeIds = uniqueArr(nodeIds1, nodeIds2)
+        if (selectNodeIds.length <= 0) {
+            window?.$message.warning('至少勾选一个节点')
+            submitLoading.value = false
+            return
+        }
+        formModel.value.nodeIds = selectNodeIds
+        const { isRes } = await mainApi.submitExcelElement(formModel.value)
+        submitLoading.value = false
+        if (!isRes) return
+        window.$message.success('操作成功')
+        dialogClose()
+        emit('finish')
+    }
+}
+
+//数组去重
+const uniqueArr = (arr1, arr2) => {
+    //合并两个数组
+    arr1.push(...arr2)//或者arr1 = [...arr1,...arr2]
+    //去重
+    return Array.from(new Set(arr1))//let arr3 = [...new Set(arr1)]
 }
 
 //关闭弹窗