new files
48
vue3-element-admin-thin/public/editor.html
Normal file
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<link rel="stylesheet" href="./vender/jquery/zTreeStyle/zTreeStyle.css" type="text/css">
|
||||
<script src = "./vender/jquery/jquery.js"></script>
|
||||
<script src = "./vender/date97/WdatePicker.js"></script>
|
||||
<script src = "./vender/jquery/jquery.ztree.core.min.js"></script>
|
||||
<script src = "./vender/jquery/jquery.ztree.exedit.min.js"></script>
|
||||
<script src = "./vender/jquery/jquery.ztree.exhide.min.js"></script>
|
||||
<script src = "./vender/codemirror.js"></script>
|
||||
<script src = "./vender/fabric.js"></script>
|
||||
<!-- 局域网环境, 请下载 editor.js替换以下路径 -->
|
||||
<script src="js/editor.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
//配置项可以不设置,会使用默认设置
|
||||
let option = {
|
||||
license:'gaR8jJur/A30SFnd5RHwJT4vNz7zuTe+5UVjd3EztbJyrcUa2ZMAc0WXBJZMJs5D+lpGh+a7p49pT8G1di9alwDwAzKnsz0BTNhHKUsLrU4uMy6I5iQ6l0OMB76w/VP2u1Qf8PCJQiO388mrc8dEcEZjeSVls1O3GedGINg3Od0=',
|
||||
mode:'form', //默认模式 form:表单模式,design:设计模式
|
||||
pdfUrl:'https://www.x-emr.cn/pdf/post', //pdf生成服务
|
||||
dictionary: [ //知识库
|
||||
{name: '体征', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=20', itemUrl:'https://www.x-emr.cn/dictitem'},
|
||||
{name: '症状', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=20', itemUrl:'https://www.x-emr.cn/dictitem'},
|
||||
{name: '卫生信息数据元', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=40', itemUrl:'https://www.x-emr.cn/dictitem'},
|
||||
{name: '电子病历数据集', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=50', itemUrl:'https://www.x-emr.cn/dictitem'},
|
||||
{name: '国家医保标准', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=80', itemUrl:'https://www.x-emr.cn/dictitem'},
|
||||
{name: '省数据平台标准', isParent:true, treeUrl:'https://www.x-emr.cn/dict?category=90', itemUrl:'https://www.x-emr.cn/dictitem'},
|
||||
]
|
||||
}
|
||||
|
||||
//从模块的Editor组件中获取mode,doc,lang属性 (该段代码可删除)
|
||||
let mode = window.frameElement.getAttribute('mode')
|
||||
let doc = window.frameElement.getAttribute('doc')
|
||||
let lang = window.frameElement.getAttribute('lang')
|
||||
mode? option.mode = mode: null
|
||||
lang? option.lang = lang: null
|
||||
|
||||
//初始化编辑器(初始化代码可以放入组件的load事件中)
|
||||
editor.init(option).then(()=>{
|
||||
doc? editor.loadUrl(doc) : null
|
||||
})
|
||||
|
||||
})
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
BIN
vue3-element-admin-thin/public/favicon.ico
Normal file
After Width: | Height: | Size: 4.2 KiB |
1
vue3-element-admin-thin/public/js/editor.js
Normal file
48
vue3-element-admin-thin/public/mock/assess_table.html
Normal file
@ -0,0 +1,48 @@
|
||||
<div id="_page" style="margin: 0px auto; background: rgb(255, 255, 255); width: 210mm; min-height: 297mm; transform: scale(1, 1); transform-origin: 50% 0px 0px;" pagekind="A4" direct="portrait"><div id="_header" style="min-height: 0.65cm; padding-left: 0.65cm; padding-right: 0.65cm; padding-top: 0.65cm; position: relative; outline: none;" contenteditable="false" class="">
|
||||
<div style="text-align: center; "> </div>
|
||||
<div style="text-align: center;font-size: 15px;"><span>姓名:</span>
|
||||
<field tabindex="0" id="name" type="Text" contenteditable="true" class="input blank" title="姓名" value="姓名" name="name" data-code="" data-expression="" multiline="false" validate="false" format="" style="display: inline-block; min-width: 60px;">姓名</field>
|
||||
<span> 科室:</span>
|
||||
<field tabindex="0" id="department" type="Text" contenteditable="true" class="input blank" title="科室" value="科室" name="department" data-code="" data-expression="" multiline="false" validate="false" format="" style="display: inline-block; min-width: 60px;">科室</field><span> 床号:</span>
|
||||
<field tabindex="0" id="bed_number" type="Text" contenteditable="true" class="input blank" title="床号" value="床号" name="bed_number" data-code="" data-expression="" multiline="false" validate="false" format="" style="display: inline-block; min-width: 60px;">床号</field><span title="" contenteditable="false"> 住院号:</span>
|
||||
<field tabindex="0" id="admission_number" type="Text" contenteditable="true" class="input blank" title="住院号" value="文本输入域" name="admission_number" data-code="" data-expression="" multiline="false" validate="false" format="" style="display: inline-block; min-width: 60px;">住院号</field><span> 病案号:</span>
|
||||
<field tabindex="0" id="medical_record_number" type="Text" contenteditable="true" class="input blank" title="病案号" value="文本输入域" name="medical_record_number" data-code="" data-expression="" multiline="false" validate="false" format="" style="display: inline-block; min-width: 60px;">病案号</field>
|
||||
</div>
|
||||
</div><div id="_body" style="min-height: calc(1024.25px); padding-left: 0.65cm; padding-right: 0.65cm;" contenteditable="false" class=""><div class="Section0" style=""><p class="MsoNormal" style="margin-top:10.2500pt;margin-left:213.2000pt;mso-outline-level:1;"><span style="letter-spacing: 0.9pt; font-weight: bold; font-size: 16pt;">抑郁焦虑表</span></p><table class="16" id="" title="" data-field="" style="border-width: 1px; border-color: rgb(0, 0, 0);"><colgroup><col style="width: 421px;"><col style="width: 304px;"></colgroup><tbody style=""><tr style="height: 72.8pt"><td colspan="2" class=""><p class="15" style="margin-top: 1pt; margin-left: 26.1pt; line-height: 1.5;"><span style="letter-spacing: 0.266667px; font-size: 10.5pt;">1)我对以往感兴趣的事情还是有兴趣</span></p><p class="15" style="margin-left:24.7500pt;"><group type="radio" id="radio0" style="font-size: 10.5pt;"><input type="radio" id="radio0__0" name="radio0" value="0" checked="true"><label for="radio0__0">肯定一样——0分</label><br><input type="radio" id="radio0__1" name="radio0" value="1" style=""><label for="radio0__1">不像以前那样——1分</label><br><input type="radio" id="radio0__2" name="radio0" value="2"><label for="radio0__2">只有一点——2分</label><br><input type="radio" id="radio0__3" name="radio0" value="3"><label for="radio0__3">基本上没有了——3分</label><br></group><br></p></td></tr><tr style="height:72.5000pt"><td colspan="2" class="" style="border-color: rgb(0, 0, 0)"><p class="15" style="margin-top:1.5500pt;margin-left:25.5000pt;line-height:15.6500pt;
|
||||
mso-line-height-rule:exactly;"><span style="font-size: 12px; letter-spacing: 0.333333px;">2</span><span style="letter-spacing: 0.333333px; font-size: 10.5pt;">)我能够哈哈大笑,并看到事物好的一面</span></p><p class="15" style="margin-left:24.7500pt;"><group type="radio" id="radio1" style="font-size: 10.5pt;"><input type="radio" id="radio1__0" name="radio1" value="0" checked="true"><label for="radio1__0">我经常这样——0分</label><br><input type="radio" id="radio1__1" name="radio1" value="1"><label for="radio1__1">现在已经不太这样了——1分</label><br><input type="radio" id="radio1__2" name="radio1" value="2"><label for="radio1__2">现在肯定是不太多了——2分</label><br><input type="radio" id="radio1__3" name="radio1" value="3"><label for="radio1__3">根本没有——3分</label><br></group><br></p></td></tr><tr style="height: 72.55pt;"><td colspan="2" class="" style="border-color: rgb(0, 0, 0);"><p class="15" style="margin-top:2.2500pt;margin-left:25.6000pt;"><span style="letter-spacing: 0.15pt; font-size: 9pt;">3</span><span style="letter-spacing: 0.15pt; font-size: 10.5pt;">)我感到愉快</span></p><p class="15" style="margin-top: 5.2pt; margin-left: 24.75pt; line-height: 15.7pt;"><span style="letter-spacing: -0.65pt; position: relative; top: -5pt;"><group type="radio" id="radio2" style="font-size: 10.5pt;"><input type="radio" id="radio2__0" name="radio2" value="0" checked="true"><label for="radio2__0">大多数时间——0分</label><br><input type="radio" id="radio2__1" name="radio2" value="1"><label for="radio2__1">有时——1分</label><br><input type="radio" id="radio2__2" name="radio2" value="2"><label for="radio2__2">并不经常——2分</label><br><input type="radio" id="radio2__3" name="radio2" value="3"><label for="radio2__3">根本没有——3分</label><br></group><br></span></p></td></tr><tr style="height: 72.55pt;"><td colspan="2" class="" style="border-color: rgb(0, 0, 0)"><p class="15" style="margin-top: 3.1pt; margin-left: 25.35pt; line-height: 1.5;"><span style="letter-spacing: 0.25pt; font-size: 9pt;">4</span><span style="font-size: 10.5pt; line-height: 1.5;"><span style="letter-spacing: 0.25pt;">)我对自己的仪容失去兴趣</span><o:p></o:p></span></p><p class="15" style="margin-top: 5.2pt; margin-left: 24.75pt; line-height: 1.5;"><span style="letter-spacing: -0.85pt; position: relative; top: -5pt; line-height: 1.5;"><group type="radio" id="radio3" style="font-size: 10.5pt; line-height: 1.5;"><input type="radio" id="radio30" name="radio3" value="0" checked="true"><label for="radio30">我仍然像以往一样关心——0分</label><br><input type="radio" id="radio31" name="radio3" value="1"><label for="radio31">我可能不是非常关心——1分</label><br><input type="radio" id="radio32" name="radio3" value="2"><label for="radio32">并不像我应该做的那样关心我——2分</label><br><input type="radio" id="radio33" name="radio3" value="3"><label for="radio33">肯定——3分</label><br></group><span style="font-size: 10.5pt; line-height: 1.5;"><br></span></span></p></td></tr><tr style="height: 72.55pt"><td colspan="2" class="" style="border-color: rgb(0, 0, 0)"><p class="15" style="margin-top: 3.8pt; margin-left: 25.6pt; line-height: 1.5;"><span style="font-size: 10.5pt; line-height: 1.5;"><span style="letter-spacing: 0.2pt; position: relative; top: -5pt;">5)我对一切都是乐观地向前看</span><o:p style=""></o:p></span></p><p class="15" style="margin-left: 24.75pt;"><span style="letter-spacing: -0.45pt;"><group type="radio" id="radio4" style="font-size: 10.5pt;"><input type="radio" id="radio40" name="radio4" value="0" checked="true"><label for="radio40">差不多是这样做——0分</label><br><input type="radio" id="radio41" name="radio4" value="1"><label for="radio41">并不完全是这样做的——1分</label><br><input type="radio" id="radio42" name="radio4" value="2"><label for="radio42">很少这样做——2分</label><br><input type="radio" id="radio43" name="radio4" value="3"><label for="radio43">几乎从不这样做——3分</label><br></group><br></span></p></td></tr><tr style="height: 108px"><td colspan="2" class="" style="border-color: rgb(0, 0, 0)"><p class="15" style="margin-top:4.5000pt;margin-left:25.5000pt;line-height:15.7500pt;
|
||||
mso-line-height-rule:exactly;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.25pt; position: relative; top: -5pt;">6)我好像感到情绪在渐渐低落</span><o:p></o:p></span></p><p class="15" style="margin-left:24.7500pt;"><span style="letter-spacing: -0.75pt;"><group type="radio" id="radio5" style="font-size: 10.5pt;"><input type="radio" id="radio5__0" name="radio5" value="0" checked="true"><label for="radio5__0">根本没有——0分</label><br><input type="radio" id="radio5__1" name="radio5" value="1"><label for="radio5__1">有时——1分</label><br><input type="radio" id="radio5__2" name="radio5" value="2"><label for="radio5__2">很经常——2分</label><br><input type="radio" id="radio5__3" name="radio5" value="3"><label for="radio5__3">几乎所有时间——3分</label><br></group><br></span></p></td></tr><tr style="height: 118px"><td colspan="2" class="" style="border-color: rgb(0, 0, 0);"><p class="15" style="margin-top:3.2500pt;margin-left:25.5000pt;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.25pt;">7)我能欣赏一本好书或意向好的广播或电视节目</span><o:p></o:p></span></p><p class="15" style="margin-top: 5.25pt; margin-left: 24.75pt; line-height: 15.7pt;"><group type="radio" id="radio6" style="font-size: 10.5pt;"><input type="radio" id="radio6__0" name="radio6" value="0"><label for="radio6__0">常常如此——0分</label><br><input type="radio" id="radio6__1" name="radio6" value="1" checked="true"><label for="radio6__1">有时——1分</label><br><input type="radio" id="radio6__2" name="radio6" value="2"><label for="radio6__2">并非经常——2分</label><br><input type="radio" id="radio6__3" name="radio6" value="3"><label for="radio6__3">很少——3分</label><br></group><br></p></td></tr><tr style="height: 38px"><td class="" style="border-color: rgb(0, 0, 0)"><p class="15" style="margin-top:9.5000pt;margin-left:25.4000pt;"><span style="letter-spacing: 0.1pt; font-size: 10.5pt;"><font face="宋体" style="">抑郁得分(</font>0-21分)</span><span style="font-size: 9pt;"><o:p></o:p></span></p></td><td class=""><p class="MsoNormal" style=""><span style="font-family: Arial; font-size: 10.5pt;"><span> </span><field tabindex="0" id="total1" type="Text" contenteditable="true" class="input" title="文本输入域" value="1" name="total1" data-code="" data-expression="= radio0 + radio1 + radio2 + radio3 + radio4 + radio5 + radio6" multiline="false" validate="false" format="" style="display: inline-block; min-width: 100px; text-align: left;">1</field> </span></p></td></tr>
|
||||
|
||||
|
||||
|
||||
<tr style="height: 72.55pt"><td colspan="2" class="" style="border-color: rgb(0, 0, 0)"><p class="15" style="margin-top:1.7500pt;margin-left:26.1000pt;"><span style="letter-spacing: 0.1pt; font-size: 10.5pt;">1)我感到紧张(或痛苦)</span></p><p class="15" style="margin-top: 5.2pt; margin-left: 24.75pt; line-height: 15.7pt;"><span style="font-size: 10.5pt;"><group type="radio" id="radio7" style=""><input type="radio" id="radio7__0" name="radio7" value="0" checked="true"><label for="radio7__0">根本没有——0分</label><br><input type="radio" id="radio7__1" name="radio7" value="1"><label for="radio7__1">有时候——1分</label><br><input type="radio" id="radio7__2" name="radio7" value="2"><label for="radio7__2">大多时候——2分</label><br><input type="radio" id="radio7__3" name="radio7" value="3"><label for="radio7__3">几乎所有时候——3分</label><br></group><span> </span></span></p></td></tr><tr style="height: 138px;"><td colspan="2" class="" style="border-color: rgb(0, 0, 0);"><p class="15" style="margin-top:2.5000pt;margin-left:25.5000pt;line-height:15.7000pt;
|
||||
mso-line-height-rule:exactly;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.25pt; position: relative; top: -5pt;">2)我感到有点害怕好像预感到什么可怕的事情要发生</span><o:p></o:p></span></p><p class="15" style="margin-left: 24.75pt;"><group type="radio" id="radio8" style="font-size: 10.5pt;"><input type="radio" id="radio8__0" name="radio8" value="0" checked="true"><label for="radio8__0">根本没有——0分</label><br><input type="radio" id="radio8__1" name="radio8" value="1"><label for="radio8__1">有一点,但并不使我苦恼——1分</label><br><input type="radio" id="radio8__2" name="radio8" value="2"><label for="radio8__2">是有,不太严重——2分</label><br><input type="radio" id="radio8__3" name="radio8" value="3"><label for="radio8__3">非常肯定和十分严重——3分</label><br></group><br></p></td></tr><tr style="height: 127px;"><td colspan="2" class="" style="border-color: rgb(0, 0, 0);"><p class="MsoNormal" style="text-indent: 30px;"><span style="font-size: 10.5pt;">3)我的心中充满烦恼</span></p><p class="MsoNormal" style="margin-left: 24.75pt;"><span style="font-size: 10.5pt;"><group type="radio" id="radio9" style=""><input type="radio" id="radio90" name="radio9" value="0" checked="true"><label for="radio90">根本没有——0分</label><br><input type="radio" id="radio91" name="radio9" value="1" style=""><label for="radio91">有时候——1分</label><br><input type="radio" id="radio92" name="radio9" value="2"><label for="radio92">大多时候——2分</label><br><input type="radio" id="radio93" name="radio9" value="3"><label for="radio93">几乎所有时候——3分</label><br></group></span></p></td></tr><tr class="" style=""><td colspan="2">
|
||||
|
||||
<!--StartFragment--><p class="15" style="margin-top:1.9000pt;margin-left:25.3500pt;line-height:15.6500pt;
|
||||
mso-line-height-rule:exactly;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.25pt; position: relative; top: -5pt;">4)我能够安闲而轻松地坐着</span><o:p></o:p></span></p><p class="15" style="margin-left: 24.75pt;"><group type="radio" id="radio10" style=""><input type="radio" id="radio100" name="radio10" value="0" checked="true"><label for="radio100">肯定--0分</label><br><input type="radio" id="radio101" name="radio10" value="1"><label for="radio101">经常--1分</label><br><input type="radio" id="radio102" name="radio10" value="2"><label for="radio102">并不经常--2分</label><br><input type="radio" id="radio103" name="radio10" value="3"><label for="radio103">更本没有--3分</label><br></group></p><!--EndFragment-->
|
||||
|
||||
</td></tr><tr class="" style=""><td colspan="2" style="">
|
||||
|
||||
<!--StartFragment--><p class="15" style="margin-top:2.9500pt;margin-left:25.6000pt;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.25pt;">5)我有点坐立不安,好像感到非要活动不可</span><o:p></o:p></span></p><p class="15" style="margin-top: 5.2pt; margin-left: 24.75pt; line-height: 15.75pt;"><group type="radio" id="radio11" style=""><input type="radio" id="radio11__0" name="radio11" value="0" checked="true"><label for="radio11__0">根本没有——0分</label><br><input type="radio" id="radio11__1" name="radio11" value="1"><label for="radio11__1">并不很少——1分</label><br><input type="radio" id="radio11__2" name="radio11" value="2"><label for="radio11__2">是不少——2分</label><br><input type="radio" id="radio11__3" name="radio11" value="3"><label for="radio11__3">确实非常多——3分</label><br></group></p><!--EndFragment-->
|
||||
|
||||
</td></tr><tr class=""><td colspan="2" style=""><span>
|
||||
|
||||
</span><!--StartFragment--><p class="15" style="margin-top:3.9500pt;margin-left:25.5000pt;"><span style="letter-spacing: 0.2pt; font-size: 9pt;">6)</span><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.2pt;">我突然发现有恐慌感</span><o:p></o:p></span></p><p class="15" style="margin-top:5.2000pt;margin-left:24.7500pt;line-height:15.7500pt;
|
||||
mso-line-height-rule:exactly;"><group type="radio" id="radio12" style=""><input type="radio" id="radio12__0" name="radio12" value="0" checked="true"><label for="radio12__0">根本没有——0分</label><br><input type="radio" id="radio12__1" name="radio12" value="1"><label for="radio12__1">并非经常——1分</label><br><input type="radio" id="radio12__2" name="radio12" value="2"><label for="radio12__2">非常肯定,十分严重——2分</label><br><input type="radio" id="radio12__3" name="radio12" value="3"><label for="radio12__3">确实很经常——3分</label><br></group></p><!--EndFragment--><span>
|
||||
|
||||
</span></td></tr><tr class="" style=""><td colspan="2" style=""><span>
|
||||
|
||||
</span><!--StartFragment--><p class="15" style="margin-top:2.9500pt;margin-left:25.6500pt;line-height:15.7500pt;
|
||||
mso-line-height-rule:exactly;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.25pt; position: relative; top: -5pt;">7)我感到有点害怕,好像某个内脏器官变化了</span><o:p></o:p></span></p><p class="15" style="margin-left: 24.75pt;"><group type="radio" id="radio13" style=""><input type="radio" id="radio13__0" name="radio13" value="0" checked="true"><label for="radio13__0">根本没有——0分</label><br><input type="radio" id="radio13__1" name="radio13" value="1"><label for="radio13__1">有时——1分</label><br><input type="radio" id="radio13__2" name="radio13" value="2"><label for="radio13__2">很经常——2分</label><br><input type="radio" id="radio13__3" name="radio13" value="3"><label for="radio13__3">非常经常——3分</label><br></group></p><!--EndFragment--><span>
|
||||
|
||||
</span></td></tr><tr style="height: 35px"><td class="" id="" title="" style="border-color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); vertical-align: middle; text-align: center"><p class="15" style="text-align: center; margin-top: 0pt; margin-left: 0pt;"><span style="letter-spacing: 0.1pt; font-size: 10.5pt;"><font face="宋体" style=""></font>
|
||||
|
||||
<!--StartFragment-->焦虑得分</span></p></td><td class="" style="border-width: 1pt; border-color: rgb(0, 0, 0)"><field tabindex="0" id="total2" name="total2" type="Text" contenteditable="true" class="input" title="文本输入域" value="0" data-code="" data-expression="= radio7 + radio8 + radio9 + radio10 + radio11 + radio12 + radio13" multiline="false" validate="false" format="" style="display: inline-block; min-width: 100px; text-align: left;">0</field><span> </span></td></tr><tr class=""><td colspan="1"><span>
|
||||
|
||||
</span><!--StartFragment--><p class="15" style="margin-top:1.7500pt;margin-left:129.0500pt;"><span style="font-size: 10.5pt;"><span>结果</span><o:p></o:p></span></p><p class="15" style="margin-top:0.0500pt;margin-right:0.6500pt;margin-left:124.2000pt;
|
||||
text-indent:-97.2500pt;"><span style="font-size: 10.5pt;"><span style="letter-spacing: 0.2pt;"><font face="宋体">(</font>0-7分为阴性;8-10为轻度;11-14分为</span><span style="letter-spacing: 0.15pt;"><font face="宋体">中度</font>;15-21分为</span> <span style="letter-spacing: -0.1pt;">重</span><span style="letter-spacing: -0.1pt;">度)</span></span></p><!--EndFragment--><span>
|
||||
|
||||
</span></td><td colspan="1" class=""><field tabindex="0" id="field_4" name="field_4" type="Text" contenteditable="true" class="input" title="文本输入域" value="1" data-code="" data-expression="=total1 + total2" multiline="false" validate="false" format="" style="display: inline-block; min-width: 100px; text-align: left;">1</field> <br></td></tr></tbody></table></div><p class="MsoNormal" style="margin-left:90.0500pt;"><span style="position:absolute;z-index:1;margin-left:75.5000px;
|
||||
margin-top:112.3333px;width:680.0000px;height:0.0000px;"><br></span><span style="position:absolute;z-index:1;margin-left:75.5000px;
|
||||
margin-top:112.3333px;width:680.0000px;height:0.0000px;"><br></span><span style="position:absolute;z-index:1;margin-left:75.5000px;
|
||||
margin-top:112.3333px;width:680.0000px;height:0.0000px;"><br></span></p><br></div><div id="_footer" style="position: relative; min-height: 0.65cm; padding-left: 0.65cm; padding-right: 0.65cm; padding-bottom: 0.65cm; outline: none;" contenteditable="false" class=""></div>
|
||||
</div>
|
140
vue3-element-admin-thin/public/mock/bind_data.html
Normal file
@ -0,0 +1,140 @@
|
||||
|
||||
<div id="_page"
|
||||
style="margin: 0px auto; background: rgb(255, 255, 255); width: 209.5mm; min-height: 148mm; transform: scale(1, 1); transform-origin: 50% 0px 0px;"
|
||||
pagekind="A5" direct="landscape">
|
||||
<div id="_header"
|
||||
style="outline: none; min-height: 0.5cm; padding-left: 1cm; padding-right: 1cm; padding-top: 0.65cm; position: relative;"
|
||||
contenteditable="false" class="">
|
||||
<div style="text-align: center; line-height: 1.5;"><span
|
||||
style="font-size: x-large; font-weight: 700;">成都中医药大学附属医院</span></div>
|
||||
<div style="text-align: center; line-height: 1;"><span
|
||||
style="font-weight: bold; font-size: large;">电子病历</span></div>
|
||||
<div style="text-align: center;"><span
|
||||
style="font-weight: bold; font-family: 楷体; line-height: 1; color: rgb(255, 255, 255); font-size: 5pt;">.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="_body" style="min-height: calc(472.441px); padding-left: 1cm; padding-right: 1cm;"
|
||||
contenteditable="false" class="">
|
||||
<div style="text-align: left;" domain="" code="" title="" contenteditable="false"><span
|
||||
style="font-size: small; text-align: justify; font-weight: bold;" domain="" code="" title=""
|
||||
contenteditable="false">姓名:</span>
|
||||
<field tabindex="0" id="pat_name" type="Text" contenteditable="false" class="input" title="姓名"
|
||||
name="pat_name" data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
style="font-size: small; text-align: justify;" value=""></field><span
|
||||
style="font-size: small; text-align: justify;"> </span><span
|
||||
style="font-size: small; text-align: justify; font-weight: bold;" domain="" code="" title=""
|
||||
contenteditable="false">性别:</span>
|
||||
<field tabindex="0" id="pat_sex" type="Text" contenteditable="false" class="input" title="性别" value="男"
|
||||
name="pat_sex" data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
style="font-size: small; text-align: justify;">男</field><span
|
||||
style="font-size: small; text-align: justify;"> </span><span
|
||||
style="font-size: small; text-align: justify; font-weight: bold;" domain="" code="" title=""
|
||||
contenteditable="false">年龄:</span>
|
||||
<field tabindex="0" id="pat_age" type="Text" contenteditable="false" class="input" title="年龄"
|
||||
name="pat_age" data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
style="font-size: small; text-align: justify;" value=""></field><span
|
||||
style="font-size: small; text-align: justify;"> </span><span
|
||||
style="font-size: small; text-align: justify; font-weight: bold;" domain="" code="" title=""
|
||||
contenteditable="false">就诊科室:</span>
|
||||
<field tabindex="0" id="visit_dept" type="Text" contenteditable="false" class="input" title="就诊科室"
|
||||
name="visit_dept" data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
style="font-size: small; text-align: justify;" value="风湿免疫科">风湿免疫科</field><span
|
||||
style="font-size: small; text-align: justify; font-weight: bold;" domain="" code="" title=""
|
||||
contenteditable="false"> 就诊号:</span>
|
||||
<field tabindex="0" type="Text" contenteditable="false" class="input" title="就诊号" data-code=""
|
||||
data-expression="" multiline="false" validate="false" format="" style="font-size: small;" domain=""
|
||||
code="" required="false" inputmode="" id="pat_id" name="pat_id" value="MZ07882405098">
|
||||
MZ07882405098</field><span style="font-size: small; text-align: justify;"> </span>
|
||||
</div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="line-height: 2;"><span
|
||||
style="font-weight: 700; line-height: 2;">
|
||||
<hr style="font-size: small;"><span style="font-size: 9pt;">就诊时间:</span>
|
||||
</span>
|
||||
<field tabindex="0" id="visit_time" type="Text" class="input" title="就诊时间" name="visit_time"
|
||||
data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
style="font-size: 9pt;" value="2024-05-09 14:21:52">2024-05-09 14:21:52</field>
|
||||
<field tabindex="0" type="Text" class="blank input" title="就诊时间" name="visit_time" data-code=""
|
||||
data-expression="" multiline="false" validate="false" format=""
|
||||
style="font-weight: 700; font-size: 9pt;"> </field>
|
||||
</span><span style="font-size: 9pt; line-height: 2;">
|
||||
<group type="radio" id="firstcall" domain="" code="" style=""><input type="radio" id="firstcall__0"
|
||||
name="firstcall" value="1" checked><label for="firstcall__0">初诊</label><input type="radio"
|
||||
id="firstcall__1" name="firstcall" value="2"><label for="firstcall__1">复诊</label></group>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="font-weight: bold;">联系电话:</span>
|
||||
<field tabindex="0" id="pat_phone" type="Text" class="input" title="联系电话" name="pat_phone"
|
||||
data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
contenteditable="true" style="" value=""></field><span style="" domain=""
|
||||
code="" title=" "><span style="font-weight: bold;"> 家庭住址:</span>
|
||||
<field tabindex="0" id="pat_address" name="pat_address" type="Text" contenteditable="true"
|
||||
class="blank input" title="地址" domain="" code="" multiline="true" required="false" format=""
|
||||
inputmode="" data-expression="" value="">地址</field>
|
||||
</span>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="font-weight: bold;">主诉:</span>
|
||||
<field tabindex="0" id="pat_appeal" name="pat_appeal" type="Text" contenteditable="true"
|
||||
class="input" title="主诉" domain="" code="" multiline="true" required="false" format=""
|
||||
inputmode="" data-expression="" style="" value=""></field><span
|
||||
style="font-weight: bold;"> </span>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="" title="" domain="" code=""><span style="font-weight: bold;">现病史:</span>
|
||||
<field tabindex="0" id="pat_now_history" name="pat_now_history" type="Text"
|
||||
contenteditable="true" class="input" title="病史" domain="" code="" multiline="true"
|
||||
required="false" format="" inputmode="" data-expression="" style=""
|
||||
value=""></field><span
|
||||
style="font-weight: bold;"> </span>
|
||||
</span></span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="font-weight: bold;">既往史:</span>
|
||||
<field tabindex="0" id="pat_past_history" name="pat_past_history" type="Text" contenteditable="true"
|
||||
class="blank input" title="既往史" domain="" code="" multiline="true" required="false" format=""
|
||||
inputmode="" data-expression="" style="">既往史</field><span
|
||||
style="font-weight: bold;"> </span>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;" domain="" code="" title=" "><span
|
||||
style="font-size: 9pt; line-height: 2;"><span style="font-weight: bold;">过敏史:</span>
|
||||
<field tabindex="0" id="pat_allergy_history" name="pat_allergy_history" type="Text"
|
||||
contenteditable="true" class="blank input" title="过敏史" domain="" code="" multiline="true"
|
||||
required="false" format="" inputmode="" data-expression="" style="">过敏史</field><span
|
||||
style="font-weight: bold;"> </span>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="font-weight: bold;">诊断:</span>
|
||||
<field tabindex="0" id="diagnosis" name="diagnosis" type="Text" contenteditable="true" class="input"
|
||||
title="诊断" domain="" code="" multiline="true" required="false" format="" inputmode=""
|
||||
data-expression="" style="" value=""></field>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 12px;"><span
|
||||
style="font-weight: 700;">处方:</span>
|
||||
<field tabindex="0" id="presc" name="presc" type="Text" contenteditable="false" class="input"
|
||||
title="处方" domain="" code="" multiline="true" required="false" format="" inputmode=""
|
||||
data-expression="" style="" value=""></field><span style="font-weight: 700;"> </span>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="font-weight: bold;">建议:</span>
|
||||
<field tabindex="0" id="advice" type="Text" contenteditable="true" class="input" title="建议" domain="" code=""
|
||||
multiline="true" required="false" format="" inputmode="" data-expression="" style=""
|
||||
value="在用药过程中有任何身体不适,请及时前往实体医院就诊">在用药过程中有任何身体不适,请及时前往实体医院就诊</field><span
|
||||
style="font-weight: bold;"> </span>
|
||||
</span></div>
|
||||
<div style="text-align: justify; line-height: 2;"><span style="font-size: 9pt; line-height: 2;"><span
|
||||
style="font-weight: bold;"><br></span></span></div>
|
||||
<div style="text-align: justify; line-height: 2;" domain="" code="" title="" contenteditable="false"><span
|
||||
style="font-weight: bold; line-height: 2; font-size: 9pt;">医师签字:</span>
|
||||
<field tabindex="0" id="doctor_name" type="Text" contenteditable="false" class="input" title="医师签字"
|
||||
name="doctor_name" data-code="" data-expression="" multiline="false" validate="false" format=""
|
||||
style="line-height: 2; font-size: 9pt;" domain="" code="" required="false" inputmode="" value="贾连荣">
|
||||
张某某</field><span style="line-height: 2; font-size: 9pt;">
|
||||
<span style="font-weight: bold; line-height: 2;">手签:</span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="_footer"
|
||||
style="outline: none; position: relative; min-height: 0.5cm; padding-left: 1cm; padding-right: 1cm; padding-bottom: 0.65cm;"
|
||||
contenteditable="false" class="">
|
||||
<div style="text-align: center;"><span style="font-size: small;">第<field page="pageNum" style="">#</field>
|
||||
页,共<field page="pageTotal" style="">#</field>页</span></div>
|
||||
</div>
|
||||
</div>
|
37
vue3-element-admin-thin/public/mock/data_table.html
Normal file
10
vue3-element-admin-thin/public/mock/en_us.html
Normal file
75
vue3-element-admin-thin/public/mock/sign.html
Normal file
@ -0,0 +1,75 @@
|
||||
|
||||
<div id="_page" style="margin: 0px auto; background: rgb(255, 255, 255); width: 210mm; min-height: 297mm; transform: scale(1, 1); transform-origin: 50% 0px 0px;" pagekind="A4" direct="portrait">
|
||||
<div id="_header" style="outline: none; min-height: 0.99cm; padding-left: 1.5cm; padding-right: 1.5cm; padding-top: 0.99cm; position: relative;" contenteditable="false" class="">
|
||||
<p style=" font-family: 宋体; font-size: 15.75pt; text-align: Center;">
|
||||
<label style=" font-family: 宋体; font-size: 15.75pt; font-weight: bold; text-align: Center;">云南城投昆明妇女儿童医院</label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt; text-align: Center;">
|
||||
<label style=" font-family: 宋体; font-size: 15.75pt; font-weight: bold;">麻醉知情同意书</label>
|
||||
</p></div>
|
||||
|
||||
<div id="_body" style="outline:none;min-height: calc(297mm - 0.99cm - 0.48cm - 0.99cm - 1.5cm);padding-left:1.5cm;padding-right:1.5cm;" contenteditable="false" class="">
|
||||
<p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">姓名:</label>
|
||||
<field tabindex="0" id="姓名" name="姓名" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="姓名">姓名</field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;"> 性别:</label>
|
||||
<field tabindex="0" id="性别" name="性别" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="性别">性别</field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;"> 年龄:</label>
|
||||
<field tabindex="0" id="年龄" name="年龄" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="年龄">年龄</field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;"> 门诊号:</label>
|
||||
<field tabindex="0" id="病历号" name="病历号" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="病历号" data-code="" validate="false" format="">病历号</field> <label style=" font-family: 仿宋; font-size: 14.25pt;">科室:</label>
|
||||
<field tabindex="0" id="科室" name="科室" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="{科室}">科室</field> <label style=" font-family: 仿宋; font-size: 14.25pt;"> 床号:</label>
|
||||
<field tabindex="0" id="日期" name="日期" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="床号">床号</field>
|
||||
</p><p style=" font-family: 仿宋; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">诊断:</label>
|
||||
<field tabindex="0" id="诊断" name="诊断" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="诊断" data-code="" validate="false" format="">诊断</field> <label style=" font-family: 仿宋; font-size: 14.25pt;">执行检查手术: </label>
|
||||
<field tabindex="0" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="执行手术">执行手术</field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;"> 体重: </label>
|
||||
<field tabindex="0" id="体重" name="体重" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title="体重" data-code="" validate="false" format="alpha">{体重}</field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">k</label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">任何麻醉均有风险性,在根据患者病情,切实做好麻醉前准备并按操作规范认真做好麻醉工 作及范防范措施情况下,仍有可能发生以下难以避免的麻醉意外及并发症:</label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">1、根据麻醉需要及操作规范,遵照《中华人民共和国药典》要求使用各种麻醉药物和输液用液体 后,由于患者体制原因,出现输液反应,过敏、高敏反应,致热源反应等,甚至导致过敏性休 克、呼吸心跳停止; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">2、麻醉期间可能发生恶心、呕吐、返流误吸、喉水肿、喉痉挛,导致气道梗阻,窒息;</label>
|
||||
<label style=" font-family: 宋体; font-size: 14.25pt;"> </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">3、呼吸抑制甚至短暂呼吸暂停;血压下降;心率减慢;严重者可能发生心跳呼吸骤停; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">4、因麻醉诱发原有隐患匿性疾病发作,如哮喘、癫痫、心脑血管意外等; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">5、因抢救需要气管插管,可能损伤患者口唇、牙齿、引起反流误吸、气道痉挛、窒息; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">6、其他难以预料的并发症及意外。 </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">麻醉后注意事项 </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">1、麻醉结束后2小时内不要饮水、进食; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">2、接受麻醉后当天,不能驾驶机动车,骑自行车及电动车,不能经行精细操作工作和高空作业; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">3、麻醉结束后,请在医院观察休息一段时间,待麻醉医生认可后,方能离开; </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">我们将以良好的医德医术为患者实行麻醉,力争将麻醉风险降低到最低程度,保障患者安全。上 述情况以对患者及家属说明,并对患者方提出的问题作了详细的解答,经慎重考虑,患者及家属 对麻醉可能出现的风险表示充分的理解,同意要求实行麻醉,签字为证:</label>
|
||||
</p><p style="undefined" id="" title="患者签名">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">患者本人签字</label><img type="sign" alt="双击手写签名" style="width: 120px; height: 40px;" draggable="false" id="patient-sign" name="patient-sign" title=""><span style="font-size: 14.25pt;"> 签字时间_____年___月___日___ 时____分 </span></p><p style=" font-family: 仿宋; font-size: 14.25pt;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">患者家属签字</label><img type="sign" alt="双击手写签名" style="width: 120px; height: 40px;" draggable="false" id="patient-family-sign" name="patient-family-sign" title="家属签名"><span style="font-size: 14.25pt;">与患者关系_____</span></p><p style=" font-family: 仿宋; font-size: 14.25pt; text-align: Center;"><br></p><p style=" font-family: 宋体; font-size: 12pt; text-align: Right;">
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">麻醉医师签名: <img readonly style="width: 120px; height: 80px;" type="sign" alt="医生签名" id="doctor-sign" name="doctor-sign" title="医生签名"> </label>
|
||||
</p><p style=" font-family: 宋体; font-size: 12pt; text-align: Right;">
|
||||
<field tabindex="0" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title=""></field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">年</label>
|
||||
<field tabindex="0" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title=""></field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">月</label>
|
||||
<field tabindex="0" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title=""></field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">日</label>
|
||||
<field tabindex="0" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title=""></field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">时</label>
|
||||
<field tabindex="0" class="blank" style=" font-family: 仿宋; font-size: 14.25pt;" contenteditable="true" type="Text" value="" title=""></field>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt;">分</label>
|
||||
<label style=" font-family: 仿宋; font-size: 14.25pt; text-align: Right;"> </label>
|
||||
</p></div>
|
||||
|
||||
<div id="_footer" style="outline:none; position:relative;min-height:1.5cm;padding-left:1.5cm;padding-right:1.5cm;padding-bottom:0.48cm;" contenteditable="false" class="">
|
||||
<p style=""><label style=" font-family: 宋体; font-size: 10.5pt; color: #323232;"> </label> </p></div>
|
||||
|
||||
</div>
|
12
vue3-element-admin-thin/public/mock/yizhu.html
Normal file
1368
vue3-element-admin-thin/public/mock/zh-bo.html
Normal file
1167
vue3-element-admin-thin/public/mock/zh-tw.html
Normal file
1167
vue3-element-admin-thin/public/mock/zh-ug.html
Normal file
802
vue3-element-admin-thin/public/mock/临时医嘱单.html
Normal file
941
vue3-element-admin-thin/public/mock/门诊检查申请单.html
Normal file
3670
vue3-element-admin-thin/public/vender/JsBarcode.all.js
Normal file
1
vue3-element-admin-thin/public/vender/codemirror.js
Normal file
@ -0,0 +1,66 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/xml; charset=gb2312" />
|
||||
<title>My97DatePicker</title>
|
||||
<script type="text/javascript" src="config.js" charset=gb2312></script>
|
||||
<script>
|
||||
//var l = location;
|
||||
if(parent==window)
|
||||
location.href = 'http://www.my97.net';
|
||||
/*
|
||||
else{
|
||||
var start=l.href.indexOf('#')+1;
|
||||
if(start>0){
|
||||
document.domain = l.href.substr(start);
|
||||
}
|
||||
}
|
||||
*/
|
||||
var $d, $dp, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;
|
||||
|
||||
//˵<><CBB5><EFBFBD><EFBFBD>flat<61><74>ʱ,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>$dp
|
||||
if ($pdp.eCont) {
|
||||
$dp = {};
|
||||
for (var p in $pdp) {
|
||||
$dp[p] = $pdp[p];
|
||||
}
|
||||
}
|
||||
else{
|
||||
$dp = $pdp;
|
||||
}
|
||||
|
||||
$dp.getLangIndex = function(name){
|
||||
var arr = langList;
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i].name == name) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
$dp.getLang = function(name){
|
||||
var index = $dp.getLangIndex(name);
|
||||
if (index == -1) {
|
||||
index = 0;
|
||||
}
|
||||
return langList[index];
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
$dp.realLang = $dp.getLang($dp.lang);
|
||||
document.write("<script src='lang/" + $dp.realLang.name + ".js' charset='" + $dp.realLang.charset + "'><\/script>");
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD>б<EFBFBD><D0B1>ļ<EFBFBD>
|
||||
for (var i = 0; i < skinList.length; i++) {
|
||||
document.write('<link rel="stylesheet" type="text/css" href="skin/' + skinList[i].name + '/datepicker.css" title="' + skinList[i].name + '" charset="' + skinList[i].charset + '" disabled="true"/>');
|
||||
}
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="calendar.js" charset="gb2312"></script>
|
||||
</head>
|
||||
<body leftmargin="0" topmargin="0" onLoad="$c.autoSize()" tabindex=0>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
new My97DP();
|
||||
</script>
|
678
vue3-element-admin-thin/public/vender/date97/WdatePicker.js
Normal file
@ -0,0 +1,678 @@
|
||||
/*
|
||||
* My97 DatePicker 4.8.5
|
||||
* License: http://www.my97.net/license.asp
|
||||
*/
|
||||
var $dp, WdatePicker;
|
||||
(function () {
|
||||
var Config = {
|
||||
$langList: [{
|
||||
name: 'en',
|
||||
charset: 'UTF-8'
|
||||
},
|
||||
{
|
||||
name: 'zh-cn',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'zh-tw',
|
||||
charset: 'GBK'
|
||||
}
|
||||
],
|
||||
$skinList: [{
|
||||
name: 'default',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'whyGreen',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'blue',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'green',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'simple',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'ext',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'blueFresh',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'twoer',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'YcloudRed',
|
||||
charset: 'gb2312'
|
||||
},
|
||||
{
|
||||
name: 'thinkpap',
|
||||
charset: 'gb2312'
|
||||
}
|
||||
],
|
||||
$wdate: false,
|
||||
$crossFrame: false,
|
||||
$preLoad: false,
|
||||
$dpPath: '',
|
||||
doubleCalendar: false,
|
||||
enableKeyboard: true,
|
||||
enableInputMask: true,
|
||||
autoUpdateOnChanged: null,
|
||||
weekMethod: 'MSExcel',
|
||||
position: {},
|
||||
lang: 'auto',
|
||||
skin: 'default',
|
||||
dateFmt: 'yyyy年MM月dd日 HH时mm分',
|
||||
realDateFmt: 'yyyy-MM-dd',
|
||||
realTimeFmt: 'HH:mm:ss',
|
||||
realFullFmt: '%Date %Time',
|
||||
minDate: '0001-01-01 00:00:00',
|
||||
maxDate: '9999-12-31 23:59:59',
|
||||
minTime: '00:00:00',
|
||||
maxTime: '23:59:59',
|
||||
startDate: '',
|
||||
alwaysUseStartDate: false,
|
||||
yearOffset: 1911,
|
||||
firstDayOfWeek: 0,
|
||||
isShowWeek: false,
|
||||
highLineWeekDay: true,
|
||||
isShowClear: true,
|
||||
isShowToday: true,
|
||||
isShowOK: true,
|
||||
isShowOthers: true,
|
||||
readOnly: false,
|
||||
errDealMode: 0,
|
||||
autoPickDate: null,
|
||||
qsEnabled: true,
|
||||
autoShowQS: false,
|
||||
hmsMenuCfg: {
|
||||
H: [1, 6],
|
||||
m: [5, 6],
|
||||
s: [15, 4]
|
||||
},
|
||||
|
||||
opposite: false,
|
||||
specialDates: null,
|
||||
specialDays: null,
|
||||
disabledDates: null,
|
||||
disabledDays: null,
|
||||
onpicking: null,
|
||||
onpicked: null,
|
||||
onclearing: null,
|
||||
oncleared: null,
|
||||
ychanging: null,
|
||||
ychanged: null,
|
||||
Mchanging: null,
|
||||
Mchanged: null,
|
||||
dchanging: null,
|
||||
dchanged: null,
|
||||
Hchanging: null,
|
||||
Hchanged: null,
|
||||
mchanging: null,
|
||||
mchanged: null,
|
||||
schanging: null,
|
||||
schanged: null,
|
||||
eCont: null,
|
||||
vel: null,
|
||||
elProp: '',
|
||||
errMsg: '',
|
||||
quickSel: [],
|
||||
has: {},
|
||||
getRealLang: function () {
|
||||
var arr = Config.$langList;
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i].name == this.lang) {
|
||||
return arr[i]
|
||||
}
|
||||
}
|
||||
return arr[0]
|
||||
}
|
||||
};
|
||||
WdatePicker = main;
|
||||
var w = window,
|
||||
emptyEl = {
|
||||
innerHTML: ''
|
||||
},
|
||||
d = 'document',
|
||||
de = 'documentElement',
|
||||
tag = 'getElementsByTagName',
|
||||
dptop, jsPath, $IE, $FF, $OPERA;
|
||||
var ua = navigator.userAgent,
|
||||
isTablet = /(?:iPad|PlayBook)/.test(ua) || (/(?:Android)/.test(ua) && !/(?:Mobile)/.test(ua)),
|
||||
isPhone = /(?:iPhone)/.test(ua) || /(?:Android)/.test(ua) && /(?:Mobile)/.test(ua);
|
||||
var appName = navigator.appName;
|
||||
if (appName == 'Microsoft Internet Explorer') $IE = true;
|
||||
else if (appName == 'Opera') $OPERA = true;
|
||||
else $FF = true;
|
||||
jsPath = Config.$dpPath || getJsPath();
|
||||
if (Config.$wdate) {
|
||||
loadCSS(jsPath + 'skin/WdatePicker.css')
|
||||
}
|
||||
dptop = w;
|
||||
if (Config.$crossFrame) {
|
||||
try {
|
||||
while (dptop.parent != dptop && dptop.parent[d][tag]('frameset').length == 0) {
|
||||
dptop = dptop.parent
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
if (!dptop.$dp) {
|
||||
dptop.$dp = {
|
||||
ff: $FF,
|
||||
ie: $IE,
|
||||
opera: $OPERA,
|
||||
status: 0,
|
||||
defMinDate: Config.minDate,
|
||||
defMaxDate: Config.maxDate,
|
||||
isTablet: isTablet,
|
||||
isPhone: isPhone,
|
||||
isTouch: isTablet || isPhone
|
||||
}
|
||||
}
|
||||
initTopDP();
|
||||
if (Config.$preLoad && $dp.status == 0) {
|
||||
dpAttachEvent(w, 'onload', function () {
|
||||
main(null, true)
|
||||
})
|
||||
}
|
||||
var docEventName = $dp.isTouch ? 'ontouchstart' : 'onmousedown';
|
||||
if (!w[d].docMD) {
|
||||
dpAttachEvent(w[d], docEventName, disposeDP, true);
|
||||
w[d].docMD = true
|
||||
}
|
||||
if (!dptop[d].docMD) {
|
||||
dpAttachEvent(dptop[d], docEventName, disposeDP, true);
|
||||
dptop[d].docMD = true
|
||||
}
|
||||
dpAttachEvent(w, 'onunload', function () {
|
||||
if ($dp.dd) {
|
||||
display($dp.dd, "none")
|
||||
}
|
||||
});
|
||||
|
||||
function initTopDP() {
|
||||
try {
|
||||
dptop[d], dptop.$dp = dptop.$dp || {}
|
||||
} catch (e) {
|
||||
dptop = w;
|
||||
$dp = $dp || {}
|
||||
}
|
||||
var obj = {
|
||||
win: w,
|
||||
$: function (el) {
|
||||
return (typeof el == 'string') ? w[d].getElementById(el) : el
|
||||
},
|
||||
$D: function (id, arg) {
|
||||
return this.$DV(this.$(id).value, arg)
|
||||
},
|
||||
$DV: function (v, arg) {
|
||||
if (v != '') {
|
||||
this.dt = $dp.cal.splitDate(v, $dp.cal.dateFmt);
|
||||
if (arg) {
|
||||
for (var p in arg) {
|
||||
if (this.dt[p] === undefined) {
|
||||
this.errMsg = 'invalid property:' + p
|
||||
} else {
|
||||
this.dt[p] += arg[p];
|
||||
if (p == 'M') {
|
||||
var offset = arg['M'] > 0 ? 1 : 0;
|
||||
var tmpday = new Date(this.dt['y'], this.dt['M'], 0).getDate();
|
||||
this.dt['d'] = Math.min(tmpday + offset, this.dt['d'])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.dt.refresh()) {
|
||||
return this.dt
|
||||
}
|
||||
}
|
||||
return ''
|
||||
},
|
||||
show: function () {
|
||||
var divs = dptop[d].getElementsByTagName('div'),
|
||||
maxZIndex = 1e5;
|
||||
for (var i = 0; i < divs.length; i++) {
|
||||
var curZ = parseInt(divs[i].style.zIndex);
|
||||
if (curZ > maxZIndex) {
|
||||
maxZIndex = curZ
|
||||
}
|
||||
}
|
||||
this.dd.style.zIndex = maxZIndex + 2;
|
||||
display(this.dd, "block");
|
||||
display(this.dd.firstChild, "")
|
||||
},
|
||||
unbind: function (el) {
|
||||
el = this.$(el);
|
||||
if (el.initcfg) {
|
||||
dpDetachEvent(el, 'onclick', function () {
|
||||
main(el.initcfg)
|
||||
});
|
||||
dpDetachEvent(el, 'onfocus', function () {
|
||||
main(el.initcfg)
|
||||
})
|
||||
}
|
||||
},
|
||||
hide: function () {
|
||||
display(this.dd, "none")
|
||||
},
|
||||
attachEvent: dpAttachEvent
|
||||
};
|
||||
for (var p in obj) {
|
||||
dptop.$dp[p] = obj[p];
|
||||
}
|
||||
$dp = dptop.$dp
|
||||
}
|
||||
|
||||
function dpAttachEvent(o, sType, fHandler, useCapture) {
|
||||
if (o.addEventListener) {
|
||||
var shortTypeName = sType.replace(/on/, "");
|
||||
fHandler._ieEmuEventHandler = function (e) {
|
||||
return fHandler(e)
|
||||
};
|
||||
o.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, useCapture)
|
||||
} else {
|
||||
o.attachEvent(sType, fHandler)
|
||||
}
|
||||
}
|
||||
|
||||
function dpDetachEvent(o, sType, fHandler) {
|
||||
if (o.removeEventListener) {
|
||||
var shortTypeName = sType.replace(/on/, "");
|
||||
fHandler._ieEmuEventHandler = function (e) {
|
||||
return fHandler(e)
|
||||
};
|
||||
o.removeEventListener(shortTypeName, fHandler._ieEmuEventHandler, false)
|
||||
} else {
|
||||
o.detachEvent(sType, fHandler)
|
||||
}
|
||||
}
|
||||
|
||||
function compareCfg(o1, o2, issub) {
|
||||
if (typeof o1 != typeof o2) return false;
|
||||
if (typeof o1 == 'object') {
|
||||
if (!issub) {
|
||||
for (var o in o1) {
|
||||
if (typeof o2[o] == 'undefined') return false;
|
||||
if (!compareCfg(o1[o], o2[o], true)) return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
} else if (typeof o1 == 'function' && typeof o2 == 'function') {
|
||||
return o1.toString() == o2.toString()
|
||||
} else {
|
||||
return o1 == o2
|
||||
}
|
||||
}
|
||||
|
||||
function getJsPath() {
|
||||
var path, tmp, scripts = w[d][tag]("script");
|
||||
for (var i = 0; i < scripts.length; i++) {
|
||||
path = scripts[i].getAttribute('src') || '';
|
||||
path = path.substr(0, path.toLowerCase().indexOf('wdatepicker.js'));
|
||||
var tmp = path.lastIndexOf("/");
|
||||
if (tmp > 0) path = path.substring(0, tmp + 1);
|
||||
if (path) break
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
||||
function loadCSS(path, title, charset) {
|
||||
var head = w[d][tag]('HEAD').item(0),
|
||||
style = w[d].createElement('link');
|
||||
if (head) {
|
||||
style.href = path;
|
||||
style.rel = 'stylesheet';
|
||||
style.type = 'text/css';
|
||||
if (title) style.title = title;
|
||||
if (charset) style.charset = charset;
|
||||
head.appendChild(style)
|
||||
}
|
||||
}
|
||||
|
||||
function getAbsM(w) {
|
||||
w = w || dptop;
|
||||
var lm = 0,
|
||||
tm = 0;
|
||||
while (w != dptop) {
|
||||
var ifs = w.parent[d][tag]('iframe');
|
||||
for (var i = 0; i < ifs.length; i++) {
|
||||
try {
|
||||
if (ifs[i].contentWindow == w) {
|
||||
var rc = getBound(ifs[i]);
|
||||
lm += rc.left;
|
||||
tm += rc.top;
|
||||
break
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
w = w.parent
|
||||
}
|
||||
return {
|
||||
'leftM': lm,
|
||||
'topM': tm
|
||||
}
|
||||
}
|
||||
|
||||
function getBound(o, ignoreScr) {
|
||||
if (o.getBoundingClientRect) {
|
||||
return o.getBoundingClientRect()
|
||||
} else {
|
||||
var patterns = {
|
||||
ROOT_TAG: /^body|html$/i,
|
||||
OP_SCROLL: /^(?:inline|table-row)$/i
|
||||
};
|
||||
var hssFixed = false,
|
||||
win = null,
|
||||
t = o.offsetTop,
|
||||
l = o.offsetLeft,
|
||||
r = o.offsetWidth,
|
||||
b = o.offsetHeight;
|
||||
var parentNode = o.offsetParent;
|
||||
if (parentNode != o) {
|
||||
while (parentNode) {
|
||||
l += parentNode.offsetLeft;
|
||||
t += parentNode.offsetTop;
|
||||
if (getStyle(parentNode, 'position').toLowerCase() == 'fixed') hssFixed = true;
|
||||
else if (parentNode.tagName.toLowerCase() == "body") win = parentNode.ownerDocument.defaultView;
|
||||
parentNode = parentNode.offsetParent
|
||||
}
|
||||
}
|
||||
parentNode = o.parentNode;
|
||||
while (parentNode.tagName && !patterns.ROOT_TAG.test(parentNode.tagName)) {
|
||||
if (parentNode.scrollTop || parentNode.scrollLeft) {
|
||||
if (!patterns.OP_SCROLL.test(display(parentNode))) {
|
||||
if (!$OPERA || parentNode.style.overflow !== 'visible') {
|
||||
l -= parentNode.scrollLeft;
|
||||
t -= parentNode.scrollTop
|
||||
}
|
||||
}
|
||||
}
|
||||
parentNode = parentNode.parentNode
|
||||
}
|
||||
if (!hssFixed) {
|
||||
var scr = getScroll(win);
|
||||
l -= scr.left;
|
||||
t -= scr.top
|
||||
}
|
||||
r += l;
|
||||
b += t;
|
||||
return {
|
||||
'left': l,
|
||||
'top': t,
|
||||
'right': r,
|
||||
'bottom': b
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getWH(w) {
|
||||
w = w || dptop;
|
||||
var doc = w[d],
|
||||
width = (w.innerWidth) ? w.innerWidth : (doc[de] && doc[de].clientWidth) ? doc[de].clientWidth : doc.body.offsetWidth,
|
||||
height = (w.innerHeight) ? w.innerHeight : (doc[de] && doc[de].clientHeight) ? doc[de].clientHeight : doc.body.offsetHeight;
|
||||
return {
|
||||
'width': width,
|
||||
'height': height
|
||||
}
|
||||
}
|
||||
|
||||
function getScroll(w) {
|
||||
w = w || dptop;
|
||||
var doc = w[d],
|
||||
doce = doc[de],
|
||||
db = doc.body;
|
||||
doc = (doce && doce.scrollTop != null && (doce.scrollTop > db.scrollTop || doce.scrollLeft > db.scrollLeft)) ? doce : db;
|
||||
return {
|
||||
'top': doc.scrollTop,
|
||||
'left': doc.scrollLeft
|
||||
}
|
||||
}
|
||||
|
||||
function disposeDP(e) {
|
||||
try {
|
||||
var src = e ? (e.srcElement || e.target) : null;
|
||||
if ($dp.cal && !$dp.eCont && $dp.dd && src != $dp.el && $dp.dd.style.display == 'block') {
|
||||
$dp.cal.close()
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function dpLoaded() {
|
||||
$dp.status = 2
|
||||
}
|
||||
var isDptopReady, dptopInterval;
|
||||
|
||||
function main(initcfg, preLoad) {
|
||||
if (!$dp) return;
|
||||
initcfg.el = initcfg.el || w[d].activeElement;
|
||||
if ($dp.isTouch) {
|
||||
try {
|
||||
initcfg.el.readOnly = true;
|
||||
initcfg.el.blur()
|
||||
} catch (e) {}
|
||||
}
|
||||
initTopDP();
|
||||
var cfg = {};
|
||||
for (var p in initcfg) {
|
||||
cfg[p] = initcfg[p]
|
||||
}
|
||||
for (var p in Config) {
|
||||
if (p.substring(0, 1) != '$' && cfg[p] === undefined) {
|
||||
cfg[p] = Config[p]
|
||||
}
|
||||
}
|
||||
if (preLoad) {
|
||||
if (!dptopReady()) {
|
||||
dptopInterval = dptopInterval || setInterval(function () {
|
||||
if (dptop[d].readyState == 'complete') {
|
||||
clearInterval(dptopInterval);
|
||||
}
|
||||
main(null, true)
|
||||
}, 50);
|
||||
return
|
||||
}
|
||||
if ($dp.status == 0) {
|
||||
$dp.status = 1;
|
||||
cfg.el = emptyEl;
|
||||
showPicker(cfg, true)
|
||||
} else {
|
||||
return
|
||||
}
|
||||
} else if (cfg.eCont) {
|
||||
cfg.eCont = $dp.$(cfg.eCont);
|
||||
cfg.el = emptyEl;
|
||||
cfg.autoPickDate = true;
|
||||
cfg.qsEnabled = false;
|
||||
showPicker(cfg)
|
||||
} else {
|
||||
if (Config.$preLoad && $dp.status != 2) return;
|
||||
if (!cfg.el) {
|
||||
var evt = SearchEvent();
|
||||
if (w.event === evt || evt) {
|
||||
cfg.srcEl = evt.srcElement || evt.target;
|
||||
evt.cancelBubble = true
|
||||
}
|
||||
}
|
||||
cfg.el = cfg.el = $dp.$(cfg.el || cfg.srcEl);
|
||||
if (cfg.el == null) {
|
||||
alert('WdatePicker:el is null!\nexample:onclick="WdatePicker({el:this})"');
|
||||
return
|
||||
}
|
||||
try {
|
||||
if (!cfg.el || cfg.el['My97Mark'] === true || cfg.el.disabled || ($dp.dd && display($dp.dd) != 'none' && $dp.dd.style.left != '-970px')) {
|
||||
if (cfg.el['My97Mark']) cfg.el['My97Mark'] = false;
|
||||
return
|
||||
}
|
||||
} catch (e) {}
|
||||
if (evt && cfg.el.nodeType == 1 && !compareCfg(cfg.el.initcfg, initcfg)) {
|
||||
$dp.unbind(cfg.el);
|
||||
dpAttachEvent(cfg.el, evt.type == 'focus' ? 'onclick' : 'onfocus', function () {
|
||||
main(initcfg)
|
||||
});
|
||||
cfg.el.initcfg = initcfg;
|
||||
}
|
||||
showPicker(cfg)
|
||||
}
|
||||
|
||||
function dptopReady() {
|
||||
if ($IE && dptop != w && dptop[d].readyState != 'complete') return false;
|
||||
return true
|
||||
}
|
||||
|
||||
function SearchEvent() {
|
||||
if ($FF) {
|
||||
try {
|
||||
var count = 0;
|
||||
func = SearchEvent.caller;
|
||||
while (func != null) {
|
||||
var arg0 = func.arguments[0];
|
||||
if (arg0 && (arg0 + '').indexOf('Event') >= 0 || (count++) > 97) {
|
||||
return arg0
|
||||
}
|
||||
func = func.caller
|
||||
}
|
||||
} catch (e) {}
|
||||
return null
|
||||
}
|
||||
return event
|
||||
}
|
||||
}
|
||||
|
||||
function getStyle(obj, attribute) {
|
||||
return obj.currentStyle ? obj.currentStyle[attribute] : document.defaultView.getComputedStyle(obj, false)[attribute]
|
||||
}
|
||||
|
||||
function display(obj, value) {
|
||||
if (obj) {
|
||||
if (value != null) obj.style.display = value;
|
||||
else return getStyle(obj, 'display')
|
||||
}
|
||||
}
|
||||
|
||||
function showPicker(cfg, preLoad) {
|
||||
var nodeName = cfg.el ? cfg.el.nodeName : 'INPUT';
|
||||
if (preLoad || cfg.eCont || new RegExp(/input|textarea|div|field|span|p|a/ig).test(nodeName)) {
|
||||
cfg.elProp = cfg.elProp || nodeName == 'INPUT' ? 'value' : 'innerHTML'
|
||||
} else {
|
||||
return
|
||||
}
|
||||
if (cfg.lang == 'auto') {
|
||||
cfg.lang = $IE ? navigator.browserLanguage.toLowerCase() : navigator.language.toLowerCase()
|
||||
}
|
||||
if (!cfg.eCont) {
|
||||
for (var p in cfg) {
|
||||
$dp[p] = cfg[p]
|
||||
}
|
||||
}
|
||||
if (!$dp.dd || cfg.eCont || ($dp.dd && (cfg.getRealLang().name != $dp.dd.lang || cfg.skin != $dp.dd.skin))) {
|
||||
if (cfg.eCont) {
|
||||
ddInit(cfg.eCont, cfg)
|
||||
} else {
|
||||
$dp.dd = dptop[d].createElement("DIV");
|
||||
$dp.dd.style.cssText = 'position:absolute';
|
||||
dptop[d].body.appendChild($dp.dd);
|
||||
ddInit($dp.dd, cfg);
|
||||
if (preLoad) {
|
||||
$dp.dd.style.left = $dp.dd.style.top = '-970px'
|
||||
} else {
|
||||
$dp.show();
|
||||
setPos($dp)
|
||||
}
|
||||
}
|
||||
} else if ($dp.cal) {
|
||||
$dp.show();
|
||||
$dp.cal.init();
|
||||
if (!$dp.eCont) setPos($dp)
|
||||
}
|
||||
|
||||
function ddInit(cont, cfg) {
|
||||
var dm = dptop[d].domain,
|
||||
isCross = false,
|
||||
defHtml = '<iframe hideFocus=true width=9 height=7 frameborder=0 border=0 scrolling=no src="about:blank"></iframe>';
|
||||
cont.innerHTML = defHtml;
|
||||
var langList = Config.$langList,
|
||||
skinList = Config.$skinList,
|
||||
doc;
|
||||
try {
|
||||
doc = cont.lastChild.contentWindow[d]
|
||||
} catch (e) {
|
||||
isCross = true;
|
||||
cont.removeChild(cont.lastChild);
|
||||
var ifr = dptop[d].createElement("iframe");
|
||||
ifr.hideFocus = true;
|
||||
ifr.frameBorder = 0;
|
||||
ifr.scrolling = 'no';
|
||||
ifr.src = "javascript:(function(){var d=document;d.open();d.domain='" + dm + "';})()";
|
||||
cont.appendChild(ifr);
|
||||
setTimeout(function () {
|
||||
doc = cont.lastChild.contentWindow[d];
|
||||
ddWrite()
|
||||
}, 97);
|
||||
return
|
||||
}
|
||||
ddWrite();
|
||||
|
||||
function ddWrite() {
|
||||
var realLang = cfg.getRealLang(),
|
||||
ver = '4.9.0b3';
|
||||
cont.lang = realLang.name;
|
||||
cont.skin = cfg.skin;
|
||||
var h = ['<head><script>', '', 'var doc=document, $d, $dp, $cfg=doc.cfg, $pdp = parent.$dp, $dt, $tdt, $sdt, $lastInput, $IE=$pdp.ie, $FF = $pdp.ff,$OPERA=$pdp.opera, $ny, $cMark = false;', 'if($cfg.eCont){$dp = {};for(var p in $pdp)$dp[p]=$pdp[p];}else{$dp=$pdp;};for(var p in $cfg){$dp[p]=$cfg[p];}', 'if(!$dp.isTouch)doc.oncontextmenu=function(){try{$c._fillQS(!$dp.has.d,1);showB($d.qsDivSel);}catch(e){};return false;};', '</script><script src=', jsPath, 'lang/', realLang.name, '.js?' + ver + ' charset=', realLang.charset, '></script>'];
|
||||
if (isCross) h[1] = 'document.domain="' + dm + '";';
|
||||
for (var i = 0; i < skinList.length; i++) {
|
||||
if (skinList[i].name == cfg.skin) {
|
||||
h.push('<link rel="stylesheet" type="text/css" href="' + jsPath + 'skin/' + skinList[i].name + '/datepicker.css?');
|
||||
h.push(ver);
|
||||
h.push('" charset="' + skinList[i].charset + '"/>')
|
||||
}
|
||||
}
|
||||
h.push('<script src="' + jsPath + 'calendar.js?');
|
||||
h.push(ver);
|
||||
h.push('"></script>');
|
||||
h.push('</head><body leftmargin="0" topmargin="0" tabindex=0></body></html>');
|
||||
h.push('<script>var t;t=t||setInterval(function(){if((typeof(doc.ready)=="boolean"&&doc.ready)||doc.readyState=="complete"){new My97DP();$cfg.onload();$c.autoSize();$cfg.setPos($dp);clearInterval(t);}},20);</script>');
|
||||
cfg.setPos = setPos;
|
||||
cfg.onload = dpLoaded;
|
||||
doc.write('<html>');
|
||||
doc.cfg = cfg;
|
||||
doc.write(h.join(''));
|
||||
doc.close()
|
||||
}
|
||||
}
|
||||
|
||||
function setPos(dp) {
|
||||
var l = dp.position.left,
|
||||
t = dp.position.top,
|
||||
el = dp.el;
|
||||
if (el == emptyEl) return;
|
||||
if (el != dp.srcEl && (display(el) == 'none' || el.type == 'hidden')) el = dp.srcEl;
|
||||
var objxy = getBound(el),
|
||||
mm = getAbsM(w),
|
||||
currWH = getWH(dptop),
|
||||
scr = getScroll(dptop),
|
||||
ddHeight = $dp.dd.offsetHeight,
|
||||
ddWidth = $dp.dd.offsetWidth;
|
||||
if (isNaN(t)) t = 0;
|
||||
if ((mm.topM + objxy.bottom + ddHeight > currWH.height) && (mm.topM + objxy.top - ddHeight > 0)) {
|
||||
t += scr.top + mm.topM + objxy.top - ddHeight - 2
|
||||
} else {
|
||||
t += scr.top + mm.topM + objxy.bottom;
|
||||
var offsetT = t - scr.top + ddHeight - currWH.height;
|
||||
if (offsetT > 0) t -= offsetT
|
||||
}
|
||||
if (isNaN(l)) l = 0;
|
||||
l += scr.left + Math.min(mm.leftM + objxy.left, currWH.width - ddWidth - 5) - ($IE ? 2 : 0);
|
||||
dp.dd.style.top = (t + 2) + 'px';
|
||||
dp.dd.style.left = l + 'px'
|
||||
}
|
||||
}
|
||||
})();
|
5
vue3-element-admin-thin/public/vender/date97/calendar.js
Normal file
14
vue3-element-admin-thin/public/vender/date97/lang/en.js
Normal file
@ -0,0 +1,14 @@
|
||||
var $lang={
|
||||
errAlertMsg: "Invalid date or the date out of range,redo or not?",
|
||||
aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
||||
aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
|
||||
aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
|
||||
clearStr: "Clear",
|
||||
todayStr: "Today",
|
||||
okStr: "OK",
|
||||
updateStr: "OK",
|
||||
timeStr: "Time",
|
||||
quickStr: "Quick Selection",
|
||||
err_1: 'MinDate Cannot be bigger than MaxDate!'
|
||||
}
|
14
vue3-element-admin-thin/public/vender/date97/lang/zh-cn.js
Normal file
@ -0,0 +1,14 @@
|
||||
var $lang={
|
||||
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?",
|
||||
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
|
||||
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
|
||||
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
|
||||
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
|
||||
clearStr: "\u6E05\u7A7A",
|
||||
todayStr: "\u4ECA\u5929",
|
||||
okStr: "\u786E\u5B9A",
|
||||
updateStr: "\u786E\u5B9A",
|
||||
timeStr: "\u65F6\u95F4",
|
||||
quickStr: "\u5FEB\u901F\u9009\u62E9",
|
||||
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!'
|
||||
}
|
14
vue3-element-admin-thin/public/vender/date97/lang/zh-tw.js
Normal file
@ -0,0 +1,14 @@
|
||||
var $lang={
|
||||
errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
|
||||
aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
|
||||
aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
|
||||
aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
|
||||
aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
|
||||
clearStr: "\u6E05\u7A7A",
|
||||
todayStr: "\u4ECA\u5929",
|
||||
okStr: "\u78BA\u5B9A",
|
||||
updateStr: "\u78BA\u5B9A",
|
||||
timeStr: "\u6642\u9593",
|
||||
quickStr: "\u5FEB\u901F\u9078\u64C7",
|
||||
err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
.Wdate{
|
||||
border:#999 1px solid;
|
||||
height:20px;
|
||||
background:#fff url(datePicker.gif) no-repeat right;
|
||||
}
|
||||
.Wdate::-ms-clear{display:none;}
|
||||
|
||||
.WdateFmtErr{
|
||||
font-weight:bold;
|
||||
color:red;
|
||||
}
|
BIN
vue3-element-admin-thin/public/vender/date97/skin/datePicker.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
@ -0,0 +1,328 @@
|
||||
/**
|
||||
* yyh & kimi from mb518.com
|
||||
* 2019-3-25
|
||||
**/
|
||||
.WdateDiv {
|
||||
width: 216px;
|
||||
background-color: #FFF;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #cecece;
|
||||
}
|
||||
|
||||
.WdateDiv2 {
|
||||
width: 432px;
|
||||
}
|
||||
|
||||
.WdateDiv > div:nth-child(3) {
|
||||
padding: 0px 0.375em;
|
||||
}
|
||||
|
||||
.WdateDiv .NavImg a {
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
.WdateDiv .NavImgll a {
|
||||
float: left;
|
||||
background: url(img.gif) no-repeat;
|
||||
background-size: 400%;
|
||||
}
|
||||
|
||||
.WdateDiv .NavImgl a {
|
||||
float: left;
|
||||
background: url(img.gif) no-repeat -1em 0;
|
||||
background-size: 400%;
|
||||
}
|
||||
|
||||
.WdateDiv .NavImgr a {
|
||||
float: right;
|
||||
background: url(img.gif) no-repeat -2em 0;
|
||||
background-size: 400%;
|
||||
}
|
||||
|
||||
.WdateDiv .NavImgrr a {
|
||||
float: right;
|
||||
background: url(img.gif) no-repeat -3em 0;
|
||||
background-size: 400%;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTitle {
|
||||
height: 1.875em;
|
||||
padding: 0.1875em 0.3125em;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTitle > div:nth-child(3),
|
||||
.WdateDiv #dpTitle > div:nth-child(4) {
|
||||
margin: 0px 0.8125em;
|
||||
}
|
||||
|
||||
.WdateDiv .yminput {
|
||||
margin-top: 0.375em;
|
||||
text-align: center;
|
||||
border: 0px;
|
||||
height: 1.75em;
|
||||
width: 3.125em;
|
||||
color: #333;
|
||||
background-color: #eefaff;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
font-size: 0.8125em;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.WdateDiv .yminputfocus {
|
||||
font-size: 0.8125em;
|
||||
margin-top: 0.375em;
|
||||
text-align: center;
|
||||
border: 0;
|
||||
color: #333;
|
||||
height: 1.25em;
|
||||
width: 3.125em;
|
||||
outline: none;
|
||||
background-color: #eefaff;
|
||||
}
|
||||
|
||||
.WdateDiv .menuSel {
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
background-color: #FFFFFF;
|
||||
display: none;
|
||||
padding: 0.3125em;
|
||||
border-radius: 3px;
|
||||
box-shadow: rgb(204, 204, 204) 0px 0px 2px 2px;
|
||||
}
|
||||
|
||||
.WdateDiv .menu {
|
||||
cursor: pointer;
|
||||
background-color: #fff;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.WdateDiv .menuOn {
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
background-color: #d6f2ff;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.WdateDiv .invalidMenu {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.WdateDiv .YMenu {
|
||||
margin-top: 1.875em;
|
||||
}
|
||||
|
||||
.WdateDiv .MMenu {
|
||||
margin-top: 1.875em;
|
||||
box-shadow: rgb(204, 204, 204) 0px 0px 2px 2px;
|
||||
padding: 0.3125em;
|
||||
border-radius: 3px;
|
||||
*width: 3.875em;
|
||||
}
|
||||
|
||||
.WdateDiv .hhMenu {
|
||||
margin-top: -5.625em;
|
||||
margin-left: 1.625em;
|
||||
}
|
||||
|
||||
.WdateDiv .mmMenu {
|
||||
margin-top: -2.875em;
|
||||
margin-left: 1.625em;
|
||||
}
|
||||
|
||||
.WdateDiv .ssMenu {
|
||||
margin-top: -1.5em;
|
||||
margin-left: 1.625em;
|
||||
}
|
||||
|
||||
.WdateDiv .Wweek {
|
||||
text-align: center;
|
||||
background: #DAF3F5;
|
||||
border-right: #BDEBEE 1px solid;
|
||||
}
|
||||
|
||||
.WdateDiv .MTitle {
|
||||
background-color: #f3f3f3;
|
||||
border-radius: 5px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayTable2 {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayTable2 table {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayTable {
|
||||
font-size: 0.75em;
|
||||
line-height: 1.5em;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayTable td {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #f3f3f3;
|
||||
padding: 0.1875em 0;
|
||||
}
|
||||
|
||||
.WdateDiv .Wday {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayOn {
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
background-color: #C0EBEF;
|
||||
}
|
||||
|
||||
.WdateDiv .Wwday {
|
||||
cursor: pointer;
|
||||
color: #ab1e1e;
|
||||
}
|
||||
|
||||
.WdateDiv .WwdayOn {
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
background-color: #C0EBEF;
|
||||
}
|
||||
|
||||
.WdateDiv .Wtoday {
|
||||
cursor: pointer;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.WdateDiv .Wselday {
|
||||
background-color: #35baf6;
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.WdateDiv .WspecialDay {
|
||||
background-color: #66F4DF;
|
||||
}
|
||||
|
||||
.WdateDiv .WotherDay {
|
||||
cursor: pointer;
|
||||
color: #8585e1;
|
||||
}
|
||||
|
||||
.WdateDiv .WotherDayOn {
|
||||
cursor: pointer;
|
||||
background-color: #d6f2ff;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.WdateDiv .WinvalidDay {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime {
|
||||
margin: 0.1875em 0 0.1875em 0.625em;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime #dpTimeStr {
|
||||
margin-left: 0.0625em;
|
||||
color: #333;
|
||||
font-size: 0.75em;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime table:nth-child(4) {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime table:nth-child(-n+3) {
|
||||
font-size: 0.75em;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime input {
|
||||
-webkit-appearance: none;
|
||||
font-size: 0.75em;
|
||||
height: 1.25em;
|
||||
width: 1.875em;
|
||||
text-align: center;
|
||||
color: #333;
|
||||
border: 0;
|
||||
background-color: #eefaff;
|
||||
border-radius: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime input:disabled {
|
||||
background-color: #e7e7e7;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime .tB {
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime .tE {
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime .tm {
|
||||
width: 0.9375em;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
/*.WdateDiv #dpTime button {
|
||||
font-size: 0.75em;
|
||||
}*/
|
||||
|
||||
.WdateDiv #dpTime #dpTimeUp {
|
||||
height: 0.625em;
|
||||
width: 0.8125em;
|
||||
border: 0px;
|
||||
background: url(img.gif) no-repeat -2em -1em;
|
||||
background-size: 450%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime #dpTimeDown {
|
||||
height: 0.625em;
|
||||
width: 0.8125em;
|
||||
border: 0px;
|
||||
background: url(img.gif) no-repeat -2em -1.625em;
|
||||
background-size: 450%;
|
||||
}
|
||||
|
||||
.WdateDiv #dpQS {
|
||||
float: left;
|
||||
margin-right: 0.1875em;
|
||||
margin-top: 0.3125em;
|
||||
background: url(img.gif) no-repeat 0px -1em;
|
||||
background-size: 320%;
|
||||
width: 1.25em;
|
||||
height: 1.25em;
|
||||
cursor: pointer;
|
||||
margin-left: 0.375em;
|
||||
}
|
||||
|
||||
.WdateDiv #dpControl {
|
||||
text-align: right;
|
||||
margin-top: 0.1875em;
|
||||
padding: 0 0.3125em;
|
||||
padding-bottom: 0.1875em;
|
||||
}
|
||||
|
||||
.WdateDiv .dpButton {
|
||||
font-size: 0.75em;
|
||||
-webkit-appearance: none;
|
||||
padding-top: 0;
|
||||
height: 1.75em;
|
||||
width: 2.8125em;
|
||||
border: 0;
|
||||
margin-top: 0.1875em;
|
||||
margin-right: 0.1875em;
|
||||
background: #35baf6;
|
||||
color: #fff;
|
||||
border-radius: 0;
|
||||
}
|
After Width: | Height: | Size: 2.4 KiB |
@ -0,0 +1,309 @@
|
||||
/*
|
||||
* My97 DatePicker 4.7
|
||||
* Ƥ<><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:ext
|
||||
* Ƥ<><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:CssRain
|
||||
* <20><><EFBFBD><EFBFBD>blog:http://www.CssRain.cn
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:cssrain@gmail.com
|
||||
*/
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DIV */
|
||||
.WdateDiv{
|
||||
width:180px;
|
||||
background-color:#fff;
|
||||
border:1px solid #718BB7;
|
||||
}
|
||||
/* ˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD> */
|
||||
.WdateDiv2{
|
||||
width:360px;
|
||||
}
|
||||
.WdateDiv *{font-size:9pt;}
|
||||
|
||||
/****************************
|
||||
* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> ȫ<><C8AB><EFBFBD><EFBFBD>A<EFBFBD><41>ǩ
|
||||
***************************/
|
||||
.WdateDiv .NavImg a{
|
||||
margin-top:3px;
|
||||
cursor:pointer;
|
||||
display:block;
|
||||
width:15px;
|
||||
height:15px;
|
||||
}
|
||||
.WdateDiv .NavImgll a{
|
||||
background:url(left-btn2.gif) no-repeat center center;
|
||||
float:left;
|
||||
margin-left:2px;
|
||||
}
|
||||
.WdateDiv .NavImgl a{
|
||||
background:url(left-btn.gif) no-repeat center center;
|
||||
float:left;
|
||||
margin-left:2px;
|
||||
}
|
||||
.WdateDiv .NavImgr a{
|
||||
background:url(right-btn.gif) no-repeat center center;
|
||||
float:right;
|
||||
margin-right:2px;
|
||||
}
|
||||
.WdateDiv .NavImgrr a{
|
||||
background:url(right-btn2.gif) no-repeat center center;
|
||||
float:right;
|
||||
margin-right:2px;
|
||||
}
|
||||
|
||||
/****************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
***************************/
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD> DIV */
|
||||
.WdateDiv #dpTitle{
|
||||
height:22px;
|
||||
background:transparent url(hd-sprite.gif) repeat-x scroll 0 -83px;
|
||||
color:#FFFFFF;
|
||||
font-family:"sans serif",tahoma,verdana,helvetica;
|
||||
font-size:12px;
|
||||
font-size-adjust:none;
|
||||
font-stretch:normal;
|
||||
font-style:normal;
|
||||
font-variant:normal;
|
||||
font-weight:bold;
|
||||
padding-top:2px;
|
||||
}
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INPUT */
|
||||
.WdateDiv .yminput{
|
||||
margin-top:2px;
|
||||
text-align:center;
|
||||
border:0px;
|
||||
height:20px;
|
||||
width:50px;
|
||||
color:#FFF;
|
||||
background-color:transparent;
|
||||
cursor:pointer;
|
||||
}
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʽ INPUT */
|
||||
.WdateDiv .yminputfocus{
|
||||
margin-top:2px;
|
||||
text-align:center;
|
||||
border:#939393 1px solid;
|
||||
font-weight:bold;
|
||||
color:#034c50;
|
||||
height:16px;
|
||||
width:50px;
|
||||
}
|
||||
/* <20>˵<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD> DIV */
|
||||
.WdateDiv .menuSel{
|
||||
z-index:1;
|
||||
position:absolute;
|
||||
background-color:#FFFFFF;
|
||||
border:1px solid #718BB7;
|
||||
display:none;
|
||||
}
|
||||
/* <20>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>ʽ TD */
|
||||
.WdateDiv .menu{
|
||||
cursor:pointer;
|
||||
background-color:#fff;
|
||||
color:#11777C;
|
||||
}
|
||||
/* <20>˵<EFBFBD><CBB5><EFBFBD>mouseover<65><72>ʽ TD */
|
||||
.WdateDiv .menuOn{
|
||||
cursor:pointer;
|
||||
background-color: #B3CEEF;
|
||||
}
|
||||
/* <20>˵<EFBFBD><CBB5><EFBFBD>Чʱ<D0A7><CAB1><EFBFBD><EFBFBD>ʽ TD */
|
||||
.WdateDiv .invalidMenu{
|
||||
color:#aaa;
|
||||
}
|
||||
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB> DIV */
|
||||
.WdateDiv .YMenu{
|
||||
margin-top:16px;
|
||||
}
|
||||
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB> DIV */
|
||||
.WdateDiv .MMenu{
|
||||
margin-top:16px;
|
||||
*width:62px;
|
||||
}
|
||||
/* ʱѡ<CAB1><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> DIV */
|
||||
.WdateDiv .hhMenu{
|
||||
margin-top:-90px;
|
||||
margin-left:26px;
|
||||
}
|
||||
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> DIV */
|
||||
.WdateDiv .mmMenu{
|
||||
margin-top:-46px;
|
||||
margin-left:26px;
|
||||
}
|
||||
/* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> DIV */
|
||||
.WdateDiv .ssMenu{
|
||||
margin-top:-24px;
|
||||
margin-left:26px;
|
||||
}
|
||||
|
||||
/****************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
***************************/
|
||||
.WdateDiv .Wweek {
|
||||
text-align:center;
|
||||
background:#DAF3F5;
|
||||
border-right:#BDEBEE 1px solid;
|
||||
}
|
||||
/****************************
|
||||
* <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
***************************/
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR */
|
||||
.WdateDiv .MTitle{
|
||||
color:#233D6D;
|
||||
background:#DFECFB url(glass-bg.gif) repeat-x scroll left top;
|
||||
color:#233D6D;
|
||||
cursor:default;
|
||||
font-size:10px;
|
||||
padding-top:2px;
|
||||
}
|
||||
.WdateDiv .MTitle td{
|
||||
border-bottom:1px solid #A3BAD9;
|
||||
}
|
||||
.WdateDiv .WdayTable2{
|
||||
border-collapse:collapse;
|
||||
border:black 1px solid;
|
||||
}
|
||||
.WdateDiv .WdayTable2 table{
|
||||
border:0;
|
||||
}
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TABLE */
|
||||
.WdateDiv .WdayTable{
|
||||
line-height:20px;
|
||||
color:black;
|
||||
}
|
||||
.WdateDiv .WdayTable td{
|
||||
text-align:center;
|
||||
}
|
||||
/* <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>ʽ TD */
|
||||
.WdateDiv .Wday{
|
||||
cursor:pointer;
|
||||
}
|
||||
/* <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>mouseover<65><72>ʽ TD */
|
||||
.WdateDiv .WdayOn{
|
||||
cursor:pointer;
|
||||
background-color:#B3CEEF;
|
||||
}
|
||||
/* <20><>ĩ<EFBFBD><C4A9><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>ʽ TD */
|
||||
.WdateDiv .Wwday{
|
||||
cursor:pointer;
|
||||
color:#ab1e1e;
|
||||
}
|
||||
/* <20><>ĩ<EFBFBD><C4A9><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>mouseover<65><72>ʽ TD */
|
||||
.WdateDiv .WwdayOn{
|
||||
cursor:pointer;
|
||||
background-color:#B3CEEF;
|
||||
}
|
||||
.WdateDiv .Wtoday{
|
||||
cursor:pointer;
|
||||
color:red;
|
||||
}
|
||||
.WdateDiv .Wselday{
|
||||
background-color:#B3CEEF;
|
||||
}
|
||||
.WdateDiv .WspecialDay{
|
||||
background-color:#66F4DF;
|
||||
}
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>·ݵ<C2B7><DDB5><EFBFBD><EFBFBD><EFBFBD> */
|
||||
.WdateDiv .WotherDay{
|
||||
cursor:pointer;
|
||||
color:#AAAAAA;
|
||||
}
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>·ݵ<C2B7><DDB5><EFBFBD><EFBFBD><EFBFBD>mouseover<65><72>ʽ */
|
||||
.WdateDiv .WotherDayOn{
|
||||
cursor:pointer;
|
||||
background-color:#B3CEEF;
|
||||
}
|
||||
/* <20><>Ч<EFBFBD><D0A7><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
.WdateDiv .WinvalidDay{
|
||||
color:#aaa;
|
||||
}
|
||||
|
||||
/****************************
|
||||
* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
***************************/
|
||||
/* ʱ<><CAB1><EFBFBD><EFBFBD> DIV */
|
||||
.WdateDiv #dpTime{
|
||||
width:120px;
|
||||
text-align:left;
|
||||
margin-left:32px;
|
||||
height:20px;
|
||||
line-height:20px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPAN */
|
||||
.WdateDiv #dpTime #dpTimeStr{
|
||||
margin-left:1px;
|
||||
color:#233D6D;
|
||||
}
|
||||
/* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> INPUT */
|
||||
.WdateDiv #dpTime input{
|
||||
height:16px;
|
||||
width:18px;
|
||||
text-align:center;
|
||||
color:#333;
|
||||
border:#A3BAD9 1px solid;
|
||||
}
|
||||
/* ʱ<><CAB1> ʱ INPUT */
|
||||
.WdateDiv #dpTime .tB{
|
||||
border-right:0px;
|
||||
}
|
||||
/* ʱ<><CAB1> <20>ֺͼ<D6BA><CDBC><EFBFBD><EFBFBD><EFBFBD> ':' INPUT */
|
||||
.WdateDiv #dpTime .tE{
|
||||
border-left:0;
|
||||
border-right:0;
|
||||
}
|
||||
/* ʱ<><CAB1> <20><> INPUT */
|
||||
.WdateDiv #dpTime .tm{
|
||||
width:7px;
|
||||
border-left:0;
|
||||
border-right:0;
|
||||
}
|
||||
/* ʱ<><CAB1><EFBFBD>ұߵ<D2B1><DFB5><EFBFBD><EFBFBD>ϰ<EFBFBD>ť BUTTON */
|
||||
.WdateDiv #dpTime #dpTimeUp{
|
||||
height:8px;
|
||||
width:13px;
|
||||
border:0px;
|
||||
background:url(img.gif) no-repeat -32px -16px;
|
||||
cursor:pointer;
|
||||
margin-bottom:0;
|
||||
padding-bottom:0;
|
||||
}
|
||||
/* ʱ<><CAB1><EFBFBD>ұߵ<D2B1><DFB5><EFBFBD><EFBFBD>°<EFBFBD>ť BUTTON */
|
||||
.WdateDiv #dpTime #dpTimeDown{
|
||||
height:8px;
|
||||
width:13px;
|
||||
border:0px;
|
||||
background:url(img.gif) no-repeat -48px -16px;
|
||||
cursor:pointer;
|
||||
margin-top:0;
|
||||
padding-top:0;
|
||||
}
|
||||
/****************************
|
||||
* <20><><EFBFBD><EFBFBD>
|
||||
***************************/
|
||||
.WdateDiv #dpQS {
|
||||
float:left;
|
||||
margin-left:3px;
|
||||
margin-top:9px;
|
||||
background:url(dateselect.gif) no-repeat;
|
||||
width:20px;
|
||||
height:20px;
|
||||
cursor:pointer;
|
||||
}
|
||||
.WdateDiv #dpControl {
|
||||
text-align:right;
|
||||
margin-top:3px;
|
||||
background:#DFECFB url(glass-bg.gif) repeat-x scroll left top;
|
||||
border-top:1px solid #A3BAD9;
|
||||
padding:4px;
|
||||
}
|
||||
.WdateDiv .dpButton{
|
||||
width:44px;
|
||||
height:22px;
|
||||
background:#083772 none repeat scroll 0 0;
|
||||
border-color:#3366CC #000055 #000055 #3366CC;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
color:white;
|
||||
cursor:pointer;
|
||||
|
||||
}
|
After Width: | Height: | Size: 190 B |
After Width: | Height: | Size: 873 B |
After Width: | Height: | Size: 1.1 KiB |
BIN
vue3-element-admin-thin/public/vender/date97/skin/ext/img.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 870 B |
After Width: | Height: | Size: 113 B |
After Width: | Height: | Size: 871 B |
After Width: | Height: | Size: 113 B |
After Width: | Height: | Size: 307 B |
@ -0,0 +1,256 @@
|
||||
/*
|
||||
* My97 DatePicker 4.8 Skin:whyGreen
|
||||
*/
|
||||
.WdateDiv{
|
||||
width:180px;
|
||||
background-color:#fff;
|
||||
border:#C5E1E4 1px solid;
|
||||
padding:2px;
|
||||
}
|
||||
|
||||
.WdateDiv2{
|
||||
width:360px;
|
||||
}
|
||||
.WdateDiv *{font-size:9pt;}
|
||||
|
||||
.WdateDiv .NavImg a{
|
||||
cursor:pointer;
|
||||
display:block;
|
||||
width:16px;
|
||||
height:16px;
|
||||
margin-top:1px;
|
||||
}
|
||||
|
||||
.WdateDiv .NavImgll a{
|
||||
float:left;
|
||||
background:url(img.gif) no-repeat;
|
||||
}
|
||||
.WdateDiv .NavImgl a{
|
||||
float:left;
|
||||
background:url(img.gif) no-repeat -16px 0px;
|
||||
}
|
||||
.WdateDiv .NavImgr a{
|
||||
float:right;
|
||||
background:url(img.gif) no-repeat -32px 0px;
|
||||
}
|
||||
.WdateDiv .NavImgrr a{
|
||||
float:right;
|
||||
background:url(img.gif) no-repeat -48px 0px;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTitle{
|
||||
height:24px;
|
||||
padding:1px;
|
||||
border:#c5d9e8 1px solid;
|
||||
background:url(bg.jpg);
|
||||
margin-bottom:2px;
|
||||
}
|
||||
|
||||
.WdateDiv .yminput{
|
||||
margin-top:2px;
|
||||
text-align:center;
|
||||
border:0px;
|
||||
height:20px;
|
||||
width:50px;
|
||||
color:#034c50;
|
||||
background-color:transparent;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.WdateDiv .yminputfocus{
|
||||
margin-top:2px;
|
||||
text-align:center;
|
||||
border:#939393 1px solid;
|
||||
font-weight:bold;
|
||||
color:#034c50;
|
||||
height:20px;
|
||||
width:50px;
|
||||
}
|
||||
|
||||
.WdateDiv .menuSel{
|
||||
z-index:1;
|
||||
position:absolute;
|
||||
background-color:#FFFFFF;
|
||||
border:#A3C6C8 1px solid;
|
||||
display:none;
|
||||
}
|
||||
|
||||
.WdateDiv .menu{
|
||||
cursor:pointer;
|
||||
background-color:#fff;
|
||||
color:#11777C;
|
||||
}
|
||||
|
||||
.WdateDiv .menuOn{
|
||||
cursor:pointer;
|
||||
background-color:#BEEBEE;
|
||||
}
|
||||
|
||||
.WdateDiv .invalidMenu{
|
||||
color:#aaa;
|
||||
}
|
||||
|
||||
.WdateDiv .YMenu{
|
||||
margin-top:20px;
|
||||
}
|
||||
|
||||
.WdateDiv .MMenu{
|
||||
margin-top:20px;
|
||||
*width:62px;
|
||||
}
|
||||
|
||||
.WdateDiv .hhMenu{
|
||||
margin-top:-90px;
|
||||
margin-left:26px;
|
||||
}
|
||||
|
||||
.WdateDiv .mmMenu{
|
||||
margin-top:-46px;
|
||||
margin-left:26px;
|
||||
}
|
||||
|
||||
.WdateDiv .ssMenu{
|
||||
margin-top:-24px;
|
||||
margin-left:26px;
|
||||
}
|
||||
|
||||
.WdateDiv .Wweek {
|
||||
text-align:center;
|
||||
background:#DAF3F5;
|
||||
border-right:#BDEBEE 1px solid;
|
||||
}
|
||||
|
||||
.WdateDiv .MTitle{
|
||||
color:#13777e;
|
||||
background-color:#bdebee;
|
||||
}
|
||||
.WdateDiv .WdayTable2{
|
||||
border-collapse:collapse;
|
||||
border:#BEE9F0 1px solid;
|
||||
}
|
||||
.WdateDiv .WdayTable2 table{
|
||||
border:0;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayTable{
|
||||
line-height:20px;
|
||||
color:#13777e;
|
||||
background-color:#edfbfb;
|
||||
border:#BEE9F0 1px solid;
|
||||
}
|
||||
.WdateDiv .WdayTable td{
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.WdateDiv .Wday{
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.WdateDiv .WdayOn{
|
||||
cursor:pointer;
|
||||
background-color:#74d2d9 ;
|
||||
}
|
||||
|
||||
.WdateDiv .Wwday{
|
||||
cursor:pointer;
|
||||
color:#ab1e1e;
|
||||
}
|
||||
|
||||
.WdateDiv .WwdayOn{
|
||||
cursor:pointer;
|
||||
background-color:#74d2d9;
|
||||
}
|
||||
.WdateDiv .Wtoday{
|
||||
cursor:pointer;
|
||||
color:blue;
|
||||
}
|
||||
.WdateDiv .Wselday{
|
||||
background-color:#A7E2E7;
|
||||
}
|
||||
.WdateDiv .WspecialDay{
|
||||
background-color:#66F4DF;
|
||||
}
|
||||
|
||||
.WdateDiv .WotherDay{
|
||||
cursor:pointer;
|
||||
color:#0099CC;
|
||||
}
|
||||
|
||||
.WdateDiv .WotherDayOn{
|
||||
cursor:pointer;
|
||||
background-color:#C0EBEF;
|
||||
}
|
||||
|
||||
.WdateDiv .WinvalidDay{
|
||||
color:#aaa;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime{
|
||||
float:left;
|
||||
margin-top:3px;
|
||||
margin-right:30px;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime #dpTimeStr{
|
||||
margin-left:1px;
|
||||
color:#497F7F;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime input{
|
||||
height:20px;
|
||||
width:18px;
|
||||
text-align:center;
|
||||
color:#333;
|
||||
border:#61CAD0 1px solid;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime .tB{
|
||||
border-right:0px;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime .tE{
|
||||
border-left:0;
|
||||
border-right:0;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime .tm{
|
||||
width:7px;
|
||||
border-left:0;
|
||||
border-right:0;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime #dpTimeUp{
|
||||
height:10px;
|
||||
width:13px;
|
||||
border:0px;
|
||||
background:url(img.gif) no-repeat -32px -16px;
|
||||
}
|
||||
|
||||
.WdateDiv #dpTime #dpTimeDown{
|
||||
height:10px;
|
||||
width:13px;
|
||||
border:0px;
|
||||
background:url(img.gif) no-repeat -48px -16px;
|
||||
}
|
||||
|
||||
.WdateDiv #dpQS {
|
||||
float:left;
|
||||
margin-right:3px;
|
||||
margin-top:3px;
|
||||
background:url(img.gif) no-repeat 0px -16px;
|
||||
width:20px;
|
||||
height:20px;
|
||||
cursor:pointer;
|
||||
}
|
||||
.WdateDiv #dpControl {
|
||||
text-align:right;
|
||||
margin-top:3px;
|
||||
}
|
||||
.WdateDiv .dpButton{
|
||||
height:20px;
|
||||
width:45px;
|
||||
margin-top:2px;
|
||||
border:#38B1B9 1px solid;
|
||||
background-color:#CFEBEE;
|
||||
color:#08575B;
|
||||
}
|
After Width: | Height: | Size: 1.6 KiB |
1627
vue3-element-admin-thin/public/vender/diff.js
Normal file
31187
vue3-element-admin-thin/public/vender/fabric.js
Normal file
BIN
vue3-element-admin-thin/public/vender/fonts/mui.ttf
Normal file
190
vue3-element-admin-thin/public/vender/jquery/jquery.base64.js
Normal file
@ -0,0 +1,190 @@
|
||||
/*jslint adsafe: false, bitwise: true, browser: true, cap: false, css: false,
|
||||
debug: false, devel: true, eqeqeq: true, es5: false, evil: false,
|
||||
forin: false, fragment: false, immed: true, laxbreak: false, newcap: true,
|
||||
nomen: false, on: false, onevar: true, passfail: false, plusplus: true,
|
||||
regexp: false, rhino: true, safe: false, strict: false, sub: false,
|
||||
undef: true, white: false, widget: false, windows: false */
|
||||
/*global jQuery: false, window: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
* Original code (c) 2010 Nick Galbreath
|
||||
* http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
|
||||
*
|
||||
* jQuery port (c) 2010 Carlo Zottmann
|
||||
* http://github.com/carlo/jquery-base64
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* base64 encode/decode compatible with window.btoa/atob
|
||||
*
|
||||
* window.atob/btoa is a Firefox extension to convert binary data (the "b")
|
||||
* to base64 (ascii, the "a").
|
||||
*
|
||||
* It is also found in Safari and Chrome. It is not available in IE.
|
||||
*
|
||||
* if (!window.btoa) window.btoa = $.base64.encode
|
||||
* if (!window.atob) window.atob = $.base64.decode
|
||||
*
|
||||
* The original spec's for atob/btoa are a bit lacking
|
||||
* https://developer.mozilla.org/en/DOM/window.atob
|
||||
* https://developer.mozilla.org/en/DOM/window.btoa
|
||||
*
|
||||
* window.btoa and $.base64.encode takes a string where charCodeAt is [0,255]
|
||||
* If any character is not [0,255], then an exception is thrown.
|
||||
*
|
||||
* window.atob and $.base64.decode take a base64-encoded string
|
||||
* If the input length is not a multiple of 4, or contains invalid characters
|
||||
* then an exception is thrown.
|
||||
*/
|
||||
|
||||
jQuery.base64 = ( function( $ ) {
|
||||
|
||||
var _PADCHAR = "=",
|
||||
_ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
|
||||
_VERSION = "1.0";
|
||||
|
||||
|
||||
function _getbyte64( s, i ) {
|
||||
// This is oddly fast, except on Chrome/V8.
|
||||
// Minimal or no improvement in performance by using a
|
||||
// object with properties mapping chars to value (eg. 'A': 0)
|
||||
|
||||
var idx = _ALPHA.indexOf( s.charAt( i ) );
|
||||
|
||||
if ( idx === -1 ) {
|
||||
throw "Cannot decode base64";
|
||||
}
|
||||
|
||||
return idx;
|
||||
}
|
||||
|
||||
|
||||
function _decode( s ) {
|
||||
var pads = 0,
|
||||
i,
|
||||
b10,
|
||||
imax = s.length,
|
||||
x = [];
|
||||
|
||||
s = String( s );
|
||||
|
||||
if ( imax === 0 ) {
|
||||
return s;
|
||||
}
|
||||
|
||||
if ( imax % 4 !== 0 ) {
|
||||
throw "Cannot decode base64";
|
||||
}
|
||||
|
||||
if ( s.charAt( imax - 1 ) === _PADCHAR ) {
|
||||
pads = 1;
|
||||
|
||||
if ( s.charAt( imax - 2 ) === _PADCHAR ) {
|
||||
pads = 2;
|
||||
}
|
||||
|
||||
// either way, we want to ignore this last block
|
||||
imax -= 4;
|
||||
}
|
||||
|
||||
for ( i = 0; i < imax; i += 4 ) {
|
||||
b10 = ( _getbyte64( s, i ) << 18 ) | ( _getbyte64( s, i + 1 ) << 12 ) | ( _getbyte64( s, i + 2 ) << 6 ) | _getbyte64( s, i + 3 );
|
||||
x.push( String.fromCharCode( b10 >> 16, ( b10 >> 8 ) & 0xff, b10 & 0xff ) );
|
||||
}
|
||||
|
||||
switch ( pads ) {
|
||||
case 1:
|
||||
b10 = ( _getbyte64( s, i ) << 18 ) | ( _getbyte64( s, i + 1 ) << 12 ) | ( _getbyte64( s, i + 2 ) << 6 );
|
||||
x.push( String.fromCharCode( b10 >> 16, ( b10 >> 8 ) & 0xff ) );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
b10 = ( _getbyte64( s, i ) << 18) | ( _getbyte64( s, i + 1 ) << 12 );
|
||||
x.push( String.fromCharCode( b10 >> 16 ) );
|
||||
break;
|
||||
}
|
||||
|
||||
return x.join( "" );
|
||||
}
|
||||
|
||||
|
||||
function _getbyte( s, i ) {
|
||||
var x = s.charCodeAt( i );
|
||||
|
||||
if ( x > 255 ) {
|
||||
throw "INVALID_CHARACTER_ERR: DOM Exception 5";
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
function _encode( s ) {
|
||||
if ( arguments.length !== 1 ) {
|
||||
throw "SyntaxError: exactly one argument required";
|
||||
}
|
||||
|
||||
s = String( s );
|
||||
|
||||
var i,
|
||||
b10,
|
||||
x = [],
|
||||
imax = s.length - s.length % 3;
|
||||
|
||||
if ( s.length === 0 ) {
|
||||
return s;
|
||||
}
|
||||
|
||||
for ( i = 0; i < imax; i += 3 ) {
|
||||
b10 = ( _getbyte( s, i ) << 16 ) | ( _getbyte( s, i + 1 ) << 8 ) | _getbyte( s, i + 2 );
|
||||
x.push( _ALPHA.charAt( b10 >> 18 ) );
|
||||
x.push( _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) );
|
||||
x.push( _ALPHA.charAt( ( b10 >> 6 ) & 0x3f ) );
|
||||
x.push( _ALPHA.charAt( b10 & 0x3f ) );
|
||||
}
|
||||
|
||||
switch ( s.length - imax ) {
|
||||
case 1:
|
||||
b10 = _getbyte( s, i ) << 16;
|
||||
x.push( _ALPHA.charAt( b10 >> 18 ) + _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) + _PADCHAR + _PADCHAR );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
b10 = ( _getbyte( s, i ) << 16 ) | ( _getbyte( s, i + 1 ) << 8 );
|
||||
x.push( _ALPHA.charAt( b10 >> 18 ) + _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) + _ALPHA.charAt( ( b10 >> 6 ) & 0x3f ) + _PADCHAR );
|
||||
break;
|
||||
}
|
||||
|
||||
return x.join( "" );
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
decode: _decode,
|
||||
encode: _encode,
|
||||
VERSION: _VERSION
|
||||
};
|
||||
|
||||
}( jQuery ) );
|
||||
|
10872
vue3-element-admin-thin/public/vender/jquery/jquery.js
vendored
Normal file
255
vue3-element-admin-thin/public/vender/jquery/jquery.print.js
Normal file
@ -0,0 +1,255 @@
|
||||
/* @license
|
||||
* jQuery.print, version 1.5.1
|
||||
* (c) Sathvik Ponangi, Doers' Guild
|
||||
* Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
|
||||
*--------------------------------------------------------------------------*/
|
||||
(function ($) {
|
||||
"use strict";
|
||||
// A nice closure for our definitions
|
||||
function getjQueryObject(string) {
|
||||
// Make string a vaild jQuery thing
|
||||
var jqObj = $("");
|
||||
try {
|
||||
jqObj = $(string)
|
||||
.clone();
|
||||
} catch (e) {
|
||||
jqObj = $("<span />")
|
||||
.html(string);
|
||||
}
|
||||
return jqObj;
|
||||
}
|
||||
|
||||
function printFrame(frameWindow, content, options) {
|
||||
// Print the selected window/iframe
|
||||
var def = $.Deferred();
|
||||
try {
|
||||
frameWindow = frameWindow.contentWindow || frameWindow.contentDocument || frameWindow;
|
||||
var wdoc = frameWindow.document || frameWindow.contentDocument || frameWindow;
|
||||
if(options.doctype) {
|
||||
wdoc.write(options.doctype);
|
||||
}
|
||||
wdoc.write(content);
|
||||
wdoc.close();
|
||||
var printed = false;
|
||||
var callPrint = function () {
|
||||
if(printed) {
|
||||
return;
|
||||
}
|
||||
// Fix for IE : Allow it to render the iframe
|
||||
frameWindow.focus();
|
||||
try {
|
||||
// Fix for IE11 - printng the whole page instead of the iframe content
|
||||
if (!frameWindow.document.execCommand('print', false, null)) {
|
||||
// document.execCommand returns false if it failed -http://stackoverflow.com/a/21336448/937891
|
||||
frameWindow.print();
|
||||
}
|
||||
// focus body as it is losing focus in iPad and content not getting printed
|
||||
$('body').focus();
|
||||
} catch (e) {
|
||||
frameWindow.print();
|
||||
}
|
||||
frameWindow.close();
|
||||
printed = true;
|
||||
def.resolve();
|
||||
}
|
||||
// Print once the frame window loads - seems to work for the new-window option but unreliable for the iframe
|
||||
$(frameWindow).on("load", callPrint);
|
||||
// Fallback to printing directly if the frame doesn't fire the load event for whatever reason
|
||||
setTimeout(callPrint, options.timeout);
|
||||
} catch (err) {
|
||||
def.reject(err);
|
||||
}
|
||||
return def;
|
||||
}
|
||||
|
||||
function printContentInIFrame(content, options) {
|
||||
var $iframe = $(options.iframe + "");
|
||||
var iframeCount = $iframe.length;
|
||||
if (iframeCount === 0) {
|
||||
// Create a new iFrame if none is given
|
||||
$iframe = $('<iframe height="0" width="0" border="0" wmode="Opaque"/>')
|
||||
.prependTo('body')
|
||||
.css({
|
||||
"position": "absolute",
|
||||
"top": -999,
|
||||
"left": -999
|
||||
});
|
||||
}
|
||||
var frameWindow = $iframe.get(0);
|
||||
return printFrame(frameWindow, content, options)
|
||||
.done(function () {
|
||||
// Success
|
||||
setTimeout(function () {
|
||||
// Wait for IE
|
||||
if (iframeCount === 0) {
|
||||
// Destroy the iframe if created here
|
||||
$iframe.remove();
|
||||
}
|
||||
}, 1000);
|
||||
})
|
||||
.fail(function (err) {
|
||||
// Use the pop-up method if iframe fails for some reason
|
||||
console.error("Failed to print from iframe", err);
|
||||
printContentInNewWindow(content, options);
|
||||
})
|
||||
.always(function () {
|
||||
try {
|
||||
options.deferred.resolve();
|
||||
} catch (err) {
|
||||
console.warn('Error notifying deferred', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function printContentInNewWindow(content, options) {
|
||||
// Open a new window and print selected content
|
||||
var frameWindow = window.open();
|
||||
return printFrame(frameWindow, content, options)
|
||||
.always(function () {
|
||||
try {
|
||||
options.deferred.resolve();
|
||||
} catch (err) {
|
||||
console.warn('Error notifying deferred', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function isNode(o) {
|
||||
/* http://stackoverflow.com/a/384380/937891 */
|
||||
return !!(typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string");
|
||||
}
|
||||
$.print = $.fn.print = function () {
|
||||
// Print a given set of elements
|
||||
var options, $this, self = this;
|
||||
// console.log("Printing", this, arguments);
|
||||
if (self instanceof $) {
|
||||
// Get the node if it is a jQuery object
|
||||
self = self.get(0);
|
||||
}
|
||||
if (isNode(self)) {
|
||||
// If `this` is a HTML element, i.e. for
|
||||
// $(selector).print()
|
||||
$this = $(self);
|
||||
if (arguments.length > 0) {
|
||||
options = arguments[0];
|
||||
}
|
||||
} else {
|
||||
if (arguments.length > 0) {
|
||||
// $.print(selector,options)
|
||||
$this = $(arguments[0]);
|
||||
if (isNode($this[0])) {
|
||||
if (arguments.length > 1) {
|
||||
options = arguments[1];
|
||||
}
|
||||
} else {
|
||||
// $.print(options)
|
||||
options = arguments[0];
|
||||
$this = $("html");
|
||||
}
|
||||
} else {
|
||||
// $.print()
|
||||
$this = $("html");
|
||||
}
|
||||
}
|
||||
// Default options
|
||||
var defaults = {
|
||||
globalStyles: true,
|
||||
mediaPrint: false,
|
||||
stylesheet: null,
|
||||
noPrintSelector: ".no-print",
|
||||
iframe: true,
|
||||
append: null,
|
||||
prepend: null,
|
||||
manuallyCopyFormValues: true,
|
||||
deferred: $.Deferred(),
|
||||
timeout: 750,
|
||||
title: null,
|
||||
doctype: '<!doctype html>'
|
||||
};
|
||||
// Merge with user-options
|
||||
options = $.extend({}, defaults, (options || {}));
|
||||
var $styles = $("");
|
||||
if (options.globalStyles) {
|
||||
// Apply the stlyes from the current sheet to the printed page
|
||||
$styles = $("style, link, meta, base, title");
|
||||
} else if (options.mediaPrint) {
|
||||
// Apply the media-print stylesheet
|
||||
$styles = $("link[media=print]");
|
||||
}
|
||||
if (options.stylesheet) {
|
||||
// Add a custom stylesheet if given
|
||||
$styles = $.merge($styles, $('<link rel="stylesheet" href="' + options.stylesheet + '">'));
|
||||
}
|
||||
// Create a copy of the element to print
|
||||
var copy = $this.clone();
|
||||
// Wrap it in a span to get the HTML markup string
|
||||
copy = $("<span/>")
|
||||
.append(copy);
|
||||
// Remove unwanted elements
|
||||
copy.find(options.noPrintSelector)
|
||||
.remove();
|
||||
// Add in the styles
|
||||
copy.append($styles.clone());
|
||||
// Update title
|
||||
if (options.title) {
|
||||
var title = $("title", copy);
|
||||
if (title.length === 0) {
|
||||
title = $("<title />");
|
||||
copy.append(title);
|
||||
}
|
||||
title.text(options.title);
|
||||
}
|
||||
// Appedned content
|
||||
copy.append(getjQueryObject(options.append));
|
||||
// Prepended content
|
||||
copy.prepend(getjQueryObject(options.prepend));
|
||||
if (options.manuallyCopyFormValues) {
|
||||
// Manually copy form values into the HTML for printing user-modified input fields
|
||||
// http://stackoverflow.com/a/26707753
|
||||
copy.find("input")
|
||||
.each(function () {
|
||||
var $field = $(this);
|
||||
if ($field.is("[type='radio']") || $field.is("[type='checkbox']")) {
|
||||
if ($field.prop("checked")) {
|
||||
$field.attr("checked", "checked");
|
||||
}
|
||||
} else {
|
||||
$field.attr("value", $field.val());
|
||||
}
|
||||
});
|
||||
copy.find("select").each(function () {
|
||||
var $field = $(this);
|
||||
$field.find(":selected").attr("selected", "selected");
|
||||
});
|
||||
copy.find("textarea").each(function () {
|
||||
// Fix for https://github.com/DoersGuild/jQuery.print/issues/18#issuecomment-96451589
|
||||
var $field = $(this);
|
||||
$field.text($field.val());
|
||||
});
|
||||
}
|
||||
// Get the HTML markup string
|
||||
var content = copy.html();
|
||||
// Notify with generated markup & cloned elements - useful for logging, etc
|
||||
try {
|
||||
options.deferred.notify('generated_markup', content, copy);
|
||||
} catch (err) {
|
||||
console.warn('Error notifying deferred', err);
|
||||
}
|
||||
// Destroy the copy
|
||||
copy.remove();
|
||||
if (options.iframe) {
|
||||
// Use an iframe for printing
|
||||
try {
|
||||
printContentInIFrame(content, options);
|
||||
} catch (e) {
|
||||
// Use the pop-up method if iframe fails for some reason
|
||||
console.error("Failed to print from iframe", e.stack, e.message);
|
||||
printContentInNewWindow(content, options);
|
||||
}
|
||||
} else {
|
||||
// Use a new window for printing
|
||||
printContentInNewWindow(content, options);
|
||||
}
|
||||
return this;
|
||||
};
|
||||
})(jQuery);
|
1
vue3-element-admin-thin/public/vender/jquery/jquery.ztree.core.min.js
vendored
Normal file
1
vue3-element-admin-thin/public/vender/jquery/jquery.ztree.exedit.min.js
vendored
Normal file
1
vue3-element-admin-thin/public/vender/jquery/jquery.ztree.exhide.min.js
vendored
Normal file
After Width: | Height: | Size: 601 B |
After Width: | Height: | Size: 580 B |
After Width: | Height: | Size: 570 B |
After Width: | Height: | Size: 762 B |
After Width: | Height: | Size: 399 B |
After Width: | Height: | Size: 710 B |
After Width: | Height: | Size: 432 B |
After Width: | Height: | Size: 534 B |
After Width: | Height: | Size: 529 B |
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 45 B |
After Width: | Height: | Size: 381 B |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 14 KiB |
@ -0,0 +1,97 @@
|
||||
/*-------------------------------------
|
||||
zTree Style
|
||||
|
||||
version: 3.5.19
|
||||
author: Hunter.z
|
||||
email: hunter.z@263.net
|
||||
website: http://code.google.com/p/jquerytree/
|
||||
|
||||
-------------------------------------*/
|
||||
|
||||
.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
|
||||
.ztree {margin:0; padding:5px; color:#333}
|
||||
.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
|
||||
.ztree li ul{ margin:0; padding:0 0 0 18px}
|
||||
.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
|
||||
|
||||
.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
|
||||
text-decoration:none; vertical-align:top; display: inline-block}
|
||||
.ztree li a:hover {text-decoration:underline}
|
||||
.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
|
||||
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
|
||||
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
|
||||
opacity:0.8; filter:alpha(opacity=80)}
|
||||
.ztree li a.tmpTargetNode_prev {}
|
||||
.ztree li a.tmpTargetNode_next {}
|
||||
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
|
||||
font-size:12px; border:1px #7EC4CC solid; *border:0px}
|
||||
.ztree li span {line-height:16px; margin-right:2px}
|
||||
.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
|
||||
border:0 none; cursor: pointer;outline:none;
|
||||
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
|
||||
background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
|
||||
|
||||
.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
|
||||
.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
|
||||
.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
|
||||
.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
|
||||
.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
|
||||
.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
|
||||
.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
|
||||
.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
|
||||
.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
|
||||
.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
|
||||
.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
|
||||
.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
|
||||
.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
|
||||
.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
|
||||
.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
|
||||
.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
|
||||
.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
|
||||
.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
|
||||
.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
|
||||
.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
|
||||
.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
|
||||
|
||||
.ztree li span.button.switch {width:18px; height:18px}
|
||||
.ztree li span.button.root_open{background-position:-92px -54px}
|
||||
.ztree li span.button.root_close{background-position:-74px -54px}
|
||||
.ztree li span.button.roots_open{background-position:-92px 0}
|
||||
.ztree li span.button.roots_close{background-position:-74px 0}
|
||||
.ztree li span.button.center_open{background-position:-92px -18px}
|
||||
.ztree li span.button.center_close{background-position:-74px -18px}
|
||||
.ztree li span.button.bottom_open{background-position:-92px -36px}
|
||||
.ztree li span.button.bottom_close{background-position:-74px -36px}
|
||||
.ztree li span.button.noline_open{background-position:-92px -72px}
|
||||
.ztree li span.button.noline_close{background-position:-74px -72px}
|
||||
.ztree li span.button.root_docu{ background:none;}
|
||||
.ztree li span.button.roots_docu{background-position:-56px 0}
|
||||
.ztree li span.button.center_docu{background-position:-56px -18px}
|
||||
.ztree li span.button.bottom_docu{background-position:-56px -36px}
|
||||
.ztree li span.button.noline_docu{ background:none;}
|
||||
|
||||
.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
|
||||
.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
|
||||
|
||||
.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
|
||||
|
||||
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
|
||||
|
||||
span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
|
||||
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
|
||||
background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
|
||||
|
||||
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
|
||||
.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
|
||||
|
||||
/* level style*/
|
||||
/*.ztree li span.button.level0 {
|
||||
display:none;
|
||||
}
|
||||
.ztree li ul.level0 {
|
||||
padding:0;
|
||||
background:none;
|
||||
}*/
|
5
vue3-element-admin-thin/public/vender/mui/mui.min.css
vendored
Normal file
6
vue3-element-admin-thin/public/vender/mui/mui.min.js
vendored
Normal file
7
vue3-element-admin-thin/public/vender/mui/mui.picker.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* 选择列表插件
|
||||
* varstion 2.0.0
|
||||
* by Houfeng
|
||||
* Houfeng@DCloud.io
|
||||
**/
|
||||
.mui-pciker-list li,.mui-picker,.mui-picker-inner{box-sizing:border-box;overflow:hidden}.mui-picker{background-color:#ddd;position:relative;height:200px;border:1px solid rgba(0,0,0,.1);-webkit-user-select:none;user-select:none}.mui-dtpicker,.mui-poppicker{left:0;background-color:#eee;box-shadow:0 -5px 7px 0 rgba(0,0,0,.1);-webkit-transition:.3s;width:100%}.mui-picker-inner{position:relative;width:100%;height:100%;-webkit-mask-box-image:-webkit-linear-gradient(bottom,transparent,transparent 5%,#fff 20%,#fff 80%,transparent 95%,transparent);-webkit-mask-box-image:linear-gradient(top,transparent,transparent 5%,#fff 20%,#fff 80%,transparent 95%,transparent)}.mui-pciker-list,.mui-pciker-rule{box-sizing:border-box;padding:0;margin:-18px 0 0;width:100%;height:36px;line-height:36px;position:absolute;left:0;top:50%}.mui-pciker-rule-bg{z-index:0}.mui-pciker-rule-ft{z-index:2;border-top:solid 1px rgba(0,0,0,.1);border-bottom:solid 1px rgba(0,0,0,.1)}.mui-pciker-list{z-index:1;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:perspective(750pt) rotateY(0) rotateX(0);transform:perspective(750pt) rotateY(0) rotateX(0)}.mui-pciker-list li{width:100%;height:100%;position:absolute;text-align:center;vertical-align:middle;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-size:1pc;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#888;padding:0 8px;white-space:nowrap;-webkit-text-overflow:ellipsis;text-overflow:ellipsis;cursor:default;visibility:hidden}.mui-pciker-list li.highlight,.mui-pciker-list li.visible{visibility:visible}.mui-pciker-list li.highlight{color:#222}.mui-poppicker{position:fixed;z-index:999;border-top:solid 1px #ccc;bottom:0;-webkit-transform:translateY(300px)}.mui-poppicker.mui-active{-webkit-transform:translateY(0)}.mui-android-5-1 .mui-poppicker{bottom:-300px;-webkit-transition-property:bottom;-webkit-transform:none}.mui-android-5-1 .mui-poppicker.mui-active{bottom:0;-webkit-transition-property:bottom;-webkit-transform:none}.mui-poppicker-header{padding:6px;font-size:14px;color:#888}.mui-poppicker-header .mui-btn{font-size:9pt;padding:5px 10px}.mui-poppicker-btn-cancel{float:left}.mui-poppicker-btn-ok{float:right}.mui-poppicker-clear{clear:both;height:0;line-height:0;font-size:0;overflow:hidden}.mui-poppicker-body{position:relative;width:100%;height:200px;border-top:solid 1px #ddd}.mui-poppicker-body .mui-picker{width:100%;height:100%;margin:0;border:none;float:left}.mui-dtpicker{position:fixed;z-index:999999;border-top:solid 1px #ccc;bottom:0;-webkit-transform:translateY(300px)}.mui-dtpicker.mui-active{-webkit-transform:translateY(0)}.mui-dtpicker-active-for-page{overflow:hidden!important}.mui-android-5-1 .mui-dtpicker{bottom:-300px;-webkit-transition-property:bottom;-webkit-transform:none}.mui-android-5-1 .mui-dtpicker.mui-active{bottom:0;-webkit-transition-property:bottom;-webkit-transform:none}.mui-dtpicker-header{padding:6px;font-size:14px;color:#888}.mui-dtpicker-header button{font-size:9pt;padding:5px 10px}.mui-dtpicker-header button:last-child{float:right}.mui-dtpicker-body{position:relative;width:100%;height:200px}.mui-ios .mui-dtpicker-body{-webkit-perspective:75pc;perspective:75pc;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.mui-dtpicker-title h5{display:inline-block;width:20%;margin:0;padding:8px;text-align:center;border-top:solid 1px #ddd;background-color:#f0f0f0;border-bottom:solid 1px #ccc}[data-type=hour] [data-id=title-i],[data-type=hour] [data-id=picker-i],[data-type=month] [data-id=title-i],[data-type=month] [data-id=picker-d],[data-type=month] [data-id=title-d],[data-type=month] [data-id=picker-h],[data-type=month] [data-id=title-h],[data-type=month] [data-id=picker-i],[data-type=time] [data-id=picker-y],[data-type=time] [data-id=picker-m],[data-type=time] [data-id=picker-d],[data-type=time] [data-id=title-y],[data-type=time] [data-id=title-m],[data-type=time] [data-id=title-d],[data-type=date] [data-id=title-i],[data-type=date] [data-id=picker-h],[data-type=date] [data-id=title-h],[data-type=date] [data-id=picker-i]{display:none}.mui-dtpicker .mui-picker{width:20%;height:100%;margin:0;float:left;border:none}[data-type=hour] [data-id=picker-h],[data-type=hour] [data-id=title-h],[data-type=datetime] [data-id=picker-h],[data-type=datetime] [data-id=title-h]{border-left:dotted 1px #ccc}[data-type=datetime] .mui-picker,[data-type=time] .mui-dtpicker-title h5{width:20%}[data-type=date] .mui-dtpicker-title h5,[data-type=date] .mui-picker{width:33.3%}[data-type=hour] .mui-dtpicker-title h5,[data-type=hour] .mui-picker{width:25%}[data-type=month] .mui-dtpicker-title h5,[data-type=month] .mui-picker,[data-type=time] .mui-dtpicker-title h5,[data-type=time] .mui-picker{width:50%}
|
7
vue3-element-admin-thin/public/vender/mui/mui.picker.min.js
vendored
Normal file
7
vue3-element-admin-thin/public/vender/qrcode.js
Normal file
2145
vue3-element-admin-thin/public/vender/requirejs/require.js
Normal file
@ -0,0 +1,519 @@
|
||||
/** @license
|
||||
jSignature v2 SVG export plugin.
|
||||
|
||||
*/
|
||||
/**
|
||||
Copyright (c) 2012 Willow Systems Corp http://willow-systems.com
|
||||
MIT License <http://www.opensource.org/licenses/mit-license.php>
|
||||
*/
|
||||
|
||||
;(function(){
|
||||
'use strict'
|
||||
|
||||
/** @preserve
|
||||
Simplify.js BSD
|
||||
(c) 2012, Vladimir Agafonkin
|
||||
mourner.github.com/simplify-js
|
||||
|
||||
*/
|
||||
;(function(a,b){function c(a,b){var c=a.x-b.x,d=a.y-b.y;return c*c+d*d}function d(a,b,c){var d=b.x,e=b.y,f=c.x-d,g=c.y-e,h;if(f!==0||g!==0)h=((a.x-d)*f+(a.y-e)*g)/(f*f+g*g),h>1?(d=c.x,e=c.y):h>0&&(d+=f*h,e+=g*h);return f=a.x-d,g=a.y-e,f*f+g*g}function e(a,b){var d,e=a.length,f,g=a[0],h=[g];for(d=1;d<e;d++)f=a[d],c(f,g)>b&&(h.push(f),g=f);return g!==f&&h.push(f),h}function f(a,c){var e=a.length,f=typeof Uint8Array!=b+""?Uint8Array:Array,g=new f(e),h=0,i=e-1,j,k,l,m,n=[],o=[],p=[];g[h]=g[i]=1;while(i){k=0;for(j=h+1;j<i;j++)l=d(a[j],a[h],a[i]),l>k&&(m=j,k=l);k>c&&(g[m]=1,n.push(h),o.push(m),n.push(m),o.push(i)),h=n.pop(),i=o.pop()}for(j=0;j<e;j++)g[j]&&p.push(a[j]);return p}"use strict";var g=a;g.simplify=function(a,c,d){var g=c!==b?c*c:1;return d||(a=e(a,g)),a=f(a,g),a}})(window);
|
||||
|
||||
|
||||
/**
|
||||
Vector class. Allows us to simplify representation and manipulation of coordinate-pair
|
||||
representing shift against (0, 0)
|
||||
|
||||
@public
|
||||
@class
|
||||
@param
|
||||
@returns {Type}
|
||||
*/
|
||||
function Vector(x,y){
|
||||
this.x = x
|
||||
this.y = y
|
||||
this.reverse = function(){
|
||||
return new this.constructor(
|
||||
this.x * -1
|
||||
, this.y * -1
|
||||
)
|
||||
}
|
||||
this._length = null
|
||||
this.getLength = function(){
|
||||
if (!this._length){
|
||||
this._length = Math.sqrt( Math.pow(this.x, 2) + Math.pow(this.y, 2) )
|
||||
}
|
||||
return this._length
|
||||
}
|
||||
|
||||
var polarity = function (e){
|
||||
return Math.round(e / Math.abs(e))
|
||||
}
|
||||
this.resizeTo = function(length){
|
||||
// proportionally changes x,y such that the hypotenuse (vector length) is = new length
|
||||
if (this.x === 0 && this.y === 0){
|
||||
this._length = 0
|
||||
} else if (this.x === 0){
|
||||
this._length = length
|
||||
this.y = length * polarity(this.y)
|
||||
} else if(this.y === 0){
|
||||
this._length = length
|
||||
this.x = length * polarity(this.x)
|
||||
} else {
|
||||
var proportion = Math.abs(this.y / this.x)
|
||||
, x = Math.sqrt(Math.pow(length, 2) / (1 + Math.pow(proportion, 2)))
|
||||
, y = proportion * x
|
||||
this._length = length
|
||||
this.x = x * polarity(this.x)
|
||||
this.y = y * polarity(this.y)
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the angle between 'this' vector and another.
|
||||
* @public
|
||||
* @function
|
||||
* @returns {Number} The angle between the two vectors as measured in PI.
|
||||
*/
|
||||
this.angleTo = function(vectorB) {
|
||||
var divisor = this.getLength() * vectorB.getLength()
|
||||
if (divisor === 0) {
|
||||
return 0
|
||||
} else {
|
||||
// JavaScript floating point math is screwed up.
|
||||
// because of it, the core of the formula can, on occasion, have values
|
||||
// over 1.0 and below -1.0.
|
||||
return Math.acos(
|
||||
Math.min(
|
||||
Math.max(
|
||||
( this.x * vectorB.x + this.y * vectorB.y ) / divisor
|
||||
, -1.0
|
||||
)
|
||||
, 1.0
|
||||
)
|
||||
) / Math.PI
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Point(x,y){
|
||||
this.x = x
|
||||
this.y = y
|
||||
|
||||
this.getVectorToCoordinates = function (x, y) {
|
||||
return new Vector(x - this.x, y - this.y)
|
||||
}
|
||||
this.getVectorFromCoordinates = function (x, y) {
|
||||
return this.getVectorToCoordinates(x, y).reverse()
|
||||
}
|
||||
this.getVectorToPoint = function (point) {
|
||||
return new Vector(point.x - this.x, point.y - this.y)
|
||||
}
|
||||
this.getVectorFromPoint = function (point) {
|
||||
return this.getVectorToPoint(point).reverse()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Allows one to round a number to arbitrary precision.
|
||||
Math.round() rounds to whole only.
|
||||
Number.toFixed(precision) returns a string.
|
||||
I need float to float, but with arbitrary precision, hence:
|
||||
|
||||
@public
|
||||
@function
|
||||
@param number {Number}
|
||||
@param position {Number} number of digits right of decimal point to keep. If negative, rounding to the left of decimal.
|
||||
@returns {Type}
|
||||
*/
|
||||
function round (number, position){
|
||||
var tmp = Math.pow(10, position)
|
||||
return Math.round( number * tmp ) / tmp
|
||||
}
|
||||
|
||||
// /**
|
||||
// * This is a simple, points-to-lines (not curves) renderer.
|
||||
// * Keeping it around so we can activate it from time to time and see
|
||||
// * if smoothing logic is off much.
|
||||
// * @public
|
||||
// * @function
|
||||
// * @returns {String} Like so "l 1 2 3 5' with stroke as long line chain.
|
||||
// */
|
||||
// function compressstroke(stroke, shiftx, shifty){
|
||||
// // we combine strokes data into string like this:
|
||||
// // 'M 53 7 l 1 2 3 4 -5 -6 5 -6'
|
||||
// // see SVG documentation for Path element's 'd' argument.
|
||||
// var lastx = stroke.x[0]
|
||||
// , lasty = stroke.y[0]
|
||||
// , i
|
||||
// , l = stroke.x.length
|
||||
// , answer = ['M', lastx - shiftx, lasty - shifty, 'l']
|
||||
//
|
||||
// if (l === 1){
|
||||
// // meaning this was just a DOT, not a stroke.
|
||||
// // instead of creating a circle, we just create a short line
|
||||
// answer.concat(1, -1)
|
||||
// } else {
|
||||
// for(i = 1; i < l; i++){
|
||||
// answer = answer.concat(stroke.x[i] - lastx, stroke.y[i] - lasty)
|
||||
// lastx = stroke.x[i]
|
||||
// lasty = stroke.y[i]
|
||||
// }
|
||||
// }
|
||||
// return answer.join(' ')
|
||||
// }
|
||||
|
||||
function segmentToCurve(stroke, positionInStroke, lineCurveThreshold){
|
||||
'use strict'
|
||||
// long lines (ones with many pixels between them) do not look good when they are part of a large curvy stroke.
|
||||
// You know, the jaggedy crocodile spine instead of a pretty, smooth curve. Yuck!
|
||||
// We want to approximate pretty curves in-place of those ugly lines.
|
||||
// To approximate a very nice curve we need to know the direction of line before and after.
|
||||
// Hence, on long lines we actually wait for another point beyond it to come back from
|
||||
// mousemoved before we draw this curve.
|
||||
|
||||
// So for "prior curve" to be calc'ed we need 4 points
|
||||
// A, B, C, D (we are on D now, A is 3 points in the past.)
|
||||
// and 3 lines:
|
||||
// pre-line (from points A to B),
|
||||
// this line (from points B to C), (we call it "this" because if it was not yet, it's the only one we can draw for sure.)
|
||||
// post-line (from points C to D) (even through D point is 'current' we don't know how we can draw it yet)
|
||||
//
|
||||
// Well, actually, we don't need to *know* the point A, just the vector A->B
|
||||
|
||||
// Again, we can only derive curve between points positionInStroke-1 and positionInStroke
|
||||
// Thus, since we can only draw a line if we know one point ahead of it, we need to shift our focus one point ahead.
|
||||
positionInStroke += 1
|
||||
// Let's hope the code that calls us knows we do that and does not call us with positionInStroke = index of last point.
|
||||
|
||||
var Cpoint = new Point(stroke.x[positionInStroke-1], stroke.y[positionInStroke-1])
|
||||
, Dpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke])
|
||||
, CDvector = Cpoint.getVectorToPoint(Dpoint)
|
||||
// Again, we have a chance here to draw only PREVIOUS line segment - BC
|
||||
|
||||
// So, let's start with BC curve.
|
||||
// if there is only 2 points in stroke array (C, D), we don't have "history" long enough to have point B, let alone point A.
|
||||
// so positionInStroke should start with 2, ie
|
||||
// we are here when there are at least 3 points in stroke array.
|
||||
var Bpoint = new Point(stroke.x[positionInStroke-2], stroke.y[positionInStroke-2])
|
||||
, BCvector = Bpoint.getVectorToPoint(Cpoint)
|
||||
, ABvector
|
||||
, rounding = 2
|
||||
|
||||
if ( BCvector.getLength() > lineCurveThreshold ){
|
||||
// Yey! Pretty curves, here we come!
|
||||
if(positionInStroke > 2) {
|
||||
ABvector = (new Point(stroke.x[positionInStroke-3], stroke.y[positionInStroke-3])).getVectorToPoint(Bpoint)
|
||||
} else {
|
||||
ABvector = new Vector(0,0)
|
||||
}
|
||||
var minlenfraction = 0.05
|
||||
, maxlen = BCvector.getLength() * 0.35
|
||||
, ABCangle = BCvector.angleTo(ABvector.reverse())
|
||||
, BCDangle = CDvector.angleTo(BCvector.reverse())
|
||||
, BtoCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(
|
||||
Math.max(minlenfraction, ABCangle) * maxlen
|
||||
)
|
||||
, CtoCP2vector = (new Vector(BCvector.x + CDvector.x, BCvector.y + CDvector.y)).reverse().resizeTo(
|
||||
Math.max(minlenfraction, BCDangle) * maxlen
|
||||
)
|
||||
, BtoCP2vector = new Vector(BCvector.x + CtoCP2vector.x, BCvector.y + CtoCP2vector.y)
|
||||
|
||||
// returing curve for BC segment
|
||||
// all coords are vectors against Bpoint
|
||||
return [
|
||||
'c' // bezier curve
|
||||
, round( BtoCP1vector.x, rounding )
|
||||
, round( BtoCP1vector.y, rounding )
|
||||
, round( BtoCP2vector.x, rounding )
|
||||
, round( BtoCP2vector.y, rounding )
|
||||
, round( BCvector.x, rounding )
|
||||
, round( BCvector.y, rounding )
|
||||
]
|
||||
} else {
|
||||
return [
|
||||
'l' // line
|
||||
, round( BCvector.x, rounding )
|
||||
, round( BCvector.y, rounding )
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
function lastSegmentToCurve(stroke, lineCurveThreshold){
|
||||
'use strict'
|
||||
// Here we tidy up things left unfinished
|
||||
|
||||
// What's left unfinished there is the curve between the last points
|
||||
// in the stroke
|
||||
// We can also be called when there is only one point in the stroke (meaning, the
|
||||
// stroke was just a dot), in which case there is nothing for us to do.
|
||||
|
||||
// So for "this curve" to be calc'ed we need 3 points
|
||||
// A, B, C
|
||||
// and 2 lines:
|
||||
// pre-line (from points A to B),
|
||||
// this line (from points B to C)
|
||||
// Well, actually, we don't need to *know* the point A, just the vector A->B
|
||||
// so, we really need points B, C and AB vector.
|
||||
var positionInStroke = stroke.x.length - 1
|
||||
|
||||
// there must be at least 2 points in the stroke.for us to work. Hope calling code checks for that.
|
||||
var Cpoint = new Point(stroke.x[positionInStroke], stroke.y[positionInStroke])
|
||||
, Bpoint = new Point(stroke.x[positionInStroke-1], stroke.y[positionInStroke-1])
|
||||
, BCvector = Bpoint.getVectorToPoint(Cpoint)
|
||||
, rounding = 2
|
||||
|
||||
if (positionInStroke > 1 && BCvector.getLength() > lineCurveThreshold){
|
||||
// we have at least 3 elems in stroke
|
||||
var ABvector = (new Point(stroke.x[positionInStroke-2], stroke.y[positionInStroke-2])).getVectorToPoint(Bpoint)
|
||||
, ABCangle = BCvector.angleTo(ABvector.reverse())
|
||||
, minlenfraction = 0.05
|
||||
, maxlen = BCvector.getLength() * 0.35
|
||||
, BtoCP1vector = new Vector(ABvector.x + BCvector.x, ABvector.y + BCvector.y).resizeTo(
|
||||
Math.max(minlenfraction, ABCangle) * maxlen
|
||||
)
|
||||
|
||||
return [
|
||||
'c' // bezier curve
|
||||
, round( BtoCP1vector.x, rounding )
|
||||
, round( BtoCP1vector.y, rounding )
|
||||
, round( BCvector.x, rounding ) // CP2 is same as Cpoint
|
||||
, round( BCvector.y, rounding ) // CP2 is same as Cpoint
|
||||
, round( BCvector.x, rounding )
|
||||
, round( BCvector.y, rounding )
|
||||
]
|
||||
} else {
|
||||
// Since there is no AB leg, there is no curve to draw. This is just line
|
||||
return [
|
||||
'l' // simple line
|
||||
, round( BCvector.x, rounding )
|
||||
, round( BCvector.y, rounding )
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
function addstroke(stroke, shiftx, shifty){
|
||||
'use strict'
|
||||
// we combine strokes data into string like this:
|
||||
// 'M 53 7 l 1 2 c 3 4 -5 -6 5 -6'
|
||||
// see SVG documentation for Path element's 'd' argument.
|
||||
var lines = [
|
||||
'M' // move to
|
||||
, round( (stroke.x[0] - shiftx), 2)
|
||||
, round( (stroke.y[0] - shifty), 2)
|
||||
]
|
||||
// processing all points but first and last.
|
||||
, i = 1 // index zero item in there is STARTING point. we already extracted it.
|
||||
, l = stroke.x.length - 1 // this is a trick. We are leaving last point coordinates for separate processing.
|
||||
, lineCurveThreshold = 1
|
||||
|
||||
for(; i < l; i++){
|
||||
lines.push.apply(lines, segmentToCurve(stroke, i, lineCurveThreshold))
|
||||
}
|
||||
if (l > 0 /* effectively more than 1, since we "-1" above */){
|
||||
lines.push.apply(lines, lastSegmentToCurve(stroke, i, lineCurveThreshold))
|
||||
} else if (l === 0){
|
||||
// meaning we only have ONE point in the stroke (and otherwise refer to the stroke as "dot")
|
||||
lines.push.apply(lines, ['l' , 1, 1])
|
||||
}
|
||||
return lines.join(' ')
|
||||
}
|
||||
|
||||
function simplifystroke(stroke){
|
||||
var d = []
|
||||
, newstroke = {'x':[], 'y':[]}
|
||||
, i, l
|
||||
|
||||
for (i = 0, l = stroke.x.length; i < l; i++){
|
||||
d.push({'x':stroke.x[i], 'y':stroke.y[i]})
|
||||
}
|
||||
d = simplify(d, 0.7, true)
|
||||
for (i = 0, l = d.length; i < l; i++){
|
||||
newstroke.x.push(d[i].x)
|
||||
newstroke.y.push(d[i].y)
|
||||
}
|
||||
return newstroke
|
||||
}
|
||||
|
||||
// generate SVG style from settings
|
||||
function styleFromSettings(settings){
|
||||
var styles = [];
|
||||
var meta = [
|
||||
// ["style attr", "key in settings", "default value"]
|
||||
["fill", undefined, "none"],
|
||||
["stroke", "color", "#000000"],
|
||||
["stroke-width", "lineWidth", 2],
|
||||
["stroke-linecap", undefined, "round"],
|
||||
["stroke-linejoin", undefined, "round"]
|
||||
];
|
||||
for (var i = meta.length - 1; i >= 0; i--){
|
||||
var attr = meta[i][0]
|
||||
, key = meta[i][1]
|
||||
, defaultVal = meta[i][2];
|
||||
styles.push(attr + '="' + (key in settings && settings[key] ? settings[key] : defaultVal) + '"');
|
||||
}
|
||||
return styles.join(' ');
|
||||
}
|
||||
|
||||
function compressstrokes(data, settings){
|
||||
'use strict'
|
||||
var answer = [
|
||||
'<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
|
||||
, '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'
|
||||
]
|
||||
, i , l = data.length
|
||||
, stroke
|
||||
, xlimits = []
|
||||
, ylimits = []
|
||||
, sizex = 0
|
||||
, sizey = 0
|
||||
, shiftx = 0
|
||||
, shifty = 0
|
||||
, minx, maxx, miny, maxy, padding = 1
|
||||
, simplifieddata = []
|
||||
|
||||
if(l !== 0){
|
||||
for(i = 0; i < l; i++){
|
||||
stroke = simplifystroke( data[i] )
|
||||
simplifieddata.push(stroke)
|
||||
xlimits = xlimits.concat(stroke.x)
|
||||
ylimits = ylimits.concat(stroke.y)
|
||||
}
|
||||
|
||||
minx = Math.min.apply(null, xlimits) - padding
|
||||
maxx = Math.max.apply(null, xlimits) + padding
|
||||
miny = Math.min.apply(null, ylimits) - padding
|
||||
maxy = Math.max.apply(null, ylimits) + padding
|
||||
shiftx = minx < 0? 0 : minx
|
||||
shifty = miny < 0? 0 : miny
|
||||
sizex = maxx - minx
|
||||
sizey = maxy - miny
|
||||
}
|
||||
|
||||
answer.push(
|
||||
'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="'+
|
||||
sizex.toString() +
|
||||
'" height="'+
|
||||
sizey.toString() +
|
||||
'">'
|
||||
)
|
||||
|
||||
// // This is a nice idea: use style declaration on top, and mark the lines with 'class="f"'
|
||||
// // thus saving space in svg...
|
||||
// // alas, many SVG renderers don't understand "class" and render the strokes in default "fill = black, no stroke" style. Ugh!!!
|
||||
// // TODO: Rewrite ImageMagic / GraphicsMagic, InkScape, http://svg.codeplex.com/ to support style + class. until then, we hardcode the stroke style within the path.
|
||||
// answer.push(
|
||||
// '<style type="text/css"><![CDATA[.f {fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}]]></style>'
|
||||
// )
|
||||
|
||||
// // This set is accompaniment to "simple line renderer" - compressstroke
|
||||
// answer.push(
|
||||
// '<style type="text/css"><![CDATA[.t {fill:none;stroke:#FF0000;stroke-width:2}]]></style>'
|
||||
// )
|
||||
// for(i = 0; i < l; i++){
|
||||
// stroke = data[i]
|
||||
// // This one is accompaniment to "simple line renderer"
|
||||
// answer.push('<path class="t" d="'+ compressstroke(stroke, shiftx, shifty) +'"/>')
|
||||
// }
|
||||
|
||||
for(i = 0, l = simplifieddata.length; i < l; i++){
|
||||
stroke = simplifieddata[i]
|
||||
answer.push('<path ' + styleFromSettings(settings) + ' d="'+ addstroke(stroke, shiftx, shifty) + '"/>')
|
||||
}
|
||||
answer.push('</svg>')
|
||||
return answer.join('')
|
||||
}
|
||||
|
||||
if (typeof btoa !== 'function')
|
||||
{
|
||||
var btoa = function(data) {
|
||||
/** @preserve
|
||||
base64 encoder
|
||||
MIT, GPL
|
||||
http://phpjs.org/functions/base64_encode
|
||||
+ original by: Tyler Akins (http://rumkin.com)
|
||||
+ improved by: Bayron Guevara
|
||||
+ improved by: Thunder.m
|
||||
+ improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
+ bugfixed by: Pellentesque Malesuada
|
||||
+ improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
+ improved by: Rafal Kukawski (http://kukawski.pl)
|
||||
|
||||
*/
|
||||
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
||||
, b64a = b64.split('')
|
||||
, o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
|
||||
ac = 0,
|
||||
enc = "",
|
||||
tmp_arr = [];
|
||||
|
||||
do { // pack three octets into four hexets
|
||||
o1 = data.charCodeAt(i++);
|
||||
o2 = data.charCodeAt(i++);
|
||||
o3 = data.charCodeAt(i++);
|
||||
|
||||
bits = o1 << 16 | o2 << 8 | o3;
|
||||
|
||||
h1 = bits >> 18 & 0x3f;
|
||||
h2 = bits >> 12 & 0x3f;
|
||||
h3 = bits >> 6 & 0x3f;
|
||||
h4 = bits & 0x3f;
|
||||
|
||||
// use hexets to index into b64, and append result to encoded string
|
||||
tmp_arr[ac++] = b64a[h1] + b64a[h2] + b64a[h3] + b64a[h4];
|
||||
} while (i < data.length);
|
||||
|
||||
enc = tmp_arr.join('');
|
||||
var r = data.length % 3;
|
||||
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
|
||||
|
||||
// end of base64 encoder MIT, GPL
|
||||
}
|
||||
}
|
||||
|
||||
var unencodedmime = 'image/svg+xml'
|
||||
function getUnencodedSVG(data, settings){
|
||||
return [unencodedmime , compressstrokes(data, settings)];
|
||||
}
|
||||
|
||||
var base64encodedmime = 'image/svg+xml;base64'
|
||||
function getBase64encodedSVG(data, settings){
|
||||
|
||||
return [base64encodedmime , btoa( compressstrokes(data, settings) )];
|
||||
}
|
||||
|
||||
function Initializer($){
|
||||
var mothership = $.fn['jSignature']
|
||||
mothership(
|
||||
'addPlugin'
|
||||
,'export'
|
||||
,'svg' // alias
|
||||
,getUnencodedSVG
|
||||
)
|
||||
mothership(
|
||||
'addPlugin'
|
||||
,'export'
|
||||
,unencodedmime // full name
|
||||
,getUnencodedSVG
|
||||
)
|
||||
mothership(
|
||||
'addPlugin'
|
||||
,'export'
|
||||
,'svgbase64' // alias
|
||||
,getBase64encodedSVG
|
||||
)
|
||||
mothership(
|
||||
'addPlugin'
|
||||
,'export'
|
||||
,base64encodedmime // full name
|
||||
,getBase64encodedSVG
|
||||
)
|
||||
}
|
||||
|
||||
// //Because plugins are minified together with jSignature, multiple defines per (minified) file blow up and dont make sense
|
||||
// //Need to revisit this later.
|
||||
|
||||
if(typeof $ === 'undefined') {throw new Error("We need jQuery for some of the functionality. jQuery is not detected. Failing to initialize...")}
|
||||
Initializer($)
|
||||
|
||||
})();
|
@ -0,0 +1,165 @@
|
||||
/** @license
|
||||
jSignature v2 jSignature's Undo Button and undo functionality plugin
|
||||
|
||||
*/
|
||||
/**
|
||||
Copyright (c) 2011 Willow Systems Corp http://willow-systems.com
|
||||
MIT License <http://www.opensource.org/licenses/mit-license.php>
|
||||
*/
|
||||
|
||||
;(function(){
|
||||
|
||||
var apinamespace = 'jSignature'
|
||||
|
||||
function attachHandlers(buttonRenderer, apinamespace, extensionName) {
|
||||
var $undoButton = buttonRenderer.call(this)
|
||||
|
||||
;(function(jSignatureInstance, $undoButton, apinamespace) {
|
||||
jSignatureInstance.events.subscribe(
|
||||
apinamespace + '.change'
|
||||
, function(){
|
||||
if (jSignatureInstance.dataEngine.data.length) {
|
||||
$undoButton.show()
|
||||
} else {
|
||||
$undoButton.hide()
|
||||
}
|
||||
}
|
||||
)
|
||||
})( this, $undoButton, apinamespace )
|
||||
|
||||
;(function(jSignatureInstance, $undoButton, apinamespace) {
|
||||
|
||||
var eventName = apinamespace + '.undo'
|
||||
|
||||
$undoButton.bind('click', function(){
|
||||
jSignatureInstance.events.publish(eventName)
|
||||
})
|
||||
|
||||
// This one creates new "undo" event listener to jSignature instance
|
||||
// It handles the actual undo-ing.
|
||||
jSignatureInstance.events.subscribe(
|
||||
eventName
|
||||
, function(){
|
||||
var data = jSignatureInstance.dataEngine.data
|
||||
if (data.length) {
|
||||
data.pop()
|
||||
jSignatureInstance.resetCanvas(data)
|
||||
}
|
||||
}
|
||||
)
|
||||
})(
|
||||
this
|
||||
, $undoButton
|
||||
, this.events.topics.hasOwnProperty( apinamespace + '.undo' ) ?
|
||||
// oops, seems some other plugin or code has already claimed "jSignature.undo" event
|
||||
// we will use this extension's name for event name prefix
|
||||
extensionName :
|
||||
// Great! we will use 'jSignature' for event name prefix.
|
||||
apinamespace
|
||||
)
|
||||
}
|
||||
|
||||
function ExtensionInitializer(extensionName){
|
||||
// we are called very early in instance's life.
|
||||
// right after the settings are resolved and
|
||||
// jSignatureInstance.events is created
|
||||
// and right before first ("jSignature.initializing") event is called.
|
||||
// You don't really need to manupilate
|
||||
// jSignatureInstance directly, just attach
|
||||
// a bunch of events to jSignatureInstance.events
|
||||
// (look at the source of jSignatureClass to see when these fire)
|
||||
// and your special pieces of code will attach by themselves.
|
||||
|
||||
// this function runs every time a new instance is set up.
|
||||
// this means every var you create will live only for one instance
|
||||
// unless you attach it to something outside, like "window."
|
||||
// and pick it up later from there.
|
||||
|
||||
// when globalEvents' events fire, 'this' is globalEvents object
|
||||
// when jSignatureInstance's events fire, 'this' is jSignatureInstance
|
||||
|
||||
// Here,
|
||||
// this = is new jSignatureClass's instance.
|
||||
|
||||
// The way you COULD approch setting this up is:
|
||||
// if you have multistep set up, attach event to "jSignature.initializing"
|
||||
// that attaches other events to be fired further lower the init stream.
|
||||
// Or, if you know for sure you rely on only one jSignatureInstance's event,
|
||||
// just attach to it directly
|
||||
|
||||
var apinamespace = 'jSignature'
|
||||
|
||||
this.events.subscribe(
|
||||
// name of the event
|
||||
apinamespace + '.attachingEventHandlers'
|
||||
// event handlers, can pass args too, but in majority of cases,
|
||||
// 'this' which is jSignatureClass object instance pointer is enough to get by.
|
||||
, function(){
|
||||
|
||||
// hooking up "undo" button to lower edge of Canvas.
|
||||
// but only when options passed to jSignature('init', options)
|
||||
// contain "undoButton":renderingFunction pair.
|
||||
// or "undoButton":true (in which case default, internal rendering fn is used)
|
||||
if (this.settings[extensionName]) {
|
||||
var oursettings = this.settings[extensionName]
|
||||
if (typeof oursettings !== 'function') {
|
||||
// we make it a function.
|
||||
|
||||
// we allow people to override the button rendering code,
|
||||
// but when developler is OK with default look (and just passes "truthy" value)
|
||||
// this defines default look for the button:
|
||||
// centered against canvas, hanging on its lower side.
|
||||
oursettings = function(){
|
||||
// this === jSignatureInstance
|
||||
var undoButtonSytle = 'position:absolute;display:none;margin:0 !important;top:auto'
|
||||
, $undoButton = $('<input type="button" value="撤销" style="'+undoButtonSytle+'" />')
|
||||
.appendTo(this.$controlbarLower)
|
||||
|
||||
// this centers the button against the canvas.
|
||||
var buttonWidth = $undoButton.width()
|
||||
$undoButton.css(
|
||||
'left'
|
||||
, Math.round(( this.canvas.width - buttonWidth ) / 2)
|
||||
)
|
||||
// IE 7 grows the button. Correcting for that.
|
||||
if ( buttonWidth !== $undoButton.width() ) {
|
||||
$undoButton.width(buttonWidth)
|
||||
}
|
||||
|
||||
return $undoButton
|
||||
}
|
||||
}
|
||||
|
||||
attachHandlers.call(
|
||||
this
|
||||
, oursettings
|
||||
, apinamespace
|
||||
, extensionName
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
var ExtensionAttacher = function(){
|
||||
$.fn[apinamespace](
|
||||
'addPlugin'
|
||||
,'instance' // type of plugin
|
||||
,'UndoButton' // extension name
|
||||
,ExtensionInitializer
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
// //Because plugins are minified together with jSignature, multiple defines per (minified) file blow up and dont make sense
|
||||
// //Need to revisit this later.
|
||||
|
||||
// if ( typeof define === "function" && define.amd != null) {
|
||||
// // AMD-loader compatible resource declaration
|
||||
// // you need to call this one with jQuery as argument.
|
||||
// define(function(){return Initializer} )
|
||||
// } else {
|
||||
ExtensionAttacher()
|
||||
// }
|
||||
|
||||
})();
|