Selaa lähdekoodia

⚙️ 修改问题

快乐的梦鱼 1 kuukausi sitten
vanhempi
commit
9d8f04f773

+ 2 - 4
src/common/utils/minisc/MiniScript.ts

@@ -1248,12 +1248,10 @@ export class MiniScript {
     const parser = new Parser(tokens, script);
     const prog = parser.parseProgram();
     const globals = new Env(null);
-    for (const [k, v] of Object.entries(defaultBuiltins())) {
+    for (const [k, v] of Object.entries(defaultBuiltins()))
       globals.define(k, v);
-    }
-    for (const [k, v] of Object.entries(this.extensions)) {
+    for (const [k, v] of Object.entries(this.extensions))
       globals.define(k, v);
-    }
     const root = new Env(globals, new Map(), context, { source: script });
     return runProgram(prog, root);
   }

+ 2 - 2
src/pages/article/common/CommonContent.ts

@@ -2,7 +2,7 @@ import { GetContentListItem, GetContentListParams } from "@/api/CommonContent";
 import { navTo } from "@/components/utils/PageAction";
 import { type IHomeCommonCategoryListTabListDataSolve } from "../data/CommonCategoryDefine";
 import { DateUtils } from "@imengyu/imengyu-utils";
-import dynamicScript, { isDynamicScript } from "../data/CommonCategoryScript";
+import { getDynamicScript, isDynamicScript } from "../data/CommonCategoryScript";
 
 /**
  * 通用内容首页小列表控制代码组合
@@ -113,7 +113,7 @@ const resolveCommonContentData = {
 export function resolveCommonContentSolveProps(res: any[], dataSolve: IHomeCommonCategoryListTabListDataSolve[]) {
   for (const solve of dataSolve) {
     if (isDynamicScript(solve)) {
-      res = dynamicScript.execute(solve, {
+      res = getDynamicScript().execute(solve, {
         main: res
       }) as any;
     }

+ 2 - 2
src/pages/article/common/CommonListPage.ts

@@ -1,4 +1,4 @@
-import dynamicScript from "../data/CommonCategoryScript";
+import { getDynamicScript } from "../data/CommonCategoryScript";
 
 export type CommonListPageItemType = 'image-large-2'|'image-large'|'article-common'
   |'article-common-2'|'article-character'|'article-character-2'
@@ -18,7 +18,7 @@ export const CommonListPageItemTypeOptions = [
 ];
 
 export function doDynamicNavDetails(dynamic: string, content: any, parentData: any) {
-  return dynamicScript.execute(dynamic, {
+  return getDynamicScript().execute(dynamic, {
     main: content,
     parentData,
   }) as any;

+ 2 - 2
src/pages/article/data/CommonCategoryBlocks.vue

@@ -217,7 +217,7 @@ import { CommonCategoryDynamicDataSerializedApi, doGetDynamicListDataParams, typ
 import AudioBlock from '@/pages/blocks/AudioBlock.vue';
 import RichBlock from '@/pages/blocks/RichBlock.vue';
 import { doDynamicNavDetails } from '../common/CommonListPage';
-import dynamicScript, { isDynamicScript } from './CommonCategoryScript';
+import { getDynamicScript, isDynamicScript } from './CommonCategoryScript';
 
 const props = defineProps({
   /**
@@ -299,7 +299,7 @@ const categoryDatas = computed(() => props.categoryDefine.map(item => {
           }
         }  
         if (item.morePage && isDynamicScript(item.morePage)) {
-          dynamicScript.execute(item.morePage, {
+          getDynamicScript().execute(item.morePage, {
             main: {
               modelId,
               mainBodyColumnId,

+ 5 - 5
src/pages/article/data/CommonCategoryDetail.vue

@@ -158,7 +158,7 @@ import CommonCategoryDetailContentBlocks from './CommonCategoryDetailContentBloc
 import ImageGrid from '@/pages/parts/ImageGrid.vue';
 import CommonCategoryListBlock from './CommonCategoryListBlock.vue';
 import { resolveCommonContentSolveProps } from '../common/CommonContent';
-import dynamicScript, { isDynamicScript } from './CommonCategoryScript';
+import { getDynamicScript, isDynamicScript } from './CommonCategoryScript';
 
 export interface CommonCategoryDetailProps extends DetailTabPageProps {
   /**
@@ -334,7 +334,7 @@ async function loadPageConfig() {
             break;
           }
           case 'expression': {
-            result = dynamicScript.execute(keys[2], {
+            result = getDynamicScript().execute(keys[2], {
               main: content,
               customData: {
                 customTabNameIdMap: currentCommonCategoryContentDefine.value?.props.customTabNameIdMap || {},
@@ -376,7 +376,7 @@ const descItems = computed(() => (
     .map((item) => {
       let value = '';
       if (item.key.startsWith('expression:')) {
-        value = dynamicScript.execute(item.key.substring(11), {
+        value = getDynamicScript().execute(item.key.substring(11), {
           main: content.value,
         }) as any;
       }
@@ -390,7 +390,7 @@ const descItems = computed(() => (
       }
     })
     .filter((item) => Boolean(item.value))
-    .filter((item) => !item.visibleVia || item.visibleVia === 'auto' || dynamicScript.execute(item.visibleVia, {
+    .filter((item) => !item.visibleVia || item.visibleVia === 'auto' || getDynamicScript().execute(item.visibleVia, {
       main: item,
     }) as any)
 );
@@ -434,7 +434,7 @@ async function loadTabVisible(tabs: IHomeCommonCategoryDetailTabItemDefine[], d:
         break;
       }
       case 'expression': {
-        check = dynamicScript.execute(visibleCheckExpression, {
+        check = getDynamicScript().execute(visibleCheckExpression, {
           main: d,
         }) as any;
         break;

+ 2 - 2
src/pages/article/data/CommonCategoryDynamicData.ts

@@ -30,7 +30,7 @@ import { CommonCategorDynamicDropDownValuesToParams } from "./data-defines/Dropd
 import NewsIndexContent from "@/api/news/NewsIndexContent";
 import VillageContent from "@/api/fusion/VillageContent";
 import NotConfigue from "@/api/NotConfigue";
-import dynamicScript from "./CommonCategoryScript";
+import { getDynamicScript } from "./CommonCategoryScript";
 
 export * from './data-defines/Category';
 export * from './data-defines/Dropdown';
@@ -263,7 +263,7 @@ export async function doLoadDynamicListData(
         undefined,
       )).data;
       if (item.dataSolve) {
-        data = dynamicScript.execute(item.dataSolve, {
+        data = getDynamicScript().execute(item.dataSolve, {
           main: data,
         }) as any;
       }

+ 1 - 1
src/pages/article/data/CommonCategoryGlobalLoader.ts

@@ -26,7 +26,7 @@ export function useCommonCategoryGlobalLoader() {
     uni.showLoading({ title: '加载中' });
     try {
       //本地开发时,使用默认配置
-      if (true && getIsDevtoolsPlatform()) {
+      if (false && getIsDevtoolsPlatform()) {
         commonCategoryData.value = DefaultCofig as IHomeCommonCategoryDefine;
         return;
       }

+ 19 - 18
src/pages/article/data/CommonCategoryScript.ts

@@ -3,22 +3,6 @@ import { MiniScript } from "../../../common/utils/minisc/MiniScript";
 import { navCommonDetail, navCommonList, navigateToAutoContent } from "../common/CommonContent";
 import { back, backReturnData, navTo, redirectTo } from "@/components/utils/PageAction";
 
-const dynamicScript = new MiniScript();
-dynamicScript.registerGlobal('uni', uni);
-dynamicScript.registerGlobal('consts', {
-  TYPE_VIDEO: GetContentListParams.TYPE_VIDEO,
-  TYPE_ARTICLE: GetContentListParams.TYPE_ARTICLE,
-  TYPE_AUDIO: GetContentListParams.TYPE_AUDIO,
-  TYPE_IMAGE: GetContentListParams.TYPE_IMAGE,
-  TYPE_ARCHIVE: GetContentListParams.TYPE_ARCHIVE,
-});
-dynamicScript.registerFunction('navigateToAutoContent', navigateToAutoContent);
-dynamicScript.registerFunction('navCommonDetail', navCommonDetail);
-dynamicScript.registerFunction('navCommonList', navCommonList);
-dynamicScript.registerFunction('navTo', navTo);
-dynamicScript.registerFunction('back', back);
-dynamicScript.registerFunction('backReturnData', backReturnData);
-dynamicScript.registerFunction('redirectTo', redirectTo);
 
 export function isDynamicScript(script: string): boolean {
   return script.length >= 10 && (script.startsWith('if(') 
@@ -38,5 +22,22 @@ export function isDynamicScript(script: string): boolean {
 
   );
 }
-
-export default dynamicScript;
+export function getDynamicScript(): MiniScript {
+  const dynamicScript = new MiniScript();
+  dynamicScript.registerGlobal('uni', uni);
+  dynamicScript.registerGlobal('consts', {
+    TYPE_VIDEO: GetContentListParams.TYPE_VIDEO,
+    TYPE_ARTICLE: GetContentListParams.TYPE_ARTICLE,
+    TYPE_AUDIO: GetContentListParams.TYPE_AUDIO,
+    TYPE_IMAGE: GetContentListParams.TYPE_IMAGE,
+    TYPE_ARCHIVE: GetContentListParams.TYPE_ARCHIVE,
+  });
+  dynamicScript.registerFunction('navigateToAutoContent', navigateToAutoContent);
+  dynamicScript.registerFunction('navCommonDetail', navCommonDetail);
+  dynamicScript.registerFunction('navCommonList', navCommonList);
+  dynamicScript.registerFunction('navTo', navTo);
+  dynamicScript.registerFunction('back', back);
+  dynamicScript.registerFunction('backReturnData', backReturnData);
+  dynamicScript.registerFunction('redirectTo', redirectTo);
+  return dynamicScript;
+}

+ 1 - 1
src/pages/article/data/defines/Details.ts

@@ -71,7 +71,7 @@ export interface IHomeCommonCategoryDetailTabItemBaseDefine {
   /**
    * 标签页动态可见性判断方式
      * * auto: 自动判断
-     * * expression: 表达式判断 格式参考 dynamicScript.execute
+     * * expression: 表达式判断 格式参考 getDynamicScript().execute
      * * idMap: 标签页ID映射判断 格式:id:categoy (category为visibleVia中定义的分类ID)
    */
   visibleVia?: string,

+ 4 - 4
src/pages/article/details.vue

@@ -158,7 +158,7 @@ import FlexCol from "@/components/layout/FlexCol.vue";
 import Footer from "@/components/display/Footer.vue";
 import NavBar from "@/components/nav/NavBar.vue";
 import StatusBarSpace from "@/components/layout/space/StatusBarSpace.vue";
-import dynamicScript from "./data/CommonCategoryScript";
+import { getDynamicScript } from "./data/CommonCategoryScript";
 
 export interface CommonArticleDetailProps {
   /**
@@ -326,12 +326,12 @@ const recommendListLoader = useSimpleDataLoader(async () => {
 });
 
 function evaluateButtonVisible(expression: string) {
-  return dynamicScript.execute(expression, {
+  return getDynamicScript().execute(expression, {
     main: loader.content.value || {},
   }) as boolean;
 }
 function executeButtonAction(expression: string) {
-  dynamicScript.execute(expression, {
+  getDynamicScript().execute(expression, {
     main: loader.content.value || {},
   }) as any;
 }
@@ -392,7 +392,7 @@ function goArchive(id: number) {
 function goDetails(item: GetContentListItem) {
   const script = currentCommonCategoryContentDefine.value?.props.recommendDetailHandler;
   if (script) {
-    dynamicScript.execute(script, {
+    getDynamicScript().execute(script, {
       main: item,
     }) as any;
     return;

+ 3 - 3
src/pages/blocks/RichBlock.vue

@@ -15,7 +15,7 @@
 import Parse from '@/components/display/parse/Parse.vue';
 import { onMounted, ref } from 'vue';
 import { doLoadDynamicDetailData, type IHomeCommonCategoryDynamicData } from '../article/data/CommonCategoryDynamicData';
-import dynamicScript from '../article/data/CommonCategoryScript';
+import { getDynamicScript } from '../article/data/CommonCategoryScript';
 
 const props = defineProps({
   content: {
@@ -56,14 +56,14 @@ async function loadContent() {
 
 function linkTap(href: string) {
   if (props.linkTapScript) {
-    dynamicScript.execute(props.linkTapScript, {
+    getDynamicScript().execute(props.linkTapScript, {
       main: { href },
     }) as any;
   }
 }
 function viewTap(id: string) {
   if (props.viewTapScript) {
-    dynamicScript.execute(props.viewTapScript, {
+    getDynamicScript().execute(props.viewTapScript, {
       main: { id },
     }) as any;
   }