/**
  * @Title: createModel
  * @Description: todo(生成Model代码)
  * @param array $fieldData 组件属性列表
  * @param string $modelname 控制器名称
  * @param boolean $add 是否覆盖现有文件,默认为false:需要覆盖
  * @param boolean $isaudit 是否带审批流,默认为false:不带审批流
  * @author quqiang
  * @date 2014-8-21 上午10:11:34
  * @throws
  */
 protected function createModel($fieldData, $modelname, $add = false, $isaudit = false)
 {
     logs('C:' . __CLASS__ . ' L:' . __LINE__ . "model生成 modelname:{$modelname}");
     // 1.获取到当前Action的组件配置文件信息
     /*		$model = D('Autoform');
     		$dir = '/autoformconfig/';
     		$path = $dir.$this->nodeName.'.php';
     		$model->setPath($path);
     */
     // 所有节点的字段组件配置信息 从物理文件中获取内容  已废弃
     // $allControllConfig = $model->getAllControllConfig();
     // 从数据库中获取节点信息
     $formid = getFieldBy($this->nodeName, "actionname", "id", "mis_dynamic_form_manage");
     $formfieldSql = "SELECT mas.tablename , sub.* FROM mis_dynamic_database_sub AS sub LEFT JOIN mis_dynamic_database_mas AS mas " . "ON sub.masid = mas.id " . "WHERE sub.formid={$formid}";
     $misDynamicDatabaseSubObj = M('mis_dynamic_database_sub');
     $fieldData = $misDynamicDatabaseSubObj->query($formfieldSql);
     logs('C:' . __CLASS__ . ' L:' . __LINE__ . ' model生成数据查询sql:' . $misDynamicDatabaseSubObj->getLastSql());
     $fieldData = $this->getAllControllConfig($formid);
     logs('C:' . __CLASS__ . ' L:' . __LINE__ . ' model生成数据:' . $this->pw_var_export($temp), date('Y-m-d', time()) . '_data.log');
     $publicProperty = $this->publicProperty;
     $primaryTableName = $this->getTrueTableName();
     /**
      *		表数组,基础为二维.
      * 	0=>主表信息
      * 	1=>所有从表的信息
      */
     $tablenameArr = array();
     // 按真实表名分离数组
     foreach ($fieldData as $key => $value) {
         if ($primaryTableName == $value['tablename']) {
             // 分离主表
             $tablenameArr[0][$value['tablename']][] = $value;
         } else {
             // 分离从表
             $tablenameArr[1][$value['tablename']][] = $value;
         }
     }
     // 生成主表的model信息
     foreach ($tablenameArr[0] as $key => $value) {
         // 当前真实表名与Model名
         logs('多表 主表生成时节点:' . $this->nodeName);
         logs('C:' . __CLASS__ . ' L:' . __LINE__ . "多表 主表生成时节点:{$this->nodeName}");
         $modelname = createRealModelName($this->nodeName);
         //ucfirst($key);
         logs('C:' . __CLASS__ . ' L:' . __LINE__ . "多表 主表model名:{$modelname}");
         $truetablename = strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $key), "_"));
         logs('C:' . __CLASS__ . ' L:' . __LINE__ . "多表 主表 真实表名:{$truetablename}");
         $this->createOrderModel($value, $modelname, $truetablename, $add, $isaudit);
     }
     //从表MODEL生成
     foreach ($tablenameArr[1] as $key => $value) {
         // 当前真实表名与Model名
         if ($key != ':0') {
             $modelname = createRealModelName($key);
             //ucfirst($key);
             logs('C:' . __CLASS__ . ' L:' . __LINE__ . "多表 子表model名:{$modelname}");
             $truetablename = strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $key), "_"));
             logs('C:' . __CLASS__ . ' L:' . __LINE__ . "多表 子表 真实表名:{$truetablename}");
             $this->createOrderModel($value, $modelname, $truetablename, $add, $isaudit, true);
         }
     }
     // 生成数据表格的model
     // 获取当前表单中的数据表格
     $sql = "SELECT \n  CONCAT(m.tablename, '_sub_', p.fieldname) AS datatablename,\n  IF(\n    p.title <> '' \n    OR p.title <> NULL,\n    p.title,\n    p.fieldname\n  ) AS title,\n  d.*\nFROM\n  `mis_dynamic_form_propery` AS p \n  LEFT JOIN mis_dynamic_database_mas AS m \n    ON p.formid = m.formid \n   LEFT JOIN \n   `mis_dynamic_form_datatable` AS d\n   ON \n   d.`propertyid`=p.id\nWHERE p.formid ={$formid}\n  AND p.category = 'datatable' \n  AND m.`isprimary` = 1 \n\t\t";
     $obj = M();
     $datatableData = $obj->query($sql);
     foreach ($datatableData as $k => $v) {
         $temp[$v['datatablename']][] = $v;
     }
     foreach ($temp as $k => $v) {
         $modelname = createRealModelName($k);
         //ucfirst($key);
         $this->createDatatableModel($v, $modelname, $k, false, true, true);
     }
 }
    /**
     * @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("/'/", '&#39;', $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;
    }
예제 #3
0
 /**
  * @Title: onesave
  * @Description: todo(子表单条数据保存)  
  * @author 王昭侠
  * @date 2015-07-23 17:42:56
  * @parame $_POST['table'] 表名
  * @parame $_POST['id'] 数据ID值
  * @parame $_POST['masid'] 数据父表ID值
  * @throws
  */
 function onesave()
 {
     $table = $_REQUEST['post_table'];
     $id = intval($_REQUEST['post_id']);
     $masid = intval($_REQUEST['post_mas_id']);
     if ($table && !empty($_POST['datatable'])) {
         $model = D(createRealModelName($table));
         $insertData = array();
         // 数据添加缓存集合
         $updateData = array();
         // 数据修改缓存集合
         if ($_POST['datatable']) {
             foreach ($_POST['datatable'] as $key => $val) {
                 foreach ($val as $k => $v) {
                     if ($id) {
                         $updateData[$k][] = $v;
                     } else {
                         $v["masid"] = $masid;
                         $insertData[$k][] = $v;
                     }
                 }
             }
         }
         //数据处理
         if ($insertData) {
             foreach ($insertData as $k => $v) {
                 foreach ($v as $key => $val) {
                     $id = $model->add($val);
                 }
             }
         }
         if ($updateData) {
             foreach ($updateData as $k => $v) {
                 foreach ($v as $key => $val) {
                     $model->save($val);
                 }
             }
         }
         $this->success('保存成功', true, $id);
     }
 }
 /**
  * 收集删除数据
  * @Title: collecttodata
  * @Description: todo(收集删除数据)
  *
  * @author quqiang
  *         @date 2015年7月14日 下午2:46:42
  * @throws
  *
  */
 function collecttodata()
 {
     $basepath = ROOT . '/Dynamicconf/truncate';
     deldir($basepath);
     mk_dir($basepath);
     $obj = M('mis_dynamic_form_manage');
     $map['isrecord'] = 0;
     $data = $obj->where($map)->select();
     /**
      * 动态表单删除文件数据收集流程:
      * 1:action、model、view、actionExtend、modelExtend、模板文件
      * 2:销毁动态配置下的Models项、Sytem下的listInc
      * 3:获取所有需要清除的表,主表、子表、内嵌表
      */
     /**
      * 单文件删除列表
      *
      * @var unknown_type
      */
     $destriyFileList = array();
     /**
      * 文件夹删除列表
      *
      * @var unknown_type
      */
     $destriyFolderList = array();
     /**
      * 要删除的action名称,可以用于node节点删除
      */
     $actionList = array();
     /**
      * 要删除的Model名称
      */
     $modelList = array();
     foreach ($data as $k => $v) {
         $actionName = $v['actionname'];
         if ($actionName) {
             // 1
             // action , actionExtend
             $destriyFileList[] = LIB_PATH . "Action/" . $actionName . "Action.class.php";
             $destriyFileList[] = LIB_PATH . "Action/" . $actionName . "ExtendAction.class.php";
             // Model , ModelExtend , View
             $destriyFileList[] = LIB_PATH . "Model/" . $actionName . "Model.class.php";
             $destriyFileList[] = LIB_PATH . "Model/" . $actionName . "ExtendModel.class.php";
             $destriyFileList[] = LIB_PATH . "Model/" . $actionName . "ViewModel.class.php";
             // 模板文件目录
             $destriyFolderList[] = TMPL_PATH . C('DEFAULT_THEME') . '/' . $actionName;
             // 2
             // Models , 组件配置文件
             $dir = '/autoformconfig/';
             $destriyFolderList[] = C('DYNAMIC_PATH') . '/Models/' . $actionName;
             $destriyFileList[] = C('DYNAMIC_PATH') . '/autoformconfig/' . $actionName . '.php';
             // 要移除的action列表
             $actionList[] = $actionName;
         }
     }
     $modelList = $actionList;
     $model = M();
     // 3
     // 内嵌表名
     $dtNameSql = "SELECT\n\t\t\t\tCONCAT(mas.`tablename` , '_sub_' , pro.`fieldname` ) AS dtname\n\t\t\tFROM\n\t\t\t  mis_dynamic_form_manage AS ma \n\t\t\t  LEFT JOIN \n\t\t\t  `mis_dynamic_database_mas` AS mas\n\t\t\t  ON\n\t\t\t  ma.`id` = mas.`formid`\n\t\t\t  LEFT JOIN mis_dynamic_form_propery AS pro \n\t\t\t    ON ma.`id` = pro.`formid` \n\t\t\tWHERE ma.`isrecord` = 0 \n\t\t\t  AND pro.`category` = 'datatable' \n\t\t\t  ";
     // 实际使用表,按子表、非复用表、复用表 顺序排序
     $needDelteSql = "SELECT \n\t\t\t  mas.tablename\n\t\t\tFROM\n\t\t\t  `mis_dynamic_form_manage` AS ma \n\t\t\t  LEFT JOIN `mis_dynamic_database_mas` AS mas \n\t\t\t    ON ma.`id` = mas.`formid` \n\t\t\tWHERE ma.`isrecord` = 0 \n\t\t\t  AND mas.`tablename` IS NOT NULL \n\t\t\tORDER BY mas.`isprimary` ASC,\n\t\t\t  mas.`ischoise` ASC ";
     $needDeleteDatatableData = $model->query($dtNameSql);
     $needDeleteTableData = $model->query($needDelteSql);
     // 获取当前库中的所有表
     $sql = "SHOW TABLES;";
     $allTable = $model->query($sql);
     unset($temp);
     foreach ($allTable as $k => $v) {
         $temp[] = reset($v);
     }
     $allTable = $temp;
     // 处理数据表删除列表数据
     $needDeleteDatatableDataTemp = $needDeleteDatatableData;
     $needDeleteDatatableData = '';
     foreach ($needDeleteDatatableDataTemp as $k => $v) {
         if (in_array($v['dtname'], $allTable)) {
             // 只记录在库的内嵌表
             $destriyFileList[] = LIB_PATH . "Model/" . createRealModelName($v['dtname']) . "Model.class.php";
             $needDeleteDatatableData[] = $v['dtname'];
         }
     }
     $needDeleteTableDataTemp = $needDeleteTableData;
     $needDeleteTableData = '';
     foreach ($needDeleteTableDataTemp as $k => $v) {
         if (in_array($v['tablename'], $allTable)) {
             // 只记录在库的业务表
             $needDeleteTableData[] = $v['tablename'];
         }
     }
     $needDeleteTableData = array_unique($needDeleteTableData);
     $needDeleteDatatableData = array_unique($needDeleteDatatableData);
     file_put_contents($basepath . '/file.log', join(',', $destriyFileList));
     file_put_contents($basepath . '/folder.log', join(',', $destriyFolderList));
     file_put_contents($basepath . '/dt.log', join(',', $needDeleteDatatableData));
     file_put_contents($basepath . '/table.log', join(',', $needDeleteTableData));
     file_put_contents($basepath . '/action.log', join(chr(13) . chr(10), $actionList));
 }
 public function _after_update()
 {
     //修改当前节点的前置节点
     $linkid = $_REQUEST['id'];
     $linkInfo = $_REQUEST['predecessorid'];
     $MisSystemFlowLinkModel = D("MisSystemFlowLink");
     $MisSystemFlowLinkModel->setLinkWork($linkid, $linkInfo, 1);
     $MisSystemFlowWorkModel = D('MisSystemFlowWork');
     if ($_REQUEST['predecessorid']) {
         //存在前置任务,则对数据字段进行修改
         $MisSystemFlowWorkModel->where("id = " . $_REQUEST['id'])->setField("issubtask", 1);
     } else {
         //不存在存在前置任务,则对数据字段进行修改
         $MisSystemFlowWorkModel->where("id = " . $_REQUEST['id'])->setField("issubtask", 0);
     }
     $MisSystemFlowWorkModel->pJAccesslist2($_POST['formobj'], $linkid);
     $this->lookupinserttinfo($_POST['id']);
     // 内嵌表数据添加处理		// 内嵌表数据添加处理
     $datatablefiexname = "mis_system_flow_form_sub_";
     $insertData = array();
     // 数据添加缓存集合
     $updateData = array();
     // 数据修改缓存集合
     if ($_POST['datatable']) {
         foreach ($_POST['datatable'] as $key => $val) {
             foreach ($val as $k => $v) {
                 if ($v['id'] || $_REQUEST[$datatablefiexname . $k]) {
                     $updateData[$k][] = $v;
                 } else {
                     $insertData[$k][] = $v;
                 }
             }
         }
     }
     //数据处理
     if ($insertData) {
         foreach ($insertData as $k => $v) {
             $nqname = createRealModelName($datatablefiexname . $k);
             $model = D($nqname);
             $uploadfile = array();
             foreach ($v as $key => $val) {
                 if (C('TOKEN_NAME')) {
                     $val[C('TOKEN_NAME')] = $_POST[C('TOKEN_NAME')];
                 }
                 $val['masid'] = $_POST["id"];
                 $val = $model->create($val);
                 $insertId = $model->add($val);
                 /*
                  * _over_insert 方法,为静默插入生单。
                  */
                 $this->_over_insert($nqname, $insertId);
                 //处理内嵌表带附件信息数据
                 foreach ($val as $kk => $vv) {
                     if (is_array($vv)) {
                         $uploadfile[$kk . $key . $k]["file"] = $vv;
                         $uploadfile[$kk . $key . $k]["tableid"] = $_POST["id"];
                         $uploadfile[$kk . $key . $k]["subid"] = $insertId;
                         $uploadfile[$kk . $key . $k]["tablename"] = createRealModelName($datatablefiexname . $k);
                         $uploadfile[$kk . $key . $k]["fieldname"] = $kk;
                     }
                 }
             }
             if ($uploadfile) {
                 $this->DT_swf_upload($uploadfile);
             }
         }
     }
     if ($updateData) {
         foreach ($updateData as $k => $v) {
             $nqname = createRealModelName($datatablefiexname . $k);
             $model = D($nqname);
             $uploadfile = array();
             foreach ($v as $key => $val) {
                 if (C('TOKEN_NAME')) {
                     $val[C('TOKEN_NAME')] = $_POST[C('TOKEN_NAME')];
                 }
                 $val = $model->create($val);
                 $model->save($val);
             }
         }
     }
 }
    /**
     * @Title: createBaseArchives
     * @Description: todo(生成基础档案Action)
     * @param boolean $isaudit	是否为审批
     * @param boolean $isinitExtendAction  是否对扩展action做初始化处理
     * @author quqiang
     * @date 2014-11-18 下午07:09:06
     * @throws
     */
    function createBaseArchivesLsit($cotrollname, $isaudit = false, $isinitExtendAction = false)
    {
        logs('我要生成acationqk::::' . $cotrollname);
        // 1.获取到当前Action的组件配置文件信息
        $model = D('Autoform');
        $dir = '/autoformconfig/';
        $path = $dir . $this->nodeName . '.php';
        $model->setPath($path);
        // 获取所有节点信息
        //$allNodeconfig = $model->getAllControllConfig(); // 物理文件
        $allNodeconfig = $this->getAllControllConfig();
        $fieldData['visibility'] = $allNodeconfig;
        $cotrollname = ucfirst($cotrollname);
        $actionPath = LIB_PATH . "Action/" . $cotrollname . "Action.class.php";
        $actionExtendPath = LIB_PATH . "Action/" . $cotrollname . "ExtendAction.class.php";
        $extendphpcode .= "<?php\r\n/**";
        $extendphpcode .= "\r\n * @Title: {$cotrollname}Action";
        $extendphpcode .= "\r\n * @Package package_name";
        $extendphpcode .= "\r\n * @Description: todo(动态表单_扩展类。本类为用户代码注入入口,系统一旦生成将不再重复生成。";
        $extendphpcode .= "\r * \t\t\t\t\t\t但当用户选为组合表单方案后会更新该文件,请做好备份)";
        $extendphpcode .= "\r\n * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n * @company Aqo5Re65bSr5zG755m45t92YuQnZvNHbtRnL3d3d";
        $extendphpcode .= "\r\n * @copyright 本文件归属于Aqo5Re65bSr5zG755m45t92YuQnZvNHbtRnL3d3d";
        $extendphpcode .= "\r\n * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n * @version V1.0";
        $extendphpcode .= "\r\n*/";
        $extendphpcode .= "\r\nclass ";
        $phpcode .= "<?php\r\n/**";
        $phpcode .= "\r\n * @Title: {$cotrollname}Action";
        $phpcode .= "\r\n * @Package package_name";
        $phpcode .= "\r\n * @Description: todo(动态表单_自动生成-" . $this->nodeTitle . ")";
        $phpcode .= "\r\n * @author " . $_SESSION['loginUserName'];
        $phpcode .= "\r\n * @company Aqo5Re65bSr5zG755m45t92YuQnZvNHbtRnL3d3d";
        $phpcode .= "\r\n * @copyright 本文件归属于Aqo5Re65bSr5zG755m45t92YuQnZvNHbtRnL3d3d";
        $phpcode .= "\r\n * @date " . date('Y-m-d H:i:s');
        $phpcode .= "\r\n * @version V1.0";
        $phpcode .= "\r\n*/";
        $phpcode .= "\r\nclass ";
        if ($isaudit) {
            $jcc = "CommonAuditAction";
        } else {
            $jcc = "CommonAction";
        }
        $extendsCC = $cotrollname . "ExtendAction";
        $extendphpcode .= $cotrollname . "ExtendAction extends " . $jcc . " {\r\n";
        $phpcode .= $cotrollname . "Action extends " . $extendsCC . " {\r\n";
        $phpcode .= "\tpublic function _filter(&\$map){";
        //start filter
        $phpcode .= "\r\n\t\tif (\$_SESSION[\"a\"] != 1){\r\n\t\t\t\$map['status']=array(\"gt\",-1);";
        $phpcode .= "\r\n\t\t}";
        $phpcode .= "\r\n\t\t\$this->_extend_filter(\$map);";
        $phpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_filter";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展前置index函数)";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws ";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_filter() {";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_before_index";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展前置index函数)";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws ";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_before_index() {";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_before_edit";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展的前置编辑函数)";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws ";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_before_edit(){";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_before_insert";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展的前置添加函数)";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws ";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_before_insert(){";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_before_update";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展前置修改函数)  ";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_before_update(){";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_after_edit";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展后置编辑函数)";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws ";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_after_edit(&\$vo){";
        $extendphpcode .= "\r\n\t\tif(\$_GET['viewtype']=='view'){";
        $extendphpcode .= "\r\n\t\t\t\$this->display('formview');";
        $extendphpcode .= "\r\n\t\t\texit;";
        $extendphpcode .= "\r\n\t\t}";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_after_list";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展前置List)";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws ";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_after_list(){";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_after_insert";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展后置insert函数)  ";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_after_insert(\$id){";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_before_add";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展前置add函数)  ";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_before_add(&\$vo){";
        $extendphpcode .= "\r\n\t\t\$this->getFormIndexLoad(\$vo);";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_before_delete";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展前置删除函数)  ";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_before_delete(){";
        $extendphpcode .= "\r\n\t}";
        $extendphpcode .= "\r\n\t/**";
        $extendphpcode .= "\r\n\t * @Title: _extend_after_update";
        $extendphpcode .= "\r\n\t * @Description: todo(扩展后置update函数)  ";
        $extendphpcode .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $extendphpcode .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $extendphpcode .= "\r\n\t * @throws";
        $extendphpcode .= "\r\n\t*/";
        $extendphpcode .= "\r\n\tfunction _extend_after_update(){";
        $extendphpcode .= "\r\n\t}";
        // 重写父类index函数--为多表操作所做的修改 屈强@20141125 1712
        $index = "";
        $index .= "\r\n\t/**";
        $index .= "\r\n\t * @Title: index";
        $index .= "\r\n\t * @Description: todo(重写父类index函数)";
        $index .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $index .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $index .= "\r\n\t * @throws ";
        $index .= "\r\n\t*/";
        $index .= "\r\n\tfunction index(){";
        $index .= <<<EOF
\t\t
\t\t\$name=\$this->getActionName();
\t\t\$listnewall =\$this->getDateSoure(\$name);
\t\tif(!\$listnewall['list']){
\t\t//不存在则读取当前表orderno当树形菜单
\t\t\t\$model=D(\$name);
\t\t\t\$listnewall['list']=\$model->where("status=1")->field("orderno,id,name,parentid")->select();
\t\t\t\$listnewall['field']="id";
\t\t\t\$listnewall['fielter']="id";
\t\t\t
\t\t}
\t\t\$listnew=array();
\t\tforeach(\$listnewall['list'] as \$k=>\$v){
\t\t\t\$listnew[\$k]['name'] = "(".\$v['orderno'].")".\$v['name'];
\t\t\t\$listnew[\$k][\$listnewall['fielter']]=\$v[\$listnewall['fielter']]?\$v[\$listnewall['fielter']]:\$v['id'];
\t\t\t\$listnew[\$k]['parentid']=\$v['parentid'];
\t\t\t\$listnew[\$k]['id']=\$v['id'];
\t\t}
\t\t\$param['rel']="{$this->nodeName}view";
\t\t\$param['url']="__URL__/index/jump/1/hy/#".\$listnewall['fielter']."#";
\t\t\$treemiso[]=array(
\t\t\t\t'id'=>0,
\t\t\t\t'pId'=>0,
\t\t\t\t'url'=>'__URL__/index/jump/1',
\t\t\t\t'target'=>'ajax',
\t\t\t\t'rel'=>"{$this->nodeName}view",
\t\t\t\t'name'=>'{$this->nodeTitle}',
\t\t\t\t'title'=>'{$this->nodeTitle}',
\t\t\t\t'open'=>true,
\t\t\t\t'isParent'=>true,
\t\t);
\t\t\$treearr = \$this->getTree(\$listnew,\$param,\$treemiso);
\t\t\$this->assign("treearr",\$treearr);
\t\t\t\t\t\t
\t\t\t\t\t\t
\t\t//列表过滤器,生成查询Map对象
\t\t\$map = \$this->_search ();\t\t\t\t
\t\t\$name=\$this->getActionName();\t\t\t\t
\t\tif(\$_REQUEST['hy']){
\t\t\t//构造检索条件
\t\t\t\$map[\$listnewall['field']] = \$_REQUEST['hy'];
\t\t\t\$this->assign("hy",\$_REQUEST['hy']);
\t\t}
\t\tif (! empty ( \$name )) {
\t\t\t\$qx_name=\$name;
\t\t\tif(substr(\$name, -4)=="View"){
\t\t\t\t\$qx_name = substr(\$name,0, -4);
\t\t\t}
\t\t\t//验证浏览及权限
\t\t\tif( !isset(\$_SESSION['a']) ){
\t\t\t\t\$map=D('User')->getAccessfilter(\$qx_name,\$map);
\t\t\t}
\t\t\t//列表页排序 ---开始-----2015-08-06 15:07 write by xyz
\t\t\tif(\$_REQUEST['orderField']&&strpos(strtolower(\$_REQUEST['orderField']),' asc')===false&&strpos(strtolower(strpos(\$_REQUEST['orderField'])),' desc')===false){
\t\t\t\t\$this->_list ( \$name, \$map);
\t\t\t}else{
\t\t\t\t\$sortsorder = '';
\t\t\t\t\$sortsmap['modelname'] = \$name;
\t\t\t\t\$sortsmap['sortsorder'] = array("gt",0);
\t\t\t\t//管理员读公共设置
\t\t\t\tif(\$_SESSION['a']){
\t\t\t\t\t\$listincModel = M("mis_system_public_listinc");
\t\t\t\t\t\$sortslist = \$listincModel->where(\$sortsmap)->order("sortsorder")->select();
\t\t\t\t}else{
\t\t\t\t\t//个人先读个人设置、没有再读公共设置
\t\t\t\t\t\$sortsmap['userid'] = \$_SESSION [C ( 'USER_AUTH_KEY' )];
\t\t\t\t\t\$listincModel = M("mis_system_private_listinc");
\t\t\t\t\t\$sortslist = \$listincModel->where(\$sortsmap)->order("sortsorder")->select();
\t\t\t\t\tif(empty(\$sortslist)){
\t\t\t\t\t\tunset(\$sortsmap['userid']);
\t\t\t\t\t\t\$listincModel = M("mis_system_public_listinc");
\t\t\t\t\t\t\$sortslist = \$listincModel->where(\$sortsmap)->order("sortsorder")->select();
\t\t\t\t\t}
\t\t\t\t}
\t\t\t\t//如果在设置里有相关数据、提取排序字段组合order by
\t\t\t\tif(\$sortslist){
\t\t\t\t\tforeach(\$sortslist as \$k=>\$v){
\t\t\t\t\t\t\$sortsorder .= \$v['fieldname'].' '.\$v['sortstype'].',';
\t\t\t\t\t}
\t\t\t\t\t\$sortsorder = substr(\$sortsorder,0,-1);
\t\t\t\t}
\t\t\t\t//列表页排序 ---结束-----
\t\t\t\t\$this->_list ( \$name, \$map,'', false,'','',\$sortsorder);
\t\t\t}
\t\t\t\t
\t\t\t\t
\t\t}
\t\t\t\t\t\t
\t\t\t\t\t\t
\t\t\$scdmodel = D('SystemConfigDetail');
\t\t//扩展工具栏操作
\t\t\$toolbarextension = \$scdmodel->getDetail(\$name,true,'toolbar');
\t\tif (\$toolbarextension) {
\t\t\t\$this->assign ( 'toolbarextension', \$toolbarextension );
\t\t}
\t\t\$detailList = \$scdmodel->getDetail(\$name);
\t\tif (\$detailList) {
\t\t\t\$this->assign ( 'detailList', \$detailList );
\t\t}\t\t
\t\tif(\$_REQUEST['jump'] == 1){
\t\t\t\$this->display("indexview");
\t\t}else{
\t\t\t\$this->display();
\t\t}
EOF;
        $index .= "\r\n\t}";
        // beforindex
        $before_index = '';
        $before_index .= "\r\n\t/**";
        $before_index .= "\r\n\t * @Title: _before_index";
        $before_index .= "\r\n\t * @Description: todo(前置index函数)";
        $before_index .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $before_index .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $before_index .= "\r\n\t * @throws ";
        $before_index .= "\r\n\t*/";
        $before_index .= "\r\n\tfunction _before_index() {";
        // 默认生成 前置函数
        $before_edit = '';
        $before_edit .= "\r\n\t/**";
        $before_edit .= "\r\n\t * @Title: _before_edit";
        $before_edit .= "\r\n\t * @Description: todo(前置编辑函数)";
        $before_edit .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $before_edit .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $before_edit .= "\r\n\t * @throws ";
        $before_edit .= "\r\n\t*/";
        $before_edit .= "\r\n\tfunction _before_edit(){";
        $before_insert = '';
        $before_insert .= "\r\n\t/**";
        $before_insert .= "\r\n\t * @Title: _before_insert";
        $before_insert .= "\r\n\t * @Description: todo(前置添加函数)";
        $before_insert .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $before_insert .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $before_insert .= "\r\n\t * @throws ";
        $before_insert .= "\r\n\t*/";
        $before_insert .= "\r\n\tfunction _before_insert(){";
        $before_update = '';
        $before_update .= "\r\n\t/**";
        $before_update .= "\r\n\t * @Title: _before_update";
        $before_update .= "\r\n\t * @Description: todo(前置修改函数)  ";
        $before_update .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $before_update .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $before_update .= "\r\n\t * @throws";
        $before_update .= "\r\n\t*/";
        $before_update .= "\r\n\tfunction _before_update(){";
        $before_delete = '';
        $before_delete .= "\r\n\t/**";
        $before_delete .= "\r\n\t * @Title: _before_update";
        $before_delete .= "\r\n\t * @Description: todo(前置删除函数)  ";
        $before_delete .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $before_delete .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $before_delete .= "\r\n\t * @throws";
        $before_delete .= "\r\n\t*/";
        $before_delete .= "\r\n\tfunction _before_delete(){";
        // 重写父类编辑函数--为多表操作所做的修改 屈强@20141008 15:53
        $edit = '';
        $edit .= "\r\n\t/**";
        $edit .= "\r\n\t * @Title: edit";
        $edit .= "\r\n\t * @Description: todo(重写父类编辑函数)";
        $edit .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $edit .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $edit .= "\r\n\t * @throws ";
        $edit .= "\r\n\t*/";
        $edit .= "\r\n\tfunction edit(\$isdisplay=1){";
        $edit .= "\r\n\t\t\$mainTab = '{$this->tableName}';";
        $edit .= "\r\n\t\t//获取当前控制器名称";
        $edit .= "\r\n\t\t\$name=\$this->getActionName();";
        $edit .= "\r\n\t\t\$model = D(\"{$this->nodeName}View\");";
        $edit .= "\r\n\t\t//获取当前主键";
        $edit .= "\r\n\t\t\$map[\$mainTab.'.id']=\$_REQUEST['id'];";
        $edit .= "\r\n\t\t\$vo = \$model->where(\$map)->find();";
        $edit .= "\r\n\t\tif(!\$vo){";
        $edit .= "\r\n\t\t\$this->getFormIndexLoad(\$vo);";
        $edit .= "\r\n\t\t}";
        // 		$edit .="\r\n\t\tif(empty(\$vo)){";
        // 		$edit .="\r\n\t\t\t\$this->display (\"Public:404\");";
        // 		$edit .="\r\n\t\t\texit;";
        // 		$edit .="\r\n\t\t}";
        $edit .= "\r\n\t\tif (method_exists ( \$this, '_filter' )) {";
        $edit .= "\r\n\t\t\t\$this->_filter ( \$map );";
        $edit .= "\r\n\t\t}";
        $edit .= "\r\n\t\t//读取动态配制";
        $edit .= "\r\n\t\t\$this->getSystemConfigDetail(\$name);";
        $edit .= "\r\n\t\t//扩展工具栏操作";
        $edit .= "\r\n\t\t\$scdmodel = D('SystemConfigDetail');";
        $edit .= "\r\n\t\t// 上一条数据ID";
        $edit .= "\r\n\t\t\$map['id'] = array(\"lt\",\$id);";
        $edit .= "\r\n\t\t\$updataid = \$model->where(\$map)->order('id desc')->getField('id');";
        $edit .= "\r\n\t\t\$this->assign(\"updataid\",\$updataid);";
        $edit .= "\r\n\t\t// 下一条数据ID";
        $edit .= "\r\n\t\t\$map['id'] = array(\"gt\",\$id);";
        $edit .= "\r\n\t\t\$downdataid = \$model->where(\$map)->getField('id');";
        $edit .= "\r\n\t\t\$this->assign(\"downdataid\",\$downdataid);";
        $edit .= "\r\n\t\t//lookup带参数查询";
        $edit .= "\r\n\t\t\$module=A(\$name);";
        $edit .= "\r\n\t\tif (method_exists(\$module,\"_after_edit\")) {";
        $edit .= "\r\n\t\t\tcall_user_func(array(\$module,\"_after_edit\"),\$vo);";
        $edit .= "\r\n\t\t}";
        $edit .= "\r\n\t\t\$this->assign( 'vo', \$vo );";
        $edit .= "\r\n\t\tif(\$isdisplay)";
        $edit .= "\r\n\t\t\$this->display ();";
        $edit .= "\r\n\t}";
        //////////////////////////////////////////////////////////////////
        /*
         * 不要重写父类中的edit函数
         */
        $edit = '';
        /////////////////////////////////////////////////////////////////////
        // 默认生成后置函数
        $after_edit = '';
        $after_list = '';
        $after_insert = '';
        $before_add = '';
        $after_update = '';
        // 删除子表数据
        $delChildData = '';
        $is_create_del_child = false;
        $is_create_opraete_child = false;
        $is_create_modify_child = false;
        $is_create_insert_child = false;
        //控制地址组件修改代码生成
        $isArea = false;
        // 实例化MODE
        $model_code = '';
        $is_include_model = false;
        $after_edit .= "\r\n\t/**";
        $after_edit .= "\r\n\t * @Title: _after_edit";
        $after_edit .= "\r\n\t * @Description: todo(后置编辑函数)";
        $after_edit .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $after_edit .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $after_edit .= "\r\n\t * @throws ";
        $after_edit .= "\r\n\t*/";
        $after_edit .= "\r\n\tfunction _after_edit(\$vo){";
        $after_list .= "\r\n\t/**";
        $after_list .= "\r\n\t * @Title: _after_list";
        $after_list .= "\r\n\t * @Description: todo(前置List)";
        $after_list .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $after_list .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $after_list .= "\r\n\t * @throws ";
        $after_list .= "\r\n\t*/";
        $after_list .= "\r\n\tfunction _after_list(){";
        $after_insert .= "\r\n\t/**";
        $after_insert .= "\r\n\t * @Title: _after_insert";
        $after_insert .= "\r\n\t * @Description: todo(后置insert函数)  ";
        $after_insert .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $after_insert .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $after_insert .= "\r\n\t * @throws";
        $after_insert .= "\r\n\t*/";
        $after_insert .= "\r\n\tfunction _after_insert(\$id){";
        $before_add .= "\r\n\t/**";
        $before_add .= "\r\n\t * @Title: _before_add";
        $before_add .= "\r\n\t * @Description: todo(前置add函数)  ";
        $before_add .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $before_add .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $before_add .= "\r\n\t * @throws";
        $before_add .= "\r\n\t*/";
        $before_add .= "\r\n\tfunction _before_add(){";
        $after_update .= "\r\n\t/**";
        $after_update .= "\r\n\t * @Title: _after_update";
        $after_update .= "\r\n\t * @Description: todo(后置update函数)  ";
        $after_update .= "\r\n\t * @author " . $_SESSION['loginUserName'];
        $after_update .= "\r\n\t * @date " . date('Y-m-d H:i:s');
        $after_update .= "\r\n\t * @throws";
        $after_update .= "\r\n\t*/";
        $after_update .= "\r\n\tfunction _after_update(){";
        /**
         * 步骤:
         * 1。先源数据 $filedData['visibility'] 中的项按表名['tablename']分组。
         * 2。区分出主从表,主表的文件名用当前action名命名,从表以直接表名命名。
         * 3。遍历分组后的数据,依次生成Model文件。
         *
         *		表数组,基础为二维.
         * 	0=>主表信息
         * 	1=>所有从表的信息
         */
        /*	处理子表错误,子表不做数据添加 会导致修改 视图查询数据若用户只勾取部分表字段 引起的查询不出数据。
         * 处理方式为:取出当前action的所有子表 都生成 添加与修改都 做处理
         **/
        $curTabData = $this->getDataBaseConf();
        $curTabData = $curTabData['cur'];
        foreach ($curTabData['datebase'] as $key => $val) {
            if (!$val['isprimay']) {
                $after_update .= "\r\n\t\t//添加子表数据处理--" . $_SESSION['loginUserName'] . '@' . date('Y-m-d H:i:s');
                $after_update .= "\r\n\t\t\${$key}Mode = D('" . createRealModelName($key) . "');";
                $after_update .= "\r\n\t\t\${$key}Data = \${$key}Mode->create();";
                $after_update .= "\r\n\t\tunset(\${$key}Data['id']);";
                $after_update .= "\r\n\t\tif(\${$key}Data){";
                $after_update .= "\r\n\t\t\tif(\${$key}Mode->where('masid='.\${$key}Data['masid'])->find())";
                $after_update .= "\r\n\t\t\t\t\${$key}Mode->where('masid='.\${$key}Data['masid'])->save(\${$key}Data);";
                $after_update .= "\r\n\t\t\telse";
                $after_update .= "\r\n\t\t\t\t\${$key}Mode->add(\${$key}Data);";
                $after_update .= "\r\n\t\t}";
                $after_insert .= "\r\n\t\t// 添加子表数据处理----" . $_SESSION['loginUserName'] . '@' . date('Y-m-d H:i:s');
                $after_insert .= "\r\n\t\t\${$key}Mode = D('" . createRealModelName($key) . "');";
                $after_insert .= "\r\n\t\t\${$key}Data = \${$key}Mode->create();";
                $after_insert .= "\r\n\t\tunset(\${$key}Data['id']);";
                $after_insert .= "\r\n\t\tif(\${$key}Data){";
                $after_insert .= "\r\n\t\t\t\t\${$key}Data['masid']=\$id;";
                $after_insert .= "\r\n\t\t\t\t\${$key}Mode->add(\${$key}Data);";
                $after_insert .= "\r\n\t\t}";
            }
        }
        // 审批流
        if ($isaudit) {
        }
        foreach ($fieldData['visibility'] as $k => $v) {
            $property = $this->getProperty($v['catalog']);
            if ($v[$property['catalog']['name']] == 'upload') {
                $after_edit .= "\r\n\t\t\$this->getAttachedRecordList(\$vo['id']);";
                $after_update .= "\r\n\t\t\$id=\$_REQUEST['id'];";
                $after_update .= "\r\n\t\t\$this->swf_upload(\$id);";
                $after_insert .= "\r\n\t\t\$this->swf_upload(\$id);";
            }
            // 			if($v[$property['catalog']['name']] == 'checkbox'){
            // 				$after_edit .="\r\n\t\tif(\$vo['".$v[$property['fields']['name']]."'])\n\t\t\t\$vo[\"".$v[$property['fields']['name']]."\"]=explode(',',\$vo[\"".$v[$property['fields']['name']]."\"]);";
            // 			}
            if ($v[$property['catalog']['name']] == 'datatable') {
                // 删除子表数据
                if (!$is_create_del_child) {
                    $delChildData .= $this->getDataTableAction();
                    $is_create_del_child = true;
                }
                //if(!$is_create_opraete_child){
                // 				$after_edit .="\r\n\t\t// 内嵌表处理".$v[$property['fields']['name']];
                // 				$after_edit .="\r\n\t\t\$innerTabelObj".$v[$property['fields']['name']]." = M('".$this->tableName.'_sub_'.$v[$property['fields']['name']]."');"; // 内嵌表名 生成规则: 主表名称_sub_组件名称
                // 				$after_edit .="\r\n\t\t\$innerTabelObj".$v[$property['fields']['name']]."Data = \$innerTabelObj".$v[$property['fields']['name']]."->where('masid='.\$vo['id'])->select();";
                // 				$after_edit .="\r\n\t\t\$this->assign(\"innerTabelObj".$v[$property['fields']['name']]."Data\",\$innerTabelObj".$v[$property['fields']['name']]."Data);";
                $after_edit .= $this->dataTableEditCode($v, $property);
                //$is_create_opraete_child = true;
                //}
                if (!$is_create_modify_child) {
                    // 					$after_update .="\r\n\t\t// 内嵌表数据添加处理";
                    //$after_update .="\r\n\t\t\$datatablefiexname =\"{$this->tableName}_sub_\";";
                    // 					$after_update .="\r\n\t\t\$insertData = array();// 数据添加缓存集合";
                    // 					$after_update .="\r\n\t\t\$updateData = array();// 数据修改缓存集合";
                    // 					$after_update .="\r\n\t\tif(\$_POST['datatable']){";
                    // 					$after_update .="\r\n\t\t	foreach(\$_POST['datatable'] as \$key=>\$val){";
                    // 					$after_update .="\r\n\t\t		foreach(\$val as \$k=>\$v){";
                    // 					$after_update .="\r\n\t\t			if(\$v['id']){";
                    // 					$after_update .="\r\n\t\t				\$updateData[\$k][]=\$v;";
                    // 					$after_update .="\r\n\t\t			}else{";
                    // 					$after_update .="\r\n\t\t				\$insertData[\$k][]=\$v;";
                    // 					$after_update .="\r\n\t\t			}";
                    // 					$after_update .="\r\n\t\t		}";
                    // 					$after_update .="\r\n\t\t	}";
                    // 					$after_update .="\r\n\t\t}";
                    // 					$after_update .="\r\n\t\t//数据处理";
                    // 					$after_update .="\r\n\t\tif(\$insertData){";
                    // 					$after_update .="\r\n\t\t	foreach(\$insertData as \$k=>\$v){";
                    // 					$after_update .="\r\n\t\t		\$model = M(\$datatablefiexname.\$k);";
                    // 					$after_update .="\r\n\t\t		foreach(\$v as \$key=>\$val){";
                    // 					$after_update .="\r\n\t\t			\$val['masid'] = \$_POST['id'];";
                    // 					$after_update .="\r\n\t\t			\$model->add(\$val);";
                    // 					$after_update .="\r\n\t\t		}";
                    // 					$after_update .="\r\n\t\t	}";
                    // 					$after_update .="\r\n\t\t}";
                    // 					$after_update .="\r\n\t\tif(\$updateData){";
                    // 					$after_update .="\r\n\t\t	foreach(\$updateData as \$k=>\$v){";
                    // 					$after_update .="\r\n\t\t		\$model = M(\$datatablefiexname.\$k);";
                    // 					$after_update .="\r\n\t\t		foreach(\$v as \$key=>\$val){";
                    // 					$after_update .="\r\n\t\t			\$model->save(\$val);";
                    // 					$after_update .="\r\n\t\t		}";
                    // 					$after_update .="\r\n\t\t	}";
                    // 					$after_update .="\r\n\t\t}";
                    $after_update .= $this->updateDatatableCode();
                    $is_create_modify_child = true;
                }
                if (!$is_create_insert_child) {
                    // 					$after_insert.="\r\n\t\t// 内嵌表数据添加处理";
                    //$after_insert.="\r\n\t\t\$datatablefiexname =\"{$this->tableName}_sub_\";";
                    // 					$after_insert.="\r\n\t\t\$insertData = array();// 数据添加缓存集合";
                    // 					$after_insert.="\r\n\t\tif(\$_POST['datatable']){";
                    // 					$after_insert.="\r\n\t\t	foreach(\$_POST['datatable'] as \$key=>\$val){";
                    // 					$after_insert.="\r\n\t\t		foreach(\$val as \$k=>\$v){";
                    // 					$after_insert.="\r\n\t\t			\$insertData[\$k][]=\$v;";
                    // 					$after_insert.="\r\n\t\t		}";
                    // 					$after_insert.="\r\n\t\t	}";
                    // 					$after_insert.="\r\n\t\t}";
                    // 					$after_insert.="\r\n\t\t//数据处理";
                    // 					$after_insert.="\r\n\t\tif(\$insertData){";
                    // 					$after_insert.="\r\n\t\t	foreach(\$insertData as \$k=>\$v){";
                    // 					$after_insert.="\r\n\t\t		\$model = M(\$datatablefiexname.\$k);";
                    // 					$after_insert.="\r\n\t\t		foreach(\$v as \$key=>\$val){";
                    // 					$after_insert.="\r\n\t\t			\$val['masid'] = \$id;";
                    // 					$after_insert.="\r\n\t\t			\$model->add(\$val);";
                    // 					$after_insert.="\r\n\t\t		}";
                    // 					$after_insert.="\r\n\t\t	}";
                    // 					$after_insert.="\r\n\t\t}";
                    $after_insert .= $this->insertDatatableCode();
                    $is_create_insert_child = true;
                }
            }
            if ($v[$property['catalog']['name']] == 'areainfo' && $isArea == false) {
                $after_edit .= $this->getAreaInfoCode();
                $isArea == true;
            }
            if ($v[$property['subimporttableobj']['name']]) {
                // 普通的绑定表
                // 				$condition = '';
                // 				if($v[$property['conditions']['name']]){
                // 					$condition = "->where('status=1 and ".html_entity_decode($v[$property['conditions']['name']])."')";
                // 				}else {
                // 					$condition = "->where('status=1')";
                // 				}
                // 				$before_add.= "\r\n\t\t\$model=M(\"".$v[$property['subimporttableobj']['name']]."\");";
                // 				$before_add.= "\r\n\t\t\$list{$v[$property['fields']['name']]} =\$model{$condition}->field(\"".$v[$property['subimporttablefieldobj']['name']].",".$v[$property['subimporttablefield2obj']['name']]."\")->select();";
                // 				$before_add.="\r\n\t\t\$this->assign(\"".$v[$property['fields']['name']]."list\"".",\$list{$v[$property['fields']['name']]});";
                // 				$after_edit .="\r\n\t\t\$model=M(\"{$v[$property['subimporttableobj']['name']]}\");";
                // 				$after_edit .="\r\n\t\t\$list{$v[$property['fields']['name']]} =\$model{$condition}->field(\"".$v[$property['subimporttablefieldobj']['name']].",".$v[$property['subimporttablefield2obj']['name']]."\")->select();";
                // 				$after_edit .="\r\n\t\t\$this->assign(\"".$v[$property['fields']['name']]."list\"".",\$list{$v[$property['fields']['name']]});";
            } elseif ($v[$property['treedtable']['name']]) {
                // 绑定的是只能选择最后一级选中效果
                // 				$before_add.= "\r\n\t\t//添加-只能选择下拉框最后一级的特殊数据获取方式 @date:".Date('y-m-d H:i:s');
                // 				$before_add.= "\r\n\t\t\$model=D(\"MisSystemRecursion\");";
                // 				$before_add.= "\r\n\t\t\$treeSelect{$v[$property['fields']['name']]}Data = \$model->modelShow('{$v[$property['treedtable']['name']]}' , array('key'=>'id','pkey'=>'{$v[$property['treeparentfield']['name']]}','fields'=>'{$v[$property['treevaluefield']['name']]},{$v[$property['treeshowfield']['name']]}') , 0 , 1);";
                // 				$before_add.= "\r\n\t\t\$this->assign(\"treeSelect{$v[$property['fields']['name']]}Data\",\$treeSelect{$v[$property['fields']['name']]}Data);";
                // 				$after_edit.= "\r\n\t\t//修改-只能选择下拉框最后一级的特殊数据获取方式 @date:".Date('y-m-d H:i:s');
                // 				$after_edit.= "\r\n\t\t\$model=D(\"MisSystemRecursion\");";
                // 				$after_edit.= "\r\n\t\t\$treeSelect{$v[$property['fields']['name']]}Data = \$model->modelShow('{$v[$property['treedtable']['name']]}' , array('key'=>'id','pkey'=>'{$v[$property['treeparentfield']['name']]}','fields'=>'{$v[$property['treevaluefield']['name']]},{$v[$property['treeshowfield']['name']]}') , 0 , 1);";
                // 				$after_edit.= "\r\n\t\t\$this->assign(\"treeSelect{$v[$property['fields']['name']]}Data\",\$treeSelect{$v[$property['fields']['name']]}Data);";
            } else {
                // 绑定的是selectlist数据源
                if ($v[$property['showoption']['name']]) {
                    // 					if(!$is_include_model){
                    // 						$model_code = "\r\n\t\t\$model=D('Selectlist');";
                    // 						$is_include_model = true;
                    // 					}
                    // 					$after_edit .=$model_code. "\r\n\t\t\$selectlis = \$model->GetRules('{$v['showoption']}');";
                    // 					$after_edit .="\r\n\t\t\$selectlist{$v[$property['fields']['name']]}=array();";
                    // 					$after_edit .="\r\n\t\tforeach(\$selectlis['{$v['showoption']}'] as \$k=>\$v){";
                    // 					$after_edit .="\r\n\t\t\t\$temp['key']=\$k;";
                    // 					$after_edit .="\r\n\t\t\t\$temp['val']=\$v;";
                    // 					$after_edit .="\r\n\t\t\t\$selectlist{$v[$property['fields']['name']]}[]=\$temp;";
                    // 					$after_edit .="\r\n\t\t}";
                    // 					$after_edit .="\r\n\t\t\$this->assign(\"selectlist{$v[$property['fields']['name']]}\",\$selectlist{$v[$property['fields']['name']]});";
                    // 					$before_add .=$model_code."\r\n\t\t\$selectlis = \$model->GetRules('{$v['showoption']}');";
                    // 					$before_add .="\r\n\t\t\$selectlist{$v[$property['fields']['name']]}=array();";
                    // 					$before_add .="\r\n\t\tforeach(\$selectlis['{$v['showoption']}'] as \$k=>\$v){";
                    // 					$before_add .="\r\n\t\t\t\$temp['key']=\$k;";
                    // 					$before_add .="\r\n\t\t\t\$temp['val']=\$v;";
                    // 					$before_add .="\r\n\t\t\t\$selectlist{$v[$property['fields']['name']]}[]=\$temp;";
                    // 					$before_add .="\r\n\t\t}";
                    // 					$before_add .="\r\n\t\t\$this->assign(\"selectlist{$v[$property['fields']['name']]}\",\$selectlist{$v[$property['fields']['name']]});";
                }
            }
        }
        $before_edit .= "\r\n\t\t\$mainTab = '{$this->tableName}';";
        $before_edit .= "\r\n\t\t//获取当前控制器名称";
        $before_edit .= "\r\n\t\t\$name=\$this->getActionName();";
        $before_edit .= "\r\n\t\t\$model = D(\"{$this->nodeName}View\");";
        $before_edit .= "\r\n\t\t//获取当前主键";
        $before_edit .= "\r\n\t\t\$map[\$mainTab.'.id']=\$_REQUEST['id'];";
        $before_edit .= "\r\n\t\t\$vo = \$model->where(\$map)->find();";
        $datetiem = date('Y-m-d H:i:s');
        $before_insert .= <<<EOF
\t\t
\t\t// 插入之前,验证编码方案是否正确符合规定 @{$datetiem}
\t\t\$name = \$this->getActionName();
\t\t\$orderno = \$_POST['orderno'];
\t\t\$MisSystemOrdernoDao = D("MisSystemOrderno");
\t\t\$data = \$MisSystemOrdernoDao->validateOrderno(\$name,\$orderno);
\t\tif(\$data['result']){
\t\t\t\$_POST['parentid'] = \$data['parentid'];
\t\t\t
\t\t}else{
\t\t\t\$this->error(\$data['altMsg']);
\t\t}
EOF;
        $before_update .= <<<EOF
\t\t
\t\t// 修改之前,验证编码方案是否正确符合规定 @{$datetiem}
\t\t\$name = \$this->getActionName();
\t\t\$orderno = \$_POST['orderno'];
\t\t\$MisSystemOrdernoDao = D("MisSystemOrderno");
\t\t\$data = \$MisSystemOrdernoDao->validateOrderno(\$name,\$orderno,\$_POST['id']);
\t\tif(\$data['result']){
\t\t\t\$_POST['parentid'] = \$data['parentid'];
\t\t}else{
\t\t\t\$this->error(\$data['altMsg']);
\t\t}
EOF;
        $before_edit .= "\r\n\t\t\$this->assign( 'vo', \$vo );";
        $before_index .= "\r\n\t\t\$this->_extend_before_index();";
        $before_index .= "\r\n\t}";
        $before_edit .= "\r\n\t\t\$this->_extend_before_edit();";
        $before_edit .= "\r\n\t}";
        $before_insert .= "\r\n\t\t\$this->_extend_before_insert();";
        $before_insert .= "\r\n\t}";
        $before_update .= "\r\n\t\t\$this->_extend_before_update();";
        $before_update .= "\r\n\t}";
        $after_edit .= "\r\n\t\t\$this->_extend_after_edit(\$vo);";
        $after_edit .= "\r\n\t}";
        $after_list .= "\r\n\t\t\$this->_extend_after_list();";
        $after_list .= "\r\n\t}";
        $after_insert .= "\r\n\t\t\$this->_extend_after_insert(\$id);";
        $after_insert .= "\r\n\t}";
        $before_add .= "\r\n\t\t\$this->_extend_before_add(\$vo);";
        $before_add .= "\r\n\t}";
        $after_update .= "\r\n\t\t\$this->_extend_after_update();";
        $after_update .= "\r\n\t}";
        $before_delete .= "\r\n\t\t\$this->_extend_before_delete();";
        $before_delete .= "\r\n\t}";
        $phpcode .= $index . $edit . $before_index . $before_edit . $before_insert . $before_update . $before_delete . $after_edit . $after_insert . $before_add . $after_update . $delChildData;
        $phpcode .= "\r\n}\r\n?>";
        $extendphpcode .= "\r\n}\r\n?>";
        if (!is_dir(dirname($actionPath))) {
            mk_dir(dirname($actionPath), 0777);
        }
        if (false === file_put_contents($actionPath, $phpcode)) {
            $this->error("Action文件生成失败!");
        }
        if ($isinitExtendAction) {
            if (false === file_put_contents($actionExtendPath, $extendphpcode)) {
                $this->error("扩展Action文件生成失败!");
            }
        } else {
            if (false == file_exists($actionExtendPath)) {
                if (false === file_put_contents($actionExtendPath, $extendphpcode)) {
                    $this->error("扩展Action文件生成失败!");
                }
            }
        }
    }