2 lines
6.8 KiB
JavaScript
2 lines
6.8 KiB
JavaScript
var G=Object.defineProperty,U=Object.defineProperties;var Y=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable;var A=(a,i,o)=>i in a?G(a,i,{enumerable:!0,configurable:!0,writable:!0,value:o}):a[i]=o,O=(a,i)=>{for(var o in i||(i={}))j.call(i,o)&&A(a,o,i[o]);if(x)for(var o of x(i))J.call(i,o)&&A(a,o,i[o]);return a},B=(a,i)=>U(a,Y(i));var V=(a,i,o)=>new Promise((y,u)=>{var w=l=>{try{n(o.next(l))}catch(c){u(c)}},f=l=>{try{n(o.throw(l))}catch(c){u(c)}},n=l=>l.done?y(l.value):Promise.resolve(l.value).then(w,f);n((o=o.apply(a,i)).next())});import{bY as K,ay as N,an as P,a9 as S}from"./bootstrap-DsjPfOC_.js";import{m as M,b9 as I,b7 as b,aa as z,w as h,ab as H,b2 as Q,bJ as E,j as m,u as p,ae as W,ai as L,aJ as X,cd as Z,n as k}from"../jse/index-index-CO0ZsLf2.js";import{u as ee,c as re}from"./index-ClTODsSe.js";import{s as _,E as te,x as v}from"./constants-B5TthjFC.js";import{_ as oe}from"./action-section.vue_vue_type_script_setup_true_lang-DzWuHXSc.js";import ie from"./basic-info-section-DY28f5dY.js";import{_ as ne}from"./trigger-section.vue_vue_type_script_setup_true_lang-7z844GNo.js";import{C}from"./biz-system-enum-BAorzMA8.js";import{D as se}from"./index-BkW8zTlz.js";import"./alert-config.vue_vue_type_script_setup_true_lang-xgSUZKuJ.js";import"./index-Cf3SsIRe.js";import"./device-control-config.vue_vue_type_script_setup_true_lang-BBwCnwSQ.js";import"./index-xuHdvnW9.js";import"./json-params-input-cyDbcWXS.js";import"./device-selector.vue_vue_type_script_setup_true_lang-68zRngzI.js";import"./index-yxfSHS0I.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-BZwqGgTH.js";import"./dict-enum-DRf9W45H.js";import"./product-selector.vue_vue_type_script_setup_true_lang-BsaVHNvf.js";import"./index-CsikH8Bv.js";import"./cron-tab-BOcgYqCE.js";import"./device-trigger-config.vue_vue_type_script_setup_true_lang-B_uLzTx9.js";import"./main-condition-inner-config.vue_vue_type_script_setup_true_lang-B0zkxFsQ.js";import"./value-input.vue_vue_type_script_setup_true_lang-CHIPX6yI.js";import"./operator-selector-s4ZV1tn_.js";import"./property-selector-C6PVBzuV.js";import"./sub-condition-group-config.vue_vue_type_script_setup_true_lang-CyLMzSLV.js";import"./condition-config-B0UeaZZZ.js";import"./current-time-condition-config.vue_vue_type_script_setup_true_lang-BnYQbjCD.js";const ae={class:"drawer-footer"},Fe=M({name:"RuleSceneForm",__name:"rule-scene-form",props:{modelValue:{type:Boolean},ruleScene:{}},emits:["update:modelValue","success"],setup(a,{emit:i}){const o=a,y=i,u=Z(o,"modelValue",y);function w(){return{name:"",description:"",status:C.ENABLE,triggers:[{type:_.DEVICE_PROPERTY_POST.toString(),productId:void 0,deviceId:void 0,identifier:void 0,operator:void 0,value:void 0,cronExpression:void 0,conditionGroups:[]}],actions:[]}}const f=I(),n=I(w());function l(d,e,r){if(!e||!Array.isArray(e)||e.length===0){r(new Error("至少需要一个触发器"));return}for(const[s,t]of e.entries()){if(!t.type){r(new Error(`触发器 ${s+1}: 触发器类型不能为空`));return}if(te(t.type)){if(!t.productId){r(new Error(`触发器 ${s+1}: 产品不能为空`));return}if(!t.deviceId){r(new Error(`触发器 ${s+1}: 设备不能为空`));return}if(!t.identifier){r(new Error(`触发器 ${s+1}: 物模型标识符不能为空`));return}if(!t.operator){r(new Error(`触发器 ${s+1}: 操作符不能为空`));return}if(t.value===void 0||t.value===null||t.value===""){r(new Error(`触发器 ${s+1}: 参数值不能为空`));return}}if(t.type===_.TIMER&&!t.cronExpression){r(new Error(`触发器 ${s+1}: CRON表达式不能为空`));return}}r()}function c(d,e,r){if(!e||!Array.isArray(e)||e.length===0){r(new Error("至少需要一个执行器"));return}for(const[s,t]of e.entries()){if(!t.type){r(new Error(`执行器 ${s+1}: 执行器类型不能为空`));return}if(t.type===v.DEVICE_PROPERTY_SET||t.type===v.DEVICE_SERVICE_INVOKE){if(!t.productId){r(new Error(`执行器 ${s+1}: 产品不能为空`));return}if(!t.deviceId){r(new Error(`执行器 ${s+1}: 设备不能为空`));return}if(t.type===v.DEVICE_SERVICE_INVOKE&&!t.identifier){r(new Error(`执行器 ${s+1}: 服务不能为空`));return}if(!t.params||Object.keys(t.params).length===0){r(new Error(`执行器 ${s+1}: 参数配置不能为空`));return}}if((t.type===v.ALERT_TRIGGER||t.type===v.ALERT_RECOVER)&&!t.alertConfigId){r(new Error(`执行器 ${s+1}: 告警配置不能为空`));return}}r()}const T=b({name:[{required:!0,message:"场景名称不能为空",trigger:"blur"},{type:"string",min:1,max:50,message:"场景名称长度应在1-50个字符之间",trigger:"blur"}],status:[{required:!0,message:"场景状态不能为空",trigger:"change"},{type:"enum",enum:[C.ENABLE,C.DISABLE],message:"状态值必须为启用或禁用",trigger:"change"}],description:[{type:"string",max:200,message:"场景描述不能超过200个字符",trigger:"blur"}],triggers:[{required:!0,validator:l,trigger:"change"}],actions:[{required:!0,validator:c,trigger:"change"}]}),R=I(!1),g=I(!1),q=z(()=>g.value?"编辑场景联动规则":"新增场景联动规则");function F(){return V(this,null,function*(){if(!(!f.value||!(yield f.value.validate()))){R.value=!0;try{g.value?(yield ee(n.value),S.success("更新成功")):(yield re(n.value),S.success("创建成功")),u.value=!1,y("success")}catch(e){console.error("保存失败:",e),S.error(g.value?"更新失败":"创建失败")}finally{R.value=!1}}})}const $=()=>{u.value=!1};function D(){var d;o.ruleScene?(g.value=!0,n.value=B(O({},o.ruleScene),{triggers:(d=o.ruleScene.triggers)!=null&&d.length?o.ruleScene.triggers:[{type:_.DEVICE_PROPERTY_POST,productId:void 0,deviceId:void 0,identifier:void 0,operator:void 0,value:void 0,cronExpression:void 0,conditionGroups:[]}],actions:o.ruleScene.actions||[]})):(g.value=!1,n.value=w())}return h(u,d=>V(null,null,function*(){var e;d&&(D(),yield k(),(e=f.value)==null||e.clearValidate())})),h(()=>o.ruleScene,()=>{u.value&&D()},{deep:!0}),(d,e)=>(Q(),H(p(se),{modelValue:p(u),"onUpdate:modelValue":e[3]||(e[3]=r=>X(u)?u.value=r:null),title:q.value,width:"80%",direction:"rtl","close-on-click-modal":!1,"close-on-press-escape":!1,onClose:$},{footer:E(()=>[W("div",ae,[m(p(N),{disabled:R.value,type:"primary",onClick:F},{default:E(()=>[m(p(P),{icon:"ep:check"}),e[4]||(e[4]=L(" 确 定 ",-1))]),_:1},8,["disabled"]),m(p(N),{onClick:$},{default:E(()=>[m(p(P),{icon:"ep:close"}),e[5]||(e[5]=L(" 取 消 ",-1))]),_:1})])]),default:E(()=>[m(p(K),{ref_key:"formRef",ref:f,model:n.value,rules:T,"label-width":"110px"},{default:E(()=>[m(ie,{modelValue:n.value,"onUpdate:modelValue":e[0]||(e[0]=r=>n.value=r),rules:T},null,8,["modelValue","rules"]),m(ne,{triggers:n.value.triggers,"onUpdate:triggers":e[1]||(e[1]=r=>n.value.triggers=r)},null,8,["triggers"]),m(oe,{actions:n.value.actions,"onUpdate:actions":e[2]||(e[2]=r=>n.value.actions=r)},null,8,["actions"])]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"]))}});export{Fe as default};
|