//自定义Action,创建资源分类
|
import {callPreEvent, callPostEvent} from '../BaseAction';
|
import Vue from "vue";
|
import Dialog from "./AddResourceFolderDialog";
|
|
/**
|
* 入口方法
|
* @param options 按钮的配置信息,值为{paramVOS:{按钮配置的参数信息,key值已全部转成小写},dataStore:[按钮所在区域选中数据],sourceData:{按钮上一区域选中数据}}
|
* @param callback 执行完后回调,默认刷新区域数据
|
*/
|
export const doAction = (options,callback) => {
|
options.sourceData = options.sourceData || {};
|
|
//执行配置的preevent前置事件
|
callPreEvent(options, doBefore, function (options) {
|
//执行业务
|
doAdd(options, function () {
|
//执行配置的afterevent后置事件
|
callPostEvent(options, doAfter, callback);
|
});
|
});
|
};
|
|
/**
|
* 执行业务
|
* @param options 按钮的配置信息
|
* @param callback 回调
|
*/
|
export const doAdd = (options,callback)=> {
|
const paramVOS = options.paramVOS;
|
|
//无窗口展示直接写逻辑代码
|
|
|
//有窗口展示时写以下代码
|
//如果窗口想展示UI上下文,则必须配置context和type
|
if (!paramVOS['type'] && paramVOS['context']) {
|
Vue.prototype.$message.error("展示UI上下文时必须配置业务类型type");
|
return false;
|
}
|
//Dialog为要展示的窗口组件,先在顶部import引入
|
const dialogConstructor = Vue.extend(Dialog);
|
let instance = new dialogConstructor();
|
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;
|
};
|
if (callback) {
|
instance.saveCallback = callback;
|
}
|
let vm = instance.$mount();
|
document.body.appendChild(vm.$el);
|
//显示dialog窗口
|
instance.visible = true;
|
|
}
|
/**
|
* preevent前置事件
|
* @param options 按钮的配置信息
|
* @param callback 回调
|
*/
|
export const doBefore = (options,callback)=> {
|
console.log("执行前置事件");
|
Vue.prototype.$message.success("执行前置事件");
|
if(callback){
|
callback(options);
|
}
|
}
|
/**
|
* afterevent后置事件
|
* @param options 按钮的配置信息
|
* @param callback 回调
|
*/
|
export const doAfter = (options,callback)=> {
|
console.log('执行后置事件');
|
Vue.prototype.$message.success("执行后置事件");
|
if(callback){
|
const actionType='add';//actionType非必传,当按钮操作区域为树,并且执行删除时建议传值“del”,避免刷新整个树
|
callback(actionType);
|
}
|
}
|