内置JS方法,后台前台模板基本通用,后台不用单独加载JS,前台需要单独加载一下public/web/static/ljs.js
文件,当然,前台JS你也可以完全自己写。
LCMS.url
变量中包含了与PHP中$_L['url']
中一模一样的参数,可参考全局变量文档查看具体参数说明。
//开始loading LCMS.util.loading(); //结束loading LCMS.util.loading("close");
LCMS.util.notify({ type: "success", //success、error、warning、info、desk,desk桌面级通知需要https title: "通知标题", //标题可省略 content: "通知内容", icon: "", //type=desk桌面通知,可以设置图标 });
// 动态加载css、js文件 LCMS.util.load({ src: "文件链接", loading: false, //是否显示加载动画 onload: () => { //文件加载完成后的操作 }, }); //src参数支持数组,可同时加载多个css和js文件。
LCMS.util.ajax({}); //参数同jQuery的ajax方法 //所有ajax请求会自动组成队列按序执行,async为false时,会等待这个请求完成后,再执行后续其它ajax请求 //另外多一个参数 loading,true/有加载动画,false/无加载动画
LCMS.util.EventSource(url, { method: "GET", headers: [], onmessage: function(msg) { //流式输出数据 console.log(msg); }, onclose: function() { //当请求完成关闭后 }, onerror: function(error) { //当请求出现错误时 } }); //使用fetch模拟的EventSource方法,所以fetch的参数都支持。
LCMS.util.randStr(len, type); //len 长度 //type 默认字母+数据、num数字、let字母
//打开iframe弹窗 LCMS.util.iframe({ title: "弹窗标题", url: "弹窗链接", area: [], //可选,弹窗尺寸 }); //iframe内的页面关闭iframe弹窗自己 LCMS.util.iframe({ type: "close" });
LCMS.util.getQuery(key, url); //key 参数名称 //url 链接地址,不传值默认当前链接
LCMS.util.changeUrl(url, key, value); //url 链接地址 //key 要替换的参数名 //value 替换后的参数值
LCMS.util.getDate(format, date); //format 对齐PHP的时间格式,例如 Y:m:d 或 H:i:s 自己随意组合 //date 不传值默认为new Date()
LCMS.util.play({ type: "audio", src: "文件链接", loop: 0, //是否循环播放 });
LCMS.util.speak(text); //text 要朗读的内容,pc端使用
LCMS.util.copy(text); //复制内容到剪贴板,必须写在用户点击事件中
LCMS.util.getFun(fname); //fname为方法名,如果方法存在才会执行。
请注意,这是个 async 异步方法!
LCMS.util.crypto(type, options); //加密字符串 LCMS.util.crypto("encode", { key: "密钥", text: "要加密的字符串" }); //解密字符串 LCMS.util.crypto("decode", { key: "密钥", text: "要解密的字符串" }); //对应后端加解密算法PHP为例 $key = md5("密钥"); //加密 openssl_encrypt("要加密的字符串","AES-256-CBC", $key, 0, $key); //解密 openssl_decrypt("要解密的字符串","AES-256-CBC", $key, 0, $key); //获取字符串md5 LCMS.util.crypto("md5", "字符串"); //获取字符串hash值 LCMS.util.crypto("hash", "字符串"); //非对称加密 LCMS.util.crypto("rsa.encode", { key: "公钥", data: "要加密的字符串" });
//你可以直接在.html文件里按如下语法写 //特别注意组件必须写在 <template tplx="组件名"></template> 标签中 <template "ui/head" /> <div>普通内容</div> <!--组件化内容 开始--> <template tplx="comname1"> <!-- tplx=的值,就对应下边JS里的值 --> <p x-text="mytext"></p> </template> <template tplx="comname2"> <!-- 支持多个组件 --> <p x-text="mytext"></p> </template> <!--组件化内容 结束--> <script type="text/javascript" onload> LCMS.util.tplx("comname1", { mytext: "组件1默认文字", mounted() { //组件加载完成后立即执行 setTimeout(() => { this.mytext = "1秒后,修改了组件1文字"; }, 1000); } }); LCMS.util.tplx("comname2", { mytext: "组件2默认文字", mounted() { //组件加载完成后立即执行 setTimeout(() => { this.mytext = "1秒后,修改了组件2文字"; }, 1000); } }); </script> <template "ui/foot" /> // 此功能使用 Alpine 库实现,写法基本与Vue一致,请直接去 Alpine 官网查看文档 // tplx="组件名",就等同于 x-data="组件名",所以不用再重复写这个属性。 // 特别注意 Alpine 里用到 <template></template> 标签的地方,需全部更换为 <block></block> LCMS.util.tplx("comname", {}); // 同 Alpine.data LCMS.util.tplx("store:comname", {}); // 同 Alpine.store LCMS.util.tplx("bind:comname", {}); // 同 Alpine.bind
//支持同时设置多个菜单 LCMS.util.setMenu([{ title: "按钮名称", icon: "home", //参考layui图标 color: "#FFFFFF", //按钮颜色 bgcolor: "#000000", //不需要设置为none url: "", //点击的链接,支持链接地址,或者function方法 targer: "", //如果url是链接地址,此项可以填_blank或_self }, { title: ''' //第二个菜单 }]);
// 通过JS上传图片或文件 LCMS.plugin.upload.direct({ type: "image", // 或者file、url file: "", // type为image和file可以传入File对象、或base64Data格式的文件,type为url时传入图片链接 local: 0, // 如果开启云存储,是否强制存储到本地服务器 success: function (res) { res.data.dir; //文件目录 res.data.filename; //文件名称 res.data.src; //文件完整链接含CDN res.data.original; //文件相对链接../开头 }, // 成功回调,返回图片链接等信息 error: function (error) {}, // 失败回调 complete: function () {}, // 完成回调 }); // 给upload组件添加图片 // id为upload组件的ID,image为base64Data格式的图片 LCMS.plugin.upload.add(id, image); // 移除upload组件图片 // id为upload组件的ID,index为要移除图片的位置,index不传的话移除所有图片 LCMS.plugin.upload.remove(id, index); // 打开图库,第二个参数是 是否 可多选图片,1为多选,0为单选 LCMS.plugin.upload.gallery((list) => { console.log("选择的图片列表", list); }, 1);
// 相关编辑器操作,可查看UEditor文档 // http://fex.baidu.com/ueditor/ top.LCMS.plugin.editor.focusid;
//添加TAGS LCMS.plugin.tags.add("组件ID", "TAGS1|TAGS2|TAGS3"); //清空TAGS LCMS.plugin.tags.clear("组件ID");
//静默调用 LCMS.plugin.aimodel.chat({ system: "你是我的AI助手", //系统提示词 messages: [{ role: "user", //依次为 user、assistant content: "你好" }], onmessage: function(txt, html) { //流式输出数据 //txt、流式内容 //html、自动html格式化的内容 }, onclose: function(content, html) { //请求完成后执行 //content、所有回答内容txt格式 //html、所有回答内容html格式 }, onerror: function(error) { //请求错误 } }); //弹出聊天窗口调用 LCMS.plugin.aimodel.chat({ window: "AI助手", //聊天窗标题 system: "你是我的AI助手", //系统提示词 messages: [{ role: "user", //依次为 user、assistant content: "你好" }], //可选,打开窗口自动开始的对话 plugins: [{ title: "按钮标题", tips: "按钮提示,鼠标指在按钮上显示", onclick: function(chatFunc, chat) { //按钮点击后操作 //chatFunc、对话操作 //chat、历史对话内容 //清除历史对话,false 只清除请求中的历史会话,true 清除请求和页面显示的历史对话 chatFunc.clear(false); //发送一句话 chatFunc.chat("讲个笑话吧"); } }], //可选,输入框上方按钮 chatbtns: function(){ title: "按钮标题", tips: "按钮提示", onclick: function (chatFunc, chat) { //chatFunc、同plugins //chat、返回content 回答原始内容、和html 回答html内容,两个参数 }, }//全局AI每个回复后的按钮,此方法可写在plugins每个按钮里,这样不同回复可显示不同按钮。 });