wangting
2024-05-06 506b5b59e3899d8dd40a61cc8b9a575bbde3caaa
Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
@@ -56,10 +56,16 @@
<script>
import func from "@/util/func";
import {validatenull} from "@/util/validate";
import {doAction} from '@/actions/base/BaseAction';
import Vue from "vue";
export default {
  name: "dynamic-button",
  props: {
    componentVO: {
      type: Object,
      default: {}
    },
    type: {
      type: String
    },
@@ -72,179 +78,26 @@
    butttonList: {
      type: Array
    },
    selectList: {
    default:{
      type:String,
    },
    sourceData: {
      //按钮所属区域的上一区域选中数据
      type: Object,
      default: {}
    },
    dataStore: {
      //按钮所属区域选中数据
      type: Array,
      default: []
    },
    default:{
      type:String,
    }
  },
  data() {
    return {
      visible: false,
      formName: '',
      // 表单数据
      formList: [
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: null,
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "name",
          hidden: false,
          keyAttr: true,
          prefix: null,
          readOnly: false,
          referConfig: null,
          required: true,
          selectLibFlag: null,
          showField: null,
          suffix: '$',
          text: "名称",
          tooltips: '名称',
          type: "text",
          unique: false,
          verify: ""
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: null,
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "code",
          hidden: false,
          keyAttr: false,
          prefix: null,
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: null,
          showField: null,
          suffix: null,
          disabled: true,
          text: "编码",
          tooltips: null,
          type: "text",
          unique: false,
          verify: ""
        },
        {
          comboxKey: "EnumReviewType",
          customClass: null,
          data: null,
          dateFormate: null,
          defaultValue: "department",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "reviewtype",
          hidden: false,
          keyAttr: false,
          prefix: null,
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: null,
          showField: null,
          suffix: null,
          text: "类型",
          tooltips: null,
          type: "combox",
          unique: false,
          verify: "",
          dicData: [{
            label: '测试1',
            value: 'department'
          }, {
            label: '测试2',
            value: 'departments'
          }]
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: null,
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "creator",
          hidden: true,
          keyAttr: false,
          prefix: null,
          readOnly: true,
          referConfig: null,
          required: false,
          selectLibFlag: null,
          showField: null,
          suffix: null,
          text: "创建人",
          tooltips: null,
          type: "text",
          unique: false,
          verify: ""
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: "yyyy-MM-dd HH:mm:ss",
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "createtime",
          hidden: true,
          keyAttr: false,
          prefix: null,
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: null,
          showField: null,
          suffix: null,
          text: "创建时间",
          tooltips: null,
          type: "datetime",
          unique: false,
          verify: ""
        },
        {
          comboxKey: null,
          customClass: null,
          data: null,
          dateFormate: null,
          defaultValue: "",
          displayExtension: "",
          extendAttrMap: null,
          extendAttrString: null,
          field: "content",
          hidden: false,
          keyAttr: false,
          prefix: null,
          readOnly: false,
          referConfig: null,
          required: false,
          selectLibFlag: null,
          showField: null,
          suffix: null,
          text: "备注",
          tooltips: null,
          type: "textarea",
          unique: false,
          verify: ""
        },
      ],
      formList: [],
    }
  },
  computed: {
@@ -272,24 +125,38 @@
  },
  methods: {
    //表格树默认新增子项
    handleDefaultAddChildren(row){
    handleDefaultAddChildren(row) {
      this.visible = true;
      this.formName = '新增子级'
      this.$refs.dynamicForm.form = row;
    },
    buttonClick(item) {
      // 根据 type 条件动态引入不同的JS文件,并传递 item this 参数
      if (this.type === 'table') {
        import('@/views/base/buttonTable').then(module => {
          const buttonClickTable = module.default;
          buttonClickTable.buttonClick(item,this);
        })
      } else if (this.type === 'form') {
        import('@/views/base/buttonForm').then(module => {
          const buttonClickForm = module.default;
          buttonClickForm.buttonClick(item,this);
        })
    buttonClick(buttonitem) {
      const paramVOS = buttonitem.paramVOS;
      const DefineVO = this.componentVO.treeDefineVO || this.componentVO.tableDefineVO || this.componentVO.treeTableDefineVO || this.componentVO.formDefineVO;
      if (!paramVOS['title']) {
        paramVOS['title'] = buttonitem.name + (DefineVO.title || '');
      }
      if (!paramVOS['type']) {
        paramVOS['type'] = DefineVO.btmType;
      }
      if (paramVOS['BSContent'] || paramVOS['BSContext']) {
        paramVOS['context'] = paramVOS['BSContext'] || paramVOS['BSContent']
        paramVOS['content'] = paramVOS['BSContext'] || paramVOS['BSContent'];
      }
      const that = this;
      //paramVOS.customBtn //弹窗默认有保存按钮,customBtn为true时内容展示自定义按钮
      doAction(buttonitem, {
        paramVOS: paramVOS,
        dataStore: this.dataStore || [],
        sourceData: this.sourceData || {}
      }, function (actionType,data) {
        if (that.$parent.handleRefresh) {
          that.$parent.handleRefresh(actionType,data)
        }
      });
    }
  },
}
@@ -298,3 +165,4 @@
<style scoped>
</style>