瀏覽代碼

报表中心

xiaochan 1 年之前
父節點
當前提交
b5f72061ef

+ 6 - 3
src/views/data-base/page-editor-help-v2/components/page-editor-v2/PageFormBind.vue

@@ -13,7 +13,8 @@ const componentBinds = ref<{ [key: string]: ComponentBind } | null>()
 const props = defineProps<{
   teleportDiv: any;
   data: PageJsonObject,
-  compBind: any
+  compBind: any,
+  store: any
 }>()
 
 const emits = defineEmits(['refresh', 'requiredChange'])
@@ -143,11 +144,13 @@ function render(key: string, item: ComponentBind) {
 }
 
 function handleClose(data, key, name) {
+  const {currentClickIndex, pageData} = props.store
   if (data) {
-    currentItem.value[name][key] = data
+    pageData.value.header[currentClickIndex.value][name][key] = data
   } else {
-    delete currentItem.value[name][key]
+    delete pageData.value.header[currentClickIndex.value][name][key]
   }
+  currentItem.value = pageData.value.header[currentClickIndex.value]
   codeEditorOption.dialog = false
 }
 

+ 21 - 35
src/views/data-base/page-editor-help-v2/components/page-editor-v2/PageHelpV2.vue

@@ -18,7 +18,7 @@ import PageHelpOtherConfigurations
 import {getWindowSize} from "@/utils/window-size";
 import {ExcelName, Export} from '@/utils/ExportExcel'
 import {userInfoStore} from "@/utils/store-public";
-import {capitalizeFirstLetter, createStore} from "@/views/data-base/page-editor-help-v2/page-help-v2";
+import {capitalizeFirstLetter, usePageStore} from "@/views/data-base/page-editor-help-v2/page-help-v2";
 import {generateRandomString} from "@/utils/getUuid";
 
 interface Props {
@@ -44,11 +44,16 @@ const props = withDefaults(defineProps<Props>(), {
   doTest: null
 })
 
-const instance = getCurrentInstance();
+const pageHelp = getCurrentInstance();
+const store = usePageStore()
+//@ts-ignore
+pageHelp.store = store
+
+const {currentClickIndex, pageData, clearOnAndFunc} = store
+
 
 const formRef = useCompRef(ElForm)
 const bindRef = ref(null)
-const currentIndex = ref(-1)
 const headerRef = ref(null)
 const {height: headerHeight} = useElementSize(headerRef)
 const emits = defineEmits(['changeTabs'])
@@ -99,7 +104,7 @@ const render = (item: PageHeader) => {
 }
 
 const isActive = (index) => {
-  return index === currentIndex.value
+  return index === currentClickIndex.value
 }
 
 function formItemClick(item: PageHeader, index) {
@@ -107,14 +112,14 @@ function formItemClick(item: PageHeader, index) {
   if (props.componentAttribute == null) {
     return
   }
-  currentIndex.value = index
+  currentClickIndex.value = index
   bindRef.value?.changeCurrentBind(item)
 }
 
 function upClick(index) {
   if (index === 0) return
   swapItems(pageData.value.header, index, index - 1)
-  currentIndex.value = index - 1
+  currentClickIndex.value = index - 1
 }
 
 function downClick(index) {
@@ -122,16 +127,16 @@ function downClick(index) {
     return
   }
   swapItems(pageData.value.header, index, index + 1)
-  currentIndex.value = index + 1
+  currentClickIndex.value = index + 1
 }
 
-function swapItems(arr, currentIndex, newIndex) {
-  arr[currentIndex] = arr.splice(newIndex, 1, arr[currentIndex])[0]
+function swapItems(arr, currentClickIndex, newIndex) {
+  arr[currentClickIndex] = arr.splice(newIndex, 1, arr[currentClickIndex])[0]
   return arr
 }
 
 function delClick(index) {
-  currentIndex.value = -1
+  currentClickIndex.value = -1
   bindRef.value.changeCurrentBind(null)
   pageData.value.header.splice(index, 1)
 }
@@ -179,15 +184,6 @@ const dialogTitle = ref('详情')
 const tableData = ref([])
 const columns = ref([])
 const loading = ref(false)
-const pageData = ref<PageJsonObject>({
-  header: [],
-  params: {},
-  submitUrl: '',
-  fromConfig: {
-    inline: true,
-    labelWidth: '120px'
-  }
-})
 
 function requiredInit(setDefaultValue = false) {
   formRef.value.resetFields()
@@ -224,21 +220,10 @@ function handleOnAndFuncEvent(data: PageJsonObject) {
   })
 }
 
-function clearOnAndFunc(data: PageJsonObject) {
-  XEUtils.arrayEach(data.header, (item: PageHeader) => {
-    if (item.on) {
-
-    }
-    if (item.func) {
-
-    }
-  })
-}
 
 async function refresh() {
-  console.log(pageData.value)
-
-
+  clearOnAndFunc();
+  bindRef.value?.changeCurrentBind(pageData.value.header[currentClickIndex.value])
   setPageData(pageData.value)
 }
 
@@ -274,8 +259,8 @@ const bindData = ref()
 async function bindRefresh() {
   bindData.value = await reportQueryCenterApi('/reportCenter/components/componentBind')
   await nextTick()
-  if (currentIndex.value > -1) {
-    bindRef.value?.changeCurrentBind(pageData.value.header[currentIndex.value])
+  if (currentClickIndex.value > -1) {
+    bindRef.value?.changeCurrentBind(pageData.value.header[currentClickIndex.value])
   }
 }
 
@@ -392,7 +377,7 @@ defineExpose({
                v-if="pageData.header.length > 0"
                class="page-item_div"
                :class="isActive(index) ? 'page-item_active': ''">
-            <div v-if="currentIndex === index" class="tool">
+            <div v-if="currentClickIndex === index" class="tool">
               <div class="tool_item" @click.stop="upClick(index)">
                 <el-icon>
                   <ArrowLeft/>
@@ -445,6 +430,7 @@ defineExpose({
   </el-dialog>
 
   <PageFormBind ref="bindRef"
+                :store="store"
                 @refresh="bindRefresh"
                 :data="pageData"
                 @requiredChange="requiredInit"

+ 18 - 50
src/views/data-base/page-editor-help-v2/page-help-v2.ts

@@ -49,7 +49,8 @@ export function capitalizeFirstLetter(str, prefix: string = '') {
 
 export const REPORT_FOLDER = "8283a0956dd9455cbf77c6246306ec98"
 
-function useStore(pageHelp, props) {
+export function usePageStore() {
+    const currentClickIndex = ref(-1)
     const pageData = ref<PageJsonObject>({
         header: [],
         params: {},
@@ -59,59 +60,26 @@ function useStore(pageHelp, props) {
             labelWidth: '120px'
         }
     })
-    const rules = ref({})
-    const userInfo = clone(userInfoStore.value);
-    const tableBind = ref({
-        data: [],
-        columns: []
-    })
-
-    function clone(data) {
-        return XEUtils.clone(data, true)
-    }
 
-
-    const mutations = {
-        addComponent(data) {
-            const temp = XEUtils.clone(data, true)
-        },
-        setPageData(data) {
-            const temp = XEUtils.clone(data, true);
-            this.handleOnAndFuncEvent();
-            pageData.value = temp
-        },
-        handleOnAndFuncEvent() {
-            XEUtils.arrayEach(pageData.value.header, (item: PageHeader) => {
-                item.compKey = generateRandomString(5)
-                if (item.on) {
-                    for (let onKey in item.on) {
-                        const key = capitalizeFirstLetter(onKey, 'on')
-                        const func = new Function('pageJson', 'currentBind', 'apiFunc', 'val', 'userInfo', item.on[onKey])
-                        item.bind[key] = (...val) => func(pageData.value, item, reportQueryCenterApi, val, userInfo)
-                    }
+    function clearOnAndFunc() {
+        XEUtils.arrayEach(pageData.value.header, (item: PageHeader) => {
+            if (item.on) {
+                for (let onKey in item.on) {
+                    const key = capitalizeFirstLetter(onKey, 'on')
+                    delete item.bind[key]
                 }
-
-                if (item.func) {
-                    for (let funcKey in item.func) {
-                        const func = new Function('pageJson', 'currentBind', 'apiFunc', 'val', 'userInfo', item.func[funcKey])
-                        item.bind[funcKey] = (...val) => func(pageData.value, item, reportQueryCenterApi, val, userInfo)
-                    }
+            }
+            if (item.func) {
+                for (let funcKey in item.func) {
+                    delete item.bind[funcKey]
                 }
-            })
-        },
-    };
-
-    const instance = getCurrentInstance();
+            }
+        })
+    }
 
     return {
-        mutations,
-        instance,
-        pageHelp,
-        props,
-        pageData
+        currentClickIndex,
+        pageData,
+        clearOnAndFunc
     }
 }
-
-export function createStore(pageHelp, props) {
-    return useStore(pageHelp, props)
-}