Ver Fonte

刘功能优化

liuhairui há 3 anos atrás
pai
commit
6d8fdaf540

+ 14 - 0
application/admin/controller/Printt.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace app\admin\controller;
+
+
+use app\common\controller\Backend;
+
+class Printt extends Backend
+{
+    public function index(){
+        return $this->view->fetch();
+
+    }
+}

+ 10 - 0
application/admin/model/Printt.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+class Printt extends Model
+{
+
+}

+ 121 - 0
public/assets/js/LodopFuncs.js

@@ -0,0 +1,121 @@
+var CreatedOKLodop7766=null;
+
+//====判断是否需要安装CLodop云打印服务器:====
+function needCLodop(){
+    try{
+	var ua=navigator.userAgent;
+	if (ua.match(/Windows\sPhone/i) !=null) return true;
+	if (ua.match(/iPhone|iPod/i) != null) return true;
+	if (ua.match(/Android/i) != null) return true;
+	if (ua.match(/Edge\D?\d+/i) != null) return true;
+	
+	var verTrident=ua.match(/Trident\D?\d+/i);
+	var verIE=ua.match(/MSIE\D?\d+/i);
+	var verOPR=ua.match(/OPR\D?\d+/i);
+	var verFF=ua.match(/Firefox\D?\d+/i);
+	var x64=ua.match(/x64/i);
+	if ((verTrident==null)&&(verIE==null)&&(x64!==null)) 
+		return true; else
+	if ( verFF !== null) {
+		verFF = verFF[0].match(/\d+/);
+		if ((verFF[0]>= 41)||(x64!==null)) return true;
+	} else 
+	if ( verOPR !== null) {
+		verOPR = verOPR[0].match(/\d+/);
+		if ( verOPR[0] >= 32 ) return true;
+	} else 
+	if ((verTrident==null)&&(verIE==null)) {
+		var verChrome=ua.match(/Chrome\D?\d+/i);		
+		if ( verChrome !== null ) {
+			verChrome = verChrome[0].match(/\d+/);
+			if (verChrome[0]>=41) return true;
+		};
+	};
+        return false;
+    } catch(err) {return true;};
+};
+
+//====页面引用CLodop云打印必须的JS文件:====
+if (needCLodop()) {
+	var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
+	var oscript = document.createElement("script");
+	oscript.src ="http://localhost:8000/CLodopfuncs.js?priority=1";
+	head.insertBefore( oscript,head.firstChild );
+
+	//引用双端口(8000和18000)避免其中某个被占用:
+	oscript = document.createElement("script");
+	oscript.src ="http://localhost:18000/CLodopfuncs.js?priority=0";
+	head.insertBefore( oscript,head.firstChild );
+};
+
+//====获取LODOP对象的主过程:====
+function getLodop(oOBJECT,oEMBED){
+    var strHtmInstall="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+    var strHtmUpdate="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+    var strHtm64_Install="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
+    var strHtm64_Update="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
+    var strHtmFireFox="<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";
+    var strHtmChrome="<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";
+    var strCLodopInstall="<br><font color='#FF00FF'>CLodop云打印服务(localhost本地)未安装启动!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行安装</a>,安装后请刷新页面。</font>";
+    var strCLodopUpdate="<br><font color='#FF00FF'>CLodop云打印服务需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>,升级后请刷新页面。</font>";
+    var LODOP;
+    try{
+        var isIE = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
+        if (needCLodop()) {
+            try{ LODOP=getCLodop();} catch(err) {};
+	    if (!LODOP && document.readyState!=="complete") {alert("C-Lodop没准备好,请稍后再试!"); return;};
+            if (!LODOP) {
+		 if (isIE) document.write(strCLodopInstall); else
+		 document.body.innerHTML=strCLodopInstall+document.body.innerHTML;
+                 return;
+            } else {
+
+	         if (CLODOP.CVERSION<"3.0.4.3") { 
+			if (isIE) document.write(strCLodopUpdate); else
+			document.body.innerHTML=strCLodopUpdate+document.body.innerHTML;
+		 };
+		 if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED);
+		 if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT);	
+	    };
+        } else {
+            var is64IE  = isIE && (navigator.userAgent.indexOf('x64')>=0);
+            //=====如果页面有Lodop就直接使用,没有则新建:==========
+            if (oOBJECT!=undefined || oEMBED!=undefined) {
+                if (isIE) LODOP=oOBJECT; else  LODOP=oEMBED;
+            } else if (CreatedOKLodop7766==null){
+                LODOP=document.createElement("object");
+                LODOP.setAttribute("width",0);
+                LODOP.setAttribute("height",0);
+                LODOP.setAttribute("style","position:absolute;left:0px;top:-100px;width:0px;height:0px;");
+                if (isIE) LODOP.setAttribute("classid","clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
+                else LODOP.setAttribute("type","application/x-print-lodop");
+                document.documentElement.appendChild(LODOP);
+                CreatedOKLodop7766=LODOP;
+             } else LODOP=CreatedOKLodop7766;
+            //=====Lodop插件未安装时提示下载地址:==========
+            if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) {
+                 if (navigator.userAgent.indexOf('Chrome')>=0)
+                     document.body.innerHTML=strHtmChrome+document.body.innerHTML;
+                 if (navigator.userAgent.indexOf('Firefox')>=0)
+                     document.body.innerHTML=strHtmFireFox+document.body.innerHTML;
+                 if (is64IE) document.write(strHtm64_Install); else
+                 if (isIE)   document.write(strHtmInstall);    else
+                     document.body.innerHTML=strHtmInstall+document.body.innerHTML;
+                 return LODOP;
+            };
+        };
+        if (LODOP.VERSION<"6.2.2.3") {
+            if (!needCLodop()){
+            	if (is64IE) document.write(strHtm64_Update); else
+            	if (isIE) document.write(strHtmUpdate); else
+            	document.body.innerHTML=strHtmUpdate+document.body.innerHTML;
+	    };
+            return LODOP;
+        };
+        //===如下空白位置适合调用统一功能(如注册语句、语言选择等):===
+
+        //===========================================================
+        return LODOP;
+    } catch(err) {alert("getLodop出错:"+err);};
+};
+

+ 311 - 0
public/assets/js/template.js

@@ -0,0 +1,311 @@
+/*!
+ * template.js v0.7.1 (https://github.com/yanhaijing/template.js)
+ * API https://github.com/yanhaijing/template.js/blob/master/doc/api.md
+ * Copyright 2015 yanhaijing. All Rights Reserved
+ * Licensed under MIT (https://github.com/yanhaijing/template.js/blob/master/MIT-LICENSE.txt)
+ */
+;(function(root, factory) {
+    var template = factory(root);
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define('template', function() {
+            return template;
+        });
+    } else if (typeof exports === 'object') {
+        // Node.js
+        module.exports = template;
+    } else {
+        // Browser globals
+        var _template = root.template;
+
+        template.noConflict = function() {
+            if (root.template === template) {
+                root.template = _template;
+            }
+
+            return template;
+        };
+        root.template = template;
+    }
+}(this, function(root) {
+    'use strict';
+    var o = {
+        sTag: '<%',//开始标签
+        eTag: '%>',//结束标签
+        compress: false,//是否压缩html
+        escape: true, //默认输出是否进行HTML转义
+        error: function (e) {}//错误回调
+    };
+    var functionMap = {}; //内部函数对象
+    //修饰器前缀
+    var modifierMap = {
+        '': function (param) {return nothing(param)},
+        'h': function (param) {return encodeHTML(param)},
+        'u': function (param) {return encodeURI(param)}
+    };
+
+    var toString = {}.toString;
+    var slice = [].slice;
+    function type(x) {
+        if(x === null){
+            return 'null';
+        }
+
+        var t= typeof x;
+
+        if(t !== 'object'){
+            return t;
+        }
+
+        var c = toString.call(x).slice(8, -1).toLowerCase();
+        if(c !== 'object'){
+            return c;
+        }
+
+        if(x.constructor==Object){
+            return c;
+        }
+
+        return 'unkonw';
+    }
+
+    function isObject(obj) {
+        return type(obj) === 'object';
+    }
+    function isFunction(fn) {
+        return type(fn) === 'function';
+    }
+    function isString(str) {
+        return type(str) === 'string';
+    }
+    function extend() {
+        var target = arguments[0] || {};
+        var arrs = slice.call(arguments, 1);
+        var len = arrs.length;
+     
+        for (var i = 0; i < len; i++) {
+            var arr = arrs[i];
+            for (var name in arr) {
+                target[name] = arr[name];
+            }
+     
+        }
+        return target;
+    }
+    function clone() {
+        var args = slice.call(arguments);
+        return extend.apply(null, [{}].concat(args));
+    }
+    function nothing(param) {
+        return param;
+    }
+    function encodeHTML(source) {
+        return String(source)
+            .replace(/&/g,'&amp;')
+            .replace(/</g,'&lt;')
+            .replace(/>/g,'&gt;')
+            .replace(/\\/g,'&#92;')
+            .replace(/"/g,'&quot;')
+            .replace(/'/g,'&#39;');
+    }
+    function compress(html) {
+        return html.replace(/\s+/g, ' ').replace(/<!--[\w\W]*?-->/g, '');
+    }
+    function consoleAdapter(cmd, msg) {
+        typeof console !== 'undefined' && console[cmd] && console[cmd](msg);
+    }
+    function handelError(e) {
+        var message = 'template.js error\n\n';
+
+        for (var key in e) {
+            message += '<' + key + '>\n' + e[key] + '\n\n';
+        }
+        message += '<message>\n' + e.message + '\n\n';
+        consoleAdapter('error', message);
+
+        o.error(e);
+        function error() {
+            return 'template.js error';
+        }
+        error.toString = function () {
+            return '__code__ = "template.js error"';
+        }
+        return error;
+    }
+    function parse(tpl, opt) {
+        var code = '';
+        var sTag = opt.sTag;
+        var eTag = opt.eTag;
+        var escape = opt.escape;
+        function parsehtml(line) {
+            // 单双引号转义,换行符替换为空格
+            line = line.replace(/('|")/g, '\\$1').replace(/\n/g, ' ');
+            return ';__code__ += ("' + line + '")\n';
+        }
+        function parsejs(line) {              
+            //var reg = /^(:?)(.*?)=(.*)$/;
+            var reg = /^(?:=|(:.*?)=)(.*)$/
+            var html;
+            var arr;
+            var modifier;
+
+            // = := :*=
+            // :h=123 [':h=123', 'h', '123']
+            if (arr = reg.exec(line)) {
+                html = arr[2]; // 输出
+                if (Boolean(arr[1])) {
+                    // :开头
+                    modifier = arr[1].slice(1);
+                } else {
+                    // = 开头
+                    modifier = escape ? 'h' : '';
+                }
+
+                return ';__code__ += __modifierMap__["' + modifier + '"](typeof (' + html + ') !== "undefined" ? (' + html + ') : "")\n';
+            }
+            
+            //原生js
+            return ';' + line + '\n';
+        }
+
+        var tokens = tpl.split(sTag);
+
+        for (var i = 0, len = tokens.length; i < len; i++) {
+            var token = tokens[i].split(eTag);
+
+            if (token.length === 1) {
+                code += parsehtml(token[0]);
+            } else {
+                code += parsejs(token[0], true);
+                if (token[1]) {
+                    code += parsehtml(token[1]);
+                }
+            }
+        }
+
+        return code;
+    }
+    function compiler(tpl, opt) {
+        var mainCode = parse(tpl, opt);
+
+        var headerCode = '\n' + 
+        '    var html = (function (__data__, __modifierMap__) {\n' + 
+        '        var __str__ = "", __code__ = "";\n' + 
+        '        for(var key in __data__) {\n' + 
+        '            __str__+=("var " + key + "=__data__[\'" + key + "\'];");\n' + 
+        '        }\n' + 
+        '        eval(__str__);\n\n';
+
+        var footerCode = '\n' + 
+        '        ;return __code__;\n' + 
+        '    }(__data__, __modifierMap__));\n' + 
+        '    return html;\n';
+
+        var code = headerCode + mainCode + footerCode;
+        code = code.replace(/[\r]/g, ' '); // ie 7 8 会报错,不知道为什么
+        try {
+            var Render = new Function('__data__', '__modifierMap__', code); 
+            Render.toString = function () {
+                return mainCode;
+            }
+            return Render;
+        } catch(e) {
+            e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}';
+            throw e;
+        }  
+    }
+    function compile(tpl, opt) {
+        opt = clone(o, opt);
+
+        try {
+            var Render = compiler(tpl, opt);
+        } catch(e) {
+            e.name = 'CompileError';
+            e.tpl = tpl;
+            e.render = e.temp;
+            delete e.temp;
+            return handelError(e);
+        }
+
+        function render(data) {
+            data = clone(functionMap, data);
+            try {
+                var html = Render(data, modifierMap);
+                html = opt.compress ? compress(html) : html;
+                return html;
+            } catch(e) {
+                e.name = 'RenderError';
+                e.tpl = tpl;
+                e.render = Render.toString();
+                return handelError(e)();
+            }            
+        }
+
+        render.toString = function () {
+            return Render.toString();
+        };
+        return render;
+    }
+    function template(tpl, data) {
+        if (typeof tpl !== 'string') {
+            return '';
+        }
+
+        var fn = compile(tpl);
+        if (!isObject(data)) {
+            return fn;
+        }
+
+        return fn(data);
+    }
+
+    template.config = function (option) {
+        if (isObject(option)) {
+            o = extend(o, option);
+        }
+        return clone(o);
+    };
+
+    template.registerFunction = function(name, fn) {
+        if (!isString(name)) {
+            return clone(functionMap);
+        }
+        if (!isFunction(fn)) {
+            return functionMap[name];
+        }
+
+        return functionMap[name] = fn;
+    }
+    template.unregisterFunction = function (name) {
+        if (!isString(name)) {
+            return false;
+        }
+        delete functionMap[name];
+        return true;
+    }
+
+    template.registerModifier = function(name, fn) {
+        if (!isString(name)) {
+            return clone(modifierMap);
+        }
+        if (!isFunction(fn)) {
+            return modifierMap[name];
+        }
+
+        return modifierMap[name] = fn;
+    }
+    template.unregisterModifier = function (name) {
+        if (!isString(name)) {
+            return false;
+        }
+        delete modifierMap[name];
+        return true;
+    }
+
+    template.__encodeHTML = encodeHTML;
+    template.__compress = compress;
+    template.__handelError = handelError;
+    template.__compile = compile;
+    template.version = '0.7.1';
+    return template;
+}));