Tea.context(function () {
let scriptEditor = null
let isLoaded = false;
this.$delay(function () {
isLoaded = true;
if (this.instance.media.type == "email") {
this.changeEmailUsername()
}
})
this.success = function () {
let that = this
teaweb.success("保存成功", function () {
window.location = "/admins/recipients/instances/instance?instanceId=" + that.instance.id
})
};
/**
* 名称
*/
this.rateNoticeVisible = false
this.changeName = function (name) {
if (name.indexOf("短信") > -1 || name.indexOf("钉钉") > -1 || name.indexOf("微信") > -1) {
this.rateNoticeVisible = true
} else {
this.rateNoticeVisible = false
}
};
this.changeName(this.instance.media.name)
/**
* 类型
*/
this.mediaType = this.instance.media.type;
this.changeMediaType = function (media) {
this.mediaType = media.type
if (!isLoaded) {
return;
}
if (this.mediaType == "email") {
this.$delay(function () {
this.$find("form input[name='emailSmtp']").focus();
});
} else if (this.mediaType == "webHook") {
this.$delay(function () {
this.$find("form input[name='webHookURL']").focus();
});
} else if (this.mediaType == "script") {
this.$delay(function () {
this.$find("form input[name='scriptPath']").focus();
});
} else if (this.mediaType == "dingTalk") {
this.$delay(function () {
this.$find("form textarea[name='dingTalkWebHookURL']").focus();
});
} else if (this.mediaType == "qyWeixin") {
this.$delay(function () {
this.$find("form input[name='qyWeixinCorporateId']").focus();
});
} else if (this.mediaType == "qyWeixinRobot") {
this.$delay(function () {
this.$find("form textarea[name='qyWeixinRobotWebHookURL']").focus();
});
}
};
this.changeMediaType(this.instance.media);
/**
* 邮箱
*/
this.emailUsernameHelp = "";
this.changeEmailUsername = function () {
this.emailUsernameHelp = "";
if (this.instance.params.username.indexOf("qq.com") > 0) {
this.emailUsernameHelp = ",QQ邮箱相关设置帮助";
} else if (this.instance.params.username.indexOf("163.com") > 0) {
this.emailUsernameHelp = ",网易邮箱相关设置帮助";
}
};
/**
* webHook
*/
this.methods = ["GET", "POST"]
this.webHookMethod = "GET";
this.webHookHeadersAdding = false;
this.webHookHeaders = [];
this.webHookHeadersAddingName = "";
this.webHookHeadersAddingValue = "";
this.addWebHookHeader = function () {
this.webHookHeadersAdding = true;
this.$delay(function () {
this.$find("form input[name='webHookHeaderName']").focus();
});
};
this.cancelWebHookHeadersAdding = function () {
this.webHookHeadersAdding = false;
};
this.confirmWebHookHeadersAdding = function () {
this.webHookHeaders.push({
"name": this.webHookHeadersAddingName,
"value": this.webHookHeadersAddingValue
});
this.webHookHeadersAddingName = "";
this.webHookHeadersAddingValue = "";
this.webHookHeadersAdding = false;
};
this.removeWebHookHeader = function (index) {
if (!window.confirm("确定要删除此Header吗?")) {
return;
}
this.webHookHeaders.$remove(index);
};
this.webHookContentType = "params";
this.selectWebHookContentType = function (contentType) {
this.webHookContentType = contentType;
this.$delay(function () {
if (contentType == "params") {
} else if (contentType == "body") {
this.$find("form textarea[name='webHookBody']").focus();
}
});
};
this.webHookParamsAdding = false;
this.webHookParams = [];
this.webHookParamsAddingName = "";
this.webHookParamsAddingValue = "";
this.addWebHookParam = function () {
this.webHookParamsAdding = true;
this.$delay(function () {
this.$find("form input[name='webHookParamName']").focus();
});
};
this.cancelWebHookParamsAdding = function () {
this.webHookParamsAdding = false;
};
this.confirmWebHookParamsAdding = function () {
this.webHookParams.push({
"name": this.webHookParamsAddingName,
"value": this.webHookParamsAddingValue
});
this.webHookParamsAddingName = "";
this.webHookParamsAddingValue = "";
this.webHookParamsAdding = false;
};
this.removeWebHookParam = function (index) {
if (!window.confirm("确定要删除此参数吗?")) {
return;
}
this.webHookParams.$remove(index);
};
this.webHookBody = "";
if (this.instance.media.type == "webHook") {
this.webHookMethod = this.instance.params.method;
if (this.instance.params.headers != null) {
this.webHookHeaders = this.instance.params.headers;
}
if (this.instance.params.contentType == "params") {
this.webHookContentType = "params";
if (this.instance.params.params != null) {
this.webHookParams = this.instance.params.params;
}
}
if (this.instance.params.contentType == "body") {
this.webHookContentType = "body";
this.webHookBody = this.instance.params.body;
}
}
/**
* 脚本
*/
this.scriptTab = "path";
this.scriptLang = "shell";
if (this.instance.media.type == "script") {
if (this.instance.params.scriptType == "path") {
this.scriptTab = "path";
} else {
this.scriptTab = "code";
this.scriptLang = this.instance.params.scriptLang;
this.$delay(function () {
this.loadEditor();
});
}
}
this.scriptLangs = [
{
"name": "Shell",
"code": "shell"
},
{
"name": "批处理(bat)",
"code": "bat"
},
{
"name": "PHP",
"code": "php"
},
{
"name": "Python",
"code": "python"
},
{
"name": "Ruby",
"code": "ruby"
},
{
"name": "NodeJS",
"code": "nodejs"
}
]
this.selectScriptTab = function (tab) {
this.scriptTab = tab
if (tab == "path") {
this.$delay(function () {
this.$find("form input[name='scriptPath']").focus()
})
} else if (tab == "code") {
this.$delay(function () {
this.loadEditor()
})
}
};
this.selectScriptLang = function (lang) {
this.scriptLang = lang;
switch (lang) {
case "shell":
if (this.instance.media.type == "script" && this.instance.params.scriptType == "code" && this.instance.params.scriptLang == "shell") {
scriptEditor.setValue(this.instance.params.script);
} else {
scriptEditor.setValue("#!/usr/bin/env bash\n\n# your commands here\n");
}
var info = CodeMirror.findModeByMIME("text/x-sh");
if (info != null) {
scriptEditor.setOption("mode", info.mode);
CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
CodeMirror.autoLoadMode(scriptEditor, info.mode);
}
break;
case "bat":
if (this.instance.media.type == "script" && this.instance.params.scriptType == "code" && this.instance.params.scriptLang == "bat") {
scriptEditor.setValue(this.instance.params.script);
} else {
scriptEditor.setValue("");
}
break;
case "php":
if (this.instance.media.type == "script" && this.instance.params.scriptType == "code" && this.instance.params.scriptLang == "php") {
scriptEditor.setValue(this.instance.params.script);
} else {
scriptEditor.setValue("#!/usr/bin/env php\n\n 0) {
scriptEditor.setValue(this.instance.params.script);
} else {
scriptEditor.setValue("#!/usr/bin/env bash\n\n# your commands here\n");
}
scriptEditor.save();
scriptEditor.focus();
var info = CodeMirror.findModeByMIME("text/x-sh");
if (info != null) {
scriptEditor.setOption("mode", info.mode);
CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
CodeMirror.autoLoadMode(scriptEditor, info.mode);
}
scriptEditor.on("change", function () {
scriptEditor.save();
});
};
/**
* 环境变量
*/
this.env = [];
if (this.instance.media.type == "script" && this.instance.params.env != null) {
this.env = this.instance.params.env;
}
this.envAdding = false;
this.envAddingName = "";
this.envAddingValue = "";
this.addEnv = function () {
this.envAdding = !this.envAdding;
this.$delay(function () {
this.$find("form input[name='envAddingName']").focus();
});
};
this.confirmAddEnv = function () {
if (this.envAddingName.length == 0) {
alert("请输入变量名");
this.$find("form input[name='envAddingName']").focus();
return;
}
this.env.push({
"name": this.envAddingName,
"value": this.envAddingValue
});
this.envAdding = false;
this.envAddingName = "";
this.envAddingValue = "";
};
this.removeEnv = function (index) {
this.env.$remove(index);
};
this.cancelEnv = function () {
this.envAdding = false;
};
/**
* 阿里云短信模板
*/
this.aliyunSmsTemplateVars = [];
if (this.instance.params.variables != null) {
this.aliyunSmsTemplateVars = this.instance.params.variables;
}
this.aliyunSmsTemplateVarAdding = false;
this.aliyunSmsTemplateVarAddingName = "";
this.aliyunSmsTemplateVarAddingValue = "";
this.addAliyunSmsTemplateVar = function () {
this.aliyunSmsTemplateVarAdding = !this.aliyunSmsTemplateVarAdding;
this.$delay(function () {
this.$find("form input[name='aliyunSmsTemplateVarAddingName']").focus();
});
};
this.confirmAddAliyunSmsTemplateVar = function () {
if (this.aliyunSmsTemplateVarAddingName.length == 0) {
alert("请输入变量名");
this.$find("form input[name='aliyunSmsTemplateVarAddingName']").focus();
return;
}
this.aliyunSmsTemplateVars.push({
"name": this.aliyunSmsTemplateVarAddingName,
"value": this.aliyunSmsTemplateVarAddingValue
});
this.aliyunSmsTemplateVarAdding = false;
this.aliyunSmsTemplateVarAddingName = "";
this.aliyunSmsTemplateVarAddingValue = "";
};
this.removeAliyunSmsTemplateVar = function (index) {
this.aliyunSmsTemplateVars.$remove(index);
};
this.cancelAliyunSmsTemplateVar = function () {
this.aliyunSmsTemplateVarAdding = false;
};
/**
* 更多选项
*/
this.advancedOptionsVisible = true;
this.showAdvancedOptions = function () {
this.advancedOptionsVisible = !this.advancedOptionsVisible;
};
});