Browse Source

资料填报,正则效验

ZaiZai 2 years ago
parent
commit
03fe37a455

+ 20 - 8
src/components/table-form/index.vue

@@ -61,6 +61,10 @@ const props = defineProps({
         type: Object,
         default: () => ({})
     },
+    nodeName: { // 表单名称
+        type: String,
+        default: ''
+    },
 })
 
 //初始变量
@@ -74,6 +78,7 @@ const tableFormItemStyle = ref('')
 const loading = ref(false)
 const isScroll = ref(props.scroll)
 const changeData = ref(props.datas)
+const nodeNames = ref(props.nodeName)
 
 //监听
 watch(() => [
@@ -84,14 +89,16 @@ watch(() => [
     props.classify,
     props.width,
     props.height,
-    props.scroll
-], ([project_id, contract_id, tree_id, key_id, cid, width, height, scroll]) => {
+    props.scroll,
+    props.nodeName
+], ([project_id, contract_id, tree_id, key_id, cid, width, height, scroll, nodeName]) => {
     projectId.value = project_id
     contractId.value = contract_id
     treeId.value = tree_id
     keyId.value = key_id ? key_id + '' : ''
     classify.value = cid
     isScroll.value = scroll
+    nodeNames.value = nodeName
     setItemStyle(width, height)
 })
 
@@ -254,19 +261,19 @@ const setTableFormBlurReg = (pkeyId, event, key, reg, val, msg) => {
             let regx = new RegExp(reg);
             let state = regx.test(val);
             if (state) {
-                formRegExpJson.value = {}
+                delete formRegExpJson.value[key]
                 dom.style = ''
             } else {
-                formRegExpJson.value = {key, reg, val, msg, state}
+                formRegExpJson.value[key] = {key, reg, val, msg, state}
                 dom.style = '--el-input-border-color: #fe0000; box-shadow: 0 0 0 2px #fe0000 inset;'
                 window?.$message?.warning(msg)
             }
         } else {
-            formRegExpJson.value = {}
+            delete formRegExpJson.value[key]
             dom.style = ''
         }
     } else {
-        formRegExpJson.value = {}
+        delete formRegExpJson.value[key]
         dom.style = ''
     }
 }
@@ -297,8 +304,12 @@ const getRegExpJson = () => {
     return deepClone(formRegExpJson.value);
 }
 
+const getNodeName = () => {
+    return nodeNames.value
+}
+
 //正则效验
-const isFormRegExp = () => {
+const isFormRegExp = async () => {
     const isRegExp = !!getObjNullValue(formRegExpJson.value)
     if (!isRegExp) {
         return true
@@ -313,7 +324,8 @@ defineExpose({
     getFormData,
     setFormData,
     getRegExpJson,
-    isFormRegExp
+    isFormRegExp,
+    getNodeName
 })
 </script>
 

+ 13 - 3
src/views/data-fill/collapse-form/index.vue

@@ -69,6 +69,7 @@
                         <HcTableForm v-if="item.isTableRender" :ref="(el) => setItemRefs(el, item)" :api="apis"
                                      :classify="classifys" :datas="changeFormDatas(item?.pkeyId, 'collapse')"
                                      :kid="item?.pkeyId"
+                                     :nodeName="item.nodeName"
                                      :tid="treeId"
                                      scroll @render="tableFormRender($event, item, index)"
                                      @rightTap="tableFormRightTap($event, index)"/>
@@ -234,7 +235,8 @@
             <HcDragNode :more-menu="dragNodeMoreMenu" @menuTap="dragNodeMoreMenuTap($event, item)">
                 <HcTableForm :ref="(el) => setItemRefs(el, item)" :api="apis" :classify="item.classify"
                              :datas="changeFormDatas(item?.pkeyId, 'window')" :height="item.height"
-                             :kid="item.pkeyId" :tid="item.treeId" :width="item.width"
+                             :kid="item.pkeyId" :nodeName="item.title" :tid="item.treeId"
+                             :width="item.width"
                              @render="tableFormRender($event, item['item'], item['index'])"
                              @rightTap="tableFormRightTap($event, item['index'])"/>
             </HcDragNode>
@@ -1000,7 +1002,8 @@ const tableFormSaveClick = async (item, dragItem = null) => {
 const saveExcelBussData = async ({pkeyId}, dragItem = null, showTip = true) => {
     setDragModalLoading(dragItem, '保存中...', true)
     const refs = await getFormRef(pkeyId)
-    const isRegExp = refs?.isFormRegExp()
+    const isRegExp = await refs?.isFormRegExp()
+    console.log(isRegExp)
     if (isRegExp) {
         const formData = refs?.getFormData()
         const {error, code} = await wbsApi.saveExcelBussData(formData)
@@ -1157,14 +1160,21 @@ const getFormData = async () => {
 //获取表单效验数据
 const getFormRegExpJson = async () => {
     const formArr = await getFilterFormData();
+    const list = listDatas.value
     //获取表单数据
     let formRegExpJson = {};
     for (let i = 0; i < formArr.length; i++) {
         const pkeyId = formArr[i].pkeyId
         const refs = await getFormRef(pkeyId)
         const regExp = refs?.getRegExpJson()
+        const nodeName = refs?.getNodeName()
         if (getObjNullValue(regExp)) {
-            formRegExpJson[pkeyId] = regExp
+            const index = getIndex(list, 'pkeyId', pkeyId)
+            formRegExpJson[pkeyId] = {
+                ...regExp,
+                itemId: `item-${index}-${pkeyId}`,
+                nodeName: nodeName
+            }
         }
     }
     return formRegExpJson

+ 1 - 0
src/views/data-fill/wbs.vue

@@ -1814,6 +1814,7 @@ const setWbsTreeShow = () => {
 //拷贝内容
 const copyPositionText = (val) => {
     if (val) {
+        //navigator.clipboard.writeText(val);
         setCopyText(val).then(() => {
             window.$message?.success('复制成功')
         }).catch(() => {