Example #1
0
 /**
  * $data[0]		$controllType		组件类型 lookup , lookupsuper
  * $data[1]		$vo						页面vo数据
  * $data[2]		$controllProperty	当前组件的属性ID或属性数组
  * $data[3]		$isedit					是否为修改操作页面
  * $data[4]		$isreturnvalue		是否为view操作页面
  * $data[5]		$ganshe				干涉页面 状态归0
  * @see Widget::render()
  */
 public function render($data)
 {
     /**			数据收集			*/
     unset($vo);
     $controllType = $data[0];
     //组件类型 lookup , lookupsuper
     $vo = $data[1];
     //页面vo数据
     $controllProperty = $data[2];
     //当前组件的属性ID或属性数组
     $isedit = $data[3];
     //是否为修改操作页面
     $isreturnvalue = $data[4];
     //是否为view操作页面
     $ganshe = $data[5];
     //干涉页面 状态归0
     $ismuchchoice = $data[6];
     //是否多选 1是0否
     /**			数据处理			*/
     $dir = CONF_PATH;
     $controlls = (require $dir . 'controlls.php');
     require $dir . 'property.php';
     $privateProperty = array();
     foreach ($controlls as $key => $val) {
         if ($val['property']) {
             $privateProperty[$key] = array_merge($NBM_COMMON_PROPERTY, $val['property']);
         } else {
             $privateProperty[$key] = $NBM_COMMON_PROPERTY;
         }
     }
     $property = $privateProperty['lookup'];
     switch ($controllType) {
         case 1:
             $controllType = 'lookup';
             break;
         case 2:
             $controllType = 'lookupsuper';
         default:
             $controllType = 'lookup';
             break;
     }
     if (!is_array($controllProperty)) {
         $obj = M('mis_dynamic_form_propery');
         $controllProperty = $obj->where('id=' . $controllProperty)->find();
         if ($ganshe == '1') {
             $controllProperty[$property['islock']['dbfield']] = 1;
             $controllProperty[$property['requiredfield']['dbfield']] = 1;
             $controllProperty[$property['isshow']['dbfield']] = 0;
         }
     }
     if (!is_array($controllProperty)) {
         return '<error>Lookup组件配置错误/没有属性<error>';
     }
     /**		开始lookup属性解析			*/
     if (!$isreturnvalue) {
         $chtml = '';
         if ($controllProperty[$property['checkfunc']['dbfield']]) {
             $chtml = $controllProperty[$property['checkfunc']['dbfield']];
         }
         $required = '';
         // 必填验证
         if ($controllProperty[$property['requiredfield']['dbfield']] && $ganshe != '1') {
             $required = 'required';
         }
         $chtml = $required . 'nbm ' . $chtml;
         //获取lookup key值 动态加载lookup配置
         $lookupchoice = $controllProperty[$property['lookupchoice']['dbfield']];
         $lookupObj = D('LookupObj');
         $lookupDetail = $lookupObj->GetLookupDetail($lookupchoice);
         //var_dump($lookupDetail['condition']);
         $defaultLookupCondition = $lookupDetail['condition'];
         // lookup配置时生成的过滤条件。
         $model = $lookupDetail['mode'];
         $urls = $lookupDetail['url'];
         $lookupgroup = $controllProperty[$property['lookupgroup']['dbfield']];
         //视图特殊处理
         if ($lookupDetail["viewname"]) {
             $viewname = $lookupDetail["viewname"];
             //视图名称
             $viewsavefield = $lookupDetail["val"];
             //视图显示字段
             $viewshowfield = $lookupDetail["filed"];
             //视图存储字段
             $dataViewModel = M("mis_system_dataview_mas");
             $viewsql = "SELECT s.field FROM mis_system_dataview_mas AS m LEFT JOIN mis_system_dataview_sub AS s ON m.id=s.masid WHERE m.status=1 and s.status=1 and m.`name`='{$viewname}' AND s.otherfield=";
             //存储字段
             $savefieldviewsql = $viewsql . "'{$viewsavefield}' limit 1";
             $savefieldviewfieldarr = $dataViewModel->query($savefieldviewsql);
             $savefieldviewfieldexplode = explode(".", $savefieldviewfieldarr[0]['field']);
             $savefieldviewtable = $savefieldviewfieldexplode[0];
             //存储字段所在的真实表名
             $orgval = $savefieldviewfieldexplode[1];
             //存储字段真实字段名
             //显示字段
             $showfieldviewsql = $viewsql . "'{$viewshowfield}' limit 1";
             $showfieldviewfieldarr = $dataViewModel->query($showfieldviewsql);
             $showfieldviewfieldexplode = explode(".", $showfieldviewfieldarr[0]['field']);
             $showfieldviewtable = $showfieldviewfieldexplode[0];
             //显示字段所在的真实表名
             $orgchar = $showfieldviewfieldexplode[1];
             //显示字段真实字段名
         } else {
             $orgval = $lookupDetail['val'] ? $lookupDetail['val'] : 'id';
             $orgchar = $lookupDetail['filed'] ? $lookupDetail['filed'] : 'name';
         }
         $orgLookuoVal = $controllProperty[$property['org']['dbfield']];
         // 值 value
         $orgLookupText = $controllProperty[$property['org1']['dbfield']];
         // 显示内容 text
         $readonly = $controllProperty[$property['islock']['dbfield']] == 1 ? false : true;
         $view = '';
         if ($lookupDetail['viewname']) {
             $view = '&viewname=' . $lookupDetail['viewname'];
         }
         if ($lookupDetail['dt']) {
             $dtcon = '&lookuptodatatable=2';
         }
         $muchchoice = '';
         if ($ismuchchoice == 1) {
             $muchchoice = '&ismuchchoice=' . $ismuchchoice;
         }
         // 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]}\"";
         }
         // lookup附加条件处理
         $appendCondtionArr = array();
         $appendCondtion = $controllProperty[$property['additionalconditions']['name']];
         //  附加条件设置信息
         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']];
                                 //$formFiledFmt[$formFiledListArr[$v['id']]] = $v['fieldname'];
                             }
                         }
                     }
                 }
             }
             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();
             }
             $conditions = getAppendCondition($vo, $formFiledFmt);
             $systemconditionsTemp = getAppendCondition($vo, $sysFieldFmt);
             // 				if($defaultLookupCondition){
             // 					$systemconditions = $defaultLookupCondition;
             // 					if($systemconditionsTemp){
             // 						$systemconditions .= ' and '.$systemconditionsTemp;
             // 					}
             // 				}else{
             // 					$systemconditions = $systemconditionsTemp;
             // 				}
             $systemconditions = $systemconditionsTemp;
         }
         $val = '';
         $tempModel = D($model);
         $temptable = '';
         //视图时取字段对应的真实字段所在真实表名
         if ($lookupDetail["viewname"]) {
             $temptable = $savefieldviewtable;
         } else {
             $temptable = $tempModel->getTableName();
         }
         $map = '';
         $value = $vo[$controllProperty[$property['fields']['dbfield']]];
         if ($value) {
             if (strpos($value, ',')) {
                 $valueStr = explode(',', $value);
                 $map = $orgval . " in ('" . join("','", $valueStr) . "')";
             } else {
                 $map = $orgval . "='" . $value . "'";
             }
         }
         //$viewval = $isedit ?(getFieldBy($value , $orgval , $orgchar , $tempModel->getTableName())):'';
         // 			if(!$map){
         // 				$viewval='';
         // 			}else{
         // 				$viewval = $isedit ?(getFieldData($orgchar , $temptable , $map , true , 1000)):'';
         // 			}
         //多做了个分支,主要是应付视图里储存字段不唯一的情况
         /**
          *当储存字段(以orderno=06为例)查询结果有n条记录,显示字段(以type为例)可以和储存字段保证一致性(当orderno=06时,查出的type全部都是“请假”)
          */
         if (!$map) {
             $viewval = '';
         } else {
             if (strpos($value, ',')) {
                 $viewval = $isedit ? getFieldData($orgchar, $temptable, $map, true, 1000) : '';
             } else {
                 $viewval = $isedit ? getFieldBy($value, $orgval, $orgchar, $temptable) : '';
                 //
             }
         }
         $html = "<div class=\"tml-input-lookup\">";
         $paramsEcho = arr2string($map);
         $controllPropertyEcho = '字段名:' . $controllProperty[$property['fields']['dbfield']] . '__表名:' . $tempModel->getTableName();
         // 				$html.=<<<EOF
         // 				<script>
         // 				console.log("lookup查询条件:{$controllPropertyEcho}--{$orgchar}--查询条件:{$paramsEcho} 修改状态:{$isedit}");
         // 				</script>
         // EOF;
         $readonlyCls = 'active_lookup';
         if ($readonly) {
             $readonlyCls = '';
         }
         $html .= "<input type=\"text\"  {$textCounterCheck} class=\"{$lookupgroup}.{$orgchar} {$chtml} input_new half_angle_input {$orgLookupText} {$readonlyCls} \" autocomplete=\"off\" readonly=\"readonly\"  value=\"" . $viewval . "\" />";
         $html .= "<input type=\"hidden\" {$valCounterCheck}  class=\"{$required} {$lookupgroup}.{$orgval} {$orgLookuoVal}\" name=\"" . $controllProperty[$property['fields']['dbfield']] . "\" value=\"" . $vo[$controllProperty[$property['fields']['dbfield']]] . "\"  />";
         if ($readonly) {
             // 只读情况
             // lookup 触发按钮
             $html .= "<a class=\"icon_elm mid_icon_elm icon-plus\"></a>";
             // $title
             // 清空 lookup 按钮
             $html .= "<a title=\"清空信息-只读\" class=\"icon_elm icon-trash\"  href=\"javascript:void(0);\"></a>";
         } else {
             $formFiledFmt = array_flip($formFiledFmt);
             $conditionOprateString = "condition=\"\"";
             if (is_array($formFiledFmt)) {
                 $conditionOprateString = "condition=" . json_encode($formFiledFmt);
             }
             // lookup 触发按钮
             $html .= "<a class=\"icon_elm mid_icon_elm icon-plus\" syscondition=\"{$systemconditions}\"  newconditions=\"{$conditions}\" ismuchchoice=\"{$ismuchchoice}\"  {$conditionOprateString}  param=\"lookupchoice={$lookupchoice}{$muchchoice}&newconditions={$view}{$dtcon}\" href=\"__URL__/{$urls}\" lookupGroup=\"{$lookupgroup}\" ></a>";
             //$title
             // 清空 lookup 按钮
             $html .= "<a title=\"清空信息-可读写\" class=\"icon_elm icon-trash\"  href=\"javascript:void(0);\" onclick=\"clearOrg('{$lookupgroup}');\"></a>";
         }
         $html .= "</div>";
     } else {
         $func = "";
         $parmFunc = array();
         // 处理子表及主表的lookup值转换 , modify by nbmxkj at 20150127 20
         // *****注意:func 与 funcdata 数组项一定要个数对应。****
         $scdmodel = D('SystemConfigDetail');
         $detailList = $scdmodel->getDetail(MODULE_NAME, '', '', '', 'status');
         $dval = $detailList[$controllProperty[$property['fields']['dbfield']]];
         if (is_array($dval)) {
             if (count($dval['func']) > 0) {
                 $varchar = "";
                 foreach ($dval['func'] as $k3 => $v3) {
                     //开始html字符
                     if (isset($dval['extention_html_start'][$k3])) {
                         $varchar = $dval['extention_html_start'][$k3];
                     }
                     //中间内容
                     $varchar .= getConfigFunction($vo[$dval['name']], $v3, $dval['funcdata'][$k3], $vo);
                     if (isset($dval['extention_html_end'][$k3])) {
                         $varchar .= $dval['extention_html_end'][$k3];
                     }
                     //结束html字符
                 }
                 $html = $varchar;
             } else {
                 $viewval = $vo[$controllProperty[$property['fields']['dbfield']]];
                 $html = $viewval;
             }
         }
     }
     return $html;
 }
Example #2
0
<!--------------------------------------------------------------------------------------------------->

<table width=600 cellspacing=0 cellpadding=0 bgcolor=efefef>
<tr align=center bgcolor=dfdfdf height=22>
	<td>월별</td>
	<td>수치</td>
	<td>비율(%)</td>
	<td width=310>그래프</td>
</tr>
<tr><td colspan=4 height=1 bgcolor=c0c0c0></td></tr>
<tr><td colspan=4 height=1 bgcolor=ffffff></td></tr>
<?php 
    $tot = getFieldData($field, $table, $year);
    for ($i = 1; $i < 13; $i++) {
        $o = $i < 10 ? "0" . $i : $i;
        $sum = getFieldData($field, $table, $year . $o);
        $per = @round($sum / $tot * 100, 1);
        $grp = (int) $per * 3;
        ?>
<tr align=center>
	<td><a class=Blink onclick="SelectQue('<?php 
        echo $o;
        ?>
','')"><?php 
        echo $o;
        ?>
월</a></td>
	<td><?php 
        echo number_format($sum);
        ?>
</td>