# datareport **Repository Path**: damai2/datareport ## Basic Information - **Project Name**: datareport - **Description**: 模版案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 原始记录模版帮助手册 ## 一、理解原理 ### 1.1、页面传值 ![alt 交互原理](https://images.gitee.com/uploads/images/2019/1125/165615_50bfebb4_1168952.png "交互原理") * step-1)父窗体开始,点击打开原始记录模版 * step-2)原始记录模版根据父级提供的数值验证是编辑还是添加操作,编辑操作时需给文本框赋值 * step-3)原始记录点击保存,传递JSON给父窗体 * step-4)由父窗体统一保存到数据库 * step-5)报告模版使用对应关系呈现报告 ### 1.2、层级关系 **注意:特殊情况除外,会存在一个项目多个模版的情况,会编写前通知** *一个项目->一个原始记录模版->一个报告模版* *一个项目->多个参数* *一个原始记录模版->多个参数* ## 二、开发前准备 ##### 1)项目对应的参数列表 ##### 2)参数模版样式 ##### 3)报告模版最终样式 ##### 4)原始记录计算公式 ##### 5)原始记录与报告对应关系文件 ## 三、重要方法 ##### 1)父窗体保存的方法及已添加的数据 ``` js //父窗体添加方法 addjson(json) ``` ``` html ``` ##### 2)原始记录页根据父窗体中隐藏域的值判断是否是编辑操作 ``` js //原始记录模版调用方法 可以参考内置在main.js中的页面编辑方法 Load() var val = $(window.parent.document).find("input[name='prolist']").val(); if (val != null) { ... } ``` ##### 3)原始记录页点击保存,根据name及value采集成json串,传递给父窗体,可以参考main.js中TestSub() ``` js //原始记录模版传递JSON给父级方法 parent.addjson(json); ``` ##### 4)父级执行保存到数据库,子级具体采集到的JSON数据格式为 ``` json { "type":1, "isqualified":"true", "attch1":"", "attch2":"", "attch3":"", "attch4":"", "attch5":"", "attch6":"", "attch7":"", "attch8":"", "attch9":"", "attch10":"", "list":[ { "name":"参数1", "sort":"1", "attch1":"", "attch2":"", "attch3":"", "attch4":"", "attch5":"", "attch6":"", "attch7":"", "attch8":"", "attch9":"", "attch10":"", "attch11":"", "attch12":"", "attch13":"", "attch14":"", "attch15":"", "attch16":"", "attch17":"", "attch18":"", "attch19":"", "attch20":"", "value":[ { "name":"cs1sj1", "value":"参数1数据1" }, { "name":"cs1sj2", "value":"参数1数据2" }, { "name":"cs1sj3", "value":"参数1数据3" } ] }, { "name":"参数2", "sort":"2", "attch1":"", "attch2":"", "attch3":"", "attch4":"", "attch5":"", "attch6":"", "attch7":"", "attch8":"", "attch9":"", "attch10":"", "attch11":"", "attch12":"", "attch13":"", "attch14":"", "attch15":"", "attch16":"", "attch17":"", "attch18":"", "attch19":"", "attch20":"", "value":[ { "name":"cs2sj1", "value":"参数2数据1" }, { "name":"cs2sj2", "value":"参数2数据2" }, { "name":"cs2sj3", "value":"参数2数据3" } ] }, { "name":"参数3", "sort":"3", "attch1":"", "attch2":"", "attch3":"", "attch4":"", "attch5":"", "attch6":"", "attch7":"", "attch8":"", "attch9":"", "attch10":"", "attch11":"", "attch12":"", "attch13":"", "attch14":"", "attch15":"", "attch16":"", "attch17":"", "attch18":"", "attch19":"", "attch20":"", "value":[ { "name":"cs3sj1", "value":"参数3数据1" }, { "name":"cs3sj2", "value":"参数3数据2" }, { "name":"cs3sj3", "value":"参数3数据3" } ] } ], "value":[ { "name":"qtsj1", "value":"其他数据1" }, { "name":"qtsj2", "value":"其他数据2" }, { "name":"qtsj3", "value":"其他数据3" } ] } ``` ##### 5)报告模版读取数据库JSON,具体为:使用实现形式会在报告模版手册设计中介绍 ## 四、开始开发 **下面以一个简单模版作为案例进行编写** 注意:每个模版下输入框的name不能相同,否者会造成报告读取失败,请认真检查 #### 1)设计文档层次关系 ``` js ├── 工作文件夹 | ├── Scripts | ├ ├──main.js | ├ ├──jquery.min.js | └── CSS | ├ ├── main.css | └── Views | └── xxx.html ``` #### 2)引用css文件 ``` css ``` #### 3)引用js文件 ``` js //注意只能引用默认在Script下的文件 其他脚本需写在当前Html中 ``` #### 4)模版通用头部 ``` html
原始记录采集表
检测结论
``` ### 5)模版中参数选择区域 页面初始化自动补充 ``` html
``` ### 6)参数采集区域 按参数划分 每个参数对应一个form ``` html
参数1数据1 参数1数据2 参数1数据3
``` ### 7)其他数据采集区域 ``` html
其他数据1 其他数据2 其他数据3
``` #### 8)页面增加初始化脚本 正常情况下只需修改如下JSON即可满足参数增减 ``` js //id为参数编号或顺序号 name为参数名 ischeck为是否选中 //初始化参数及编辑操作赋值 $(document).ready(function () { //注意表格的id使用table+每个参数id 例如:id="table1" var parload = [ { "id": "1", "name": "参数1", "ischeck": false }, { "id": "2", "name": "参数2", "ischeck": false }, { "id": "3", "name": "参数3", "ischeck": false } ] //获取父窗体中已采集的数据 var val = $(window.parent.document).find("input[name='prolist']").val(); if (val != null) { //编辑操作 var json = JSON.parse(val); //项目基础信息部分 var a1 = json.attch1; /* 逻辑处理 ... */ $("input[name='jl']").val(a1); //其他信息通用部分 $.each(json.value, function (i, v) { inputset(v.name, v.value); }); //处理参数部分 $.each(json.list, function (index, value) { //参数基础信息部分使用 var name = value.name; var id = value.sort; var attch1 = value.attch1; console.log(name); /* 逻辑处理 ... */ //处理参数选中 $.each(parload, function (i, v) { if (id == v.id) { parload[i].ischeck = true; } }) //遍历内容为参数对应的输入框 $.each(value.value, function (i, v) { inputset(v.name, v.value); }); }) } var htmlstr = ""; $.each(parload, function (i, v) { if (v.ischeck) { htmlstr += "" + v.name $("#table" + v.id).find("table").attr("class", "open"); } else { htmlstr += "" + v.name } }) $("#showpar").html(htmlstr); }); ``` #### 9)保存数据成json格式 **注意:以下脚本请根据实际情况参考或使用,不能满足时请在页面中重写方法进行操作,不能删除main.js中任何脚本** ```js //参考的保存数据方法 function TestSub() { //固定格式 var json = { "type": 1, //json样式 无特殊情况使用1即可 "isqualified": true, //是否合格 "attch1": "", //自定义属性1-【现使用为检测结论,作为案例】 "attch2": "", //自定义属性2 "attch3": "", //自定义属性3 "attch4": "", //自定义属性4 "attch5": "", //自定义属性5 "attch6": "", //自定义属性6 "attch7": "", //自定义属性7 "attch8": "", //自定义属性8 "attch9": "", //自定义属性9 "attch10": "", //自定义属性10 "list": [ //选中的参数列表信息 ], "value": [ //其他信息部分
标记 ] } //检测结论 json.isqualified = $("input[name='ischeck']").val() json.attch1 = $("input[name='jl']").val() //选中的参数列表信息 $(".checkpar").each(function () { if ($(this).is(':checked')) { var id = $(this).val(); var name = $(this).attr("data-name"); //参数采集样式 var parjson = { "name": name,//固定名称 "sort": id,//固定编号 "attch1": "", //自定义属性1 "attch2": "", //自定义属性2 "attch3": "", //自定义属性3 "attch4": "", //自定义属性4 "attch5": "", //自定义属性5 "attch6": "", //自定义属性6 "attch7": "", //自定义属性7 "attch8": "", //自定义属性8 "attch9": "", //自定义属性9 "attch10": "", //自定义属性10 "attch11": "", //自定义属性11 "attch12": "", //自定义属性12 "attch13": "", //自定义属性13 "attch14": "", //自定义属性14 "attch15": "", //自定义属性15 "attch16": "", //自定义属性16 "attch17": "", //自定义属性17 "attch18": "", //自定义属性18 "attch19": "", //自定义属性19 "attch20": "", //自定义属性20 "value": []//输入框对应 } //参数对应数据输入框采集 var params = $("#table" + id).serializeArray(); for (x in params) { var values = { name: "", value: "" }; values.name = params[x].name; values.value = params[x].value; parjson.value.push(values); } json.list.push(parjson); } }); //获取项目其他信息 var params = $(".other").serializeArray(); for (x in params) { var values = { name: "", value: "" }; values.name = params[x].name; values.value = params[x].value; json.value.push(values); } //调试脚本 console.log(json); console.log(JSON.stringify(json)); //执行父级脚本 parent.addjson(json); } ``` ### 10)完整项目下载 https://gitee.com/songjingli/datareport ## 五、进行测试 http://192.168.1.171:8088/list ###### step-1)新增模版 ###### step-2)选择新增模版上传原始记录 ###### step-3)点击去测试 ###### step-4)点击保存是否成功 ###### step-5)刷新页面查看编辑是否数据匹配