Browse Source

Merge branch 'master-fetch-dev' into master-fetch

奔跑的面条 2 years ago
parent
commit
3eb1ce7ec5

+ 3 - 0
src/components/Pages/ChartGlobImage/index.ts

@@ -0,0 +1,3 @@
+import ChartGlobImage from './index.vue'
+
+export { ChartGlobImage }

+ 10 - 3
src/views/chart/ContentCharts/components/ChartsItemImage/index.vue → src/components/Pages/ChartGlobImage/index.vue

@@ -3,7 +3,7 @@
 </template>
 
 <script setup lang="ts">
-import { ref, PropType } from 'vue'
+import { ref, PropType, watch } from 'vue'
 import { fetchImages } from '@/packages'
 import { ConfigType } from '@/packages/index.d'
 
@@ -11,7 +11,7 @@ const props = defineProps({
   chartConfig: {
     type: Object as PropType<ConfigType>,
     required: true
-  },
+  }
 })
 
 const imageInfo = ref('')
@@ -20,5 +20,12 @@ const imageInfo = ref('')
 const fetchImageUrl = async () => {
   imageInfo.value = await fetchImages(props.chartConfig)
 }
-fetchImageUrl()
+
+watch(
+  () => props.chartConfig.key,
+  () => fetchImageUrl(),
+  {
+    immediate: true
+  }
+)
 </script>

+ 2 - 1
src/packages/index.ts

@@ -63,7 +63,8 @@ export const fetchConfigComponent = (dropData: ConfigType) => {
  * * 获取图片内容
  * @param {ConfigType} targetData 配置项
  */
-export const fetchImages = async (targetData: ConfigType) => {
+export const fetchImages = async (targetData?: ConfigType) => {
+  if (!targetData) return ''
   // 新数据动态处理
   const { image, package: targetDataPackage } = targetData
   // 兼容旧数据

+ 6 - 0
src/utils/utils.ts

@@ -298,6 +298,12 @@ export const JSONParse = (data: string) => {
   return JSON.parse(data, (k, v) => {
     if (typeof v === 'string' && v.indexOf && (v.indexOf('function') > -1 || v.indexOf('=>') > -1)) {
       return eval(`(function(){return ${v}})()`)
+    } else if (typeof v === 'string' && v.indexOf && (v.indexOf('return ') > -1)) {
+      const baseLeftIndex = v.indexOf('(')
+      if (baseLeftIndex > -1) {
+        const newFn = `function ${v.substring(baseLeftIndex)}`
+        return eval(`(function(){return ${newFn}})()`)
+      }
     }
     return v
   })

+ 3 - 2
src/views/chart/ContentCharts/components/ChartsItemBox/index.vue

@@ -22,7 +22,7 @@
           </n-text>
         </div>
         <div class="list-center go-flex-center go-transition">
-          <charts-item-image class="list-img" :chartConfig="item"></charts-item-image>
+          <chart-glob-image class="list-img" :chartConfig="item"></chart-glob-image>
         </div>
         <div class="list-bottom">
           <n-text class="list-bottom-text" depth="3">
@@ -37,7 +37,7 @@
 <script setup lang="ts">
 import { PropType, watch, ref, Ref, computed, nextTick } from 'vue'
 import { MacOsControlBtn } from '@/components/Tips/MacOsControlBtn/index'
-import { ChartsItemImage } from '../ChartsItemImage'
+import { ChartGlobImage } from '@/components/Pages/ChartGlobImage'
 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
 import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
 import { ChartModeEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d'
@@ -47,6 +47,7 @@ import { DragKeyEnum } from '@/enums/editPageEnum'
 import { createComponent } from '@/packages'
 import { ConfigType, CreateComponentType } from '@/packages/index.d'
 import { fetchConfigComponent, fetchChartComponent } from '@/packages/index'
+
 import omit from 'lodash/omit'
 
 const chartEditStore = useChartEditStore()

+ 0 - 3
src/views/chart/ContentCharts/components/ChartsItemImage/index.ts

@@ -1,3 +0,0 @@
-import ChartsItemImage from './index.vue'
-
-export { ChartsItemImage }

+ 2 - 1
src/views/chart/ContentCharts/components/ChartsSearch/index.vue

@@ -37,7 +37,7 @@
               :title="item.title"
               @click="selectChartHandle(item)"
             >
-              <img class="list-item-img" v-lazy="item.image" alt="展示图" />
+              <chart-glob-image class="list-item-img" :chartConfig="item"></chart-glob-image>
               <n-text class="list-item-fs" depth="2">{{ item.title }}</n-text>
             </div>
           </n-scrollbar>
@@ -77,6 +77,7 @@ import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayou
 import { isString, addEventListener, removeEventListener } from '@/utils'
 import { fetchConfigComponent, fetchChartComponent } from '@/packages/index'
 import { componentInstall, loadingStart, loadingFinish, loadingError } from '@/utils'
+import { ChartGlobImage } from '@/components/Pages/ChartGlobImage'
 
 const props = defineProps({
   menuOptions: {