From 45f5a28775d47d1e67ad78bf6e8177c636e4a924 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Sat, 17 Jan 2026 12:32:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/business/project/index.ts | 16 + .../src/api/business/scenario/index.ts | 9 + .../frontend/src/assets/table/moni.png | Bin 0 -> 679 bytes .../src/assets/table/moni_disabled.png | Bin 0 -> 687 bytes .../frontend/src/assets/table/result.png | Bin 0 -> 576 bytes .../src/assets/table/result_disabled.png | Bin 0 -> 615 bytes .../frontend/src/assets/table/see.png | Bin 0 -> 616 bytes .../frontend/src/assets/table/shifa.png | Bin 0 -> 555 bytes .../frontend/src/assets/table/u267.png | Bin 0 -> 478 bytes .../src/assets/table/u419_disabled.png | Bin 0 -> 510 bytes .../frontend/src/assets/table/view.png | Bin 0 -> 517 bytes .../src/components/antvx6/changesettings.vue | 29 +- .../frontend/src/components/antvx6/index.vue | 17 +- .../frontend/src/components/antvx6/viewx6.vue | 1518 +++++++++++++++++ .../component/scenario/createscenario.vue | 15 +- .../src/views/component/scenario/index.vue | 73 +- 16 files changed, 1639 insertions(+), 38 deletions(-) create mode 100644 business-css/frontend/src/assets/table/moni.png create mode 100644 business-css/frontend/src/assets/table/moni_disabled.png create mode 100644 business-css/frontend/src/assets/table/result.png create mode 100644 business-css/frontend/src/assets/table/result_disabled.png create mode 100644 business-css/frontend/src/assets/table/see.png create mode 100644 business-css/frontend/src/assets/table/shifa.png create mode 100644 business-css/frontend/src/assets/table/u267.png create mode 100644 business-css/frontend/src/assets/table/u419_disabled.png create mode 100644 business-css/frontend/src/assets/table/view.png create mode 100644 business-css/frontend/src/components/antvx6/viewx6.vue diff --git a/business-css/frontend/src/api/business/project/index.ts b/business-css/frontend/src/api/business/project/index.ts index fcd9685..98683f2 100644 --- a/business-css/frontend/src/api/business/project/index.ts +++ b/business-css/frontend/src/api/business/project/index.ts @@ -59,4 +59,20 @@ export function topologyDevicesLsit(queryParams:any){ }); } +//初始化项目模拟数据 +export function simulationInit(queryParams:any){ + return request({ + url:'/projects/simulation/init' , + method: 'Post', + params:queryParams + }); +} +// 运行项目模拟 +export function simulationRun(projectId:string,scenarioId:string, data:any){ + return request({ + url:'/projects/simulation/run?projectId='+projectId+'&scenarioId='+scenarioId , + method: 'Post', + data: data + }); +} diff --git a/business-css/frontend/src/api/business/scenario/index.ts b/business-css/frontend/src/api/business/scenario/index.ts index 7c082f1..87fbdd6 100644 --- a/business-css/frontend/src/api/business/scenario/index.ts +++ b/business-css/frontend/src/api/business/scenario/index.ts @@ -48,3 +48,12 @@ export function deleteBatchScenarios(queryParams:any){ data: queryParams }); } + +//获取所有项目列表 +export function getActiveAlgorithms(){ + return request({ + url: '/algorithms/getActiveAlgorithms' , + method: 'get' + }); +} + diff --git a/business-css/frontend/src/assets/table/moni.png b/business-css/frontend/src/assets/table/moni.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8e5f1c92420d61586f7a6c7ecc1ac5ef0ca343 GIT binary patch literal 679 zcmV;Y0$BZtP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0z64XK~y+TbyGcP zQ&AZGzMGV0=n%z0RA>kD6rosYK!kz{4h|h1+^o1*$qz_DI+R)*T#7bEbaBw3RIoz_ z2SGuF4k<-w7mcZlD0C@Ap+iFBJ)ZC7nvzP-^6oq5eShbEPh}7Ki%9nZqYxPum8?Kg zs!|az>(Zl3wFkNtK8?|p;CR80I+dpkPBO4U^%Dad>X;0YC7%Xl{9D;AhLGI^QPGzv z-ek48<}aQ4{z4l;>L63_IY!)9$YSl0yB=s(&igA-5s32sa-jA_l*7rW;Om(p#_V0A z+c<<4zOeGkTFK?(uLw(;aJu!iq#pv+fdwn@&_f0tgRdHy+|kKcB{Df&a!y}y=JybCfE*8FM_GHkUs?(e0p%B;=SqXwb#jJa%Xu#o8{GsSP_CV(zX4vJ2LJ z^S2H%(=!%XI8nrfAPIxl$z>gneF|;0+5a&xAk?&JXS>FjBshPAx0bRI)*v_=_%6__ zq0Ks0Rd9#VleLmA1xai-Y;*@7w?EQ<4XL)oNXz*-n>9`{2|q9Ol*j zuo!zc6XnQ3onuSO9(c>S@1CDV()hiw%B>!bB~rB*<2wI>1#Q-4LKM@S?I)FY5M6=C zc5Il<%(m&-lm&mBY2REY!9UopO9D4|9Acs@RFeFt!ZUwqo$vNTPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0z^qfK~y+TbyH1i z6Hyes_f0ZYi_j29s)9k=##o^U#V!%L}@0ScRlyzk($yT7~af1@7{avd2g6@V0co(%?-&h(;<9DMkruQ z>qJ~{{-))Xr@YzT*+y4^lO;KBL@pX8wxUV&3-1ZmNbq2H$O*lvPMIZ_0CWoEZ`lj@ zI&F#OKCSW$Rj_pj2JYB1P%|dXOSLk;)|e}RGdI|-ojwQk=QJM{=-3!Acf$=Aj;?S)?%F-4a3NQiH z#mZqH??Pe1W(PNAE4mXjv)v+6_h z!I9h0i&ZxuzhHp$V85L61bxoXH&mM?;kVT(e!f!XhNm3##%fdKF19aH$&NtN7$m*i z?cD#zk(+X$w?~RF@1v^11Vq&g&*@2sq05DmjM60Dc7b-*WGHTEj>bCwf+h_$XoN*Z zVbCA4^gRe^&BoMH!>}WAUJ=c>ow?f&qJK;| V>|&A)7*qfN002ovPDHLkV1ia;IV%7F literal 0 HcmV?d00001 diff --git a/business-css/frontend/src/assets/table/result.png b/business-css/frontend/src/assets/table/result.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c033d6118a4310e2ba2b82cec5e1a460be6f2f GIT binary patch literal 576 zcmV-G0>Ax5r00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0o6%FK~y+Tl~O%O z98nPd=H0p%BoGr+LJ}?F-I^wiAcz`LMN*^)HWn5lNqf5o5n`7<#o>wAXrqOqjaDg= zE-Drh2&9qQREZo48gqrk-kxtV@3{t#h-W?+-u!;M^F!IZ-i1aN{tr>gLC)2b1`q+g7@Luc9R@b;x6q6IBc9L-!%X-^F$&?V`cOxZBDB`Pg;Wa9 z&3a7m9NmH55TXH5e~P3<+NEZ)G_Bq@+=2{l+~x%QGI62X*K1}IMsK(UVhjU(P%6@T z;zHDfJP|pbuX`8Yx z5RJ)~(p7~`xx`91r5?!;W#_=NvyytqMn0L&hRP# literal 0 HcmV?d00001 diff --git a/business-css/frontend/src/assets/table/result_disabled.png b/business-css/frontend/src/assets/table/result_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..51f37fe8600483037da6938d2b5d3068767023e7 GIT binary patch literal 615 zcmV-t0+{`YP)5r00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0sKisK~y+Tjgw7i z6HySy|MNCqt%NTqM+8R7jG7{)Pk)b^w6s}kr3~mJbF+N1gRGh zy!kF=i8YXPmd$)~{0YgJoxS=FQG~|2LGI;DQ+R6GPAenoH!P(W=tZ zj}OSD+zlCJPhLj$;8U2hD{hON7;wpW@@%1GmSGDF-QrXj?+ESs^3WI`w6+PpbU@}h zAJ>J)LU)@T3*^VRFEhcXF{3-y$DR{8IOTX)2~)QDr$GKD5BfwGG?2?|ppdJ`2z;dK zO?ot6GHW)+5h}+Ms9HNXL=%^X$tt^`W{ZYoAk=cV}n}^j`Ii;&Kbcwb(21DD9X5}9hD>P6kzVIS=ZNW z+xta!ocl#^QM;O+yH8*2H!XP9i(pjEssE~=e;pP>i(88=%{09*jP&qr=?x0_E+~lX zK#Ng_$iC1G==veOx_i^8%XfQ~uh?s>hqV#Lf9JCs!F`%ta(S|H-j{*Py002ovPDHLkV1m|r B9ZUcK literal 0 HcmV?d00001 diff --git a/business-css/frontend/src/assets/table/see.png b/business-css/frontend/src/assets/table/see.png new file mode 100644 index 0000000000000000000000000000000000000000..6671804c6768f4592368af0fe701922c34450710 GIT binary patch literal 616 zcmV-u0+;=XP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0sTotK~y+TjZ?pC zQ&AK?-_2`u5Ut=4rCzz&ZI(sOSb?N&Sv{ zNCE$tq~(A#%iZjc8-uSKp$73B=$5Vin=LxdHA*_o>@80zk>#ADyDi!07zP&9+;Pgf>Nx|dzxUKiOeYfZHcBze&<6fizKc>(Ok zJiGUX4_mdQi;`o%yV7ibmlyeix+D%mQ};KZ+V}~?)ZSIb9Evai0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0l-N_K~y+Tg;T#v zTTv7~-zCuu3K<*}1Osa7A~@=#i{Rp9{{S383Ih^f!ygUdbd{J7^kKOUqGx~6PDj7(5W(D@*rF{{2s!~}OJ zI?@_9M)oPXzzg0>-Jk5FXC%;_w#TB<9(@0gCV|AF&uF{aKslMVo79b~N{RX+Nb4gE zntb1CK($kVd24l`;V&*K5&hvFQ^A&6E!VA?%nl(KQPDCP#$eH#Uq{Z_s)Ai}SmPMQ zUy*0*k!ophK_kB(WC+lNMDacU1^2%9t6;CIkYj32-6yj=MJwoawfY`!0XAWmj;#vm z;Y(*6#i;9Yqv)NA+(6|eQxza3H>x5}!DaH4uMh+l-Z{lE+BwIBs&ZZ0!R;ZeVNRc% z(H2wD*4&zLi}Hf1;4pAhOJp(&Ai{Cw)XMP9SK~^RnoA;9TWDKm<5Je>iLvsH*-BiJ z9dAjvtG9eL5x9pypW5PRK3YVDzAN;d_Oz;nnzTQpHDN{1+4U^<`I1F`=Gnf^m^o*! t`B(kSpuiea6#HBtr;+{hh(+Hj@(<~jy42EGFs1+i002ovPDHLkV1k;C{MG;f literal 0 HcmV?d00001 diff --git a/business-css/frontend/src/assets/table/u267.png b/business-css/frontend/src/assets/table/u267.png new file mode 100644 index 0000000000000000000000000000000000000000..90509c2b3f542d0ce7b8550d245e6f7fdac67b95 GIT binary patch literal 478 zcmV<40U`d0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dq-2K~y+T&66QW zLs1ll&$*kjFu|~}AZXYom}XZr8W#kEVG3FVd1y0DF<6~52nID8%xY4w*t9>x!VrUD zf?>$^e*gP+_Z++-*!Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0h38YK~y+T&67V% zTtO7Y&z<*2T~Q(1Y{U?Q?7CRkC}{+-O%WRr(xuzR5W$ez4dlT1(8!OQBB7HWQQuY6QbfR z88Wu4^M+FL@!b)&r1D0esh}((qbl5sC|7>DD;Ag{`6GY-&YMeIU$AQ1n45g3{Wg#V_iSuqrhLw6 zZ^`Jgn?z23o13-4AqEOW8c4y#|B@@d4-csLD&naaIc4@Ej-t;GKsp4+z$d4Nz*nbJHAa_-D%f#x+9Xe3vo{{VD;l=K5PL4y4Ye2}97WvP4*k~sXW4Va+Lb*zKZ7}sD2YM1h5!Hn07*qoM6N<$f^wnb APx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0h&ofK~y+TjZ-~K zLSYm>=T%71!BHyEMU$wlJ=<(+2@8aXmWc8S4Ivg11+HmdQ_#@R)=<$LG&l%31*uR& zkVAn#Al}n+Z*PLAcpo_Tp6}0ldA10@-AP|O@5;t!*D4X0b7fY-MEBRNp!-GK<567zmPVoi_6tpko(*eTI!qr{g+=L)ecokT~eo&>f*)ZaN_`D&Kc zoy`wI&j`r6gUEtSOjI!1f#_Lcy{zU8+lAPs#K|LTU;|p{{=c){4*I|ZKV#G+D1y#z zaIIb2<|=`BB#+ZpaKdTOJop@v { - deviceList.value = result.records; -}).catch((err) => { + topologyDevicesLsit({ + id: props.projectInfo.projectId + }).then((res:any) => { + if (res.code == 0) { + deviceList.value = res.data; + } + }) +// topologyDevicesLsit(params).then((result:any) => { +// deviceList.value = result.records; +// }).catch((err) => { + +// }); + -}); } @@ -194,7 +199,7 @@ function dialogMaterialClose(){ // 变动公式设置关闭 isDialogFormula.value = false } function handleClick(item:any, index:any){ - formulaInfo.value.correlation = JSON.parse(JSON.stringify(item.name)) + formulaInfo.value.correlation = JSON.parse(JSON.stringify(item.deviceName)) isAcitve.value = index } function handleClose(){ // 变动公式设置关闭 @@ -258,7 +263,7 @@ function confirmTableClick(){ // 确认变动公式设置
- {{ item.name }} + {{ item.deviceName }}
diff --git a/business-css/frontend/src/components/antvx6/index.vue b/business-css/frontend/src/components/antvx6/index.vue index 7354b39..31f8bf2 100644 --- a/business-css/frontend/src/components/antvx6/index.vue +++ b/business-css/frontend/src/components/antvx6/index.vue @@ -1018,10 +1018,10 @@ function setFormulaInit(formula:any) { function getBias(formula:any){ // 从后往前找最后一个+的位置 - const lastPlusIndex = formula.lastIndexOf('+'); - // 从+的位置后截取到】之前 - const constantStr = formula.slice(lastPlusIndex + 1, -1); - const constant = parseFloat(constantStr); +// 匹配最后一个+号后面的数字(支持整数、小数) + const regex = /\+(\d+\.?\d*)$/; + const match = formula.match(regex); + const constant = parseFloat(match[1]); return constant } @@ -1043,16 +1043,17 @@ function saveDesign() { // 保存设计 if(cells[i].changesettings[j].formula != '' && cells[i].changesettings[j].formula != null){ const key = cells[i].changesettings[j].name as string const unit = cells[i].changesettings[j].unit - + const name = cells[i].changesettings[j].name + const delay= cells[i].changesettings[j].delay let tempSources = [] for(let k=0;k + + + + + + \ No newline at end of file diff --git a/business-css/frontend/src/views/component/scenario/createscenario.vue b/business-css/frontend/src/views/component/scenario/createscenario.vue index 997833d..937bc6d 100644 --- a/business-css/frontend/src/views/component/scenario/createscenario.vue +++ b/business-css/frontend/src/views/component/scenario/createscenario.vue @@ -10,7 +10,7 @@ import { ElForm, ElMessage, ElMessageBox } from "element-plus"; import { getDictItemById } from '@/api/dict'; import { eventsBatchSave } from '@/api/business/event'; import ConditionModel from '@/views/component/scenario/condition.vue' -import { addScenarios,updateScenarios} from "@/api/business/scenario"; +import { addScenarios,updateScenarios,getActiveAlgorithms } from "@/api/business/scenario"; const emit = defineEmits([ 'closeCreatescenario']); const props = defineProps({ // 接收父组件传递的项目信息 @@ -41,15 +41,8 @@ function handleScenarioClose(){ } const getAlgorithmType = async () => { try { - let params = { - dictId: '595502b91e7741b5033b53622d8731a3', - size:99, - current:1 - } - const result:any = await getDictItemById(params); - if (result.code == '0') { - algorithmTypeData.value = result.data.records - } + const result:any = await getActiveAlgorithms(); + algorithmTypeData.value = result } catch (error) { } } @@ -152,7 +145,7 @@ onMounted(() => { - + diff --git a/business-css/frontend/src/views/component/scenario/index.vue b/business-css/frontend/src/views/component/scenario/index.vue index a16374c..85f3766 100644 --- a/business-css/frontend/src/views/component/scenario/index.vue +++ b/business-css/frontend/src/views/component/scenario/index.vue @@ -8,6 +8,9 @@ export default { import { onMounted, ref, nextTick } from "vue"; import { ElForm, ElMessage, ElMessageBox } from "element-plus"; import { searchScenariosLsit,addScenarios,updateScenarios,deleteScenarios,deleteBatchScenarios} from "@/api/business/scenario"; + +import { simulationInit,simulationRun } from "@/api/business/project"; + import Page from '@/components/Pagination/page.vue' import { getDictItemById } from '@/api/dict'; // import ConditionModel from '@/views/component/scenario/condition.vue' @@ -268,6 +271,48 @@ function closeCreatescenario(){ dialogVisible.value = false; gettableData(); } + +function confirmationAnalysis(row: any) { + ElMessageBox.confirm("确定对"+ row.name +"故情景分析进行模拟吗?", "确认模拟", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + let params = { + projectId: row.projectId, + scenarioId: row.scenarioId, + }; + simulationInit(params).then((res:any) => { + if (res.code == '0') { + let data = { + data: res.data + } + simulationRun(row.projectId, row.scenarioId, data || {}).then((res) => { + gettableData(); + }).catch((error) => { + console.error('模拟运行失败:', error); + ElMessage({ + type: "error", + message: "模拟运行失败,请检查后端服务是否正常", + }); + }) + }else{ + ElMessage({ + type: "error", + message: "模拟初始化失败", + }); + } + + + + }); + }) +} + + + +