/** * 生成查看页面组件 * @Title: createSingleShowControl * @Description: todo(这里用一句话描述这个方法的作用) * @param array $data 数据库中存储属性值 * @return string |mixed|string 最终组件html代码 * @author quqiang * @date 2015年5月15日 上午11:45:32 * @throws */ protected function createSingleShowControl($data) { if (is_array($data)) { $tempHtml = ''; // 组件使用皮肤 $cls = ''; // 可见内容 $show = ''; // 配置项的模板内容 $tpl = ''; $eachControlData = self::parse($data, false); // 取得组件类型 $category = $eachControlData[$this->default['category']['key']]; // 取得显示样式 /** * 取得显示样式 * 1:取出显示样式默认模板 * 2:取得宽度值,从DB或配置中 * 3:替换得到最终值 */ // 1: $cls = $this->controlsConfig[$category]['controllcls']['value']; // 2: $width = $eachControlData[$this->controlsConfig[$category]['width']['key']] ? $eachControlData[$this->controlsConfig[$category]['width']['key']] : $this->controlsConfig[$category]['width']['value']; // 3: $cls = parameReplace('#width#', $width, $cls); $tpl = $this->controls[$category]['showhtml']; $id = $eachControlData[$this->controlsConfig[$category]['primary']['key']]; // 获取显示数据配置项, $dataSouceObj = M('mis_system_design_setting'); if (!$id) { $msg = '属性ID未知'; throw new NullDataExcetion($msg); } $settingSql = "SELECT \n datasouce.`actionname`,\n datasouce.`functionname` \nFROM\n `mis_system_design_setting` AS setting \n LEFT JOIN `mis_system_desing_datasource` AS datasouce \n ON setting.`datasouceid` = datasouce.`id` \nWHERE setting.`masid` = {$id} "; $dataSouceData = $dataSouceObj->query($settingSql); $dataSouceHtml = ''; foreach ($dataSouceData as $key => $val) { $dataSouceHtml .= '{:A(\'' . $val['actionname'] . '\')->' . $val['functionname'] . '()}'; } $dataSouceHtml = $dataSouceHtml ? $dataSouceHtml : '没有配置显示数据'; // 解析可见内容 $show = parameReplace('$title', $eachControlData[$this->controlsConfig[$category]['title']['key']], $tpl); $show = parameReplace('$content', $dataSouceHtml, $show); $show = parameReplace('__URL__', __URL__, $show); $eachControlData['showdisplay'] = '{:A(\'' . $val['actionname'] . '\')->getConfig()}'; // 转译点位符 $show = preg_replace_callback('/\\#+(\\w+)\\#/', function ($vo) use($eachControlData) { $ret = ''; if ($vo[1]) { $ret = $eachControlData[$vo[1]]; } return $ret; }, $show); // $tag $tag = $this->tagIndentity . '=' . $eachControlData[$this->default['primary']['key']]; $show = parameReplace('$cls', $cls, $show); $show = parameReplace('$tag', $tag, $show); return $show; } else { return ''; } }
/** * @Title: getControl * @Description: todo(将组件属性生成组件实际html代码) * * @param array $controllProperty * 组件信息 * @param boolean $isedit * 是否是编辑,默认flase:新增 * @param boolean $isreturnvalue * 是否直接显示值 * @param boolean $special * @author quqiang * @date 2014-8-21 上午10:12:43 * @throws * */ private function getControl($controllProperty, $isedit = false, $isreturnvalue = false, $special = true) { // 重新取得当前文件的list配置文件 if ($this->nodeName) { $path = DConfig_PATH . "/Models/" . $this->nodeName . "/list.inc.php"; $detailList = (require $path); $this->datalist = $detailList; } // print_r($this->datalist); // if($_POST['nodename']=='MisAutoPvb'){ // print_r($detailList); // } if (!is_array($controllProperty)) { return ''; } $property = $this->getProperty($controllProperty['catalog']); if ($controllProperty[$property['checkfunc']['name']]) { $chtml = $controllProperty[$property['checkfunc']['name']]; } $readonly = 0; $readonlyStr = ''; $islockHtml = '<div class="display_none {$classNodeSettingArr[\'' . $controllProperty[$property['fields']['name']] . '\']}">$viewval</div>'; if (!$controllProperty[$property['islock']['name']]) { $chtml .= " readonly"; $readonly = 1; $readonlyStr = "readonly=\"readonly\" "; } $html = ''; if ($controllProperty['catalog'] == 'tablabel') { $prefTag = "\t\t\t<label class=\"label_new\">" . $controllProperty[$property['title']['name']] . "</label>\r\n\t\t\t\t\t\t\t\t"; } else { $prefTag = "\t\t\t<label class=\"label_new\">{\$fields[\"" . $controllProperty[$property['fields']['name']] . "\"]}:</label>\r\n\t\t\t\t\t\t\t\t"; } $org = ''; if ($controllProperty[$property['org']['name']]) { $org = $controllProperty[$property['org']['name']]; } $required = ''; // 必填验证 if ($controllProperty[$property['requiredfield']['name']]) { $required = 'required'; } $dropback = "dropback=\"{$controllProperty[$property['dropback']['name']]}\""; $chtml = $required . ' ' . $chtml; // 读取当前list.inc.php文件 switch ($controllProperty['catalog']) { case 'text': // 绑定事件 $tagEvent = $controllProperty[$property['tagevent']['name']]; // 获取事件名 $calculate = $controllProperty[$property['calculate']['name']]; // 获取事件名 $tagEventSytr = ''; if ($tagEvent) { $tagEventSytr = 'on' . ucwords($tagEvent) . '="' . $this->nodeName . '_' . $controllProperty[$property['fields']['name']] . '_' . $tagEvent . '(this);"'; } $tagEventSytr = $dropback . ' ' . $tagEventSytr; $valStr = ''; $unitChangeStr = ''; if ($isedit) { $unitl = $controllProperty[$property['unitl']['name']]; $unitls = $controllProperty[$property['unitls']['name']]; if ($unitl && $unitls) { $unitChangeStr = "|unitExchange=###,{$unitl},{$unitls},2"; } $valStr = "{\$vo['{$controllProperty[$property['fields']['name']]}']{$unitChangeStr}}"; } if (!$isreturnvalue) { $unitlsStr = ''; $unitlsPanelStart = ''; $unitlsPanelEnd = ''; $unitlsCls = ''; $uFStr = ''; $defaultCls = 'input_new '; if ($controllProperty[$property['unitls']['name']]) { $unitlsPanelStart = "<div class=\"tml-input-unit\">"; $unitlsPanelEnd = '</div>'; $unitlsStr = "<span class=\"icon_elm icon_unit\" title=\"{$this->untils[$controllProperty[$property['unitls']['name']]]}\">{$this->untils[$controllProperty[$property['unitls']['name']]]}</span>"; // $unitlsCls=' unitlpase '; $defaultCls .= ' half_angle_input'; // $uFStr=" unitl=\"{$controllProperty[$property['unitls']['name']]}\" "; } $unitlsCls .= $defaultCls; // checkfor 属性设置 // checkfor 当 $controllProperty[$property['checkfortable']['name']] 指定了表名, // $controllProperty[$property['checkforshow']['name']] 显示字段 // $controllProperty[$property['checkforbindd']['name']] 绑定真实值 // 单换算功能 不能与checkfor功能同用,原因为:checkfor会生成hidden标签,单们换算也会生成hidden无法赋值。 /* * if($controllProperty[$property['unitls']['name']]){ * $html="\r\n\t\t\t\t\t{$prefTag}<input $tagEventSytr type=\"text\" {$readonlyStr} unitl=\"{$controllProperty[$property['unitls']['name']]}\" name=\"". * $controllProperty[$property['fields']['name']]."\" class=\"input_new {$org} {$unitlsCls} unitlpase {$chtml}\" value=\"".($isedit?"{\$vo['". * $controllProperty[$property['fields']['name']]."']}":'')."\">"; * }else{ 单位与checkfor 不共用 */ if ($controllProperty[$property['checkfortable']['name']]) { $insert = $controllProperty[$property['checkforbindd']['name']] ? htmlspecialchars("insert=\"" . $controllProperty[$property['checkforbindd']['name']] . "\"") : ''; // 隐藏域绑定字段名 $show = $controllProperty[$property['checkforshow']['name']] ? htmlspecialchars("show=\"" . $controllProperty[$property['checkforshow']['name']] . "\"") : ''; // 显示字段名 $table = $controllProperty[$property['checkfortable']['name']] ? htmlspecialchars("checkfor=\"" . $controllProperty[$property['checkfortable']['name']] . "\"") : ''; // checkfor查询表 $orderby = $controllProperty[$property['checkfororderby']['name']] ? htmlspecialchars("order=\"" . $controllProperty[$property['checkfororderby']['name']] . "\"") : ''; // 排序条件 $iswrite = $controllProperty[$property['checkforiswrite']['name']] ? htmlspecialchars("iswrite=\"" . $controllProperty[$property['checkforiswrite']['name']] . "\"") : ''; // 是否清除未找到内容 $fileds = $controllProperty[$property['checkfororfields']['name']] ? htmlspecialchars("fields=\"array(" . $controllProperty[$property['checkfororfields']['name']] . ");\"") : ''; // 查看字段 $map = $controllProperty[$property['checkformap']['name']] ? htmlspecialchars("newconditions=\"" . $controllProperty[$property['checkformap']['name']] . "\"") : ''; // 过滤条件 $org = ''; // 时当前文本框 没得name属性, if ($controllProperty[$property['checkforbindd']['name']]) { $iswrite = ''; $hiden = "<input type=\"hidden\" {$uFStr} name=\"" . $controllProperty[$property['fields']['name']] . "\" value=\"" . ($isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}" : '') . "\">"; $viewval = $isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='{$controllProperty[$property['checkforbindd']['name']]}','{$controllProperty[$property['checkforshow']['name']]}','{$controllProperty[$property['checkfortable']['name']]}'}" : ''; $html = "\r\n\t\t\t\t\t{$prefTag}{$hiden}\r\n<input {$tagEventSytr} type=\"text\" {$readonlyStr} class=\"{$org} input_new {$unitlsCls} checkByInput {$chtml}\" \r\n" . "{$table} \r\n" . "{$insert} \r\n" . "{$show} \r\n" . "{$map} \r\n" . "{$orderby} \r\n" . "{$fileds} \r\n" . "{$iswrite} autocomplete=\"on\" value=\"" . $viewval . "\">"; // id:{$controllProperty[$property['checkforbindd']['name']]} $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); } else { $viewval = $valStr; $html = "\r\n\t\t\t\t\t{$prefTag}<input {$uFStr} {$tagEventSytr} type=\"text\" {$readonlyStr} name=\"" . $controllProperty[$property['fields']['name']] . "\" class=\"{$org} {$unitlsCls} input_new {$chtml}\" value=\"" . $viewval . "\">"; $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); } } else { $viewval = $valStr; $html = "\r\n\t\t\t\t\t{$prefTag}<input {$uFStr} {$tagEventSytr} type=\"text\" {$readonlyStr} name=\"" . $controllProperty[$property['fields']['name']] . "\" class=\"{$org} {$unitlsCls} input_new {$chtml}\" value=\"" . $valStr . "\">"; $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); } // } } else { /* 查看页面单位转换 */ $unitChangeStr = ''; $unitl = $controllProperty[$property['unitl']['name']]; $unitls = $controllProperty[$property['unitls']['name']]; if ($unitl && $unitls) { $unitChangeStr = "|unitExchange=###,{$unitl},{$unitls},3"; } $valStr = "{\$vo['{$controllProperty[$property['fields']['name']]}']{$unitChangeStr}}"; /** * ************** */ if ($controllProperty[$property['checkfortable']['name']]) { if ($controllProperty[$property['checkforbindd']['name']]) { // id : {$controllProperty[$property['checkforbindd']['name']]} $viewval = ''; $html = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='{$controllProperty[$property['checkforbindd']['name']]}','{$controllProperty[$property['checkforshow']['name']]}','{$controllProperty[$property['checkfortable']['name']]}'}"; } else { $viewval = ''; $html = $valStr; // "{\$vo['".$controllProperty[$property['fields']['name']]."']}"; } } else { $viewval = ''; $html = $valStr; // "{\$vo['".$controllProperty[$property['fields']['name']]."']}"; } // $viewval= ''; // $islockHtml=''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html = $unitlsPanelStart . htmlspecialchars_decode($html) . $unitlsStr . $unitlsPanelEnd . $islockHtml; break; case 'password': if (!$isreturnvalue) { $viewval = $isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}" : ''; $html = "<input type=\"password\" class=\" input_new\" name=\"" . $controllProperty[$property['fields']['name']] . "\" value=\"" . $viewval . "\" />"; $html = $prefTag . $html; } else { $viewval = '********'; $html = $viewval; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'hiddens': if (!$isreturnvalue) { $viewval = $isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}" : ''; $html = "<input type=\"hidden\" class=\"{$org} input_new\" name=\"" . $controllProperty[$property['fields']['name']] . "\" value=\"" . $viewval . "\" />"; } else { $func = ""; foreach ($detailList as $dkey => $dval) { if ($dval['name'] == $controllProperty[$property['fields']['name']]) { if ($dval['func']) { $func .= $dval['func'][0][0]; if ($dval['func'][0][0] = "getFieldBy") { $func .= "="; } } if ($dval['funcdata']) { $func .= "'" . $dval['funcdata'][0][0][1]; if ($dval['funcdata'][0][0][2]) { $func .= "','" . $dval['funcdata'][0][0][2] . "','" . $dval['funcdata'][0][0][3] . "'}"; } else { $func .= "'}"; } } } } if ($func) { $viewval = ''; $html = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|" . $func; } else { $viewval = ''; $html = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}"; } // $viewval = ''; // $islockHtml=''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'tablabel': // $html="\r\n\t\t\t\t\t{$prefTag}\r\n<input class=\"{$org} nbm_tablabel\" value=\"\" type=\"text\" readonly=\"readonly\" disabled=\"disabled\" />"; // $html="\r\n\t\t\t\t\t{$prefTag}\r\n<input class=\"{$org} nbm_tablabel input_new \" value=\"\" type=\"text\" readonly=\"readonly\" disabled=\"disabled\" />"; $html = "\r\n\t\t\t\t\t{$prefTag}\r\n<input class=\"{$org} input_new nbm_tablabel\" value=\"\" type=\"text\" readonly=\"readonly\" disabled=\"disabled\" />"; if ($isreturnvalue) { // $viewval=''; // $islockHtml = ''; } $viewval = ''; $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'subtitles': $html = "\r\n\t\t\t\t\t"; $style = "style=\""; if ($controllProperty[$property['aligntype']['name']]) { $style .= "text-align:" . $controllProperty[$property['aligntype']['name']] . ";"; } else { $style .= "text-align:{$property['aligntype']['default']};"; } if ($controllProperty[$property['backgroundcolor']['name']]) { $style .= "background:#" . $controllProperty[$property['backgroundcolor']['name']] . ";"; } else { $style .= "background:#{$property['backgroundcolor']['default']};"; } if ($controllProperty[$property['fontcolor']['name']]) { $style .= "color:#" . $controllProperty[$property['fontcolor']['name']] . ";"; } else { $style .= "color:#{$property['fontcolor']['default']};"; } if ($controllProperty[$property['fontsize']['name']]) { $style .= "font-size:" . $controllProperty[$property['fontsize']['name']] . "px;"; } else { $style .= "font-size:{$property['fontsize']['default']}px;"; } if ($controllProperty[$property['fontheight']['name']]) { $style .= "line-height:" . $controllProperty[$property['fontheight']['name']] . "px;"; } else { $style .= "line-height:{$property['fontheight']['default']}px;"; } if ($controllProperty[$property['fontweight']['name']]) { $style .= "font-weight:" . $controllProperty[$property['fontweight']['name']] . ";"; } else { $style .= "font-weight:{$property['fontweight']['default']};"; } $style .= "\""; $viewval = $controllProperty[$property['title']['name']]; $html .= "<div class=\"fieldset_legend_toggle side-catalog-text side-catalog-firstanchor\" {$style}>" . "{$viewval}" . "</div>"; if ($isreturnvalue) { // $viewval=''; // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'fiexdtext': $html = "\r\n\t\t\t\t\t"; $style = "style=\""; if ($controllProperty[$property['aligntype']['name']]) { $style .= "text-align:" . $controllProperty[$property['aligntype']['name']] . ";"; } else { $style .= "text-align:{$property['aligntype']['default']};"; } if ($controllProperty[$property['backgroundcolor']['name']]) { $style .= "background:#" . $controllProperty[$property['backgroundcolor']['name']] . ";"; } else { $style .= "background:#{$property['backgroundcolor']['default']};"; } if ($controllProperty[$property['fontcolor']['name']]) { $style .= "color:#" . $controllProperty[$property['fontcolor']['name']] . ";"; } else { $style .= "color:#{$property['fontcolor']['default']};"; } if ($controllProperty[$property['fontsize']['name']]) { $style .= "font-size:" . $controllProperty[$property['fontsize']['name']] . "px;"; } else { $style .= "font-size:{$property['fontsize']['default']}px;"; } if ($controllProperty[$property['fontheight']['name']]) { $style .= "line-height:" . $controllProperty[$property['fontheight']['name']] . "px;"; } else { $style .= "line-height:{$property['fontheight']['default']}px;"; } /* * 高度影响 页面显示效果 * if($controllProperty[$property['contentheight']['name']]){ * $style .="height:".$controllProperty[$property['contentheight']['name']]."px;"; * }else{ * $style .="height:12px;"; * } */ if ($controllProperty[$property['fontweight']['name']]) { $style .= "font-weight:" . $controllProperty[$property['fontweight']['name']] . ";"; } else { $style .= "font-weight:{$property['fontweight']['default']};"; } // $style .="background:#".$controllProperty[$property['backgroundcolor']['name']]?$controllProperty[$property['backgroundcolor']['name']]:"fff".";"; // $style .="color:#".$controllProperty[$property['fontcolor']['name']]?$controllProperty[$property['fontcolor']['name']]:'333'.";"; // $style .="font-size:".$controllProperty[$property['fontsize']['name']]?$controllProperty[$property['fontsize']['name']]:'12' ."px;"; // $style .="line-height:".$controllProperty[$property['fontheight']['name']]?$controllProperty[$property['fontheight']['name']]:'12'."px;"; // $style .="height:".$controllProperty[$property['contentheight']['name']]?$controllProperty[$property['contentheight']['name']]:'12'."px;"; // $style .="font-weight:".$controllProperty[$property['fontweight']['name']]?$controllProperty[$property['fontweight']['name']]:"400".";\""; // "border:1px solid #d8d8d8;". $style .= "\""; // tml-form-text $viewval = $controllProperty[$property['title']['name']]; $html .= "<span class=\"block\" {$style}>{$viewval}</span>"; if ($isreturnvalue) { // $viewval=''; // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'select': // 是否只读 $readonly = $controllProperty[$property['islock']['name']]; // 绑定的事件 $targevent = $controllProperty[$property['tagevent']['name']]; // 数据字段名 $filedName = $controllProperty[$property['fields']['name']]; // 组件标题 $filedTitle = $controllProperty[$property['title']['name']]; // 默认选中项的值 $defaultcheckitem = $controllProperty[$property['defaultcheckitem']['name']]; // 外部传入首选项的值 $defaultval = $controllProperty[$property['defaultval']['name']]; // 外部传入首选项的显示文本 $defaulttext = $controllProperty[$property['defaulttext']['name']]; // Action名称 $ActionName = $this->nodeName; // 直接显示内容的控制阀 $isshowresoult = $controllProperty[$property['isshowresoult']['name']]; // 下拉返回唯一标识 $dropbackkey = $controllProperty[$property['dropbackkey']['name']]; $conditions = ''; // 数据来源方式:table|selectlist if ($controllProperty[$property['showoption']['name']]) { $type = 'selectlist'; $key = $controllProperty[$property['showoption']['name']]; } else { if ($controllProperty[$property['subimporttableobj']['name']] || $controllProperty[$property['treedtable']['name']]) { $conditions = $controllProperty[$property['conditions']['name']]; $type = 'table'; if ($controllProperty[$property['subimporttableobj']['name']]) { // 查询表名 $tableName = $controllProperty[$property['subimporttableobj']['name']]; // 值字段名 $tableVal = $controllProperty[$property['subimporttablefield2obj']['name']]; // 显示字段名 $tableText = $controllProperty[$property['subimporttablefieldobj']['name']]; } elseif ($controllProperty[$property['treedtable']['name']]) { // 查询表名 $tableName = $controllProperty[$property['treedtable']['name']]; // 值字段名 $tableVal = $controllProperty[$property['treevaluefield']['name']]; // 显示字段名 $tableText = $controllProperty[$property['treeshowfield']['name']]; $parentid = $controllProperty[$property['treeparentfield']['name']]; // 是否末级操作 $mulit = $controllProperty[$property['mulit']['name']]; // 是否多选 $isnextend = $controllProperty[$property['isnextend']['name']]; // 树形-下拉高度 $treeheight = $controllProperty[$property['treeheight']['name']]; // 树形-下拉宽度 $treewidth = $controllProperty[$property['treewidth']['name']]; // 树形-是否对话框模式 $treedialog = $controllProperty[$property['isdialog']['name']] ? true : false; } } } // 组件外样式 $content_cls = "col_" . $controllProperty[$property['titlepercent']['name']] . "_" . $controllProperty[$property['contentpercent']['name']] . " form_group_lay field_" . $controllProperty[$property['fields']['name']]; $paramArr = ''; if ($isedit) { $paramArr .= "array(\$vo['{$controllProperty[$property['fields']['name']]}']"; } else { $paramArr .= "array(''"; } // 拼接class 属性 $cls = $chtml . ' ' . $org; // 拼接组件配置参数 $subassembly = ''; $subassembly .= "array('readonly'=>'{$readonly}','targevent'=>'{$targevent}','actionName'=>'{$ActionName}','names'=>'{$filedName}','defaultcheckitem'=>'{$defaultcheckitem}','defaultval'=>'{$defaultval}','defaulttext'=>'{$defaulttext}','table'=>'{$tableName}', 'id'=>'{$tableVal}','name'=>'{$tableText}','conditions'=>'{$conditions}','parentid'=>'{$parentid}','mulit'=>'{$mulit}','isnextend'=>'{$isnextend}','treeheight'=>'{$treeheight}','treewidth'=>'{$treewidth}','treedialog'=>'{$treedialog}','key'=>'{$key}','isedit'=>'{$isedit}','showtype'=>'{$isshowresoult}','dropbackkey'=>'{$dropbackkey}')"; $param = ''; $param .= "{$paramArr},array('{$cls}',array('type'=>'{$type}',{$subassembly})))"; if (!$isreturnvalue) { $viewval = ''; $html = "\r\n\t\t\t\t\t{$prefTag}"; if ($isedit) { if ($readonly) { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowSelect',{$param})}"; } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowSelect',{$param})}"; } } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowSelect',{$param})}"; } if ($controllProperty[$property['subimporttableobj']['name']]) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='" . "{$controllProperty[$property['subimporttablefield2obj']['name']]}'" . ",'{$controllProperty[$property['subimporttablefieldobj']['name']]}'," . "'{$controllProperty[$property['subimporttableobj']['name']]}'}"; // 普通表数据 // $html=$viewval; } elseif ($controllProperty[$property['treedtable']['name']]) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='" . "{$controllProperty[$property['treevaluefield']['name']]}'" . ",'{$controllProperty[$property['treeshowfield']['name']]}'," . "'{$controllProperty[$property['treedtable']['name']]}'}"; // 树形数据 // $html=$viewval; } else { $viewval = "{\$vo['{$controllProperty[$property['fields']['name']]}']|getSelectlistValue='{$controllProperty[$property['showoption']['name']]}'}"; // selectlist数据 // $html=$viewval; } } else { if ($controllProperty[$property['subimporttableobj']['name']]) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='" . "{$controllProperty[$property['subimporttablefield2obj']['name']]}'" . ",'{$controllProperty[$property['subimporttablefieldobj']['name']]}'," . "'{$controllProperty[$property['subimporttableobj']['name']]}'}"; // 普通表数据 $html = $viewval; } elseif ($controllProperty[$property['treedtable']['name']]) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='" . "{$controllProperty[$property['treevaluefield']['name']]}'" . ",'{$controllProperty[$property['treeshowfield']['name']]}'," . "'{$controllProperty[$property['treedtable']['name']]}'}"; // 树形数据 $html = $viewval; } else { $viewval = "{\$vo['{$controllProperty[$property['fields']['name']]}']|getSelectlistValue='{$controllProperty[$property['showoption']['name']]}'}"; // selectlist数据 $html = $viewval; } // $viewval=''; // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'checkbox': $checked = ""; $tagEvent = $controllProperty[$property['tagevent']['name']]; // 获取事件名 $conditions = ''; $tagEventSytr = ''; if ($tagEvent) { $tagEventSytr = 'on' . ucwords($tagEvent) . '="' . $this->nodeName . '_' . $controllProperty[$property['fields']['name']] . '_' . $tagEvent . '(this)"'; } $html = "\r\n\t\t\t\t\t{$prefTag}"; if (!$isreturnvalue) { $viewval = ''; if ($controllProperty[$property['subimporttableobj']['name']]) { $conditions = $controllProperty[$property['conditions']['name']]; $html .= "{:getControllbyHtml('table',array('type'=>'checkbox','names'=>'{$controllProperty[$property['fields']['name']]}[]','targevent'=>'{$tagEventSytr}','table'=>'{$controllProperty[$property['subimporttableobj']['name']]}','id'=>'{$controllProperty[$property['subimporttablefield2obj']['name']]}','name'=>'{$controllProperty[$property['subimporttablefieldobj']['name']]}','conditions'=>'{$conditions}','selected'=>\$vo['{$controllProperty[$property['fields']['name']]}']))}"; } else { $html .= "{:getControllbyHtml('selectlist',array('type'=>'checkbox','names'=>'{$controllProperty[$property['fields']['name']]}[]','targevent'=>'{$tagEventSytr}','key'=>'{$controllProperty[$property['showoption']['name']]}','selected'=>\$vo['{$controllProperty[$property['fields']['name']]}']))}"; } } else { if ($controllProperty[$property['subimporttableobj']['name']]) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|excelTplidTonameAppend=" . "'{$controllProperty[$property['subimporttablefield2obj']['name']]}'," . "'{$controllProperty[$property['subimporttablefieldobj']['name']]}'" . ",'{$controllProperty[$property['subimporttableobj']['name']]}'}"; $html = $viewval; } else { $viewval = "{\$vo['{$controllProperty[$property['fields']['name']]}']|getSelectlistByName='{$controllProperty[$property['showoption']['name']]}'}"; $html = $viewval; } $viewval = ''; $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'radio': $checked = ""; $conditions = ''; $tagEvent = $controllProperty[$property['tagevent']['name']]; // 获取事件名 $tagEventSytr = ''; if ($tagEvent) { $tagEventSytr = 'on' . ucwords($tagEvent) . '="' . $this->nodeName . '_' . $controllProperty[$property['fields']['name']] . '_' . $tagEvent . '(this)"'; } if (!$isreturnvalue) { $html = "\r\n\t\t\t\t\t{$prefTag}"; if ($controllProperty[$property['subimporttableobj']['name']]) { $conditions = $controllProperty[$property['conditions']['name']]; $html .= "{:getControllbyHtml('table',array('type'=>'radio','targevent'=>'{$tagEventSytr}','names'=>'{$controllProperty[$property['fields']['name']]}','table'=>'{$controllProperty[$property['subimporttableobj']['name']]}','id'=>'{$controllProperty[$property['subimporttablefield2obj']['name']]}','name'=>'{$controllProperty[$property['subimporttablefieldobj']['name']]}','conditions'=>'{$conditions}','selected'=>\$vo['{$controllProperty[$property['fields']['name']]}']))}"; } else { $html .= "{:getControllbyHtml('selectlist',array('type'=>'radio','targevent'=>'{$tagEventSytr}','names'=>'{$controllProperty[$property['fields']['name']]}','key'=>'{$controllProperty[$property['showoption']['name']]}','selected'=>\$vo['{$controllProperty[$property['fields']['name']]}']))}"; } } else { if ($controllProperty[$property['subimporttableobj']['name']]) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='" . "{$controllProperty[$property['subimporttablefield2obj']['name']]}'" . ",'{$controllProperty[$property['subimporttablefieldobj']['name']]}'," . "'{$controllProperty[$property['subimporttableobj']['name']]}'}"; $html = $viewval; } else { $viewval = "{\$vo['{$controllProperty[$property['fields']['name']]}']|getSelectlistValue='{$controllProperty[$property['showoption']['name']]}'}"; $html = $viewval; } // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'textarea': $html = ''; $richBoxCls = ''; if ($controllProperty[$property['isrichbox']['name']]) { $richBoxCls = 'ueditor'; } if (!$isreturnvalue) { $rows = 4; $cols = 100; if ($controllProperty[$property['rows']['name']]) { $rows = $controllProperty[$property['rows']['name']]; } if ($controllProperty[$property['cols']['name']]) { $cols = $controllProperty[$property['cols']['name']]; } $viewval = $isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}" : ''; $val = ""; if ($viewval) { $textareahtml = "<if condition=\"\$vo['" . $controllProperty[$property['fields']['name']] . "']\">{\$vo['" . $controllProperty[$property['fields']['name']] . "']}<else/>" . $controllProperty[$property['defaultval']['name']] . "</if>"; } else { $textareahtml = ""; } $html = "\r\n\t\t\t\t\t{$prefTag}<textarea {$readonlyStr} cols=\"{$cols}\" rows=\"{$rows}\" class=\"{$chtml} text_area {$richBoxCls} {$org}\" name=\"" . $controllProperty[$property['fields']['name']] . "\">" . $textareahtml . "</textarea>"; // .$islockHtml; } else { if ($controllProperty[$property['isrichbox']['name']]) { $viewval = "{\$vo['{$controllProperty[$property['fields']['name']]}']|richtext2str}"; } else { $viewval = "{\$vo['{$controllProperty[$property['fields']['name']]}']}"; } $html = $viewval; // $islockHtml = ''; // $viewval = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); if ($controllProperty[$property['isrichbox']['name']]) { $islockHtml = ''; } $html .= $islockHtml; break; case 'date': $style = ""; $format = ''; $format1 = ''; $formatSouce = ''; if ($controllProperty[$property['format']['name']]) { $formatSouce = $controllProperty[$property['format']['name']]; } else { $formatSouce = $property['format']['default']; } if ($formatSouce) { $temp = ''; $temp = explode('@', $formatSouce); $format = "format=\"{dateFmt:'" . $temp[0] . "'}\""; if ($temp[1]) { $format1 = "='{$temp[1]}'"; } } if (!$isreturnvalue) { // 直接显示内容的控制阀 $isshowresoult = $controllProperty[$property['isshowresoult']['name']]; $dateControllCls = ''; $dateJsEventTag = ' Wdate js-wdate'; $a = 'js-inputCheckDate'; // 只读 if (!$controllProperty[$property['islock']['name']]) { $a = ''; $dateJsEventTag = ''; $dateControllCls = $chtml; } if ($isedit) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|transtime{$format1}}"; $html = "\r\n\t\t\t\t\t{$prefTag}"; if ($isshowresoult) { $html .= "\r\n\t\t\t\t\t<span class=\"input_new\">{$viewval}</span>"; } else { $html .= "\r\n\t\t\t\t\t<div class=\"tml-input-calendar\">\r\n\t\t\t\t\t<input type=\"text\" name=\"" . $controllProperty[$property['fields']['name']] . "\" class=\"{$required} {$org} input_new half_angle_input {$dateJsEventTag} input_left {$dateControllCls}\" {$format} {$readonlyStr} value=\"{$viewval}\"/>"; $html .= "\r\n\t\t\t\t\t<a href=\"javascript:;\" class=\"icon_elm icon-calendar {$a} \"></a>"; $html .= "\r\n\t\t\t\t</div>"; } } else { $viewval = ''; $html = "\r\n\t\t\t\t\t{$prefTag}"; if ($isshowresoult) { $html .= "\r\n\t\t\t\t\t<span class=\"input_new\">{$viewval}</span>"; } else { $html .= "\r\n\t\t\t\t\t<div class=\"tml-input-calendar\">\r\n\t\t\t\t\t<input type=\"text\" name=\"" . $controllProperty[$property['fields']['name']] . "\" class=\"{$required} {$org} input_new half_angle_input {$dateJsEventTag} input_left {$dateControllCls}\" {$format} {$readonlyStr} value=\"{$viewval}\"/>"; $html .= "\r\n\t\t\t\t\t<a href=\"javascript:;\" class=\"icon_elm icon-calendar {$a} \"></a>"; } $html .= "\r\n\t\t\t\t</div>"; } } else { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|transtime{$format1}}"; $html = $viewval; // $islockHtml = ''; // $viewval= ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'checkfor': break; case 'lookup': $html = ''; if (!$isreturnvalue) { $lookupchoice = $controllProperty[$property['lookupchoice']['name']]; $lookupObj = D('LookupObj'); $lookupDetail = $lookupObj->GetLookupDetail($lookupchoice); $model = $lookupDetail['mode']; $orgchar = $lookupDetail['filed'] ? $lookupDetail['filed'] : 'name'; $orgval = $lookupDetail['val'] ? $lookupDetail['val'] : 'id'; if (1 == $lookupDetail['viewtype'] && $orgval != $orgchar) { $configObj = D('MisSystemDataviewMasView'); $viewConfig = $configObj->getViewConf($lookupDetail['viewname']); $searchField = $viewConfig[$orgval]['searchField']; $orderModelArr = explode('.', $searchField); if ($orderModelArr[0] && $searchField) { $tempModel = D($orderModelArr[0]); } } else { $tempModel = D($model); } // 当lookup配置中的存储值与显示一致时不需要做值转换。nbmxkj@20150608 1610 $viewval = $isedit ? $orgval == $orgchar ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}" : "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='{$orgval}','{$orgchar}','{$tempModel->getTableName()}'}" : ''; $html = "\r\n\t\t\t\t\t\t{$prefTag}"; } else { $func = ""; // 处理子表及主表的lookup值转换 , modify by nbmxkj at 20150127 20 // *****注意:func 与 funcdata 数组项一定要个数对应。**** foreach ($this->datalist as $dkey => $dval) { if ($dval['name'] == $controllProperty[$property['fields']['name']]) { $count = count($dval['func'][0]); if ($dval['func']) { $func .= $dval['func'][0][$count - 1]; // if($dval['func'][0][0]="getFieldBy"){ $func .= "="; // } } if ($dval['funcdata']) { $func .= "'" . $dval['funcdata'][0][$count - 1][1]; if ($dval['funcdata'][0][$count - 1][1]) { $func .= "','" . $dval['funcdata'][0][$count - 1][2] . "','" . $dval['funcdata'][0][$count - 1][3] . "'}"; } else { $func .= "'}"; } } } } if ($func) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|" . $func; } else { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}"; } } $html .= "\r\n\t\t\t\t\t\t\t\t{:W('Lookup',array('1',\$vo,'{$controllProperty[$property['id']['name']]}','{$isedit}','{$isreturnvalue}'))}"; $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= "\r\n\t\t\t\t\t\t\t\t" . $islockHtml; break; case 'lookupsuper': if (!$isreturnvalue) { // 获取lookup key值 动态加载lookup配置 $lookupchoice = $controllProperty[$property['lookupchoice']['name']]; $lookupObj = D('LookupObj'); $lookupDetail = $lookupObj->GetLookupDetail($lookupchoice); $model = $lookupDetail['mode']; $urls = $lookupDetail['url']; $lookupgroup = $controllProperty[$property['lookupgroup']['name']]; $orgchar = $lookupDetail['filed'] ? $lookupDetail['filed'] : 'name'; $orgval = $lookupDetail['val'] ? $lookupDetail['val'] : 'id'; $orgLookuoVal = $controllProperty[$property['org1']['name']]; // 显示绑定 $orgLookupText = $controllProperty[$property['org']['name']]; // 值绑定 $title = "{\$fields[\"" . $controllProperty[$property['fields']['name']] . "\"]}"; $view = ''; if ($lookupDetail['viewname']) { $view = '&viewname=' . $lookupDetail['viewname']; } if ($lookupDetail['dt']) { $dtcon = '&lookuptodatatable=2'; } $conditions = ''; $checkformodel = $lookupDetail['checkformodel']; // checkfor的org显示字段 $checkfororgchar = $detailList['field'] ? $detailList['field'] : $orgchar; // lookup的org值字段 // lookup的值反写 $textCounterCheck = ''; // 显示文本的反写 text $valCounterCheck = ''; // 值的反写 value // lporder 从外部lookup中取值字段 // lpkey 当前lookup的key // lpfor 往哪个东西里写值 // lpself 当前项的字段名称 if ($orgLookuoVal) { unset($temp); $temp = explode('.', $orgLookuoVal); $valCounterCheck = "callback=\"lookup_counter_check\" lpkey=\"{$lookupchoice}\" lpfor=\"{$lookupgroup}.{$orgchar}\" lpself=\"{$orgval}\" lporder=\"{$temp[1]}\""; } if ($orgLookupText) { unset($temp); $temp = explode('.', $orgLookupText); $textCounterCheck = "callback=\"lookup_counter_check\" lpkey=\"{$lookupchoice}\" lpfor=\"{$lookupgroup}.{$orgval}\" lpself=\"{$orgchar}\" lporder=\"{$temp[1]}\""; } // checkfor的列表显示字段 $checkfororgshowfield = $detailList['checkfororgshowfield'] ? $detailList['checkfororgshowfield'] : ''; // $urls = $controllProperty[$property['geturls']['name']]; // $lookupgroup = $controllProperty[$property['lookupgroup']['name']]; // $filedback = $controllProperty[$property['filedback']['name']]; // $model = $controllProperty[$property['model']['name']]; // $checkformodel = $controllProperty[$property['checkformodel']['name']]; // $orgchar = $controllProperty[$property['lookuporg']['name']]?$controllProperty[$property['lookuporg']['name']]:'name'; // $orgval = $controllProperty[$property['lookuporgval']['name']]?$controllProperty[$property['lookuporgval']['name']]:'id'; // checkfor的org显示字段 // $checkfororgchar = $controllProperty[$property['checkfororg']['name']]?$controllProperty[$property['checkfororg']['name']]:$orgchar; // checkfororfields // checkfor显示字段 // $checkfororgshowfield = $controllProperty[$property['checkfororgshowfield']['name']]?$controllProperty[$property['checkfororgshowfield']['name']]:''; // $conditions = $controllProperty[$property['conditions']['name']]; // auditState,3;status,1;ischange,0 // $title = "{\$fields[\"".$controllProperty[$property['fields']['name']]."\"]}"; $val = ''; $tempModel = D($model); $html = "\r\n\t\t\t\t\t\t{$prefTag}<div class=\"tml-input-lookupSuper\">"; if ($readonly) { // checkfor 文本框 $checkfororgchar $html .= "\r\n\t\t\t\t\t\t<input type=\"text\" class=\"{$lookupgroup}.{$checkfororgchar} {$chtml} lookupSuper_input input_new half_angle_input\" autocomplete=\"off\" readonly=\"readonly\" value=\"" . ($isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='{$orgval}','{$orgchar}','{$tempModel->getTableName()}'}" : '') . "\" />"; } else { // $html .="\r\n\t\t\t\t\t\t<input type=\"text\" class=\"{$lookupgroup}.{$checkfororgchar} {$chtml} \" autocomplete=\"off\" value=\"".($isedit?"{\$vo['".$controllProperty[$property['fields']['name']]."']|getFieldBy='{$orgval}','{$orgchar}','{$tempModel->getTableName()}'}":'')."\" />"; if ($checkfororgshowfield) { $fileds = "array(" . $checkfororgshowfield . ");"; } else { $fileds = ''; } $html .= "\r\n\t\t\t\t\t\t<input type=\"text\" " . "autocomplete=\"off\" " . "checkfor=\"{$checkformodel}\" " . "insert=\"{$orgval}\" " . "show=\"{$checkfororgchar}\" " . "name=\"{$checkfororgchar}\" " . "newconditions=\"{$conditions}\" " . "fields=\"{$fileds}\" " . "other " . "value=\"" . ($isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='id','{$orgchar}','{$tempModel->getTableName()}'}" : '') . "\" " . "class=\"{$lookupgroup}.{$checkfororgchar} checkByInput lookupSuper_input input_new half_angle_input {$chtml}\">"; } // checkfor 文本框的隐藏域 $html .= "\r\n\t\t\t\t\t\t<input type=\"hidden\" class=\"{$lookupgroup}.{$orgval}\" name=\"" . $controllProperty[$property['fields']['name']] . "\" value=\"{\$vo['" . $controllProperty[$property['fields']['name']] . "']}\" />"; if ($readonly) { // 只读情况 $viewval = $isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='{$orgval}','{$orgchar}','{$tempModel->getTableName()}'}" : ''; // lookup 触发按钮 $html .= "\r\n\t\t\t\t\t\t<a class=\"icon_elm mid_icon_elm icon-plus\"></a>"; // looup 默认显示框 $html .= "<input type=\"text\" readonly=\"readonly\" class=\"{$lookupgroup}.{$orgchar} input_new square_input readonly valid\"\tcheck_key=\"othername\" name=\"{$lookupgroup}{$orgchar}\" value=\"" . $viewval . "\">"; // 清空 lookup 按钮 $html .= "\r\n\t\t\t\t\t\t<a title=\"清空信息\" class=\"icon_elm icon-trash\" href=\"javascript:void(0);\"></a>"; } else { $viewval = $isedit ? "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|getFieldBy='{$orgval}','{$orgchar}','{$tempModel->getTableName()}'}" : ''; // lookup 触发按钮 $html .= "\r\n\t\t\t\t\t\t<a class=\"icon_elm mid_icon_elm icon-plus\" param=\"lookupchioce={$lookupchioce}&newconditions={$conditions}{$view}{$dtcon}\" href=\"__URL__/{$urls}\" lookupGroup=\"{$lookupgroup}\" ></a>"; // $title // looup 默认显示框 $html .= "<input type=\"text\" readonly=\"readonly\" class=\"{$lookupgroup}.{$orgchar} textInput input_new square_input readonly valid\"\tcheck_key=\"{$orgchar}\" name=\"{$lookupgroup}{$orgchar}\" value=\"" . $viewval . "\">"; // 清空 lookup 按钮 // $html .="\r\n\t\t\t\t\t\t<a title=\"清空信息\" class=\"input-addon input-addon-recycle\" href=\"javascript:void(0);\" onclick=\"clearInput('{$checkfororgchar},{$controllProperty[$property['fields']['name']]},{$lookupgroup}{$orgchar}');\"></a>"; $html .= "\r\n\t\t\t\t\t\t<a title=\"清空信息\" class=\"icon_elm icon-trash\" href=\"javascript:void(0);\" onclick=\"clearOrg('{$lookupgroup}');\"></a>"; } $html .= "\r\n\t\t\t\t\t\t</div>"; } else { // $html="{\$vo['".$controllProperty[$property['fields']['name']]."']}"; $func = ""; // 处理子表及主表的lookup值转换 , modify by nbmxkj at 20150127 20 // *****注意:func 与 funcdata 数组项一定要个数对应。**** foreach ($this->datalist as $dkey => $dval) { if ($dval['name'] == $controllProperty[$property['fields']['name']]) { $count = count($dval['func'][0]); if ($dval['func']) { $func .= $dval['func'][0][$count - 1]; // if($dval['func'][0][0]="getFieldBy"){ $func .= "="; // } } if ($dval['funcdata']) { $func .= "'" . $dval['funcdata'][0][$count - 1][1]; if ($dval['funcdata'][0][$count - 1][1]) { $func .= "','" . $dval['funcdata'][0][$count - 1][2] . "','" . $dval['funcdata'][0][$count - 1][3] . "'}"; } else { $func .= "'}"; } } } } if ($func) { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']|" . $func; $html = $viewval; } else { $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}"; $html = $viewval; } // $viewval=''; // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'upload': // 数据字段名 $filedName = $controllProperty[$property['fields']['name']]; // 组件标题 $filedTitle = $controllProperty[$property['title']['name']]; // 上传数量 $uploadNum = $controllProperty[$property['uploadnum']['name']]; // 上传类型 $uploadType = $controllProperty[$property['uploadtype']['name']]; $param = 'array("0"=>$uploadarry["' . $filedName . '"],"1"=>' . $filedName . ',"2"=>$fields[' . $filedName . '],"3"=>"' . $uploadNum . '","4"=>"' . $uploadType . '")'; $viewval = ''; if (!$isreturnvalue) { if ($isedit) { if ($readonly) { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUpload',{$param})}"; } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUpload',{$param})}"; } } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUpload',{$param})}"; } } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUploadView',{$param})}"; // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'userselect': $viewval = ''; if (!$isreturnvalue) { if ($isedit) { if ($readonly) { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUserSelect',\$attarry)}" . $islockHtml; } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUserSelect',\$attarry)}" . $islockHtml; } } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowUserSelect')}"; } } else { // 视图模式 // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'areainfo': $viewval = ''; // 数据字段名 $filedName = $controllProperty[$property['fields']['name']]; // 组件标题 $filedTitle = $controllProperty[$property['title']['name']]; // 组件外样式 $content_cls = "col_" . $controllProperty[$property['titlepercent']['name']] . "_" . $controllProperty[$property['contentpercent']['name']] . " form_group_lay field_" . $controllProperty[$property['fields']['name']]; $param = 'array("0"=>$areainfoarry["' . $filedName . '"],"1"=>' . $filedName . ',"2"=>$fields[' . $filedName . '],"3"=>"' . $content_cls . '","5"=>"' . $required . '")'; $viewval = "{\$vo['" . $controllProperty[$property['fields']['name']] . "']}"; if (!$isreturnvalue) { if ($isedit) { if ($readonly) { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowArea',{$param})}" . $islockHtml; } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowArea',{$param})}" . $islockHtml; } } else { $html .= "\r\n\t\t\t\t\t\t\t\t{:W('ShowArea',{$param})}"; } } else { $html = $viewval; // $viewval=''; // $islockHtml = ''; } $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; case 'datatable': $viewval = ''; $titles = <<<EOF \t \t\t\t\t<if condition="\$fields['{$controllProperty[$property['fields']['name']]}']"> \t\t\t\t<div class="into_table_title">{\$fields["{$controllProperty[$property['fields']['name']]}"]}</div> \t\t\t\t</if> EOF; /* 获取字段信息 */ $filedTag = $property['fieldlist']['name']; // 获取配置信息中的标识名称 // 获取所有节点 $configPath = $controllProperty; $controlName = $controlTag = $controllProperty[$property['fields']['name']]; // 组件唯一标识 datatable8,...... $tableName = $this->tableName . '_sub_' . $controlTag; $namses = "datatable[#index#][{$controlName}]"; if ($configPath) { $innerTableFieldInfo = $configPath[$filedTag]; // 获取到内嵌表字段设置信息 } $innerTableFieldInfoObj = json_decode(htmlspecialchars_decode($innerTableFieldInfo), true); // 得到字段信息json对象数据 usort($innerTableFieldInfoObj, function ($a, $b) { $al = $a['fieldsort']; $bl = $b['fieldsort']; if ($al == $bl) { return 0; } return $al < $bl ? -1 : 1; }); $innerTableFieldInfoObj = json_decode(json_encode($innerTableFieldInfoObj)); // 修改及展示 页面组件列表 $showandeditfieldlist = ''; $filedList = ""; $filedList .= "<th style='width:40px;' template_key=\"serial\" >"; $filedList .= "\t\t\t\t序号"; $filedList .= "\t\t\t</th>"; $count = 0; $nameKey = ''; foreach ($innerTableFieldInfoObj as $key => $val) { if ($val->fieldshow == 1) { // 0 允许编辑, 1:不可编辑 $isDatatableEdit = intval($val->isedit) ? false : true; $editStatusConfig = ''; if (!$isDatatableEdit) { $editStatusConfig = 'is_readonly=true'; } $dt_readonly = ""; $class_readonly = ""; $int_readonly = 1; if ($editStatusConfig) { // 内嵌表控件不可编辑 $dt_readonly = "readonly='readonly'"; $class_readonly = "readonly"; $int_readonly = 0; } $nameKey = "template_controll={$val->fieldname}"; switch ($val->fieldshowtype) { case 'text': //查询公式 $misDynamicFormDatatableModel = M('mis_dynamic_form_datatable'); $datatablemap['id'] = $val->fieldid; $datatableList = $misDynamicFormDatatableModel->where($datatablemap)->find(); $validdigit = $datatableList['validdigit'] ? $datatableList['validdigit'] : 2; $fieldname = $datatableList['fieldname']; $calculate = $datatableList['calculate']; $subassembly = $datatableList['subassembly']; $subassemblyArr = explode(',', $subassembly); $formulaType = $datatableList['type']; $formulaJindu = $datatableList['jindu']; //替换id $inputString = ""; $FormulArr = array(); foreach ($subassemblyArr as $sk => $sval) { $propertymap['id'] = $sval; $properyList = $misDynamicFormDatatableModel->where($propertymap)->find(); $name = $properyList['fieldname']; $FormulArr[$sval] = $name; } // @todo $calculateString = preg_replace_callback('/(\\[(.*?)\\])+/', function ($callbackParame) use($FormulArr) { return '[' . $FormulArr[$callbackParame[2]] . ']'; }, $calculate); $config = ''; $orgConfigVal = ''; $dataConfig = ''; if ($val->fieldshowtypeconfig) { $config = unserialize(base64_decode($val->fieldshowtypeconfig)); } $curCls = ''; if (is_array($config)) { // 将组件属性转换为html代码 $dataConfig = $config['parame']; // 获取select的配置项 if (!$controllProperty['ganshe_datatable'] && $config['required']) { $curCls .= ' required '; } if ($config['checktype']) { $curCls .= $config['checktype']; } } $orgSet = ''; if (is_array($dataConfig)) { $orgConfigVal = $dataConfig[0]; if ($orgConfigVal) { $orgSet = $orgConfigVal; } } $untilsCls = ''; $unit = $config['baseuntils']; // 基础单位 $untils = $config['untils']; // 显示单位 $tempData = ''; $template_data = ''; $orgshowfield = ''; logs('org set ::' . $orgSet); if ($orgSet) { $orgshowfield = str_replace('org', "org{\$key}", $orgSet); $temp = explode('.', $orgSet); if (is_array($temp)) { $template_data['bindlookupname'] = $temp[0]; $template_data['upclass'] = $temp[1]; } } if ($untils && $unit) { $template_data['unitl'] = $config['untils']; $template_data['unitlname'] = urlencode(iconv("UTF-8", "UTF-8//IGNORE", $config['untilschar'])); } // 添加统计功能 // is_stats="true" 统计控制 // $stats_num = 'stats_num=\\"2\\"'; // 统计时的小数有效位数 $is_stats = ''; // 统计状态 $edit_count_str = ''; // 编辑时统计数据 $edit_count_cls = ''; // 统计的标识样式 $y_num = ""; if ($datatableList['calculate']) { $edit_calculate_cls = ' calc '; // 计算样式 $template_data['formula'] = $calculateString; $template_data['stats_num'] = $validdigit; $template_data['formulaType'] = $formulaType; $template_data['formulaJindu'] = $formulaJindu; } if ($val->fieldcount == 1) { $is_stats = ' is_stats="true" '; $edit_count_str = " y_num=\"{\$item[{$val->fieldname}]|unitExchange=###,{$unit},{$untils},2}\""; $edit_count_cls = ' into_table_tj_input '; $stats_num = $datatableList['stats_num'] ? "stats_num=\"{$datatableList['stats_num']}\"" : $stats_num; //"stats_num=\"{$config['stats_num']}\""; // 指定有效位数。 if ($unit && $untils) { $y_num = "y_num='{\$item[{$val->fieldname}]|unitExchange=###,{$unit},{$untils},2}'"; } else { $y_num = "y_num='{\$item[{$val->fieldname}]}'"; } } if (is_array($template_data)) { $tempData = "template_data='" . _urldecode(json_encode($template_data)) . "'"; } if ($untils && $unit) { $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t<td>"; $showandeditfieldlist .= <<<EOF \t\t\t \t\t\t\t\t\t\t\t\t<div class="list_group_lay" style="display: none;"> \t\t\t\t\t\t\t\t\t\t<div class="list_public_lay"> \t\t\t\t\t\t\t\t\t\t\t<input type="text" {$y_num} {$dt_readonly} class="{$class_readonly} {$orgshowfield} {$edit_calculate_cls} {$edit_count_cls} {$curCls} list_unit_input list_public_input" {$edit_count_str} disabled="disabled" name="#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]" value="{\$item[{$val->fieldname}]|unitExchange=###,{$unit},{$untils},2}"> \t\t\t\t\t\t\t\t\t\t\t<span class="list_icon_elm_unit" title="{$config['untilschar']}">{$config['untilschar']} \t\t\t\t\t\t\t\t\t\t\t</span> \t\t\t\t\t\t\t\t\t\t</div> \t\t\t\t\t\t\t\t\t</div> \t\t\t\t\t\t\t\t\t<span class="datatable_show_val">{\$item[{$val->fieldname}]|unitExchange=###,{$unit},{$untils},3}</span> EOF; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t</td>"; } else { $showandeditfieldlist .= <<<EOF \t\t\t\t\t\t\t\t\t\t\t<td> \t\t\t\t\t\t\t\t\t\t\t<div class="list_group_lay" style="display: none;"> \t\t\t\t\t\t\t\t\t\t\t<input type="text" {$dt_readonly} {$y_num} class="list_input {$class_readonly} {$edit_calculate_cls} {$untilsCls} {$orgshowfield} {$edit_count_cls} {$curCls}" disabled="disabled" name="#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]" {$untils} value="{\$item[{$val->fieldname}]}" /> \t\t\t\t\t\t\t\t\t\t\t\t</div> \t\t\t\t\t\t\t\t\t\t\t\t<span class="datatable_show_val">{\$item[{$val->fieldname}]}</span> \t\t\t\t\t\t\t\t\t\t\t\t</td> EOF; } // 统计绑定表头文本框字段 $bindhz = ""; if ($val->countassignment && $val->fieldcount) { $bindhz = "bindhz=\"{$val->countassignment}\""; } $filedList .= "\r\n<th {$bindhz} style=\"width:{$val->colwidth}px;min-width:{$val->colwidth}px;min-width:{$val->colwidth}px;\" template_key=\"input\" template_name=\"{$namses}[{$val->fieldname}]\" {$tempData} {$stats_num}"; $filedList .= "\r\n{$is_stats} {$editStatusConfig}\ttemplate_class=\"{$untilsCls} {$curCls}\" {$nameKey}>"; // unitlpase $filedList .= "\r\n{$val->fieldtitle}"; $filedList .= "\r\n</th>"; // logs($filedList); break; case 'select': unset($template_data); /* * template_key="select" * template_data='[{"value":1,"name":"第一人"},{"value":2,"name":"第二人"}]' * template_class="code" */ $config = ''; if ($val->fieldshowtypeconfig) { $config = unserialize(base64_decode($val->fieldshowtypeconfig)); } $curCls = ''; if (is_array($config)) { // 将组件属性转换为html代码 $lookupConfig = $config['datasouceparame']; // 获取select的配置项 $lookuptolookupconfig = $config['lookto']; $dateConfig = $config['parame']; // 获取select的配置项 if (!$controllProperty['ganshe_datatable'] && $config['required']) { $curCls .= ' required '; } if ($config['checktype']) { $curCls .= $config['checktype']; } } // 下拉组件org效果 $orgSet = ''; if (is_array($dateConfig)) { $orgConfigVal = $dateConfig['org']; if ($orgConfigVal) { $orgSet = $orgConfigVal; } } if ($orgSet) { $orgshowfield = str_replace('org', "org{\$key}", $orgSet); $temp = explode('.', $orgSet); if (is_array($temp)) { $template_data['bindlookupname'] = $temp[0]; $template_data['upclass'] = $temp[1]; } } $dateOrgConfig = ''; // 对现有DB数据编辑时的 org 属性解析。 $orgshowfield = ''; if ($orgSet) { $orgshowfield = str_replace('org', "org{\$key}", $orgSet); $temp = explode('.', $orgSet); if (is_array($temp)) { $template_data['lookupname'] = $temp[0]; $template_data['name'] = $temp[1]; } $dateOrgConfig = 'bindlookup=\'' . json_encode($template_data) . '\''; } $dataSouceArr = ''; $getControllbyHtmlStr = ""; if ($lookuptolookupconfig[0]) { // 如果有lookup带回 $l = array(); foreach ($innerTableFieldInfoObj as $k => $v) { if ($k == $lookuptolookupconfig[0]) { $l = unserialize(base64_decode($v->fieldshowtypeconfig)); } } $lookmodel = D("LookupObj"); $lookuplist = $lookmodel->GetLookupDetail($l['parame'][0]); // $lookupParame['lpkey'] = reset($lookupConfig);//$l['parame'][0]; $lookupParame['lporder'] = $l[$lookuptolookupconfig[1]]; // $lookupobjmodel = D("lookupObj"); // $c = reset($lookupConfig); // $lookuplist = $lookupobjmodel->GetLookupDetail($c); // $lookupParame['lpfor'] = $lookuplist['val']; // $lookupParame['lpself'] = $lookuplist['field']; // lporder 从外部lookup中取值字段 // lpkey 当前lookup的key ? // lpfor 往哪个东西里写值 // lpself 当前项的字段名称 } $template_key = "select"; if ($config['datasouce'] == 0) { // 数据源为 select list $selectInc = $lookupConfig[0]; // lookup时 if ($lookupParame['lporder']) { $selectInc = $lookupParame['lporder']; } $getControllbyHtmlStr = '{:getControllbyHtml("selectlist",array("type"=>"select","key"=>"' . $selectInc . '"))}'; if ($selectInc) { $selectlistData = $this->getSelectList($selectInc); if (is_array($selectlistData[$selectInc])) { foreach ($selectlistData[$selectInc] as $selk => $selv) { $temp['value'] = urlencode(iconv("UTF-8", "UTF-8//IGNORE", $selk)); $temp['name'] = urlencode(iconv("UTF-8", "UTF-8//IGNORE", $selv)); $dataSouceArr[] = $temp; } } $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t<td><div style='display: none;' class='list_group_lay'>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<select class=\"list_select2 {$class_readonly} {$orgshowfield} {$curCls} \" data-placeholder=\"没有可用数据\""; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t name=\"#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t{:getControllbyHtml('selectlist',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'key'=>'{$selectInc}','selected'=>\$item['{$val->fieldname}']))}"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t</select></div><span class='datatable_show_val'>{:getControllbyHtml('selectlist',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'key'=>'{$selectInc}','selected'=>\$item['{$val->fieldname}'],'showtype'=>1))}</span>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t</td>"; } } else { // 数据源为 table if ($lookupConfig[0] && $lookupConfig[1] && $lookupConfig[2]) { if ($lookupConfig['treeparentfield']) { $template_key = "selecttree"; // 设置为树形结构 $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t<td>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<div style='display: none;' class='list_group_lay'>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t{:W('ShowSelectDT',array(\$item['{$val->fieldname}'], array(' {$curCls} ',array('type'=>'table',array('readonly'=>'1','targevent'=>'','actionName'=>'{$this->nodeName}','names'=>\"#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]\",'defaultcheckitem'=>'','defaultval'=>'','defaulttext'=>'','table'=>'{$lookupConfig[0]}', 'id'=>'{$lookupConfig[2]}','name'=>'{$lookupConfig[1]}','conditions'=>'','parentid'=>'{$lookupConfig['treeparentfield']}','mulit'=>'{$lookupConfig['mulit']}','isnextend'=>'{$lookupConfig['isnextend']}','treeheight'=>'{$lookupConfig['treeheight']}','treewidth'=>'{$lookupConfig['treewidth']}','key'=>'','isedit'=>'{$int_readonly}','showtype'=>'0','namesappend'=>'{$val->fieldname}#index#')))))}"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t</div><span class='datatable_show_val'>{:getControllbyHtml('table',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'table'=>{$lookupConfig[0]},'id'=>'{$lookupConfig[2]}','name'=>'{$lookupConfig[1]}','selected'=>\$item['{$val->fieldname}'],'showtype'=>1))}</span>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t</td>"; $chkStyle = "radio"; if ($lookupConfig["mulit"] == 1) { $chkStyle = "checkbox"; } $isnextend = $lookupConfig['isnextend'] == 1 ? 1 : 0; $dataSouceArr = '{"treeconfig":' . '{"expandAll":false,' . '"checkEnable":true,' . '"chkStyle":"' . $chkStyle . '",' . '"radioType":"all",' . '"onClick":"S_NodeClick",' . '"onCheck":"S_NodeCheck"},' . '"treeheight":"' . $lookupConfig['treeheight'] . '",' . '"treewidth":"' . $lookupConfig['treewidth'] . '",' . '"treedata":<?php ' . 'echo getControllbyHtml(' . '"table",' . 'array("type"=>"select",' . '"table"=>"' . $lookupConfig[0] . '",' . '"id"=>"' . $lookupConfig[2] . '",' . '"name"=>"' . $lookupConfig[1] . '",' . '"showtype"=>"1",' . '"comboxtree"=>"1",' . '"parentid"=>"' . $lookupConfig['treeparentfield'] . '",' . '"isnextend"=>' . $isnextend . ')); ' . '?>}'; } else { $obj = M($lookupConfig[0]); $data = $obj->field("{$lookupConfig[1]} , {$lookupConfig['2']}")->select(); $getControllbyHtmlStr = '{:getControllbyHtml("table",array("type"=>"select","table"=>"' . $lookupConfig[0] . '","id"=>"' . $lookupConfig[2] . '","name"=>"' . $lookupConfig[1] . '"))}'; if ($data) { foreach ($data as $dk => $dv) { $temp['value'] = urlencode(iconv("UTF-8", "UTF-8//IGNORE", $dv[$lookupConfig[2]])); $temp['name'] = urlencode(iconv("UTF-8", "UTF-8//IGNORE", $dv[$lookupConfig[1]])); $dataSouceArr[] = $temp; } } $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t<td>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<div style='display: none;' class='list_group_lay'><select class=\"list_select2 {$class_readonly} {$orgshowfield} {$curCls} \" data-placeholder=\"没有可用数据\""; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t name=\"#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t{:getControllbyHtml('table',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'table'=>'{$lookupConfig[0]}','id'=>'{$lookupConfig[2]}','name'=>'{$lookupConfig[1]}','selected'=>\$item['{$val->fieldname}']))}"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t</select></div><span class='datatable_show_val'>{:getControllbyHtml('table',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'table'=>'{$lookupConfig[0]}','id'=>'{$lookupConfig[2]}','name'=>'{$lookupConfig[1]}','selected'=>\$item['{$val->fieldname}'],'showtype'=>1))}</span>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t</td>"; } } } if (empty($getControllbyHtmlStr) && is_array($dataSouceArr)) { $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t<td>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<div style='display: none;' class='list_group_lay'><select class=\"list_select2 {$class_readonly} {$orgshowfield} {$curCls} \" data-placeholder=\"没有可用数据\""; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t name=\"#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t{:getControllbyHtml('table',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'table'=>'{$lookupConfig[0]}','id'=>'{$lookupConfig[2]}','name'=>'{$lookupConfig[1]}','selected'=>\$item['{$val->fieldname}']))}"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t</select></div><span class='datatable_show_val'>{:getControllbyHtml('table',array('type'=>'select','names'=>\"datatable[\$key][{$controlTag}][{$val->fieldname}]\",'table'=>'{$lookupConfig[0]}','id'=>'{$lookupConfig[2]}','name'=>'{$lookupConfig[1]}','selected'=>\$item['{$val->fieldname}'],'showtype'=>1))}</span>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t</td>"; } $template_data = $dataSouceArr; if (is_array($dataSouceArr)) { $template_data = urldecode(json_encode($dataSouceArr)); } // select绑定表头下拉框字段 $bindGroup = ""; if ($config["selectassignment"]) { $bindGroup = "bindGroup=\"{$config['selectassignment']}\""; } $filedList .= "\r\n\t\t\t<th {$bindGroup} style=\"width:{$val->colwidth}px;min-width:{$val->colwidth}px;min-width:{$val->colwidth}px;\" template_key='{$template_key}' template_name=\"{$namses}[{$val->fieldname}]\" {$dateOrgConfig}"; $filedList .= "\r\n\t\t\ttemplate_data='{$template_data}' {$editStatusConfig}"; $filedList .= "\r\n\t\t\ttemplate_html='{$getControllbyHtmlStr}'"; $filedList .= "\r\n\t\t\ttemplate_class=\" {$curCls} \" {$nameKey}>"; $filedList .= "\r\n\t\t\t\t{$val->fieldtitle}"; $filedList .= "\r\n\t\t\t</th>"; break; case 'date': $config = ''; if ($val->fieldshowtypeconfig) { $config = unserialize(base64_decode($val->fieldshowtypeconfig)); } $curCls = ''; if (is_array($config)) { // 将组件属性转换为html代码 $dateConfig = $config['parame']; // 获取select的配置项 if (!$controllProperty['ganshe_datatable'] && $config['required']) { $curCls .= ' required '; } if ($config['checktype']) { $curCls .= $config['checktype']; } } $format = $dateConfig['0'] ? $dateConfig['0'] : 'yyyy-MM-dd'; $format1 = ''; switch ($format) { case 'yyyy-MM-dd': $format1 = "='Y-m-d'"; break; case 'yyyy-MM-dd HH:mm': $format1 = "='Y-m-d H:i'"; break; case 'yyyy-MM': $format1 = "='Y-m'"; break; case 'MM-dd': $format1 = "='m-d'"; break; case 'yyyy': $format1 = "='Y'"; break; case 'MM': $format1 = "='m'"; break; case 'dd': $format1 = "='d'"; break; case 'HH:mm': $format1 = "='H:i'"; break; default: break; } // 日期组件org效果 $orgSet = ''; if (is_array($dateConfig)) { $orgConfigVal = $dateConfig['org']; if ($orgConfigVal) { $orgSet = $orgConfigVal; } } $dateOrgConfig = ''; // 对现有DB数据编辑时的 org 属性解析。 $orgshowfield = ''; if ($orgSet) { unset($template_data); $orgshowfield = str_replace('org', "org{\$key}", $orgSet); $temp = explode('.', $orgSet); if (is_array($temp)) { $template_data['lookupname'] = $temp[0]; $template_data['name'] = $temp[1]; } $dateOrgConfig = 'bindlookup=' . json_encode($template_data); } // $filedList .= "\r\n\t\t\t<th style=\"width:{$val->colwidth}px;min-width:{$val->colwidth}px;min-width:{$val->colwidth}px;\" template_key=\"date\" template_name=\"{$namses}[{$val->fieldname}]\" {$dateOrgConfig} "; $filedList .= "\r\n\t\t\ttemplate_data='{\"format\":\"{$format}\"}' {$editStatusConfig}"; $filedList .= "\r\n\t\t\ttemplate_class=\" {$curCls} \" {$nameKey}>"; $filedList .= "\r\n\t\t\t\t{$val->fieldtitle}"; $filedList .= "\r\n\t\t\t</th>"; $showandeditfieldlist .= <<<EOF \t \t\t\t\t\t\t\t\t\t\t\t\t<td> \t\t\t\t\t\t\t\t\t\t\t\t<div class="list_group_lay" style='display: none;'> \t\t\t\t\t\t\t\t\t\t\t\t<input type="text" {$dt_readonly} disabled="disabled" name="#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]" class="Wdate js-wdate list_input {$orgshowfield} {$class_readonly} {$curCls} " format="{dateFmt:'{$format}'}" value="{\$item.{$val->fieldname}|transTime{$format1}}"> \t\t\t\t\t\t\t\t\t\t\t\t</div> \t\t\t\t\t\t\t\t\t\t\t\t<span class='datatable_show_val'>{\$item.{$val->fieldname}|transTime{$format1}}</span> \t\t\t\t\t\t\t\t\t\t\t\t</td> EOF; break; case 'uploadfilenew': $config = ''; if ($val->fieldshowtypeconfig) { $config = unserialize(base64_decode($val->fieldshowtypeconfig)); } $filedList .= "\r\n\t\t\t<th style=\"width:{$val->colwidth}px;min-width:{$val->colwidth}px;min-width:{$val->colwidth}px;\" template_key=\"uploadfilenew\" template_name=\"{$namses}[{$val->fieldname}]\" "; $filedList .= "\r\n\t\t\ttemplate_data='{\"url\":\"__URL__/DT_uploadnew\"}' {$editStatusConfig} "; $filedList .= "\r\n\t\t\ttemplate_class=\"\" {$nameKey}>"; $filedList .= "\r\n\t\t\t\t{$val->fieldtitle}"; $filedList .= "\r\n\t\t\t</th>"; $uploadFileType = ''; if ($isreturnvalue || $editStatusConfig) { $uploadFileType = 'rel_type="view"'; } $fileattlist = $this->getDTAttachedRecordList($tableid, $tablename = '', $subid = 0, $fieldname); $tableModelname = createRealModelName($tableName); $showandeditfieldlist .= <<<EOF \t\t\t\t\t\t\t<td> \t\t\t\t\t\t\t<div class="list_group_lay"> \t\t\t\t\t\t\t<div class="js_privyIndex"> \t\t\t\t\t\t\t<a \t\t\t\t\t\t\ttitle="附件管理" \t\t\t\t\t\t\tclass="tml_task_btn" \t\t\t\t\t\t\tstyle="padding:3px 10px;" \t\t\t\t\t\t\thref="javascript:;" \t\t\t\t\t\t\tid="DT_upload_{$val->fieldname}#index#" \t\t\t\t\t\t\trel_index="#index#" \t\t\t\t\t\t\trel_url="__URL__/DT_uploadnew" \t\t\t\t\t\t\trel_subid="{\$item['id']}" \t\t\t\t\t\t\trel_fieldname = "{$val->fieldname}" \t\t\t\t\t\t\trel_tablename = "{$tableModelname}" \t\t\t\t\t\t\trel_tableid = "{\$vo['id']}" \t\t\t\t\t\t\t\t\t\t\t{$uploadFileType} \t\t\t\t\t\t\t\t\t\t\trel_name="datatable[#index#][{$controlTag}][{$val->fieldname}]" \t\t\t\t\t\t\t\t\t\t\t\tonclick="DTopenFile(this)"> \t\t\t\t\t\t\t\t\t\t\t\t\t\t附件管理(<span class="attached_count">{\$item.id|getDTCount=\$vo['id'],'{$tableModelname}',###,'{$val->fieldname}'}</span>) \t\t\t\t\t\t\t\t\t\t\t\t\t\t</a></div></div> \t\t\t\t\t\t\t\t\t\t\t\t\t\t</td> EOF; break; case 'lookup': $lookupParame = ''; $config = ''; $parme = ''; $lookupurl = ''; $callbackFileds = ''; $modelName = ''; $conditionsStr = ''; $showFiled = ''; $valField = ''; $lookupConfig = ''; $orgval = ''; $appendCondtionStr = ''; $appendCondtionArr = array(); if ($val->fieldshowtypeconfig) { $config = unserialize(base64_decode($val->fieldshowtypeconfig)); } $curCls = ''; if (is_array($config)) { // 将组件属性转换为html代码 $lookupConfig = $config['parame']; // 获取lookup等特殊组件的配置项 $lookuptolookupconfig = $config['ltol']; if (!$controllProperty['ganshe_datatable'] && $config['required']) { $curCls .= ' required '; } if ($config['checktype']) { $curCls .= $config['checktype']; } } $dataTableEventControll = $config['fieldname']; if ($lookupConfig[0]) { // 用户配置了lookup前置对象 // 获取指定项的lookup配置内容 $lookupConfigData = $this->lookuoconfig(false, true); $lookupConfigData = $lookupConfigData[reset($lookupConfig)]; // fields 带回字段列表 // url 请求地址 // mode 处理Model // filed 显示字段 // val 值字段 // condition 过滤条件 $lookupurl = '__URL__/' . $lookupConfigData['url']; // 请求地址 $callbackFileds = "{$lookupConfigData['fields']}"; // 带回字段列表 $modelName = "{$lookupConfigData['mode']}"; // 处理Model $lookupConfigData['filed'] = $lookupConfigData['filed'] ? $lookupConfigData['filed'] : 'name'; $showFiled = "{$lookupConfigData['filed']}"; // 显示字段 $lookupConfigData['val'] = $lookupConfigData['val'] ? $lookupConfigData['val'] : "id"; $valField = "{$lookupConfigData['val']}"; // 值字段 if (1 == $lookupConfigData['viewtype']) { $configObj = D('MisSystemDataviewMasView'); $viewConfig = $configObj->getViewConf($lookupConfigData['viewname']); $searchField = $viewConfig[$valField]['searchField']; $orderModelArr = explode('.', $searchField); if ($orderModelArr[0] && $searchField) { $tempModel = D($orderModelArr[0]); } } else { $tempModel = D($lookupConfigData['mode']); } $modelName = $tempModel->getTableName(); // throw new NullDataExcetion(var_dump($modelName)); $conditionsStr = ''; // $lookupConfigData['condition'] ? preg_replace("/'/", ''', $lookupConfigData['condition']).' and ' : ''; // $parme[]="field={$lookupConfigData['fields']}"; // $parme[]="model={$lookupConfigData['mode']}"; // ////////////////////////////////////////////////////////////////////////////////////// // lookup附加条件处理 $appendCondtion = ''; $sysFieldFmt = ''; $sysFieldList = ''; $formFiledList = ''; $fd = ''; $formFiledListArr = ''; $formFiledFmt = ''; $appendCondtionArr = ''; $appendCondtionStr = ''; // iscontrollchange // {:getAppendCondition($vo,'wenbenkuang,createtime')} $appendCondtion = $config['dateconditions']; // 附加条件设置信息 logs($dataTableEventControll . '::::' . arr2string($appendCondtion), 'fffffffffffffffffffff'); if ($appendCondtion) { $appendCondtion = unserialize(base64_decode($appendCondtion)); // proexp 表单字段列表 // sysexp 系统字段列表 $formFiledList = $appendCondtion['proexp']; $sysFieldList = $appendCondtion['sysexp']; // $formFiledFmt=array(); // $sysFieldFmt = array(); $sysFieldFmt = unserialize($sysFieldList) or array(); // 获取真实的表单字段名。 if ($formFiledList) { $formFiledListArr = unserialize($formFiledList) or array(); if (is_array($formFiledListArr) && count($formFiledListArr)) { $formFiledKey = array_keys($formFiledListArr); $properModel = M('mis_dynamic_form_propery'); $properMap['id'] = array('in', $formFiledKey); $fd = $properModel->where($properMap)->field('fieldname,id')->select(); if ($fd) { foreach ($fd as $k => $v) { // $fieldArr[] = $v['fieldname']; if ($formFiledListArr[$v['id']] == -1) { $formFiledFmt[$v['fieldname']] = $v['fieldname']; } else { $formFiledFmt[$v['fieldname']] = $formFiledListArr[$v['id']]; } } } } } if (is_array($sysFieldFmt) && is_array($formFiledFmt)) { $appendCondtionArr = array_merge($sysFieldFmt, $formFiledFmt); } elseif (is_array($sysFieldFmt) && !is_array($formFiledFmt)) { $appendCondtionArr = $sysFieldFmt; } elseif (!is_array($sysFieldFmt) && is_array($formFiledFmt)) { $appendCondtionArr = $formFiledFmt; } else { $appendCondtionArr = array(); } $appendCondtionStr = arr2string($appendCondtionArr); $appendCondtionStr = "<?php echo getAppendCondition(\$vo,{$appendCondtionStr}) ?>"; } $parme[] = "lookupchoice=" . reset($lookupConfig) . '&type=dt'; $parme[] = "newconditions={$conditionsStr}{$appendCondtionStr}"; // getAppendCondition if ($lookuptolookupconfig[0]) { // 如果有lookup带回lookup $ll = array(); // lporder 从外部lookup中取值字段 $lookupParame1['lporder'] = "ORG" . $lookuptolookupconfig[0]; // lpkey 当前lookup的key $lookupParame1['lpkey'] = reset($lookupConfig); // lporder 从外部lookup中取值字段 // lpkey 当前lookup的key ? // lpfor 往哪个东西里写值 // lpself 当前项的字段名称 } } $orgval = $lookupConfig[1]; // ? $lookupConfig[1] : 'org_'.$val->fieldname.rand(1, 100); $onEditParame = ''; $paramStr = ''; if (is_array($parme)) { $paramStr = join('&', $parme); $onEditParame = join('&', $parme); } // 拼接lookup参数 $lookupParame['upclass'] = $showFiled; $lookupParame['callback'] = 'lookup_counter_check'; //'lookupDataToCell'; $lookupParame['param'] = $paramStr; $lookupParame['condition'] = array_flip($appendCondtionArr); // $appendCondtionArr;// $lookupParame['lookupname'] = $orgval; $lookupParame['href'] = $lookupurl; $lookupParame['hidden_data'] = array(array('upclass' => $valField, 'name' => "{$namses}[{$val->fieldname}]")); // 回写 lookup中指定的值字段名。当前字段名。lookup->lookup if ($lookuptolookupconfig[0]) { $lookupParame['bindlookupname'] = 'org' . $lookuptolookupconfig[0]; $lookupParame['lporder'] = $lookuptolookupconfig[1]; //$lookupParame1 ['lporder']; $lookupParame['lpkey'] = $lookupParame1['lpkey']; $lookupParame['hidden_data'] = array(array('upclass' => $valField, 'name' => "{$namses}[{$val->fieldname}]", "lporder" => $lookuptolookupconfig[1])); } $filedList .= "\r\n\t\t\t<th style=\"width:{$val->colwidth}px;min-width:{$val->colwidth}px;min-width:{$val->colwidth}px;\" template_key=\"lookup\" \r\n "; $filedList .= "\r\n \t\t\ttemplate_name=\"\" \r\n "; $filedList .= "\r\n\t\ttemplate_data='" . urldecode(json_encode($lookupParame)) . "' {$editStatusConfig} \r\n"; $filedList .= "\r\n\t\t\ttemplate_class=\" {$curCls} \" {$nameKey}>"; $filedList .= "\r\n\t\t\t\t{$val->fieldtitle}"; $filedList .= "\r\n\t\t\t</th>"; // org 没设定哦。 $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t<td>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<div class='list_group_lay' style='display: none;'><div class=\"list_public_lay\">"; $lookupvaluechange = ''; if ($valField && $showFiled && $modelName) { $lookupvaluechange = "{\$item.{$val->fieldname}|getFieldBy='{$valField}','{$showFiled}','{$modelName}'}"; } else { $lookupvaluechange = "{\$item.{$val->fieldname}}"; } if ($editStatusConfig) { $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" callback=\"\" class=\"list_public_input list_lookup_input readonly org{\$key}{$val->fieldname}.{$showFiled} \" readonly=\"readonly\" value=\"{$lookupvaluechange}\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" class=\"org{\$key}{$val->fieldname}.{$valField} {$curCls}\" disabled=\"disabled\" name=\"#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]\" value=\"{\$item.{$val->fieldname}}\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<a class=\"list_icon_elm list_mid_icon_elm icon-plus\"></a>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<a title=\"清空信息\" class=\"list_icon_elm icon-trash\" href=\"javascript:void(0);\"></a>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t</div></div>"; } else { $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" callback=\"\" class=\"list_public_input list_lookup_input readonly org{\$key}{$val->fieldname}.{$showFiled} \" readonly=\"readonly\" value=\"{$lookupvaluechange}\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"hidden\" class=\"org{\$key}{$val->fieldname}.{$valField} {$curCls}\" disabled=\"disabled\" name=\"#hide#datatable[#index#][{$controlTag}][{$val->fieldname}]\" value=\"{\$item.{$val->fieldname}}\">"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<a class=\"list_icon_elm list_mid_icon_elm icon-plus\" param=\"{$onEditParame}\" href=\"{$lookupurl}\" lookupgroup=\"org{\$key}{$val->fieldname}\" autocomplete=\"off\"></a>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<a title=\"清空信息\" class=\"list_icon_elm icon-trash\" href=\"javascript:void(0);\" onclick=\"clearOrg('org{\$key}{$val->fieldname}');\"></a>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t</div></div>"; } $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<span class='datatable_show_val'>{$lookupvaluechange}</span>"; $showandeditfieldlist .= "\r\n\t\t\t\t\t\t\t\t\t\t</td>"; break; } $count++; } } // logs($count); // table 组件的操作类型设置@20141211 nbmxkj $tableoprate = ''; $container = ''; $containerend = ''; $oprateItem = ''; $dataTableModelName = createRealModelName($tableName); $tableOprateTitle = <<<EOF \t\t\t\t<th style='width:90px;' template_data='{"table":"{$controlName}","post_table":"{$tableName}","post_url":"__URL__/onesave","del_url":"__URL__/delsubinfo/delmodel/{$dataTableModelName}"}' template_key="action">操作</th> EOF; $tableOprateContent = <<<EOF \t \t\t\t\t<td {$oprateItem}> \t\t\t\t\t\t<input type="hidden" name="#hide#datatable[#index#][{$controlTag}][id]" value="{\$item.id}" /> \t\t\t\t\t\t<button title="删除" type="button" class="into_table_new_trash_tr into_table_btn itb_del" del_url="__URL__/delsubinfo/delmodel/{$dataTableModelName}" del_id="{\$item.id}" del_table="{$tableName}" nbmonclick="del_sub_info('{$this->nodeName}','{$tableName}',{\$item.id},this)"> \t\t\t\t\t\t<span class="icon-remove"></span></button> \t\t\t\t\t\t<button post_id="{\$item.id}" post_url="__URL__/onesave" post_id="{\$item.id}" post_table="{$tableName}" rel_type="edit" class="save_row_btn" type="button" title="编辑"><span class="icon-pencil"></span></button> \t\t\t\t\t</td> EOF; if ($isreturnvalue) { $tableoprate = 'view'; $tableOprateContent = ''; $tableOprateTitle = ''; // $container='<div class="temp_cell_right">'; // $containerend='</div>'; $oprateItem = 'style="display:none"'; } else { if ($isedit) { $tableoprate = 'edit'; } else { $tableoprate = 'add'; } } $datatableID = 'dt_' . $controlName . rand_string() . '_' . $tableoprate; $orgTag = $controllProperty[$property['org']['name']]; // 获取数据表格的数据带回绑定标识 $dataTableCallBackFunc = 'nbm_datatable_callback'; $datatableLookupInsertDataTag = ''; if ($orgTag) { // 取得组件记录的ID值。 $propertyid = $controllProperty[$property['id']['name']]; // 从这个表中得到对应关系 。 `mis_dynamic_form_indatatable` // datafieldname:当前这个数据表格的字段名。 // datainfieldname:这个是 带回数据表格中取值的字段名。 // 允许组合方式:{datafieldname:datainfieldname}, // datafieldname: a, b , c ,d // datainfieldname: e , f ,g ,h // {a:e},{b:e},{c:e} // 在需要回绑表时将数据的key带回数据的表名)查询出来。即当前表关联信息中记录的表 $relationData = $controllProperty[$property['dtlookup']['name']]; $relationData = unserialize(base64_decode($relationData)); $relationDataTableName = key($relationData); $relation = reset($relationData); $relation = $relation['list']; $relation = json_encode($relation); // dtkey: 从哪个表中的得数据。 // dtid:当前这个数据表格的ID值 // dtrelation:字段对应关系 $datatableLookupInsertDataTag = <<<EOF \t\t\t\t\t\t\t \t\t\t\t\t\t<input style="display:none;" type="text" value="datatableinsert" class="{$orgTag}.datatable_data" dtrelation='{$relation}' dtkey="{$relationDataTableName}" dtid="{$datatableID}" callback="{$dataTableCallBackFunc}" /> EOF; } $temp = <<<EOF \t \t\t\t\t\t\t\t\t\t\t\t\t{$container} \t\t\t\t\t\t\t\t\t\t\t\t<div class="into_table_lay"> \t\t\t\t\t\t\t\t\t\t\t\t{$datatableLookupInsertDataTag} \t\t\t\t\t\t\t\t\t\t\t\t{$titles} \t\t\t\t\t\t\t\t\t\t\t\t<table class="into_table_new nbm_data_table" table_data='{"formModel":"{$this->nodeName}","datatableModel":"{$dataTableModelName}","importUrl":"__APP__/MisImportExcel/misimportexceladd"}' id="{$datatableID}" table_type="{$tableoprate}"> \t\t\t\t\t\t\t\t\t\t\t\t<thead> \t\t\t\t\t\t\t\t\t\t\t\t<tr class="thead_tr"> \t\t\t\t\t\t\t\t\t\t\t\t{$filedList} \t\t\t\t\t\t\t\t\t\t\t\t{$tableOprateTitle} \t\t\t\t\t\t\t\t\t\t\t\t</tr> \t\t\t\t\t\t\t\t\t\t\t\t</thead> \t\t\t\t\t\t\t\t\t\t\t\t<tbody cellpadding="0" cellspacing="1"> EOF; /** * *************现有数据的修改展示***************************** */ $temp .= <<<EOF \t \t\t\t\t\t\t\t\t\t\t\t\t{~\$key=0;} \t\t\t\t\t\t\t\t\t\t\t\t<volist name="innerTabelObj{$controlTag}Data" id="item"> \t\t\t\t\t\t\t\t\t\t\t\t<tr> \t\t\t\t\t\t\t\t\t\t\t\t<td> \t\t\t\t\t\t\t\t\t\t\t\t<span class="serial_number"> \t\t\t\t\t\t\t\t\t\t\t\t{\$key+1} \t\t\t\t\t\t\t\t\t\t\t\t</span> \t\t\t\t\t\t\t\t\t\t\t\t</td> \t\t\t\t\t\t\t\t\t\t\t\t<!-- 现有数据 --> \t\t\t\t\t\t\t\t\t\t\t\t{$showandeditfieldlist} \t\t\t\t\t\t\t\t\t\t\t\t{$tableOprateContent} \t\t\t\t\t\t\t\t\t\t\t\t</tr> \t\t\t\t\t\t\t\t\t\t\t\t{~\$key++} \t\t\t\t\t\t\t\t\t\t\t\t</volist> EOF; /** * *****************现有数据呈现end************************* */ $temp .= "\t</tbody>"; /* * $temp .=" <tfoot>"; * $temp .=" <tr>"; * $temp .=" <td colspan=\"".($count+2)."\">"; * $temp .=" <span class=\"right\">"; * $temp .=" <input class=\"add_col_input\" type=\"text\" />"; * $temp .=" <a class=\"add_col_btn\" href=\"#\">"; * $temp .=" 新增行"; * $temp .=" </a>"; * $temp .=" </span>"; * $temp .=" </td>"; * $temp .=" </tr>"; * $temp .=" </tfoot>"; */ $temp .= "</table></div>{$containerend}"; $html = $temp; $islockHtml = parameReplace('$viewval', $viewval, $islockHtml); $html .= $islockHtml; break; default: $html = ''; } return $html; }