fix(storefront): getWidgetById start point must be bricks.app not app.root - popup DOM is body sibling outside app.root subtree; pay button previously read default values ignoring user input

This commit is contained in:
yumoqing 2026-09-08 18:01:30 +08:00
parent c74b9cb885
commit cd58974146

View File

@ -102,20 +102,20 @@ else:
"var params=new URLSearchParams();"
"params.append('product_id',pid);"
"if(pt=='workspace_storage'){"
" var gb=bricks.getWidgetById('buy_storage_gb',bricks.app.root);"
" var mo=bricks.getWidgetById('buy_valid_months',bricks.app.root);"
" var gb=bricks.getWidgetById('buy_storage_gb',bricks.app);"
" var mo=bricks.getWidgetById('buy_valid_months',bricks.app);"
" var gbv=gb?gb.resultValue():0; var mov=mo?mo.resultValue():1;"
" if(gbv&&gbv>0)params.append('storage_gb',gbv);"
" if(mov&&mov>0)params.append('valid_months',mov);"
"}else if(pt=='pipeline'){"
" var cm=bricks.getWidgetById('buy_charge_mode',bricks.app.root);"
" var cm=bricks.getWidgetById('buy_charge_mode',bricks.app);"
" params.append('charge_mode',cm?(cm.value||'month'):'month');"
"}"
"var tw=bricks.getWidgetById('buy_price_text',bricks.app.root);"
"var tw=bricks.getWidgetById('buy_price_text',bricks.app);"
"if(tw)tw.set_text('计算中...');"
"fetch('/product_management/storefront/api/calc_price.dspy',"
"{method:'POST',body:params}).then(function(r){return r.json()}).then(function(d){"
" var t=bricks.getWidgetById('buy_price_text',bricks.app.root); if(!t)return;"
" var t=bricks.getWidgetById('buy_price_text',bricks.app); if(!t)return;"
" if(d.success){var s='应付金额:¥ '+(Math.round(d.amount*100)/100).toFixed(2);"
" if(Math.abs((d.discount||1)-1)>1e-9){"
" s+='(原价 ¥ '+(Math.round(d.original_amount*100)/100).toFixed(2)"
@ -123,7 +123,7 @@ else:
" t.set_text(s);t.dom_element.style.color='#e74c3c';"
" }else{t.set_text('算价失败:'+(d.message||''));t.dom_element.style.color='#e67e22';}"
"}).catch(function(e){"
" var t=bricks.getWidgetById('buy_price_text',bricks.app.root);"
" var t=bricks.getWidgetById('buy_price_text',bricks.app);"
" if(t){t.set_text('算价请求失败:'+e);t.dom_element.style.color='#e67e22';}"
"})"
)
@ -198,8 +198,8 @@ else:
)
if is_storage:
pay_script += (
"var gb=bricks.getWidgetById('buy_storage_gb',bricks.app.root);"
"var mo=bricks.getWidgetById('buy_valid_months',bricks.app.root);"
"var gb=bricks.getWidgetById('buy_storage_gb',bricks.app);"
"var mo=bricks.getWidgetById('buy_valid_months',bricks.app);"
"var gbv=gb?gb.resultValue():100; var mov=mo?mo.resultValue():1;"
"if(!gbv||gbv<=0){alert('请输入购买容量');return;}"
"if(!mov||mov<=0){alert('请输入购买月数');return;}"
@ -208,7 +208,7 @@ else:
)
if is_pipeline:
pay_script += (
"var cm=bricks.getWidgetById('buy_charge_mode',bricks.app.root);"
"var cm=bricks.getWidgetById('buy_charge_mode',bricks.app);"
"var cmv=cm?(cm.value||'month'):'month';"
"params.append('charge_mode',cmv);"
)