wangting
2024-04-25 007418e0f113375285647b517b204f3f00daa07b
添加action
已修改4个文件
已添加1个文件
137 ■■■■ 文件已修改
Source/ProjectWeb/src/actions/base/AddAction.js 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/actions/base/BaseAction.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/api/base/actions.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/components/actions/AddEditDialog.vue 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/ProjectWeb/src/actions/base/AddAction.js
@@ -31,31 +31,30 @@
 */
export const doAdd = (options,callback)=> {
  const paramVOS = options.paramVOS;
  if (!paramVOS['form'] && !paramVOS['context']&& !paramVOS['content']) {
  if (!paramVOS['form'] && !paramVOS['context'] && !paramVOS['content']) {
    Vue.prototype.$message.error("按钮配置不正确");
    return false;
  }
  const dialogConstructor = Vue.extend(AddEditDialog);
  let instance = new dialogConstructor();
  instance.props={
    sourceData:options.sourceData,
    dataStore:options.dataStore,
    paramVOS:paramVOS
  }
  const vm = instance.$mount();
  vm.visible=true;
  vm.dialogClose=function (){
  instance.sourceData = options.sourceData;
  instance.dataStore = options.dataStore;
  instance.paramVOS = paramVOS
  instance.type = 'add';
  instance.dialogClose = function () {
    vm.visible = false;
    document.body.removeChild(vm.$el);
    instance.$destroy();
    instance = null;
  };
  vm.prototype.saveCallback=function (){
    if (callback) {
      callback(options);
    }
  if (callback) {
    instance.saveCallback = callback(options);
  }
  let vm = instance.$mount();
  document.body.appendChild(vm.$el);
  instance.visible = true;
}
/**
Source/ProjectWeb/src/actions/base/BaseAction.js
@@ -13,8 +13,7 @@
  if(button.url && button.url!='null'){
    //有配置action路径,使用路径对应的js
    let buttonParse = parseEventByUrl(button.url,options,false);
    import("../"+buttonParse.jsPath+".js").then(module => {
    import("../"+button.url+".js").then(module => {
      module.doAction(options);
    })
  }else {
Source/ProjectWeb/src/api/base/actions.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
import request from '@/router/axios';
// æ–°å¢ž
export const addSave = (url,method,data) => {
  url='/api/'+(url||"uiDataController/addSave");
  return request({
    url: url,
    method: method || 'post',
    data
  })
}
// ä¿®æ”¹
export const edit = (data) => {
  return request({
    url: '/api/uiDataController/edit-save',
    method: 'put',
    data
  })
}
// åˆ é™¤
export const del = (data) => {
  let url = '/api/uiDataController/remove'
  return request({
    url,
    method: 'post',
    data
  })
}
Source/ProjectWeb/src/components/actions/AddEditDialog.vue
@@ -3,17 +3,26 @@
             :title="paramVOS.title"
             :visible.sync="visible"
             :width="width"
             :style="'height:'+height || 'auto'"
             :fullscreen="paramVOS.content || paramVOS.context"
             :append-to-body="true"
             class="avue-dialog avue-dialog--top"
             :destroy-on-close="true"
             @close="dialogClose">
    dialog
    <basic-form ref="formRef" v-if="paramVOS.form"></basic-form>
    <ui-view ref="uiViewRef" v-else-if="paramVOS.content || paramVOS.context"></ui-view>
    <div v-if="paramVOS.form" class="avue-dialog__footer">
      <el-button type="primary" @click="saveHandler">保 å­˜</el-button>
      <el-button @click="escHandler">取 æ¶ˆ</el-button>
      <el-button @click="resetValue">重 ç½®</el-button>
    <basic-form ref="formRef" v-if="paramVOS.form">
    </basic-form>
    <ui-view ref="uiViewRef" v-else-if="paramVOS.content || paramVOS.context"
             :btmType="paramVOS.type"
             :context="paramVOS.context"
             :inDialog="true"
             :key="'AddEditDialog-'+type"
             :sourceData="sourceData"
             :dataStore="dataStore"
             :paramVOS="paramVOS"
    ></ui-view>
    <div slot="footer" class="dialog-footer avue-dialog__footer">
      <el-button type="primary" plain size="small" @click="saveHandler">保 å­˜</el-button>
      <el-button size="small" @click="dialogClose">取 æ¶ˆ</el-button>
      <el-button size="small" @click="resetValue">重 ç½®</el-button>
    </div>
  </el-dialog>
</template>
@@ -21,6 +30,7 @@
<script>
import uiView from "@/views/base/UIContentViewerInDialog"
import {dataForm} from "@/api/base/ui";
import {addSave} from "@/api/base/actions"
export default {
  name: "AddEditDialog",
@@ -42,22 +52,32 @@
    },
    width: {
      type: String,
      default:'70%'
    },
    height: {
      type: String,
      default:'500px'
    },
      default:'60%'
    }
  },
  data(){
    return {
      type:"add",
      visible:false
    }
  },
  computed:{
    title(){
      return this.paramVOS.title || (this.type=='add'?'添加':'修改')
    }
  },
  created() {
  },
  watch: {
    sourceData: {
      handler(val) {
        if (this.paramVOS.form) {
          this.onLoad();
        }
      },
      deep: true,
      immediate: true
    },
  },
  methods: {
    dialogClose() {
@@ -76,13 +96,28 @@
      }
    },
    saveHandler() {
      this.dialogClose();
    },
    escHandler() {
      this.dialogClose();
      this.$refs.formRef.validate((valid, done) => {
        if (valid) {
          addSave(this.paramVOS.url,this.paramVOS.method,this.form).then(() => {
            this.$message({
              type: "success",
              message: "创建成功!"
            });
            if(this.saveCallback){
              this.saveCallback();
            }
            this.dialogClose();
          }).error((e) => {
            this.$message.error(e||"创建失败")
          });
        } else {
        }
      });
    },
    resetValue() {
      this.$refs.formRef.resetValue();
      this.$refs.formRef.resetFields();
    }
  }
}
Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue
@@ -1,6 +1,6 @@
<template>
  <!--UI上下文的展示器-->
  <div style="height:calc(100% - 4px);min-width:1200px" >
  <div style="height:calc(100% - 4px);" >
    <el-header v-if="uiDefineVO.northAreas && uiDefineVO.northAreas.length>0">
      <UIContentArea :key="'northArea-'+uiDefineVO.oid"
                     :uiBtmType="btmType"
@@ -35,7 +35,7 @@
        </UIContentArea>
      </el-aside>
      <el-container style="height: 100%;display: block">
        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 300px;height: '+centerHeight">
        <el-main v-if="uiDefineVO.centerAreas && uiDefineVO.centerAreas.length>0" :style="'min-height: 200px;height: '+centerHeight">
          <UIContentArea :key="'centerArea-'+uiDefineVO.oid"
                         :uiBtmType="btmType"
                         :uiContext="context"
@@ -51,7 +51,7 @@
          </UIContentArea>
        </el-main>
        <el-footer v-if="uiDefineVO.southAreas && uiDefineVO.southAreas.length>0" height="35%"
                   style="min-height: 150px;">
                   style="min-height: 100px;">
          <UIContentArea :key="'southArea-'+uiDefineVO.oid"
                         :uiBtmType="btmType"
                         :uiContext="context"