|
@@ -0,0 +1,485 @@
|
|
|
+<!DOCTYPE html>
|
|
|
+<html lang="en">
|
|
|
+
|
|
|
+<head>
|
|
|
+ <meta charset="utf-8">
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
|
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
|
+ <title>清单规则编辑器</title>
|
|
|
+ <link rel="stylesheet" href="web/css/bootstrap/bootstrap.min.css">
|
|
|
+ <!--<link rel="stylesheet" href="../../web/css/bootstrap/themes.css">-->
|
|
|
+ <link rel="stylesheet" href="web/css/main.css">
|
|
|
+ <link rel="stylesheet" href="web/css/font-awesome/font-awesome.min.css">
|
|
|
+ <!--spread-->
|
|
|
+ <link rel="stylesheet" href="web/css/spreadjs/gc.spread.sheets.excel2013white.10.0.1.css">
|
|
|
+ <!--zTree-->
|
|
|
+ <link rel="stylesheet" href="web/css/ztree/zTreeStyle.css" type="text/css">
|
|
|
+</head>
|
|
|
+
|
|
|
+<body>
|
|
|
+ <div class="header">
|
|
|
+ <nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 ">
|
|
|
+ <span class="header-logo px-2">清单规则编辑器</span>
|
|
|
+ <div class="navbar-text"></div>
|
|
|
+ </nav>
|
|
|
+ <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
|
|
|
+
|
|
|
+ <ul class="nav nav-tabs" role="tablist">
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link active px-3" href="qingdan.html">清单</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link px-3" href="neirong.html">工作内容</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link px-3" href="tezheng.html">项目特征</a>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </nav>
|
|
|
+ </div>
|
|
|
+ <div class="main">
|
|
|
+ <div class="content" >
|
|
|
+ <div class="container-fluid">
|
|
|
+ <div class="row">
|
|
|
+ <div class="main-content col-lg-7 p-0">
|
|
|
+ <nav class="navbar sticky-top navbar-toggleable-md navbar-light bg-faded tools-bar">
|
|
|
+ <div class="collapse navbar-collapse" id="navbarNav">
|
|
|
+ <ul class="navbar-nav">
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link text-primary" id="insert" href="javascript: void(0);"><i class="fa fa-share" aria-hidden="true"></i>插入</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link text-primary" id ="delete" href="javascript:void (0)"><i class="fa fa-remove" aria-hidden="true"></i>删除</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link text-primary" id="upLevel" href="javascript: void(0);"><i class="fa fa-arrow-left" aria-hidden="true"></i>升级</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link text-primary" id="downLevl" href="javascript: void(0);"><i class="fa fa-arrow-right" aria-hidden="true"></i>降级</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link text-primary" id="upMove" href="javascript: void(0);"><i class="fa fa-arrow-up" aria-hidden="true"></i>上移</a>
|
|
|
+ </li>
|
|
|
+ <li class="nav-item">
|
|
|
+ <a class="nav-link text-primary" id="downMove" href="javascript: void(0);"><i class="fa fa-arrow-down" aria-hidden="true"></i>下移</a>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </nav>
|
|
|
+ <div class="main-data" id="spreadBills">
|
|
|
+ <!--<div id="spreadBills" style="width: 100%; height: 700px;"></div>-->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="main-side col-lg-5 p-0">
|
|
|
+ <div class="container-fluid">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col" style="width:50%; height: 100%">
|
|
|
+ <h5>工作内容</h5>
|
|
|
+ <div id="spreadJobs" style="width:97%; height: 300px;"></div>
|
|
|
+ </div>
|
|
|
+ <div class="col" style="width:50%; height: 100%">
|
|
|
+ <h5>项目特征</h5>
|
|
|
+ <div id="spreadItems" style="width: 97%; height: 300px;"></div>
|
|
|
+ </div>
|
|
|
+ <div class="w-100"></div>
|
|
|
+ <div class="col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label for="exampleTextarea"><h5>补注:</h5></label>
|
|
|
+ <textarea class="form-control" id="exampleTextarea" rows="8"></textarea>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--弹出添加-->
|
|
|
+ <div class="modal fade" id="add" data-backdrop="static" style="display: none;" aria-hidden="true">
|
|
|
+ <div class="modal-dialog" role="document">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <h5 class="modal-title">添加定额</h5>
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
|
+ <span aria-hidden="true">×</span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ <div class="modal-body">
|
|
|
+ <form>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>编码</label>
|
|
|
+ <input class="form-control" placeholder="输入编码" type="text">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>名称</label>
|
|
|
+ <input class="form-control" placeholder="输入名称" type="text">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>单位</label>
|
|
|
+ <select class="form-control"><option>选择单位</option><option>m3</option></select>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>基价</label>
|
|
|
+ <input class="form-control" placeholder="输入基价" type="number">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>显示名称(以%s表示参数)</label>
|
|
|
+ <input class="form-control" placeholder="输入显示名称" type="text">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>默认取费专业</label>
|
|
|
+ <input class="form-control" placeholder="输入取费专业" type="text">
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer">
|
|
|
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
|
|
|
+ <a href="" class="btn btn-primary">添加</a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--弹出编辑-->
|
|
|
+ <div class="modal fade" id="edit" data-backdrop="static" style="display: none;" aria-hidden="true">
|
|
|
+ <div class="modal-dialog" role="document">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <h5 class="modal-title">编辑定额</h5>
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
|
+ <span aria-hidden="true">×</span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ <div class="modal-body">
|
|
|
+ <form>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>编码</label>
|
|
|
+ <input class="form-control" placeholder="输入编码" type="text" value="AA0001">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>名称</label>
|
|
|
+ <input class="form-control" placeholder="输入名称" type="text" value="人工挖土方">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>单位</label>
|
|
|
+ <select class="form-control"><option>m3</option></select>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>基价</label>
|
|
|
+ <input class="form-control" placeholder="输入基价" type="number" value="880.84">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>显示名称(以%s表示参数)</label>
|
|
|
+ <input class="form-control" placeholder="输入显示名称" type="text" value="人工挖土方">
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label>默认取费专业</label>
|
|
|
+ <input class="form-control" placeholder="输入取费专业" type="text" value="1">
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer">
|
|
|
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
|
|
|
+ <a href="" class="btn btn-primary">确定</a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!--弹出删除-->
|
|
|
+ <div class="modal fade" id="del" data-backdrop="static" style="display: none;" aria-hidden="true">
|
|
|
+ <div class="modal-dialog" role="document">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <h5 class="modal-title">删除确认</h5>
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
|
+ <span aria-hidden="true">×</span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ <div class="modal-body">
|
|
|
+ <h5 class="text-danger">删除后无法恢复,确认是否删除?</h5>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer">
|
|
|
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
|
|
|
+ <a href="" class="btn btn-danger">删除</a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- JS. -->
|
|
|
+ <script src="lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
|
|
|
+ <script src="lib/jquery/jquery.min.js"></script>
|
|
|
+ <script src="lib/tether/tether.min.js"></script>
|
|
|
+ <script src="lib/bootstrap/bootstrap.min.js"></script>
|
|
|
+ <script src="web/billsLib/scripts/global.js"></script>
|
|
|
+ <script src="web/billsLib/scripts/setSheets.js"></script>
|
|
|
+ <script src="web/billsLib/scripts/billsLibAjax.js"></script>
|
|
|
+ <!--idTree-->
|
|
|
+ <script src="public/web/idTree.js"></script>
|
|
|
+ <script src="public/web/tree_sheet_controller.js"></script>
|
|
|
+ <script src="public/web/tree_sheet_helper.js"></script>
|
|
|
+ <script src="web/billsLib/scripts/billsLibSetting.js"></script>
|
|
|
+ <script src="web/billsLib/scripts/billsLibTree.js"></script>
|
|
|
+ <!--<script src="test/tmp_data/data_15690.js"></script>-->
|
|
|
+ <script src="test/tmp_data/bills_grid_setting.js"></script>
|
|
|
+</body>
|
|
|
+<script type="text/javascript">
|
|
|
+ autoFlashHeight();
|
|
|
+ var billsTree = billsLibTree.createBillsTree();
|
|
|
+ var billsLibId = getQueryString("billsLibId");
|
|
|
+ $(document).ready(function(){
|
|
|
+ billsAjax.getStdBillsLibName(billsLibId);
|
|
|
+ billsAjax.getBills(billsLibId);
|
|
|
+ buildJobs();
|
|
|
+ buildItems();
|
|
|
+ });
|
|
|
+ //test
|
|
|
+ //test
|
|
|
+
|
|
|
+ var dbOperation = {
|
|
|
+ insert: function(controller){
|
|
|
+ if(controller.tree.items.length === 0){
|
|
|
+ billsAjax.createBills(billsLibId, -1 , -1);
|
|
|
+ controller.insert();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ var node = controller.tree.selected;
|
|
|
+ if(node){
|
|
|
+ var updateId = tagId, createpid = node.getParentID(), createnid = node.getNextSiblingID();
|
|
|
+ controller.insert();
|
|
|
+ billsAjax.createBills(billsLibId, createpid, createnid);
|
|
|
+ billsAjax.updatePNId(updateId, -1, node.getNextSiblingID());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ var updateNode = controller.tree.roots[controller.tree.roots.length - 1];
|
|
|
+ var updateId = updateNode.getID();
|
|
|
+ controller.insert();
|
|
|
+ billsAjax.createBills(billsLibId, -1, -1);
|
|
|
+ billsAjax.updatePNId(updateId, -1, updateNode.getNextSiblingID());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ delete: function(controller){
|
|
|
+ var node = controller.tree.selected;
|
|
|
+ var deleteIds = [];
|
|
|
+ var getDeleteIds = function(node){
|
|
|
+ if(node){
|
|
|
+ deleteIds.push(node.getID());
|
|
|
+ if(node.children.length > 0){
|
|
|
+ for(var i=0; i<node.children.length; i++){
|
|
|
+ getDeleteIds(node.children[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ getDeleteIds(node);
|
|
|
+ billsAjax.deleteBills(deleteIds);
|
|
|
+ controller.delete;
|
|
|
+ },
|
|
|
+
|
|
|
+ upLevel: function(controller){
|
|
|
+ var node = controller.tree.selected;
|
|
|
+ if(node){
|
|
|
+ if(node.parent){
|
|
|
+ //node
|
|
|
+ billsAjax.updatePNId(node.getID(), node.parent.getParentID(), node.parent.getNextSiblingID());
|
|
|
+ //parent
|
|
|
+ billsAjax.updatePNId(node.getParentID(), null, node.getID());
|
|
|
+ if(node.nextSibling){
|
|
|
+ //node.nextSibling
|
|
|
+ billsAjax.updatePNId(node.getNextSiblingID(), node.getID(), null);
|
|
|
+ }
|
|
|
+ if(node.preSibling){
|
|
|
+ billsAjax.updatePNId(node.preSibling.getID(), null, -1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //controllerOp
|
|
|
+ controller.upLevel();
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ downLevel: function(controller){
|
|
|
+ var node = controller.tree.selected;
|
|
|
+ if(node){
|
|
|
+ if(node.preSibling){
|
|
|
+ billsAjax.updatePNId(node.preSibling.getID(), null, node.getNextSiblingID());
|
|
|
+ billsAjax.updatePNId(node.getID(), node.preSibling.getID(), -1);
|
|
|
+ if(node.preSibling.children.length > 0){
|
|
|
+ billsAjax.updatePNId(node.preSibling.children[node.preSibling.children.length -1].getID(), null, node.getID());
|
|
|
+ }
|
|
|
+ controller.downLevel();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ upMove: function(controller){
|
|
|
+ var node = controller.tree.selected;
|
|
|
+ if(node){
|
|
|
+ if(node.preSibling){
|
|
|
+ billsAjax.updatePNId(node.preSibling.getID(), null, node.getNextSiblingID());
|
|
|
+ billsAjax.updatePNId(node.getID(), null, node.preSibling.getID());
|
|
|
+ if(node.preSibling.preSibling){
|
|
|
+ billsAjax.updatePNId(node.preSibling.preSibling.getID(), null, node.getID());
|
|
|
+ }
|
|
|
+ controller.upMove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ downMove: function(controller){
|
|
|
+ var node = controller.tree.selected;
|
|
|
+ if(node){
|
|
|
+ if(node.nextSibling){
|
|
|
+ billsAjax.updatePNId(node.getNextSiblingID(), null, node.getID());
|
|
|
+ billsAjax.updatePNId(node.getID(), null, node.nextSibling.getNextSiblingID());
|
|
|
+ if(node.preSibling){
|
|
|
+ billsAjax.updatePNId(node.preSibling.getID(), null, node.getNextSiblingID());
|
|
|
+ }
|
|
|
+ controller.downMove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function nodeOpration(controller,sheet){
|
|
|
+ $('#insert').click(function(){
|
|
|
+ //dbOperation.insert(controller, sheet);
|
|
|
+ controller.insert();
|
|
|
+ });
|
|
|
+ $('#delete').click(function(){
|
|
|
+ controller.delete();
|
|
|
+ });
|
|
|
+ $('#upLevel').click(function(){
|
|
|
+ controller.upLevel();
|
|
|
+ });
|
|
|
+ $('#downLevl').click(function(){
|
|
|
+ controller.downLevel();
|
|
|
+ });
|
|
|
+ $('#upMove').click(function(){
|
|
|
+ controller.upMove();
|
|
|
+ });
|
|
|
+ $('#downMove').click(function(){
|
|
|
+ controller.downMove();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function showBillsSheet(datas){
|
|
|
+ var billsSpread = new GC.Spread.Sheets.Workbook($('#spreadBills')[0], {sheetCount: 1});
|
|
|
+ initSheet(billsSpread);
|
|
|
+ billsTree.loadDatas(datas);
|
|
|
+ var controller = TREE_SHEET_CONTROLLER.createNew(billsTree.tree, billsSpread.getActiveSheet(), billsLibSetting);
|
|
|
+ controller.showTreeData();
|
|
|
+ nodeOpration(controller, billsSpread.getActiveSheet());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ function buildBills(){
|
|
|
+ var spread = new GC.Spread.Sheets.Workbook($("#spreadBills")[0], {sheetCount: 1});
|
|
|
+ var sheet = spread.getSheet(0);
|
|
|
+ var chRowCount = 2;
|
|
|
+ var vpColCount = 4;
|
|
|
+ var vpRowCount = 27;
|
|
|
+ sheet.suspendPaint();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ initSheet(spread, sheet, chRowCount, vpRowCount, vpColCount );//初始表单设置
|
|
|
+ setupBillsColHeader(sheet);
|
|
|
+ setupEvents(spread, sheet);//事件
|
|
|
+ initRowHeight(sheet);//设置行高
|
|
|
+ setCell(sheet);//设置文本居中
|
|
|
+ myCommand(spread, sheet);
|
|
|
+ setScrollBar(spread, sheet, vpRowCount);
|
|
|
+ sheet.resumePaint();
|
|
|
+ sheet.resumeEvent();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function setupBillsColHeader(sheet){
|
|
|
+ var ch = GC.Spread.Sheets.SheetArea.colHeader;
|
|
|
+ sheet.addSpan(0, 0, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 0, "编码", ch);
|
|
|
+ sheet.setColumnWidth(0, 160);
|
|
|
+
|
|
|
+ sheet.addSpan(0, 1, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 1, "名称", ch);
|
|
|
+ sheet.setColumnWidth(1, 300);
|
|
|
+
|
|
|
+ sheet.addSpan(0, 2, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 2, "计量单位", ch);
|
|
|
+ sheet.setColumnWidth(2, 160);
|
|
|
+
|
|
|
+ sheet.addSpan(0, 3, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 3, "工程量计算规则", ch);
|
|
|
+ sheet.setColumnWidth(3, 420);
|
|
|
+ }
|
|
|
+ //设置滚动条
|
|
|
+ /*function setScrollBar(spread, sheet){
|
|
|
+ var rowCount = sheet.getR
|
|
|
+ }*/
|
|
|
+ //
|
|
|
+ function buildJobs(){
|
|
|
+ var spread = new GC.Spread.Sheets.Workbook($("#spreadJobs")[0], {sheetCount: 1});
|
|
|
+ var sheet = spread.getSheet(0);
|
|
|
+ var chRowCount = 2;
|
|
|
+ var vpRowCount = 8;
|
|
|
+ var vpColCount = 2;
|
|
|
+ sheet.suspendPaint();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ initSheet(spread);
|
|
|
+ setupJobsColHeader(sheet);
|
|
|
+ //initRowHeight(sheet);
|
|
|
+ setCell(sheet);
|
|
|
+ myCommand(spread, sheet);
|
|
|
+ setScrollBar(spread, sheet, vpRowCount);
|
|
|
+ sheet.resumePaint();
|
|
|
+ sheet.resumeEvent();
|
|
|
+ }
|
|
|
+ function setupJobsColHeader(sheet){
|
|
|
+ var ch = GC.Spread.Sheets.SheetArea.colHeader;
|
|
|
+ sheet.addSpan(0, 0, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 0, "编号", ch);
|
|
|
+ sheet.setColumnWidth(0, 100);
|
|
|
+ sheet.addSpan(0, 1, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 1, "工作内容", ch);
|
|
|
+ sheet.setColumnWidth(1, 215);
|
|
|
+ }
|
|
|
+ //
|
|
|
+ function buildItems(){
|
|
|
+ var spread = new GC.Spread.Sheets.Workbook($("#spreadItems")[0], {sheetCount: 1});
|
|
|
+ var sheet = spread.getSheet(0);
|
|
|
+ var chRowCount = 2;
|
|
|
+ var vpRowCount = 8;
|
|
|
+ var vpColCount = 2;
|
|
|
+ sheet.suspendPaint();
|
|
|
+ sheet.suspendEvent();
|
|
|
+ initSheet(spread, sheet, chRowCount, vpRowCount, vpColCount);
|
|
|
+ setupItemsColHeader(sheet);
|
|
|
+ //initRowHeight(sheet);
|
|
|
+ setCell(sheet);
|
|
|
+ myCommand(spread, sheet);
|
|
|
+ setScrollBar(spread, sheet, vpRowCount);
|
|
|
+ sheet.resumePaint();
|
|
|
+ sheet.resumeEvent();
|
|
|
+ }
|
|
|
+ function setupItemsColHeader(sheet){
|
|
|
+ var ch = GC.Spread.Sheets.SheetArea.colHeader;
|
|
|
+ sheet.addSpan(0, 0, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 0, "编号", ch);
|
|
|
+ sheet.setColumnWidth(0, 100);
|
|
|
+
|
|
|
+ sheet.addSpan(0, 1, 2, 1, ch);
|
|
|
+ sheet.setValue(0, 1, "项目特征", ch);
|
|
|
+ sheet.setColumnWidth(1, 215);
|
|
|
+ }
|
|
|
+
|
|
|
+ function getQueryString(name)
|
|
|
+ {
|
|
|
+ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
|
|
|
+ var r = window.location.search.substr(1).match(reg);
|
|
|
+ if(r!=null)return unescape(r[2]); return null;
|
|
|
+ }
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+</html>
|