易协同低代码常用JS汇总

80 阅读2分钟

常用方法

常用方法

区别编辑与查看

this.formConfig.view = true为查看 false为非查看

区分新建和编辑

this.formDataModel.id === undefined

设置字段只读js

this.widgetRefList.d1.field.options.disabled = true

给控件赋值
this.formDataModel.d1 = 6666

示例1:新建页该字段可编辑,编辑页只读



if(!this.formConfig.view && this.formDataModel.id != undefined){
  
  this.widgetRefList.d11.field.options.disabled = true
}

编辑页初始值,数据加载后赋

afterDataLoading(){
  if(!this.formConfig.view){
    this.formDataModel.d1 = 6666
  }
}

列表数据加载后处理字段显示样式。

this.dataJson.tableData || this.dataJson.listData

listData是手机端变量名称

afterDataLoading(){

    const data=this.dataJson.tableData;

    data.forEach(ele => {
      ele.d4 = `<img src="${ele.d4}"  />`;
 
      if(ele.d5=="选项 3"){
         ele.d5 = `<span class="el-tag el-tag--light">${ele.d5}</span>`
      }

    });

}

列表上方插入内容且不出现滚动条

  //重新自动高度不出现滚动条,第7行是减去的高度,暂时只能定时
    
let tableBox = document.querySelector(".table_box")
  const setForm = () => {
    const maxRetries = 10;  // 最大重试次数
    let retryCount = 0;
    const trySet = () => {
      if (tableBox) {
        tableBox.style.height = 'calc(100% - 87px)'
      } else if (retryCount < maxRetries) {
        tableBox = document.querySelector(".table_box")
        retryCount++;
        setTimeout(trySet, 200); // 200ms后重试
      } 
    };
    trySet(); // 初始执行
  }
  setForm()

//**可以写在afterDataLoading()里 

tableBox = document.querySelector(".table_box")
tableBox.style.height = 'calc(100% - 87px)'

操作页签的方法汇总

本页面内路由打开未实现

//打开页签
history.pushState({}, '', '/flow/space');

onFormMounted(){

// 创建 HTML 片段
  const htmlFragment = `
    <div class="inserted-element" style="margin-top:10px;">
      <p><button id="dakai">打开页签</button><button id="guanbi">关闭页签</button>
      <button id="guanbi2">关闭本页签打开新页签</button>
      <button id="shuaxin">刷新页面</button><button id="shuaxinlb">重载列表</button>
      <button id="iframe1">iframe1</button>
      <button id="iframe2">iframe2</button>
      <button id="iframe3">iframe3</button>
      <button id="shuaxinlb">本页面打开</button>这是一个动态插入的元素</p>
    </div>
  `;
  const header = document.querySelector('.work_content_header');
  header.insertAdjacentHTML('afterend', htmlFragment);
  document.getElementById('dakai').addEventListener('click', function() {
    history.pushState({}, '', '/flow/space');
  });

  
  //关闭本页签
  document.getElementById('guanbi').addEventListener('click', ()=> {
    
      let obj = {
        path: '/lowcode' + this.$route.fullPath,
        query: this.$route.query
      }
      this.bus.$emit("delTag", obj);

  });    
  
  //关闭本页签打开新页签
  document.getElementById('guanbi2').addEventListener('click', ()=> {
      history.pushState({}, '', '/flow/space');
      let obj = {
        path: '/lowcode' + this.$route.fullPath,
        query: this.$route.query
      }
      this.bus.$emit("delTag", obj);
    

  });    
  
  
//刷新页面
document.getElementById('shuaxin').addEventListener('click', () => {
  let obj = { 
    modules_id: this.$route.query.modules_id, 
    page_id: this.$route.query.page_id 
  };
  this.$parent.getConfig(obj);
});

//传条件重载列表,和页面设计器的列表操作一致,页面设计器的列表如何写数据加载完成事件
  document.getElementById('shuaxinlb').addEventListener('click', ()=> {
    
      let obj = { modules_id: this.$route.query.modules_id, page_id: this.$route.query.page_id }
      this.$parent.getConfig(obj)
  }); 
            
//iframe打开
  document.getElementById('iframe1').addEventListener('click', ()=> {
       let obj = {
        content: {
          link:'/index/lowcode/design?modules_id=1087&page_id=1726',
          open:1,
        },
        type:'url',
      };

      this.$parent.handlePageClick(null,obj)
  });       

  document.getElementById('iframe2').addEventListener('click', ()=> {
       let obj = {
        content: {
          link:'/index/lowcode/design?modules_id=1087&page_id=1726',
          open:2,
        },
        type:'url',
      };

      this.$parent.handlePageClick(null,obj)
  });  
  
    document.getElementById('iframe3').addEventListener('click', ()=> {
       let obj = {
        content: {
          link:'/index/lowcode/design?modules_id=1087&page_id=1726',
          open:3,
        },
        type:'url',
      };

      this.$parent.handlePageClick(null,obj)
  });  
}
  
afterDataLoading(){

tableBox = document.querySelector(".table_box")
tableBox.style.height = 'calc(100% - 87px)'






}


全局js里写元素的事件

onFormMounted(){
  this.widgetRefList.d24.handleOnAfterConfirmation = handleOnAfterConfirmation = () => {
    alert(123456123)
  } 
}   

页面设计器列表加条件重载(未实现)

两种方式,1、ajax请求,2、使用内部方法,可以多参数

onFormMounted(){
  let that = this
  // 1. 找到指定类名的元素
  const container = document.querySelector('.render-form');
  const newButton = document.createElement('button');
  newButton.className = 'btn'; // 添加类名
  newButton.textContent = '全局变量搜索';
  // 3. 添加按钮到容器中
  container.appendChild(newButton);
  // 4. 为按钮添加点击事件监听
  newButton.addEventListener('click', function () {
    const widget = that.widgetRefList.tableList58660;
    if (widget.optionModel.souceData) {
      var myCondition = widget.optionModel.souceData.myCondition || []
      myCondition.forEach(item => {
        if (item.type === 3) {
          that.$set(item, 'variableVal', 620)
          that.$set(item, 'valueType', 1)
        }
      })
    }
  });

}

弹出选择后获取选中的数据

下拉菜单选中后未实现

下拉菜单未实现是因为元素每加载出来,延时后正常
onFormMounted(){

    setTimeout(()=> {
      this.widgetRefList.d5.handleOnChange = (value) => {
        alert(value)
      }
    }, 100);
  
  this.widgetRefList.d24.handleOnAfterConfirmation = () => {
    console.log(this.widgetRefList.d24.$refs.table.multipleSelection)
  } 
}


tree的点击事件及右侧编辑

new vue并使用element

onFormMounted(){
  // let url = 'http://tdrj.esynergy.cn:1025/workflow/cdn/js/vue.js'
  // this.parentCommon.createScript(url, null).then(result => {
    this.$nextTick(() => {
      CreatVue.use(ElementUI, { size: "small" });
      const parent = document.querySelector(".render-form")
      const app1Div = document.createElement('div');
      app1Div.id = 'app1';
      app1Div.innerHTML = `aaa{{dt}}bb
                      <el-tag v-for="(item, index) in items" :key="index">
                        {{index}}: {{item}}
                      </el-tag>`;
      parent.appendChild(app1Div);
      new CreatVue({
        el: '#app1',
        data: {
          dt: 'Dynamic Content',
          items: ['Apple', 'Banana', 'Cherry']
        },
       });
    })  
  // })
}

实现一个好看的卡片列表,带图,行菜单出现在内部

实现列表设计器和页面设计器两个例子