From f1c3bb7e778e51826eced7ae803250452cc6d2df Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Mon, 9 Feb 2026 13:41:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BE=AE=E8=B0=83=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignForm/public/form/newForm.vue | 4 ++-- .../tableListPage/newFormPageCont.vue | 21 +++++++++++----- .../lowcodepage/pageFlow/newTableFlow.vue | 24 +++++++++++++------ .../taskmanagement/lookFlowInfoNewApp.vue | 22 +++++++++++------ 4 files changed, 49 insertions(+), 22 deletions(-) diff --git a/src/components/DesignForm/public/form/newForm.vue b/src/components/DesignForm/public/form/newForm.vue index 5a08736..d0d2edc 100644 --- a/src/components/DesignForm/public/form/newForm.vue +++ b/src/components/DesignForm/public/form/newForm.vue @@ -3329,7 +3329,7 @@ const webPage = computed({ } .twoPage{ display: grid; - grid-template-columns: 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; @@ -3337,7 +3337,7 @@ const webPage = computed({ } .treePage{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; diff --git a/src/components/DesignForm/tableListPage/newFormPageCont.vue b/src/components/DesignForm/tableListPage/newFormPageCont.vue index d6f533c..015b944 100644 --- a/src/components/DesignForm/tableListPage/newFormPageCont.vue +++ b/src/components/DesignForm/tableListPage/newFormPageCont.vue @@ -160,7 +160,7 @@ const getCustomrrFormInfo = () => { formState.formData = stringToObj(data.structure.mastesform); console.log("获取自定义表单内容--state.formData->1", formState.formData); if(isFlowTable.value){ - extraW = 150 + extraW = 300 } if(formState.formData&&formState.formData.aiConfig&&formState.formData.aiConfig.length>0){ aiConfigArea.value=true @@ -178,16 +178,25 @@ const getCustomrrFormInfo = () => { }); } if(aiConfigArea.value){ - extraW = extraW + 150 + extraW = extraW + 300 } console.log("获取自定义表单内容--drawBodyWidth.value->2", drawBodyWidth.value); if (aiConfigArea.value && isFlowTable.value){ - drawBodyWidth.value = drawBodyWidth.value + extraW - 160 + drawBodyWidth.value = drawBodyWidth.value + extraW - 100 }else if ((!aiConfigArea.value && isFlowTable.value) || (aiConfigArea.value && !isFlowTable.value)){ drawBodyWidth.value = drawBodyWidth.value + extraW }else{ drawBodyWidth.value = drawBodyWidth.value } + if (extraW == 0){ + drawBodyWidth.value = 780 + } + if (extraW == 300 && drawBodyWidth.value > 1100){ + drawBodyWidth.value = 1100 + } + if(drawBodyWidth.value > 1400){ + drawBodyWidth.value = 1400 + } props.dprt.forEach((element: any[]) => { let tableName = element[0] let datePickerName = element[1] @@ -489,7 +498,7 @@ const submitEdit = (type: string, val?: any) => { } .twoPageAi{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr; /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr; /* 左右最小150px,最大250px,中间自适应 */ // grid-template-columns: 4fr 6fr; /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; @@ -498,7 +507,7 @@ const submitEdit = (type: string, val?: any) => { } .twoPageFlow{ display: grid; - grid-template-columns: 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ // grid-template-columns: 4fr 1fr; /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; @@ -507,7 +516,7 @@ const submitEdit = (type: string, val?: any) => { } .treePage{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ // grid-template-columns: 2fr 6fr 2fr; /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; diff --git a/src/views/sysworkflow/lowcodepage/pageFlow/newTableFlow.vue b/src/views/sysworkflow/lowcodepage/pageFlow/newTableFlow.vue index 8f31e5b..4720795 100644 --- a/src/views/sysworkflow/lowcodepage/pageFlow/newTableFlow.vue +++ b/src/views/sysworkflow/lowcodepage/pageFlow/newTableFlow.vue @@ -155,7 +155,7 @@ const getTaskFormData = () => { } if(isFlowTable.value){ - extraW = 150 + extraW = 300 } @@ -206,13 +206,14 @@ const getTaskFormData = () => { if(aiConfigArea.value){ - extraW = extraW + 150 + extraW = extraW + 300 } + console.error("不存在流程--extraW--》",extraW) if (aiConfigArea.value && isFlowTable.value){ pageType.value = 3 pageBody.value = "treePage" - drawBodyWidth.value = drawBodyWidth.value + extraW - 160 + drawBodyWidth.value = drawBodyWidth.value + extraW - 100 }else if ((!aiConfigArea.value && isFlowTable.value) || (aiConfigArea.value && !isFlowTable.value)){ pageType.value = 2 pageBody.value = "twoPage" @@ -222,7 +223,16 @@ const getTaskFormData = () => { pageBody.value = "" drawBodyWidth.value = drawBodyWidth.value } - + + if (extraW == 0){ + drawBodyWidth.value = 780 + } + if (extraW == 300 && drawBodyWidth.value > 1100){ + drawBodyWidth.value = 1100 + } + if(drawBodyWidth.value > 1400){ + drawBodyWidth.value = 1400 + } drawLoading.value = false // console.error("2---------------->",formBodyRef.value?.clientWidth) @@ -792,7 +802,7 @@ provide(constAiEffect, ({ key, value, field,rowdex}: any) => { } .twoPageAi{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr; /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr; /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; @@ -800,7 +810,7 @@ provide(constAiEffect, ({ key, value, field,rowdex}: any) => { } .twoPageFlow{ display: grid; - grid-template-columns: 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; @@ -808,7 +818,7 @@ provide(constAiEffect, ({ key, value, field,rowdex}: any) => { } .treePage{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; diff --git a/src/views/taskplatform/taskmanagement/lookFlowInfoNewApp.vue b/src/views/taskplatform/taskmanagement/lookFlowInfoNewApp.vue index 0bedacc..288e5dd 100644 --- a/src/views/taskplatform/taskmanagement/lookFlowInfoNewApp.vue +++ b/src/views/taskplatform/taskmanagement/lookFlowInfoNewApp.vue @@ -129,7 +129,7 @@ const gainFormData = () => { .then((data: any) => { let extraW=0; if(isFlowTable.value){ - extraW = 150 + extraW = 300 } if (data.data.logistrue) { formState.formData.list.push(editLookFormCont); @@ -158,18 +158,26 @@ const gainFormData = () => { }); } if(aiConfigArea.value){ - extraW = extraW + 150 + extraW = extraW + 300 } if (aiConfigArea.value && isFlowTable.value){ - drawBodyWidth.value = drawBodyWidth.value + extraW - 160 + drawBodyWidth.value = drawBodyWidth.value + extraW - 100 }else if ((!aiConfigArea.value && isFlowTable.value) || (aiConfigArea.value && !isFlowTable.value)){ drawBodyWidth.value = drawBodyWidth.value + extraW }else{ drawBodyWidth.value = drawBodyWidth.value } - + if (extraW == 0){ + drawBodyWidth.value = 780 + } + if (extraW == 300 && drawBodyWidth.value > 1100){ + drawBodyWidth.value = 1100 + } + if(drawBodyWidth.value > 1400){ + drawBodyWidth.value = 1400 + } nextTick(() => { // console.log("获取自定义表单内容-1111-->",data.data.tableData) @@ -378,7 +386,7 @@ const submitEdit = () => { } .twoPageAi{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr; /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr; /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; @@ -386,7 +394,7 @@ const submitEdit = () => { } .twoPageFlow{ display: grid; - grid-template-columns: 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; @@ -394,7 +402,7 @@ const submitEdit = () => { } .treePage{ display: grid; - grid-template-columns: minmax(150px, 400px) 1fr minmax(150px, 400px); /* 左右最小150px,最大250px,中间自适应 */ + grid-template-columns: minmax(150px, 300px) 1fr minmax(150px, 300px); /* 左右最小150px,最大250px,中间自适应 */ grid-template-rows: auto; gap: 10px; max-width: 100%; From 9b5a8810fed604fce360422bc90738cf6d6d3ef9 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Wed, 11 Feb 2026 08:29:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8A=A0=E8=A7=A3=E5=AF=86=E6=BA=90?= =?UTF-8?q?=E6=9B=B4=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/api/DesignForm/type.ts | 3 + src/api/date/type.ts | 3 +- .../DesignForm/formControlPropertiNew.vue | 22 ++--- .../encryptionAndDecryption/sm4UtilsWasm.ts | 74 ++++++++++++++ src/utils/request.ts | 2 +- .../newLowCode/appLayout/appContainer.vue | 26 ++++- .../lowcodepage/runApp/newRunAppForm.vue | 97 +++++++++++++++++++ yarn.lock | 8 ++ 9 files changed, 219 insertions(+), 17 deletions(-) create mode 100644 src/utils/encryptionAndDecryption/sm4UtilsWasm.ts create mode 100644 src/views/sysworkflow/lowcodepage/runApp/newRunAppForm.vue diff --git a/package.json b/package.json index 5ba8cef..0f761da 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "element-resize-detector": "^1.2.4", "font-awesome": "^4.7.0", "gm-crypto": "^0.1.12", + "gm-crypto-wasm": "^0.1.5", "html2canvas": "^1.4.1", "install": "^0.13.0", "js-beautify": "^1.14.8", diff --git a/src/api/DesignForm/type.ts b/src/api/DesignForm/type.ts index d1d3527..8609073 100644 --- a/src/api/DesignForm/type.ts +++ b/src/api/DesignForm/type.ts @@ -6,6 +6,9 @@ export interface SearchForm extends PageQuery{ } //自定义表单列表内容 export interface customerFormCont{ + signCodeStr: any; + isEdit: any; + describe: any; id: number, name: string, tablename: string, diff --git a/src/api/date/type.ts b/src/api/date/type.ts index 0ea87af..f641eab 100644 --- a/src/api/date/type.ts +++ b/src/api/date/type.ts @@ -95,7 +95,8 @@ export interface appSetInfo { appName:string; appSvg:string; state:number; - uuid:string; + uuid:string; + describe?:string; } /** @ 作者: 秦东 diff --git a/src/components/DesignForm/formControlPropertiNew.vue b/src/components/DesignForm/formControlPropertiNew.vue index d7201fa..90c9d78 100644 --- a/src/components/DesignForm/formControlPropertiNew.vue +++ b/src/components/DesignForm/formControlPropertiNew.vue @@ -4085,17 +4085,17 @@ getCustomerFormList().then(({ data }) => { }); const orgAndManTree = ref(); -getAssociatedFormsOrgAndManTree().then(({ data }) => { - let resData = ref(data.children); - orgAndManTree.value = [ - { - id: data.id, - //label: data.label, - label: "组织机构", - children: [...resData.value], - }, - ]; -}); +// getAssociatedFormsOrgAndManTree().then(({ data }) => { +// let resData = ref(data.children); +// orgAndManTree.value = [ +// { +// id: data.id, +// //label: data.label, +// label: "组织机构", +// children: [...resData.value], +// }, +// ]; +// }); const roleTree = ref(); getAssociatedFormsRoleTree().then(({ data }) => { diff --git a/src/utils/encryptionAndDecryption/sm4UtilsWasm.ts b/src/utils/encryptionAndDecryption/sm4UtilsWasm.ts new file mode 100644 index 0000000..95d6989 --- /dev/null +++ b/src/utils/encryptionAndDecryption/sm4UtilsWasm.ts @@ -0,0 +1,74 @@ +import { SM4 } from "gm-crypto-wasm"; +import * as CryptoJS from 'crypto-js' +/** +@ 作者: 秦东 +@ 时间: 2025-12-07 10:26:51 +@ 备注: 将字符串转换成16进制 +*/ +const strToHexMethod = (str: string): string => { + return CryptoJS.enc.Utf8.parse(str).toString(CryptoJS.enc.Hex) +} +/** +@ 作者: 秦东 +@ 时间: 2025-12-07 10:29:48 +@ 备注: 判断是不是12位16进制参数 +*/ +const isValidHex32 = (str: string): boolean => { + return /^[0-9a-fA-F]{32}$/.test(str) +} +/** +@ 作者: 秦东 +@ 时间: 2025-12-07 10:28:33 +@ 备注: 初始化SM4密钥参数 +*/ +const appSystemKey = strToHexMethod(import.meta.env.VITE_APP_SYSTEM_KEY) +const sm4TokenKey = strToHexMethod(import.meta.env.VITE_APP_SM4_APP_KEY) + +/** +@ 作者: 秦东 +@ 时间: 2026-02-11 08:17:36 +@ 功能: SM4加密方法 +*/ +const sm4EncryptMethod = (data: string, customKey: string): string => { + let ivSetup = sm4TokenKey + if (customKey) { + ivSetup = strToHexMethod(customKey) + if (!isValidHex32(ivSetup)) { + ivSetup = sm4TokenKey + } + } + return SM4.encrypt(data, appSystemKey, { + iv: ivSetup, + mode: SM4.constants.CBC, + inputEncoding: 'utf8', + outputEncoding: 'hex', + padding: 1 + } as never) +} +/** +@ 作者: 秦东 +@ 时间: 2025-12-07 10:31:22 +@ 备注: SM4解密方法 +*/ +const sm4DecryptMethod = (data: string, customKey: string): string => { + let ivSetup = sm4TokenKey + if (customKey) { + ivSetup = strToHexMethod(customKey) + if (!isValidHex32(ivSetup)) { + ivSetup = sm4TokenKey + } + } + // console.log('SM4解密方法----解密结构---data--->', data) + // console.log('SM4解密方法----解密结构----customKey-->', customKey) + // console.log('SM4解密方法----解密结构--ivSetup---->', ivSetup) + // console.log('SM4解密方法----解密结构---sm4TokenKey--->', sm4TokenKey) + // console.log('SM4解密方法----解密结构---appSystemKey--->', appSystemKey) + return SM4.decrypt(data, appSystemKey, { + iv: ivSetup, + mode: SM4.constants.CBC, + inputEncoding: 'hex', + outputEncoding: 'utf8', + padding: 1 + } as never) +} +export { sm4EncryptMethod, sm4DecryptMethod } diff --git a/src/utils/request.ts b/src/utils/request.ts index ae4496c..485f690 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -6,7 +6,7 @@ import axios, { AxiosError, type InternalAxiosRequestConfig } from 'axios' import { ElMessage, ElMessageBox } from 'element-plus' import { generateRandomString } from '@/utils/encryptionAndDecryption/randNumber' -import { sm4DecryptMethod, sm4EncryptMethod } from '@/utils/encryptionAndDecryption/sm4Utils' +import { sm4DecryptMethod, sm4EncryptMethod } from '@/utils/encryptionAndDecryption/sm4UtilsWasm' import { useUserStoreHook } from '@/store/modules/user'; import { useRouter } from 'vue-router' diff --git a/src/views/sysworkflow/lowcodepage/newLowCode/appLayout/appContainer.vue b/src/views/sysworkflow/lowcodepage/newLowCode/appLayout/appContainer.vue index f7803e8..91ba5b1 100644 --- a/src/views/sysworkflow/lowcodepage/newLowCode/appLayout/appContainer.vue +++ b/src/views/sysworkflow/lowcodepage/newLowCode/appLayout/appContainer.vue @@ -10,6 +10,9 @@ import { gainAppEditPsge } from "@/api/DesignForm/requestapi"; import RegularPage from "@/views/sysworkflow/lowcodepage/runApp/regularPage.vue"; import RunAppForm from "@/views/sysworkflow/lowcodepage/runApp/runAppForm.vue"; +// import NewRunAppForm from "@/views/sysworkflow/lowcodepage/runApp/newRunAppForm.vue"; + +import { AllowDropType } from "element-plus/es/components/tree/src/tree.type"; const props = defineProps({ drawerWith: { @@ -36,9 +39,10 @@ const props = defineProps({ const emits = defineEmits(["update:runIsOpen", "refreshPage"]); const userStore = useUserStore(); const menusTree = ref([]); //菜单树 -const pickAppMenu = ref(""); //选中的菜单 +const pickAppMenu = ref(""); //选中的菜单 const switchPAge = ref(1); //页面类型 1:执行页面,2:表单页面 const pickAppMenuSel = ref(""); //下拉框选中的值 + /** @ 作者: 秦东 @ 时间: 2024-07-22 11:40:06 @@ -72,7 +76,7 @@ const gainAppContent = () => { appCont.state = data.data.state; appCont.uuid = data.data.uuid; let isIn = true; - data.data.menuTree.forEach((item) => { + data.data.menuTree.forEach((item:any) => { if (item.isLock == 1 && item.isMain == 1) { pickAppMenu.value = item; isIn = false; @@ -121,10 +125,20 @@ const openAppPage = (val: any) => { pickAppMenu.value = val; } }; +const openOrClose = computed(() => props.runIsOpen); +const allowDrop = (draggingNode: any, dropNode: any, type: AllowDropType) => { + + if (draggingNode.data.type === 2 && dropNode.data.type === 2 && type == "inner") { + return false; + } else { + return true; + } + // return true +};