ribbon.js 7.9 KB
import Util from "../js/util.js";
import SystemDemo from "../js/systemdemo.js";
import {
    DownloadFile
} from "../actions/common.js";

import SystemAddin,{onWebEvent} from "../actions/systemAddin.js";
/* global wps:false */
var WebNotifycount = 0;

var ribbon = {
    //这个函数在整个wps加载项中是第一个执行的
    OnAddinLoad: function (ribbonUI) {
        if (typeof wps.ribbonUI != "object") {
            wps.ribbonUI = ribbonUI;
        }

        if (typeof wps.Enum != "object") {
            // 如果没有内置枚举值
            wps.Enum = Util.WPS_Enum;
        }

        //这几个导出函数是给外部业务系统调用的
        window.openOfficeFileFromSystemDemo =
            SystemDemo.openOfficeFileFromSystemDemo;
        window.InvokeFromSystemDemo = SystemDemo.InvokeFromSystemDemo;

        window.onWebEvent = onWebEvent;

        wps.PluginStorage.setItem("EnableFlag", false); //往PluginStorage中设置一个标记,用于控制两个按钮的置灰
        wps.PluginStorage.setItem("ApiEventFlag", false); //往PluginStorage中设置一个标记,用于控制ApiEvent的按钮label
        wps.ribbonUI.ActivateTab('SystemAddin'); // 切换tab
        SystemAddin.initWpsAddin();

        return true;
    },

    OnAction: function (control) {
        const eleId = control.Id;
        switch (eleId) {
            case "btnShowMsg": {
                const doc = wps.WpsApplication().ActiveDocument;
                if (!doc) {
                    alert("当前没有打开任何文档");
                    return;
                }
                alert(doc.Name);
            }
            break;
        case "btnIsEnbable": {
            let bFlag = wps.PluginStorage.getItem("EnableFlag");
            wps.PluginStorage.setItem("EnableFlag", !bFlag);

            //通知wps刷新以下几个按饰的状态
            wps.ribbonUI.InvalidateControl("btnIsEnbable");
            wps.ribbonUI.InvalidateControl("btnShowDialog");
            wps.ribbonUI.InvalidateControl("btnShowTaskPane");
            //wps.ribbonUI.Invalidate(); 这行代码打开则是刷新所有的按钮状态
            break;
        }
        case "btnShowDialog":
            wps.ShowDialog(
                Util.GetUrlPath() + "dialog",
                "这是一个对话框网页",
                400 * window.devicePixelRatio,
                400 * window.devicePixelRatio,
                false
            );
            break;
        case "btnShowTaskPane": {
            let tsId = wps.PluginStorage.getItem("taskpane_id");
            if (!tsId) {
                let tskpane = wps.CreateTaskPane(Util.GetUrlPath() + "taskpane");
                let id = tskpane.ID;
                wps.PluginStorage.setItem("taskpane_id", id);
                tskpane.Visible = true;
            } else {
                let tskpane = wps.GetTaskPane(tsId);
                tskpane.Visible = !tskpane.Visible;
            }
        }
        break;
        case "btnApiEvent": {
            let bFlag = wps.PluginStorage.getItem("ApiEventFlag");
            let bRegister = bFlag ? false : true;
            wps.PluginStorage.setItem("ApiEventFlag", bRegister);
            if (bRegister) {
                wps.ApiEvent.AddApiEventListener(
                    "DocumentNew",
                    "ribbon.OnNewDocumentApiEvent"
                );
            } else {
                wps.ApiEvent.RemoveApiEventListener(
                    "DocumentNew",
                    "ribbon.OnNewDocumentApiEvent"
                );
            }

            wps.ribbonUI.InvalidateControl("btnApiEvent");
        }
        break;
        case "btnWebNotify": {
            let currentTime = new Date();
            let timeStr =
                currentTime.getHours() +
                ":" +
                currentTime.getMinutes() +
                ":" +
                currentTime.getSeconds();
            wps.OAAssist.WebNotify(
                "这行内容由wps加载项主动送达给业务系统,可以任意自定义, 比如时间值:" +
                timeStr +
                ",次数:" +
                ++WebNotifycount,
                true
            );
        }
        break;
        case "btnOpenWebFile": {
            DownloadFile(
                "https://apps.chinadci.com/api/attach/stream/open.do?nid=uMLA3veiVV92b8mUGSW&token=3e299484-5286-4bc5-a538-0ab1bdeecfbc",
                "收 入 证 明 .docx",
                (path) => {
                    let doc = wps
                        .WpsApplication()
                        .Documents.Open(path, false, false, false, "");

                    if (!doc) return;
                    var l_Param = wps.PluginStorage.getItem(doc.DocID);
                    var l_objParam = JSON.parse(l_Param);
                    //增加属性,或设置
                    l_objParam.OADocLandMode = 0; //设置OA文档的落地标志

                    var l_p = JSON.stringify(l_objParam);
                    //将OA文档落地模式标志存入系统变量对象保存

                    wps.PluginStorage.setItem(doc.DocID, l_p);
                    // 把WPS对象置前
                    wps.WpsApplication().WindowState = 1;
                    wps.WpsApplication().Activate();
                }
            );
        }
        break;
        case "btnSaveToServer":
            {
                SystemAddin.OnSaveToServer()
            }
            break;
        case "btnInsertRedHeader":
            {

            }
            break;
        default:
        case "FileSave":
            {
                let doc = wps.WpsApplication().ActiveDocument;
                if (!doc) {
                    alert("空文档不能保存!");
                    return;
                }
            
                let param = wps.PluginStorage.getItem(doc.DocID);
                
                if(param != null){
                    param = JSON.parse(param);
                    if(param.OADocLandMode == 0){
                        SystemAddin.OnSaveToServer();
                        return;
                    }
                }

            }
            break;
        }
        return true;
    },

    GetImage: function (control) {
        const eleId = control.Id;
        switch (eleId) {
            case "btnShowMsg":
                return "images/1.svg";
            case "btnShowDialog":
                return "images/2.svg";
            case "btnShowTaskPane":
                return "images/3.svg";
            default:
        }
        return "images/newFromTemp.svg";
    },

    OnGetEnabled: function (control) {
        const eleId = control.Id;
        switch (eleId) {
            case "btnShowMsg":
                return true;
            case "btnShowDialog": {
                let bFlag = wps.PluginStorage.getItem("EnableFlag");
                return bFlag;
            }
            case "btnShowTaskPane": {
                let bFlag = wps.PluginStorage.getItem("EnableFlag");
                return bFlag;
            }
            default:
                break;
        }
        return true;
    },

    OnGetVisible: function (control) {
        const eleId = control.Id;
        console.log(eleId);
        return true;
    },

    OnGetLabel: function (control) {
        const eleId = control.Id;
        switch (eleId) {
            case "btnIsEnbable": {
                let bFlag = wps.PluginStorage.getItem("EnableFlag");
                return bFlag ? "按钮Disable" : "按钮Enable";
            }
            case "btnApiEvent": {
                let bFlag = wps.PluginStorage.getItem("ApiEventFlag");
                return bFlag ? "清除新建文件事件" : "注册新建文件事件";
            }
            default:
                break;
        }
        return "";
    },

    OnNewDocumentApiEvent: function (doc) {
        alert("新建文件事件响应,取文件名: " + doc.Name);
    },
};

export default ribbon;