浏览代码

资料填报,表单弹窗

ZaiZai 2 年之前
父节点
当前提交
53f9f890b5

+ 28 - 3
src/components/table-form/index.vue

@@ -57,6 +57,10 @@ const props = defineProps({
         type: Boolean,
         type: Boolean,
         default: false
         default: false
     },
     },
+    datas: { //变动的数据
+        type: Object,
+        default: () => ({})
+    },
 })
 })
 
 
 //初始变量
 //初始变量
@@ -69,6 +73,7 @@ const apis = ref(props.api)
 const tableFormItemStyle = ref('')
 const tableFormItemStyle = ref('')
 const loading = ref(false)
 const loading = ref(false)
 const isScroll = ref(props.scroll)
 const isScroll = ref(props.scroll)
+const changeData = ref(props.datas)
 
 
 //监听
 //监听
 watch(() => [
 watch(() => [
@@ -90,6 +95,14 @@ watch(() => [
     setItemStyle(width, height)
     setItemStyle(width, height)
 })
 })
 
 
+//深度监听变动的对象数据
+watch(() => [
+    props.datas
+], ([data]) => {
+    changeData.value = data
+    setFormChangeData(data)
+}, {deep: true})
+
 //渲染完成
 //渲染完成
 onMounted(async () => {
 onMounted(async () => {
     let keys = []
     let keys = []
@@ -111,6 +124,15 @@ onMounted(async () => {
     loading.value = false
     loading.value = false
 })
 })
 
 
+const setFormChangeData = (data) => {
+    const form = tableFormInfo.value
+    tableFormInfo.value = {
+        ...form,
+        ...data
+    }
+    tableFormInfo.value = form
+}
+
 //设置样式
 //设置样式
 const setItemStyle = (width, height) => {
 const setItemStyle = (width, height) => {
     tableFormItemStyle.value = `width: ${width}; height: ${height};`
     tableFormItemStyle.value = `width: ${width}; height: ${height};`
@@ -146,10 +168,14 @@ const getTableFormInfo = async (pkeyId, func) => {
             HTableForm.setPickerKey(resData)
             HTableForm.setPickerKey(resData)
             tableFormInfo.value = {
             tableFormInfo.value = {
                 ...resData,
                 ...resData,
-                ...getFormDataInit()
+                ...getFormDataInit(),
+                ...changeData.value
             }
             }
         } else {
         } else {
-            tableFormInfo.value = getFormDataInit()
+            tableFormInfo.value = {
+                ...getFormDataInit(),
+                ...changeData.value
+            }
         }
         }
     } else {
     } else {
         tableFormInfo.value = {}
         tableFormInfo.value = {}
@@ -203,7 +229,6 @@ const getExcelHtml = async (pkeyId, func, keys) => {
                 }
                 }
             })
             })
             tableFormInfo.value.isRenderForm = true
             tableFormInfo.value.isRenderForm = true
-            console.log('表单渲染完成')
             await nextTick(() => {
             await nextTick(() => {
                 HTableForm.setByClassKeyup(keys)
                 HTableForm.setByClassKeyup(keys)
             })
             })

+ 2 - 2
src/styles/data-fill/wbs.scss

@@ -11,7 +11,7 @@
         margin-right: 24px;
         margin-right: 24px;
         margin-left: -24px;
         margin-left: -24px;
         visibility: hidden;
         visibility: hidden;
-        box-shadow: -2px 0 10px 0 rgba(32,37,50,0.03), 0 10px 21px 20px rgba(32,37,50,0.03);
+        box-shadow: -2px 0 10px 0 rgba(32, 37, 50, 0.03), 0 10px 21px 20px rgba(32, 37, 50, 0.03);
         .horizontal-drag-line {
         .horizontal-drag-line {
             position: absolute;
             position: absolute;
             right: 0;
             right: 0;
@@ -172,7 +172,7 @@
 
 
 .copy-node-many-box {
 .copy-node-many-box {
     position: relative;
     position: relative;
-    height: 53vh;
+    height: 51vh;
     display: flex;
     display: flex;
     margin-top: 24px;
     margin-top: 24px;
     margin-bottom: -30px;
     margin-bottom: -30px;

+ 36 - 10
src/views/data-fill/collapse-form/index.vue

@@ -67,7 +67,9 @@
                     </div>
                     </div>
                     <div v-else class="data-fill-table-form-box">
                     <div v-else class="data-fill-table-form-box">
                         <HcTableForm v-if="item.isTableRender" :ref="(el) => setItemRefs(el, item)" :api="apis"
                         <HcTableForm v-if="item.isTableRender" :ref="(el) => setItemRefs(el, item)" :api="apis"
-                                     :classify="classifys" :kid="item?.pkeyId" :tid="treeId"
+                                     :classify="classifys" :datas="changeFormDatas(item?.pkeyId, 'collapse')"
+                                     :kid="item?.pkeyId"
+                                     :tid="treeId"
                                      scroll @render="tableFormRender($event, item, index)"
                                      scroll @render="tableFormRender($event, item, index)"
                                      @rightTap="tableFormRightTap($event, index)"/>
                                      @rightTap="tableFormRightTap($event, index)"/>
                     </div>
                     </div>
@@ -225,7 +227,7 @@
                      isSortTop @close="TableFormClose($event, item, index)">
                      isSortTop @close="TableFormClose($event, item, index)">
             <HcDragNode :more-menu="dragNodeMoreMenu" @menuTap="dragNodeMoreMenuTap($event, item)">
             <HcDragNode :more-menu="dragNodeMoreMenu" @menuTap="dragNodeMoreMenuTap($event, item)">
                 <HcTableForm :ref="(el) => setItemRefs(el, item)" :api="apis" :classify="item.classify"
                 <HcTableForm :ref="(el) => setItemRefs(el, item)" :api="apis" :classify="item.classify"
-                             :height="item.height"
+                             :datas="changeFormDatas(item?.pkeyId, 'window')" :height="item.height"
                              :kid="item.pkeyId" :tid="item.treeId" :width="item.width"
                              :kid="item.pkeyId" :tid="item.treeId" :width="item.width"
                              @render="tableFormRender($event, item['item'], item['index'])"
                              @render="tableFormRender($event, item['item'], item['index'])"
                              @rightTap="tableFormRightTap($event, item['index'])"/>
                              @rightTap="tableFormRightTap($event, item['index'])"/>
@@ -276,10 +278,6 @@ const props = defineProps({
         type: [String, Number],
         type: [String, Number],
         default: ''
         default: ''
     },
     },
-    authBtnTabKey: {
-        type: [String, Number],
-        default: ''
-    },
     drawType: {
     drawType: {
         type: Boolean,
         type: Boolean,
         default: false
         default: false
@@ -309,7 +307,6 @@ const wbs_type = ref(props.wbsType);
 const isStatus = ref(parseInt(props.status))
 const isStatus = ref(parseInt(props.status))
 const listDatas = ref([])
 const listDatas = ref([])
 const draw_type = ref(props.drawType)
 const draw_type = ref(props.drawType)
-const auth_Key = ref(props.authBtnTabKey)
 
 
 //表单变量
 //表单变量
 const formDataList = ref([])
 const formDataList = ref([])
@@ -389,6 +386,35 @@ nextTick(() => {
     DragModalHeight.value = offsetHeight - 200
     DragModalHeight.value = offsetHeight - 200
 })
 })
 
 
+//处理变动的数据
+const changeFormData = ref({
+    'window': [],
+    'collapse': [],
+})
+const changeFormDatas = (pkeyId, type) => {
+    const changeData = changeFormData.value[type]
+    const index = getIndex(changeData, 'pkeyId', pkeyId)
+    if (index !== -1) {
+        return changeData[index]
+    } else {
+        return {}
+    }
+}
+
+//设置变动的数据
+const setChangeFormDatas = async (pkeyId, type) => {
+    const refs = await getFormRef(pkeyId)
+    const formData = refs?.getFormData()
+    const changeData = changeFormData.value[type]
+    const index = getIndex(changeData, 'pkeyId', pkeyId)
+    if (index !== -1) {
+        changeData[index] = formData
+    } else {
+        changeData.push(formData)
+    }
+    changeFormData.value[type] = changeData
+}
+
 //展开事件
 //展开事件
 const ActiveKey = ref([])
 const ActiveKey = ref([])
 const CollapseChange = (name) => {
 const CollapseChange = (name) => {
@@ -690,6 +716,7 @@ const windowClick = async (item, indexs) => {
                 ...setInitDragModalTableForm(item, indexs),
                 ...setInitDragModalTableForm(item, indexs),
                 ...formSize
                 ...formSize
             }
             }
+            await setChangeFormDatas(item?.pkeyId, 'window')
             item.isWindow = true
             item.isWindow = true
             //处理表单的ref
             //处理表单的ref
             await setSpliceItemRefs(item)
             await setSpliceItemRefs(item)
@@ -704,6 +731,7 @@ const windowClick = async (item, indexs) => {
             DragModalTableForm.value = list
             DragModalTableForm.value = list
             ActiveKey.value = []
             ActiveKey.value = []
         } else {
         } else {
+            await setChangeFormDatas(item?.pkeyId, 'collapse')
             //处理表单的ref
             //处理表单的ref
             await setSpliceItemRefs(item)
             await setSpliceItemRefs(item)
             if (index !== -1) {
             if (index !== -1) {
@@ -742,9 +770,7 @@ const TableFormClose = async (closeFunc, item, index) => {
     list.splice(index, 1)
     list.splice(index, 1)
     listDatas.value[item.index].isWindow = false
     listDatas.value[item.index].isWindow = false
     //取表单的数据
     //取表单的数据
-    const refs = await getFormRef(item?.pkeyId)
-    const formData = refs?.getFormData()
-    console.log(formData)
+    await setChangeFormDatas(item?.pkeyId, 'collapse')
     //关闭窗口
     //关闭窗口
     closeFunc()
     closeFunc()
     DragModalTableForm.value = list
     DragModalTableForm.value = list

+ 62 - 52
src/views/data-fill/wbs.vue

@@ -36,16 +36,18 @@
             <HcDrawer :show="isDrawer" actionUi="text-center" to-id="wbs-node-tree-card-target" @close="drawerClose">
             <HcDrawer :show="isDrawer" actionUi="text-center" to-id="wbs-node-tree-card-target" @close="drawerClose">
                 <!--清表列表-->
                 <!--清表列表-->
                 <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef">
                 <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef">
-                    <ListItem ref="ListItemsRef"
-                              :classify="authBtnTabKey"
-                              :contractId="contractId"
-                              :datas="ListItemDatas"
-                              :drawType="isDrawType"
-                              :primaryKeyId="primaryKeyId"
-                              :projectInfo="projectInfo"
-                              :status="NodeStatus"
-                              @offsetTop="ListItemOffsetTop"
-                              @renew="getTableDataAll"/>
+                    <CollapseForm ref="ListItemsRef"
+                                  :classify="authBtnTabKey"
+                                  :contractId="contractId"
+                                  :datas="ListItemDatas"
+                                  :drawType="isDrawType"
+                                  :primaryKeyId="primaryKeyId"
+                                  :status="NodeStatus"
+                                  :tenantId="userInfo?.tenant_id"
+                                  :wbsTempId="projectInfo?.referenceWbsTemplateIdTrial"
+                                  :wbsType="2"
+                                  @offsetTop="ListItemOffsetTop"
+                                  @renew="getTableDataAll"/>
                 </el-scrollbar>
                 </el-scrollbar>
                 <HcStatus v-else text="暂无表单"/>
                 <HcStatus v-else text="暂无表单"/>
                 <!--底部按钮区域-->
                 <!--底部按钮区域-->
@@ -187,7 +189,6 @@
                     <!--清表列表-->
                     <!--清表列表-->
                     <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef" v-loading="ListItemLoading">
                     <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef" v-loading="ListItemLoading">
                         <CollapseForm ref="ListItemRef"
                         <CollapseForm ref="ListItemRef"
-                                      :authBtnTabKey="authBtnTabKey"
                                       :classify="authBtnTabKey"
                                       :classify="authBtnTabKey"
                                       :contractId="contractId"
                                       :contractId="contractId"
                                       :datas="ListItemDatas"
                                       :datas="ListItemDatas"
@@ -199,20 +200,6 @@
                                       :wbsType="2"
                                       :wbsType="2"
                                       @offsetTop="ListItemOffsetTop"
                                       @offsetTop="ListItemOffsetTop"
                                       @renew="getTableDataAll"/>
                                       @renew="getTableDataAll"/>
-
-                        <!--ListItem ref="ListItemRef"
-                                  :classify="authBtnTabKey"
-                                  :contractId="contractId"
-                                  :datas="ListItemDatas"
-                                  :drawType="!isDrawType"
-                                  :primaryKeyId="primaryKeyId"
-                                  :projectInfo="projectInfo"
-                                  :status="NodeStatus"
-                                  :tenantId="userInfo?.tenant_id"
-                                  :wbsTempId="projectInfo?.referenceWbsTemplateIdTrial"
-                                  :wbsType="2"
-                                  @offsetTop="ListItemOffsetTop"
-                                  @renew="getTableDataAll"/-->
                     </el-scrollbar>
                     </el-scrollbar>
 
 
                     <HcStatus v-else text="暂无表单"/>
                     <HcStatus v-else text="暂无表单"/>
@@ -324,34 +311,42 @@
         <HcDialog :loading="copyNodeLoading" :show="copyNodeModal" :widths="copyNodeTabKey === '1'?'600px':'1200px'"
         <HcDialog :loading="copyNodeLoading" :show="copyNodeModal" :widths="copyNodeTabKey === '1'?'600px':'1200px'"
                   loading-text="复制节点中,请耐心等待..."
                   loading-text="复制节点中,请耐心等待..."
                   title="复制节点" @close="copyNodeModal = false">
                   title="复制节点" @close="copyNodeModal = false">
-            <el-form v-if="copyNodeTabKey !== '3'" ref="formCopyNodeModelRef" :model="formCopyNodeModel"
-                     :rules="formCopyNodeModelRules" label-width="auto" size="large">
-                <el-form-item v-if="copyNodeTabKey === '1'" label="节点名称" prop="title" style="margin-bottom: 0;">
-                    <el-input v-model="formCopyNodeModel.title" placeholder="请输入节点名称"/>
-                </el-form-item>
-                <el-form-item v-if="copyNodeTabKey === '1'" label="划分编号" prop="partitionCode"
-                              style="margin-top: 10px;">
-                    <el-input v-model="formCopyNodeModel.partitionCode" placeholder="请输入划分编号"/>
-                </el-form-item>
-            </el-form>
 
 
-            <el-form v-if="copyNodeTabKey === '3'" ref="formCopyNodeModelRef" :model="formCopyNodeModel"
-                     :rules="formCopyNodeModelRules" label-width="auto" size="large">
-                <el-form-item label="所属方" prop="classify" style="margin-bottom: 0;">
-                    <!-- <el-input v-model="formCopyNodeModel.classify" placeholder="请输入节点名称"/> -->
-                    <el-checkbox-group v-model="classifyList">
-                        <el-checkbox label="施工"/>
-                        <el-checkbox label="监理"/>
-                    </el-checkbox-group>
-                </el-form-item>
-            </el-form>
+            <div class="header-new-switch">
+                <HcNewSwitch :datas="authBtnTabdata" :keys="classifyType" :round="false" size="default"
+                             @change="classifyTypeTabClick"/>
+            </div>
+            <div v-if="copyNodeTabKey === '1'" class="copy-node-form-box">
+                <el-form ref="formCopyNodeModelRef" :model="formCopyNodeModel"
+                         :rules="formCopyNodeModelRules" label-width="auto" size="large">
+                    <el-form-item v-if="copyNodeTabKey === '1'" label="节点名称" prop="title" style="margin-bottom: 0;">
+                        <el-input v-model="formCopyNodeModel.title" placeholder="请输入节点名称"/>
+                    </el-form-item>
+                    <el-form-item v-if="copyNodeTabKey === '1'" label="划分编号" prop="partitionCode"
+                                  style="margin-top: 10px;">
+                        <el-input v-model="formCopyNodeModel.partitionCode" placeholder="请输入划分编号"/>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <div v-if="copyNodeTabKey === '3'" class="copy-node-form-box">
+                <el-form ref="formCopyNodeModelRef" :model="formCopyNodeModel"
+                         :rules="formCopyNodeModelRules" label-width="auto" size="large">
+                    <el-form-item label="所属方" prop="classify" style="margin-bottom: 0;">
+                        <!-- <el-input v-model="formCopyNodeModel.classify" placeholder="请输入节点名称"/> -->
+                        <el-checkbox-group v-model="classifyList">
+                            <el-checkbox label="施工"/>
+                            <el-checkbox label="监理"/>
+                        </el-checkbox-group>
+                    </el-form-item>
+                </el-form>
+            </div>
             <div v-if="copyNodeTabKey !== '1'" class="copy-node-many-box">
             <div v-if="copyNodeTabKey !== '1'" class="copy-node-many-box">
 
 
                 <div class="copy-node-many-tree">
                 <div class="copy-node-many-tree">
                     <el-scrollbar>
                     <el-scrollbar>
                         <WbsTree :autoExpandKeys="TreeAutoExpandKeys" :contractId="contractId" :isAutoClick="false"
                         <WbsTree :autoExpandKeys="TreeAutoExpandKeys" :contractId="contractId" :isAutoClick="false"
-                                 :isAutoKeys="false" :projectId="projectId" idPrefix="tree-node-copy-"
-                                 @nodeTap="copyNodeElTreeClick"/>
+                                 :isAutoKeys="false" :projectId="projectId" classifyType="1"
+                                 idPrefix="tree-node-copy-" @nodeTap="copyNodeElTreeClick"/>
                     </el-scrollbar>
                     </el-scrollbar>
                 </div>
                 </div>
                 <div class="copy-node-many-table">
                 <div class="copy-node-many-table">
@@ -695,7 +690,7 @@ const wbstreeKey = ref(Math.random())
 const searchElTreeLoadNode = ref(true)
 const searchElTreeLoadNode = ref(true)
 const getSearchTreeData = async () => {
 const getSearchTreeData = async () => {
     searchElTreeLoadNode.value = true
     searchElTreeLoadNode.value = true
-    if (contractInfo.value?.contractType == 2||contractInfo.value?.contractType == 3) {
+    if (contractInfo.value?.contractType == 2 || contractInfo.value?.contractType == 3) {
         const {error, code, data} = await queryApi.getTreeallJl({
         const {error, code, data} = await queryApi.getTreeallJl({
             contractId: contractId.value,
             contractId: contractId.value,
         })
         })
@@ -1004,6 +999,7 @@ const setTreeMenuDataClick = ({key, node, data}) => {
             const parent = deepClone(node?.parentNodes?.data || {})
             const parent = deepClone(node?.parentNodes?.data || {})
             formCopyNodeModel.value = {...deepClone(data), parent: parent}
             formCopyNodeModel.value = {...deepClone(data), parent: parent}
         }
         }
+        classifyType.value = authBtnTabKey.value
         copyNodeTabKey.value = '1'
         copyNodeTabKey.value = '1'
         copyNodeTable.value = []
         copyNodeTable.value = []
         copyNodeLoading.value = false
         copyNodeLoading.value = false
@@ -1186,7 +1182,7 @@ const copyNodeTabKey = ref('1')
 const copyNodeTab = ref([
 const copyNodeTab = ref([
     {key: '1', name: '单份复制'},
     {key: '1', name: '单份复制'},
     {key: '2', name: '多份复制'},
     {key: '2', name: '多份复制'},
-    {key: '3', name: '复制数据'}
+    //{key: '3', name: '复制数据'}
 ]);
 ]);
 const copyNodeTabChange = (key) => {
 const copyNodeTabChange = (key) => {
     if (key !== copyNodeTabKey.value) {
     if (key !== copyNodeTabKey.value) {
@@ -1284,6 +1280,13 @@ const copyNodeTableRules = {
 const copyNodeTableDel = (index) => {
 const copyNodeTableDel = (index) => {
     copyNodeTable.value.splice(index, 1)
     copyNodeTable.value.splice(index, 1)
 }
 }
+
+
+const classifyType = ref(authBtnTabKey.value)
+const classifyTypeTabClick = ({key}) => {
+    classifyType.value = key
+}
+
 //复制节点
 //复制节点
 const copyNodeClick = async () => {
 const copyNodeClick = async () => {
     const type = copyNodeTabKey.value
     const type = copyNodeTabKey.value
@@ -1324,14 +1327,15 @@ const copyNodeClick = async () => {
 //单个复制、多份复制请求
 //单个复制、多份复制请求
 const copyContractTreeNode = async (type, form, table) => {
 const copyContractTreeNode = async (type, form, table) => {
     copyNodeLoading.value = true
     copyNodeLoading.value = true
-    if (type == '1') {
+    if (type === '1') {
         const {error, code} = await wbsApi.copyContractTreeNode({
         const {error, code} = await wbsApi.copyContractTreeNode({
             copyType: type,
             copyType: type,
             needCopyNodeName: form?.title || '',
             needCopyNodeName: form?.title || '',
             partitionCode: form?.partitionCode || '',
             partitionCode: form?.partitionCode || '',
             needCopyPrimaryKeyId: form?.primaryKeyId || '',
             needCopyPrimaryKeyId: form?.primaryKeyId || '',
             parentPrimaryKeyId: form?.parent?.primaryKeyId || '',
             parentPrimaryKeyId: form?.parent?.primaryKeyId || '',
-            copyBatchToPaths: table
+            copyBatchToPaths: table,
+            classifyType: classifyType.value
         })
         })
         //判断状态
         //判断状态
         copyNodeLoading.value = false
         copyNodeLoading.value = false
@@ -1346,7 +1350,8 @@ const copyContractTreeNode = async (type, form, table) => {
             needCopyNodeName: form?.title || '',
             needCopyNodeName: form?.title || '',
             needCopyPrimaryKeyId: form?.primaryKeyId || '',
             needCopyPrimaryKeyId: form?.primaryKeyId || '',
             parentPrimaryKeyId: form?.parent?.primaryKeyId || '',
             parentPrimaryKeyId: form?.parent?.primaryKeyId || '',
-            copyBatchToPaths: table
+            copyBatchToPaths: table,
+            classifyType: classifyType.value
         })
         })
         //判断状态
         //判断状态
         copyNodeLoading.value = false
         copyNodeLoading.value = false
@@ -1936,4 +1941,9 @@ html.theme-dark {
     vertical-align: middle;
     vertical-align: middle;
     box-shadow: -2px 0 10px 0 rgba(32, 37, 50, 0.03), 0 10px 21px 20px rgba(32, 37, 50, 0.03);
     box-shadow: -2px 0 10px 0 rgba(32, 37, 50, 0.03), 0 10px 21px 20px rgba(32, 37, 50, 0.03);
 }
 }
+.copy-node-form-box {
+    margin-top: 24px;
+    padding-top: 24px;
+    border-top: 1px solid #efeff5;
+}
 </style>
 </style>