|
|
@@ -1,27 +1,4 @@
|
|
|
//@ sourceURL=pharmacy-com.js
|
|
|
-/**
|
|
|
- * 加载药品搜索窗口
|
|
|
- */
|
|
|
-/*function initDrugSearchList() {
|
|
|
- var settings = {
|
|
|
- placement: 'bottom-right',//值: auto,top,right,bottom,left,top-right,top-left,bottom-right,bottom-left 要显示的位置
|
|
|
- trigger: 'click', //值:click,hover 触发方式
|
|
|
- content: '',//内容,内容可以是函数
|
|
|
- width: '600',
|
|
|
- //arrow:false,//是否显示箭头
|
|
|
- multi: true,//在页面允许其他弹出层
|
|
|
- closeable: true,//显示关闭按钮
|
|
|
- style: '', //值:'',inverse
|
|
|
- delay: 300,//延迟时间, 悬浮属性才执行
|
|
|
- padding: true,//内容填充
|
|
|
- height: '200',
|
|
|
- //offsetTop:10,
|
|
|
- cache: true,//如果缓存设置为false,则popover将销毁并重新创建
|
|
|
- };
|
|
|
- //药品弹窗
|
|
|
- settings.content = '<div id="medicinePopoverContent"><table id="tb_table_medicine"></table></div>';
|
|
|
- $('#searchText').webuiPopover('destroy').webuiPopover(settings);
|
|
|
-}*/
|
|
|
|
|
|
/**
|
|
|
* 加载搜索窗口
|
|
|
@@ -237,4 +214,83 @@ function showDrugPopover() {
|
|
|
$('#searchTextDrug').val(row.name);
|
|
|
}
|
|
|
});
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 将table导出Excel
|
|
|
+ * @param tableid
|
|
|
+ * @param sheetName
|
|
|
+ */
|
|
|
+function tableToExcel(tableid, sheetName) {
|
|
|
+ var uri = 'data:application/vnd.ms-excel;base64,';
|
|
|
+ var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +
|
|
|
+ 'xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'
|
|
|
+ + '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>'
|
|
|
+ + '</x:ExcelWorkbook></xml><![endif]-->' +
|
|
|
+ '<style type="text/css">' +
|
|
|
+ 'table td{' +
|
|
|
+ 'border: 1px solid #000000;' +
|
|
|
+ 'width: 150px;' +
|
|
|
+ 'height: 30px;' +
|
|
|
+ 'text-align: center;' +
|
|
|
+ '}' +
|
|
|
+ '.xtd{' +
|
|
|
+ 'border: 1px solid #000000;' +
|
|
|
+ 'width: 50px;' +
|
|
|
+ 'height: 30px;' +
|
|
|
+ 'text-align: center;' +
|
|
|
+ '}' +
|
|
|
+ '</style>' +
|
|
|
+ '</head><body ><table class="excelTable">{table}</table></body></html>';
|
|
|
+ if (!tableid.nodeType) tableid = document.getElementById(tableid);
|
|
|
+ var ctx = {worksheet: sheetName || 'Worksheet', table: tableid.innerHTML};
|
|
|
+ var blobExel = self.baseExel(uri+base64(formatName(template, ctx))); //把base64位文件转化为exel文件
|
|
|
+ document.getElementById("btn_excel").href = URL.createObjectURL(blobExel);
|
|
|
+ document.getElementById("btn_excel").download = ctx.worksheet;
|
|
|
+ console.log(document.getElementById("btn_excel").href);
|
|
|
+}
|
|
|
+
|
|
|
+/*处理后端返回的base64位文件变成exel文件进行下载
|
|
|
+ * 不要直接把base64位的exel文件直接给a标签的href,
|
|
|
+ * 文件过大时base64位长度过长;chrome浏览器对a标签的href长度有限制;导致下载失败;
|
|
|
+ * 建议用以下方法处理成本地文件再下载
|
|
|
+ * */
|
|
|
+function baseExel (base64) {
|
|
|
+ function getContentType(base64) {
|
|
|
+ return /data:([^;]*);/i.exec(base64)[1];
|
|
|
+ };
|
|
|
+ function getData(base64) {
|
|
|
+ return base64.substr(base64.indexOf("base64,") + 7, base64.length);
|
|
|
+ };
|
|
|
+ function b64toBlob(b64Data, contentType, sliceSize) {
|
|
|
+ contentType = contentType || '';
|
|
|
+ sliceSize = sliceSize || 512;
|
|
|
+ var byteCharacters = atob(b64Data);
|
|
|
+ var byteArrays = [];
|
|
|
+ for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
|
|
+ var slice = byteCharacters.slice(offset, offset + sliceSize);
|
|
|
+ var byteNumbers = new Array(slice.length);
|
|
|
+ for (var i = 0; i < slice.length; i++) {
|
|
|
+ byteNumbers[i] = slice.charCodeAt(i);
|
|
|
+ }
|
|
|
+ var byteArray = new Uint8Array(byteNumbers);
|
|
|
+ byteArrays.push(byteArray);
|
|
|
+ }
|
|
|
+ var blob = new Blob(byteArrays, { type: contentType });
|
|
|
+ return blob;
|
|
|
+ };
|
|
|
+ return b64toBlob(getData(base64), getContentType(base64));
|
|
|
+}
|
|
|
+
|
|
|
+//base64转码
|
|
|
+function base64(s) {
|
|
|
+ return window.btoa(unescape(encodeURIComponent(s)));
|
|
|
+};
|
|
|
+//替换table数据和worksheet名字
|
|
|
+function formatName(s, c) {
|
|
|
+ return s.replace(/{(\w+)}/g,
|
|
|
+ function (m, p) {
|
|
|
+ return c[p];
|
|
|
+ });
|
|
|
+};
|
|
|
+
|