jbase打印导出实现

上一篇实现了虚拟M层,这篇基于虚拟M实现打印导出。

首先对接打印层

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace DHCLabtrakReportPrint
{
    /// 
    /// 虚拟M调用类
    /// 
    public class VMGetData
    {
        /// 
        /// 虚拟M执行服务
        /// 
        public static IVMGetData Service
        {
            get;
            set;
        }

        /// 
        /// 调用虚拟M类返回数据
        /// 
        /// 类名
        /// 方法名
        /// 参数
        /// 会话
        ///  行数 
        /// 
        public static string GetData(string Address, string ClassName, string FuncName, Parameters Param, string Session)
        {
            string result = string.Empty;
            DealNullPara(Param);
            //内部通道调用
            if (Service != null)
            {
                result = Service.GetVMData(ClassName, FuncName, JsonConvert.SerializeObject(Param), Session);
                //调用报错了
                if (!result.Contains(""))
                {
                    result = "-1" + result + "0";
                }
            }
            else
            {
                NewWebClient wCient = new NewWebClient();
                try
                {
                    System.Collections.Specialized.NameValueCollection values = new System.Collections.Specialized.NameValueCollection();
                    values.Add("Method", "GetData");
                    values.Add("ClassName", ClassName);
                    values.Add("FuncName", FuncName);
                    values.Add("Param", JsonConvert.SerializeObject(Param));
                    values.Add("Session", Session);

                    wCient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                    byte[] responseData = wCient.UploadValues(Address, "POST", values);
                    //返回接受的数据 
                    result = System.Text.Encoding.UTF8.GetString(responseData);
                    //调用报错了                                                                 
                    if (!result.Contains(""))
                    {
                        result = "-1" + result + "0";
                    }
                }
                catch (Exception ex)
                {
                    result += ",异常信息:" + ex.Message + ",调用:" + ClassName + "," + FuncName + "," + Param + "," + Session;
                }
                finally
                {
                    if (wCient != null)
                    {
                        wCient.Dispose();
                    }
                }
            }
            return result;
        }

        /// 
        /// 处理空参数
        /// 
        /// 
        private static void DealNullPara(Parameters Param)
        {
            if (Param.P0 == null)
            {
                Param.P0 = "";
            }
            if (Param.P1 == null)
            {
                Param.P1 = "";
            }
            if (Param.P2 == null)
            {
                Param.P2 = "";
            }
            if (Param.P3 == null)
            {
                Param.P3 = "";
            }
            if (Param.P4 == null)
            {
                Param.P4 = "";
            }
            if (Param.P5 == null)
            {
                Param.P5 = "";
            }
            if (Param.P6 == null)
            {
                Param.P6 = "";
            }
            if (Param.P7 == null)
            {
                Param.P7 = "";
            }
            if (Param.P8 == null)
            {
                Param.P8 = "";
            }
            if (Param.P9 == null)
            {
                Param.P9 = "";
            }
            if (Param.P10 == null)
            {
                Param.P10 = "";
            }
            if (Param.P11 == null)
            {
                Param.P11 = "";
            }
            if (Param.P12 == null)
            {
                Param.P12 = "";
            }
            if (Param.P13 == null)
            {
                Param.P13 = "";
            }
            if (Param.P14 == null)
            {
                Param.P14 = "";
            }
        }

        /// 
        /// 继承客户端
        /// 
        public class NewWebClient : System.Net.WebClient
        {
            /// 
            /// 超时时间
            /// 
            private int timeout;

            /// 
            /// 超时时间(毫秒)
            /// 
            public int Timeout
            {
                get
                {
                    return timeout;
                }
                set
                {
                    timeout = value;
                }
            }

            /// 
            /// 默认时间
            /// 
            public NewWebClient()
            {
                this.timeout = 300000;
            }

            /// 
            /// 指定时间
            /// 
            /// 
            public NewWebClient(int timeout)
            {
                this.timeout = timeout;
            }

            /// 
            /// 重载
            /// 
            /// 
            /// 
            protected override System.Net.WebRequest GetWebRequest(Uri address)
            {
                var result = base.GetWebRequest(address);
                result.Timeout = this.timeout;
                return result;
            }
        }

        
    }
}

然后实现打印和导出的后台虚拟M逻辑
导出

import LIS.Core.Dto.OutParam;
import LIS.Model.Entity.BTTestCode;
import appcode.BaseHttpHandlerNoSession;
import appcode.Helper;

import java.util.List;

/**
 * 输出符合Query约定的数据供导出Excel用,所有的虚拟M方法参数约定就是这个样子
 */
public class ExportExcelTest extends BaseHttpHandlerNoSession {
    /**
     * 查询所有项目数据导出到Excel
     * @param P0
     * @param P1
     * @param P2
     * @param P3
     * @param P4
     * @param P5
     * @param P6
     * @param P7
     * @param P8
     * @param P9
     * @param P10
     * @param P11
     * @param P12
     * @param P13
     * @param Session
     * @param Output
     * @return
     */
    public String QryTestCode(String P0, String P1, String P2, String P3, String P4, String P5, String P6, String P7, String P8, String P9, String P10, String P11, String P12, String P13, OutParam Session, OutParam Output) throws Exception{
        BTTestCode dto=new BTTestCode();
        //返回的参数,供Excel模板使用
        Session.Message="项目数据导出1^"+LIS.Core.Util.TimeParser.GetNowDate()+"^zhanglianzhu";
        //查询项目数据
        List<BTTestCode> retList=EntityManager().FindAll(dto,null,"",-1,-1);
        //数组转json就是等价Query的
        return Helper.Object2Json(retList);
    }
}

打印

import LIS.Core.Dto.OutParam;
import LIS.Core.Dto.PrintElement;
import LIS.Core.Util.PrintDrawProtocol;
import appcode.BaseHttpHandlerNoSession;
import appcode.Helper;

import java.util.ArrayList;
import java.util.List;

/**
 * 输出符合打印元素绘制协议的打印元素数据,来供打印执行层打印
 */
public class PrintBarCodeTest extends BaseHttpHandlerNoSession {
    /**
     * 按传入的RowID输出符合打印元素绘制协议的数据来实现打印控制
     * @param RowID 业务主键
     * @param P1
     * @param P2
     * @param P3
     * @param P4
     * @param P5
     * @param P6
     * @param P7
     * @param P8
     * @param P9
     * @param P10
     * @param P11
     * @param P12
     * @param P13
     * @param Session
     * @param Output
     * @return
     */
    public String GetData(String RowID, String P1, String P2, String P3, String P4, String P5, String P6, String P7, String P8, String P9, String P10, String P11, String P12, String P13, OutParam Session, OutParam Output) {
        List<PrintElement> retList=new ArrayList<>();

        retList.add(PrintDrawProtocol.DrawLabel(10,10,"zhanglianzhu","宋体","12","","","","0"));
        retList.add(PrintDrawProtocol.DrawBarCode(10,50,"0947809",true,5,30,"","宋体","12","","","","0"));
        retList.add(PrintDrawProtocol.DrawLine(10,70,70,70,"","",""));
        retList.add(PrintDrawProtocol.DrawQRCode(10,90,"jbase",90,90));
        retList.add(PrintDrawProtocol.DrawLabel(10,210,"jbase打印支持","宋体","12","","","","0"));
        retList.add(PrintDrawProtocol.DrawLabel(10,230,"20231118 22:49","宋体","12","","","","0"));
        //先包一个打印元素绘制协议数据生成的工具类来解决元素约束问题,工具类实现了调用工具类得到标签,条码,文本等
        return Helper.Object2Json(retList);
    }
}

界面加打印和导出调用逻辑测试

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>BTTestCode供拷贝代码使用title>
    <link rel="shortcut icon" href="../../resource/common/images/favicon.ico" />
    <script src="../../resource/common/js/lis-commonHISUI.js" type="text/javascript">script>
    <script src="../../lisprint/js/LisPrint.js" type="text/javascript">script>
    <script language="javascript" type="text/javascript">
        LISSYSPageCommonInfo.Init();
        var BasePath = '';
        var ResourcePath = '';
        var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;
        //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;
        //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;
        //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;
        var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;
    script>
    <script type="text/javascript">
        //全局变量
        var me = {
            actionUrl: '../ashx/ashBTTestCode.ashx'
        };

        //jquery入口
        $(function () {
            //导出Excel
            $("#btnExportBTTestCode").click(function () {
                var para = {};
                var tempPath = DealExportExcelTMPName("导出测试.xls");
                LISBasePrint('Export@' + WebServicAddress + '@vm.test.ExportExcelTest@QryTestCode@' + JSON.stringify(para) + '@' + SessionStr + '@' + tempPath + '@0');
             });

            //打印
            $("#btnPrintBTTestCode").click(function () {
                 //0:打印所有报告 1:循环打印每一份报告
                 var printFlag = "0";
                 var userCode = "";
                 //打印参数
                 var paramList = "";
                 //PrintOut:打印  PrintPreview打印预览
                 var printType = "PrintPreview";
                 var printPara = "1";
                 var Param = printFlag + "@" + WebServicAddress + "@" + printPara + "@" + userCode + "@" + printType + "@" + paramList + "@vm.test.PrintBarCodeTest@GetData";
                  LISBasePrint(Param);
            });

            //新增数据点击
            $("#btnAddBTTestCode").click(function () {
                $("#txtBTTestCodeRowID").val(""); 
				$('#winEditBTTestCode').window({
                    title: TranslateDataMTHD('Add Data', '新增数据', ''),
                    modal: true
                });
            });


            //修改数据点击
            $("#btnUpdateBTTestCode").click(function () {
				UpdateBTTestCode();
            });

			//修改数据
			function UpdateBTTestCode(row)
			{
                var selectRow = $('#dgBTTestCode').datagrid("getSelected");
                if(row!=null)
                {
                	selectRow=row;
                }
                if (selectRow == null) {
                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');
                    return;
                }
				$("#formBTTestCode").form('load', selectRow);
				$('#winEditBTTestCode').window({
                    title: TranslateDataMTHD('Update Data', '修改数据', ''),
                    modal: true
                });
			}



            //删除数据点击
            $("#btnDeleteBTTestCode").click(function () {
                var checkRow = $('#dgBTTestCode').datagrid("getChecked");
                var selectRow = $('#dgBTTestCode').datagrid("getSelected");
                if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {
                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');
                    return;
                }
                if ((checkRow == null || checkRow.length == 0)) {
                    checkRow=[selectRow];
                }
                var RowIDS = "";
                for (var i = 0; i < checkRow.length; i++) {
                    if (i == 0) {
                        RowIDS = checkRow[i].RowID;
                    }
                    else {
                        RowIDS += "^" + checkRow[i].RowID;
                    }
                }
                $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {
                    if (r) {
                		//开启等待
                		$.messager.progress({ text: TranslateDataMTHD("Deleting data","正在删除数据", ""), interval: 500 });
                		setTimeout(function () {
                    		$.messager.progress('close');
                		}, 8000);
                		//往后台提交数据
                		$.ajax({
                    		type: "post",
                    		dataType: "json",
                    		cache: false, //
                    		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    		url: me.actionUrl + '?Method=DeleteBTTestCode',
                    		data: { RowIDS: RowIDS },
                    		success: function (data, status) {
                        		$.messager.progress('close');
                        		if (!FilterBackData(data)) {
                            		return;
                        		}
                        		if (!data.IsOk) {
                            		$.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                        		}
                        		else {
                            		QryBTTestCode();
                            		$.messager.show({
                                		title: TranslateDataMTHD("Info", "提示", ""),
                               		 	msg: TranslateDataMTHD("Successfully deleted!", "删除成功!", ""),
                                		timeout: 500,
                                		showType: 'slide'
                            		});
                        		}
                    		}
                		});
                    }
                });
            });


            //保存数据
            $("#btnSaveBTTestCode").click(function () {
                var saveData = jQuery.parseJSON($("#formBTTestCode").serializeObject());
                //开启等待
                $.messager.progress({ text: TranslateDataMTHD("Saving data","正在保存数据", ""), interval: 500 });
                setTimeout(function () {
                    $.messager.progress('close');
                }, 8000);
                //往后台提交数据
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=SaveBTTestCode',
                    data: saveData,
                    success: function (data, status) {
                        $.messager.progress('close');
                        if (!FilterBackData(data)) {
                            return;
                        }
                        if (!data.IsOk) {
                            $.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                        }
                        else {
                            QryBTTestCode();
                            $.messager.show({
                                title: TranslateDataMTHD("Info", "提示", ""),
                                msg: TranslateDataMTHD("Successfully saveed!", "保存成功!", ""),
                                timeout: 500,
                                showType: 'slide'
                            });
                            $('#winEditBTTestCode').window("close");
                        }
                    }
                });
            });


            //关闭窗口
            $("#btnCloseBTTestCode").click(function () {
				$('#winEditBTTestCode').window("close");
            });


            //构造查询事件
            $("#txtFilterBTTestCode").searchbox({
                searcher: function (value, name) {
                    QryBTTestCode();
                },
                prompt: TranslateDataMTHD('Enter query', '回车查询', '')
            });



            //医院下拉表格渲染
            $('#txtBTTestCodeHospitalDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTHospital", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeHospitalDR').combogrid("showSelectWin");

            //检测方法下拉表格渲染
            $('#txtBTTestCodeTestMethodDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTTestMethod", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeTestMethodDR').combogrid("showSelectWin");

            //计算项布尔渲染
            $('#txtBTTestCodeIsCalculate').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //收费项目下拉表格渲染
            $('#txtBTTestCodeCostItemDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTCostItem", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeCostItemDR').combogrid("showSelectWin");

            //独立医嘱套下拉表格渲染
            $('#txtBTTestCodeTestSetDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTTestSet", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeTestSetDR').combogrid("showSelectWin");

            //状态布尔渲染
            $('#txtBTTestCodeActive').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //是否判断定性布尔渲染
            $('#txtBTTestCodeIsCheckText').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //是否允许负数布尔渲染
            $('#txtBTTestCodeIsAllowNegative').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //是否允许非数字布尔渲染
            $('#txtBTTestCodeIsAllowNoNumeric').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //结果判断布尔渲染
            $('#txtBTTestCodeIsExcJudgeRule').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //项目类别下拉表格渲染
            $('#txtBTTestCodeItemClassDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTItemClass", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeItemClassDR').combogrid("showSelectWin");

            //所属科室下拉表格渲染
            $('#txtBTTestCodeDepartmentDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTDepartment", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeDepartmentDR').combogrid("showSelectWin");

            //是否实时计算布尔渲染
            $('#txtBTTestCodeIsRealCal').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //重新编辑布尔渲染
            $('#txtBTTestCodeReEditFlag').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //计算项不计算布尔渲染
            $('#txtBTTestCodeNoCalFlag').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //质控项目下拉表格渲染
            $('#txtBTTestCodeQCTestCodeDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTTestCode", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTTestCodeQCTestCodeDR').combogrid("showSelectWin");

            //文本等于校验布尔渲染
            $('#txtBTTestCodeCheckEqual').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //参考范围只维护正常范围布尔渲染
            $('#txtBTTestCodeIsNormalRange').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //是否允许零值布尔渲染
            $('#txtBTTestCodeIsAllowZero').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //允许删除布尔渲染
            $('#txtBTTestCodeAllowDelete').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //允许拆分布尔渲染
            $('#txtBTTestCodeAllowSplit').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //允许追踪布尔渲染
            $('#txtBTTestCodeAllowTrace').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //不导出布尔渲染
            $('#txtBTTestCodeIsNoExport').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //BTTestCode表格
            $('#dgBTTestCode').datagrid({
                remoteSort:false,
                singleSelect: true,
                toolbar: "#dgBTTestCodeToolBar",
                fit: true,
                onSelect: function (index, row) {
                    //方便拷贝到子表查询用
                	var selectBTTestCode=$('#dgBTTestCode').datagrid("getSelected");
                },
                onDblClickRow: function (index, row) {
                    UpdateBTTestCode(row);
                },

                columns: [[
                    { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },
                    { field: 'RowID', title: TranslateDataMTHD('RowID', '主键', '') , width: 150, sortable: true },
                    { field: 'Code', title: TranslateDataMTHD('Code', '代码', '') , width: 150, sortable: true },
                    { field: 'CName', title: TranslateDataMTHD('CName', '名称', '') , width: 150, sortable: true },
                    { field: 'HospitalDRName', title: TranslateDataMTHD('HospitalDRName', '医院', '') , width: 150, sortable: true },
                    { field: 'LName', title: TranslateDataMTHD('LName', '全称', '') , width: 150, sortable: true },
                    { field: 'EName', title: TranslateDataMTHD('EName', '英文名称', '') , width: 150, sortable: true },
                    { field: 'Synonym', title: TranslateDataMTHD('Synonym', '缩写', '') , width: 150, sortable: true },
                    { field: 'Units', title: TranslateDataMTHD('Units', '单位', '') , width: 150, sortable: true },
                    { field: 'ResultFormat', title: TranslateDataMTHD('ResultFormat', '结果格式', '') , width: 150, sortable: true },
                    { field: 'Precision', title: TranslateDataMTHD('Precision', '精确度', '') , width: 150, sortable: true },
                    { field: 'TestMethodDRName', title: TranslateDataMTHD('TestMethodDRName', '检测方法', '') , width: 150, sortable: true },
                    { field: 'IsCalculate', title: TranslateDataMTHD('IsCalculate', '计算项', '') , width: 150, sortable: true },
                    { field: 'LonicCode', title: TranslateDataMTHD('LonicCode', 'LONIC码', '') , width: 150, sortable: true },
                    { field: 'SCode', title: TranslateDataMTHD('SCode', '标准码', '') , width: 150, sortable: true },
                    { field: 'SOPContent', title: TranslateDataMTHD('SOPContent', 'SOP内容', '') , width: 150, sortable: true },
                    { field: 'SOPFile', title: TranslateDataMTHD('SOPFile', 'SOP文件', '') , width: 150, sortable: true },
                    { field: 'HISCode', title: TranslateDataMTHD('HISCode', 'HIS对照码', '') , width: 150, sortable: true },
                    { field: 'CostItemDRName', title: TranslateDataMTHD('CostItemDRName', '收费项目', '') , width: 150, sortable: true },
                    { field: 'Price', title: TranslateDataMTHD('Price', '价格', '') , width: 150, sortable: true },
                    { field: 'ClinicalSignifyS', title: TranslateDataMTHD('ClinicalSignifyS', '临床意义简述', '') , width: 150, sortable: true },
                    { field: 'ClinicalSignifyL', title: TranslateDataMTHD('ClinicalSignifyL', '临床意义描述', '') , width: 150, sortable: true },
                    { field: 'TestSetDRName', title: TranslateDataMTHD('TestSetDRName', '独立医嘱套', '') , width: 150, sortable: true },
                    { field: 'PrintOrder', title: TranslateDataMTHD('PrintOrder', '打印顺序', '') , width: 150, sortable: true },
                    { field: 'Sequence', title: TranslateDataMTHD('Sequence', '序号', '') , width: 150, sortable: true },
                    { field: 'Active', title: TranslateDataMTHD('Active', '状态', '') , width: 150, sortable: true },
                    { field: 'CalculateFormula', title: TranslateDataMTHD('CalculateFormula', '计算公式', '') , width: 150, sortable: true },
                    { field: 'RefRanges', title: TranslateDataMTHD('RefRanges', '参考范围', '') , width: 150, sortable: true },
                    { field: 'IsCheckText', title: TranslateDataMTHD('IsCheckText', '是否判断定性', '') , width: 150, sortable: true },
                    { field: 'RefField', title: TranslateDataMTHD('RefField', '特殊报告用', '') , width: 150, sortable: true },
                    { field: 'IsAllowNegative', title: TranslateDataMTHD('IsAllowNegative', '是否允许负数', '') , width: 150, sortable: true },
                    { field: 'IsAllowNoNumeric', title: TranslateDataMTHD('IsAllowNoNumeric', '是否允许非数字', '') , width: 150, sortable: true },
                    { field: 'IsExcJudgeRule', title: TranslateDataMTHD('IsExcJudgeRule', '结果判断', '') , width: 150, sortable: true },
                    { field: 'ItemClassDRName', title: TranslateDataMTHD('ItemClassDRName', '项目类别', '') , width: 150, sortable: true },
                    { field: 'DepartmentDRName', title: TranslateDataMTHD('DepartmentDRName', '所属科室', '') , width: 150, sortable: true },
                    { field: 'IsRealCal', title: TranslateDataMTHD('IsRealCal', '是否实时计算', '') , width: 150, sortable: true },
                    { field: 'UnacceptLow', title: TranslateDataMTHD('UnacceptLow', '排除低值', '') , width: 150, sortable: true },
                    { field: 'UnacceptHigh', title: TranslateDataMTHD('UnacceptHigh', '排除高值', '') , width: 150, sortable: true },
                    { field: 'ReEditFlag', title: TranslateDataMTHD('ReEditFlag', '重新编辑', '') , width: 150, sortable: true },
                    { field: 'NoCalFlag', title: TranslateDataMTHD('NoCalFlag', '计算项不计算', '') , width: 150, sortable: true },
                    { field: 'QCTestCodeDRName', title: TranslateDataMTHD('QCTestCodeDRName', '质控项目', '') , width: 150, sortable: true },
                    { field: 'CheckEqual', title: TranslateDataMTHD('CheckEqual', '文本等于校验', '') , width: 150, sortable: true },
                    { field: 'IsNormalRange', title: TranslateDataMTHD('IsNormalRange', '参考范围只维护正常范围', '') , width: 150, sortable: true },
                    { field: 'ShareFlag', title: TranslateDataMTHD('ShareFlag', '结果互认标记', '') , width: 150, sortable: true },
                    { field: 'IsAllowZero', title: TranslateDataMTHD('IsAllowZero', '是否允许零值', '') , width: 150, sortable: true },
                    { field: 'QCPatVisEval', title: TranslateDataMTHD('QCPatVisEval', '评估标准', '') , width: 150, sortable: true },
                    { field: 'AllowDelete', title: TranslateDataMTHD('AllowDelete', '允许删除', '') , width: 150, sortable: true },
                    { field: 'AllowSplit', title: TranslateDataMTHD('AllowSplit', '允许拆分', '') , width: 150, sortable: true },
                    { field: 'AllowTrace', title: TranslateDataMTHD('AllowTrace', '允许追踪', '') , width: 150, sortable: true },
                    { field: 'DefaultResult', title: TranslateDataMTHD('DefaultResult', '默认结果', '') , width: 150, sortable: true },
                    { field: 'IsNoExport', title: TranslateDataMTHD('IsNoExport', '不导出', '') , width: 150, sortable: true },
                    { field: 'CVValue', title: TranslateDataMTHD('CVValue', '允许CV值', '') , width: 150, sortable: true },
                    { field: 'CVSource', title: TranslateDataMTHD('CVSource', '允许CV值来源', '') , width: 150, sortable: true },
                    { field: 'SigmaValue', title: TranslateDataMTHD('SigmaValue', '本室的σ值', '') , width: 150, sortable: true },
                    { field: 'SplitTSName', title: TranslateDataMTHD('SplitTSName', '拆分医嘱名称', '') , width: 150, sortable: true }
                ]]
            });


            //查询BTTestCode
            function QryBTTestCode() {
                var Filter = $("#txtFilterBTTestCode").searchbox("getValue");
                //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启
                //$.messager.progress({ text: TranslateDataMTHD("Querying data","正在查询数据", ""), interval: 500 });
                //setTimeout(function () {
                    //$.messager.progress('close');
                //}, 8000);
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=QryBTTestCode',
                    data: { Filter: Filter },
                    success: function (data, status) {
                        //结束等待
                        //$.messager.progress('close');
                        $('#dgBTTestCode').datagrid("loadData", data);
                    }
                });
            };


            //执行查询数据
            QryBTTestCode();


		});
    script>
head>
<body>
    <div class="hisui-layout" fit="true" style="border: none;">
        <div data-options="region:'center',title:''" style="border: none;">
            <div id="dgBTTestCodeToolBar" style="padding: 3px 0px 3px 10px;">
                <a id="btnAddBTTestCode" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-add'" plain="true" listranslate="html~Add">新增a>
                <a id="btnUpdateBTTestCode" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-write-order'" plain="true" listranslate="html~Mod">修改a>
                <a id="btnDeleteBTTestCode" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-cancel'" plain="true" listranslate="html~Del">删除a>
                <a id="btnExportBTTestCode" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-excel'" plain="true" listranslate="html~Export">导出a>
                <a id="btnPrintBTTestCode" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-print'" plain="true" listranslate="html~Print">打印a>
                <input id="txtFilterBTTestCode" style="margin-left: 14px; width: 240px;">input>
            div>
            <table id="dgBTTestCode" title="" iconcls="icon-paper" listranslate="title~BTTestCode">table>
        div>
        <div id="winEditBTTestCode" style="padding: 10px 0px 0px 10px;width:1140px;height:786px;">
            <form id="formBTTestCode" name="edit_form" method="post">
                <input type="hidden" id="txtBTTestCodeRowID" name="RowID" value="0" />
                <table>
                    <tr>
                        <td class="lisar" listranslate="html~Code">代码td>
                        <td class="lisal"><input id="txtBTTestCodeCode" type="text" name="Code" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                        <td class="lisar" listranslate="html~CName">名称td>
                        <td class="lisal"><input id="txtBTTestCodeCName" type="text" name="CName" style="width:200px;" class="hisui-validatebox"  maxlength="50"/>td>
                        <td class="lisar" listranslate="html~HospitalDR">医院td>
                        <td class="lisal"><input id="txtBTTestCodeHospitalDR" type="text" name="HospitalDR" style="width:200px;"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~LName">全称td>
                        <td class="lisal"><input id="txtBTTestCodeLName" type="text" name="LName" style="width:200px;" class="hisui-validatebox"  maxlength="100"/>td>
                        <td class="lisar" listranslate="html~EName">英文名称td>
                        <td class="lisal"><input id="txtBTTestCodeEName" type="text" name="EName" style="width:200px;" class="hisui-validatebox"  maxlength="30"/>td>
                        <td class="lisar" listranslate="html~Synonym">缩写td>
                        <td class="lisal"><input id="txtBTTestCodeSynonym" type="text" name="Synonym" style="width:200px;" class="hisui-validatebox"  maxlength="30"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~Units">单位td>
                        <td class="lisal"><input id="txtBTTestCodeUnits" type="text" name="Units" style="width:200px;" class="hisui-validatebox"  maxlength="50"/>td>
                        <td class="lisar" listranslate="html~ResultFormat">结果格式td>
                        <td class="lisal"><input id="txtBTTestCodeResultFormat" type="text" name="ResultFormat" style="width:200px;" class="hisui-validatebox"  maxlength="2"/>td>
                        <td class="lisar" listranslate="html~Precision">精确度td>
                        <td class="lisal"><input id="txtBTTestCodePrecision" type="text" name="Precision" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~TestMethodDR">检测方法td>
                        <td class="lisal"><input id="txtBTTestCodeTestMethodDR" type="text" name="TestMethodDR" style="width:200px;"/>td>
                        <td class="lisar" listranslate="html~IsCalculate">计算项td>
                        <td class="lisal"><input id="txtBTTestCodeIsCalculate" type="text" name="IsCalculate" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~LonicCode">LONIC码td>
                        <td class="lisal"><input id="txtBTTestCodeLonicCode" type="text" name="LonicCode" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~SCode">标准码td>
                        <td class="lisal"><input id="txtBTTestCodeSCode" type="text" name="SCode" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                        <td class="lisar" listranslate="html~SOPContent">SOP内容td>
                        <td class="lisal"><input id="txtBTTestCodeSOPContent" type="text" name="SOPContent" style="width:200px;" class="hisui-validatebox"  maxlength="100"/>td>
                        <td class="lisar" listranslate="html~SOPFile">SOP文件td>
                        <td class="lisal"><input id="txtBTTestCodeSOPFile" type="text" name="SOPFile" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~HISCode">HIS对照码td>
                        <td class="lisal"><input id="txtBTTestCodeHISCode" type="text" name="HISCode" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                        <td class="lisar" listranslate="html~CostItemDR">收费项目td>
                        <td class="lisal"><input id="txtBTTestCodeCostItemDR" type="text" name="CostItemDR" style="width:200px;"/>td>
                        <td class="lisar" listranslate="html~Price">价格td>
                        <td class="lisal"><input id="txtBTTestCodePrice" type="text" name="Price" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~ClinicalSignifyS">临床意义简述td>
                        <td class="lisal"><input id="txtBTTestCodeClinicalSignifyS" type="text" name="ClinicalSignifyS" style="width:200px;" class="hisui-validatebox"  maxlength="30"/>td>
                        <td class="lisar" listranslate="html~ClinicalSignifyL">临床意义描述td>
                        <td class="lisal"><input id="txtBTTestCodeClinicalSignifyL" type="text" name="ClinicalSignifyL" style="width:200px;" class="hisui-validatebox"  maxlength="100"/>td>
                        <td class="lisar" listranslate="html~TestSetDR">独立医嘱套td>
                        <td class="lisal"><input id="txtBTTestCodeTestSetDR" type="text" name="TestSetDR" style="width:200px;"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~PrintOrder">打印顺序td>
                        <td class="lisal"><input id="txtBTTestCodePrintOrder" type="text" name="PrintOrder" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                        <td class="lisar" listranslate="html~Sequence">序号td>
                        <td class="lisal"><input id="txtBTTestCodeSequence" type="text" name="Sequence" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                        <td class="lisar" listranslate="html~Active">状态td>
                        <td class="lisal"><input id="txtBTTestCodeActive" type="text" name="Active" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~CalculateFormula">计算公式td>
                        <td class="lisal"><input id="txtBTTestCodeCalculateFormula" type="text" name="CalculateFormula" style="width:200px;" class="hisui-validatebox"  maxlength="500"/>td>
                        <td class="lisar" listranslate="html~RefRanges">参考范围td>
                        <td class="lisal"><input id="txtBTTestCodeRefRanges" type="text" name="RefRanges" style="width:200px;" class="hisui-validatebox"  maxlength="500"/>td>
                        <td class="lisar" listranslate="html~IsCheckText">是否判断定性td>
                        <td class="lisal"><input id="txtBTTestCodeIsCheckText" type="text" name="IsCheckText" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~RefField">特殊报告用td>
                        <td class="lisal"><input id="txtBTTestCodeRefField" type="text" name="RefField" style="width:200px;" class="hisui-validatebox"  maxlength="100"/>td>
                        <td class="lisar" listranslate="html~IsAllowNegative">是否允许负数td>
                        <td class="lisal"><input id="txtBTTestCodeIsAllowNegative" type="text" name="IsAllowNegative" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~IsAllowNoNumeric">是否允许非数字td>
                        <td class="lisal"><input id="txtBTTestCodeIsAllowNoNumeric" type="text" name="IsAllowNoNumeric" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~IsExcJudgeRule">结果判断td>
                        <td class="lisal"><input id="txtBTTestCodeIsExcJudgeRule" type="text" name="IsExcJudgeRule" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~ItemClassDR">项目类别td>
                        <td class="lisal"><input id="txtBTTestCodeItemClassDR" type="text" name="ItemClassDR" style="width:200px;"/>td>
                        <td class="lisar" listranslate="html~DepartmentDR">所属科室td>
                        <td class="lisal"><input id="txtBTTestCodeDepartmentDR" type="text" name="DepartmentDR" style="width:200px;"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~IsRealCal">是否实时计算td>
                        <td class="lisal"><input id="txtBTTestCodeIsRealCal" type="text" name="IsRealCal" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~UnacceptLow">排除低值td>
                        <td class="lisal"><input id="txtBTTestCodeUnacceptLow" type="text" name="UnacceptLow" style="width:200px;" class="hisui-validatebox"  maxlength="50"/>td>
                        <td class="lisar" listranslate="html~UnacceptHigh">排除高值td>
                        <td class="lisal"><input id="txtBTTestCodeUnacceptHigh" type="text" name="UnacceptHigh" style="width:200px;" class="hisui-validatebox"  maxlength="50"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~ReEditFlag">重新编辑td>
                        <td class="lisal"><input id="txtBTTestCodeReEditFlag" type="text" name="ReEditFlag" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~NoCalFlag">计算项不计算td>
                        <td class="lisal"><input id="txtBTTestCodeNoCalFlag" type="text" name="NoCalFlag" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~QCTestCodeDR">质控项目td>
                        <td class="lisal"><input id="txtBTTestCodeQCTestCodeDR" type="text" name="QCTestCodeDR" style="width:200px;"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~CheckEqual">文本等于校验td>
                        <td class="lisal"><input id="txtBTTestCodeCheckEqual" type="text" name="CheckEqual" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~IsNormalRange">参考范围只维护正常范围td>
                        <td class="lisal"><input id="txtBTTestCodeIsNormalRange" type="text" name="IsNormalRange" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~ShareFlag">结果互认标记td>
                        <td class="lisal"><input id="txtBTTestCodeShareFlag" type="text" name="ShareFlag" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~IsAllowZero">是否允许零值td>
                        <td class="lisal"><input id="txtBTTestCodeIsAllowZero" type="text" name="IsAllowZero" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~QCPatVisEval">评估标准td>
                        <td class="lisal"><input id="txtBTTestCodeQCPatVisEval" type="text" name="QCPatVisEval" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                        <td class="lisar" listranslate="html~AllowDelete">允许删除td>
                        <td class="lisal"><input id="txtBTTestCodeAllowDelete" type="text" name="AllowDelete" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~AllowSplit">允许拆分td>
                        <td class="lisal"><input id="txtBTTestCodeAllowSplit" type="text" name="AllowSplit" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~AllowTrace">允许追踪td>
                        <td class="lisal"><input id="txtBTTestCodeAllowTrace" type="text" name="AllowTrace" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~DefaultResult">默认结果td>
                        <td class="lisal"><input id="txtBTTestCodeDefaultResult" type="text" name="DefaultResult" style="width:200px;" class="hisui-validatebox"  maxlength="20"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~IsNoExport">不导出td>
                        <td class="lisal"><input id="txtBTTestCodeIsNoExport" type="text" name="IsNoExport" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~CVValue">允许CV值td>
                        <td class="lisal"><input id="txtBTTestCodeCVValue" type="text" name="CVValue" style="width:200px;" class="hisui-validatebox"  maxlength="10"/>td>
                        <td class="lisar" listranslate="html~CVSource">允许CV值来源td>
                        <td class="lisal"><input id="txtBTTestCodeCVSource" type="text" name="CVSource" style="width:200px;" class="hisui-validatebox"  maxlength="100"/>td>
                    tr>
                    <tr>
                        <td class="lisar" listranslate="html~SigmaValue">本室的σ值td>
                        <td class="lisal"><input id="txtBTTestCodeSigmaValue" type="text" name="SigmaValue" style="width:200px;" class="hisui-validatebox"  maxlength="1"/>td>
                        <td class="lisar" listranslate="html~SplitTSName">拆分医嘱名称td>
                        <td class="lisal"><input id="txtBTTestCodeSplitTSName" type="text" name="SplitTSName" style="width:200px;" class="hisui-validatebox"  maxlength="50"/>td>
                table>
                <div region="south" border="fale" style="text-align: center; padding: 5px 0 0;">
                    <a id="btnSaveBTTestCode" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Save">保存a>
                    <span class="sp6">span>
                    <a id="btnCloseBTTestCode" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Cancel">取消a>
                div>
            form>
        div>
body>
html>


界面
jbase打印导出实现_第1张图片

导出模板
jbase打印导出实现_第2张图片

导出效果
jbase打印导出实现_第3张图片

jbase打印导出实现_第4张图片

打印效果
jbase打印导出实现_第5张图片

高效开发和进行打印导出满足了

你可能感兴趣的:(java,数据库,开发语言)