<?php
/**
 * 元数据
 */
$elename = substr(basename(__FILE__),0,-4);
$type_name = ['pro'=>'物料编码','suppro'=>'零件','prosup'=>'商品'];
$cl_type ='pro';
$rulestr ='&rules=cl_type:pro';
if(\mvc::$req['p_id']){
	$rulestr .= '&rules=cl_type:pro;cl_dataid:'.\mvc::$req['p_id'];
}elseif (\mvc::$req['spr_id']) {
	$cl_type = 'suppro';
	$rulestr .= '&rules=cl_type:suppro;cl_dataid:'.\mvc::$req['spr_id'];
}elseif (\mvc::$req['psu_id']) {
	$cl_type = 'prosup';
	$rulestr .= '&rules=cl_type:prosup;cl_dataid:'.\mvc::$req['psu_id'];
}
if(\mvc::$req['cl_type']){
	$cl_type = \mvc::$req['cl_type'];
	$rulestr .= '&rules=cl_type:'.\mvc::$req['cl_type'];
}
return [
    //POWER
    'pwcode'=>'B500',
    //元数据名称
    'elename'=>$elename,
    //元数据标题
	'cn_name' => "产品日志", 
	'en_name' => lg("产品日志"), 
	//
	'table' => "change_log",  
	'key' => "cl_id", //主键字段
	'order' => "cl_id desc", //默认排序
	'caption' => "cl_name", //主要显示字段
	'urlFields'=>['cl_type'],
    'url'=>[
		'js'=>          HOST.'/static/js/element/'.$elename.'.js',
        'list'=> \mvc::$cfg['path']['site'].'/element/list?elename='.$elename.$rulestr,
        // 'editCell'=> \mvc::$cfg['path']['site'].'/element/editCell?elename='.$elename,
        'detail'=> \mvc::$cfg['path']['site'].'/element/detail?elename='.$elename,
        // 'addview'=> \mvc::$cfg['path']['site'].'/element/detail?elename='.$elename,
        'edit'=> \mvc::$cfg['path']['site'].'/element/edit?elename='.$elename,
        // 'delete'=> \mvc::$cfg['path']['site'].'/element/delete?elename='.$elename,
        // 'deleteRows'=> \mvc::$cfg['path']['site'].'/element/deleteRows?elename='.$elename,
        'checkUnique'=> \mvc::$cfg['path']['site'].'/element/checkUnique?elename='.$elename,
        'import'=> '',
    ],
    'viewIsEditCell'=>false, //详情页是否允许字段单个编辑
    'add'=>[
        'function'=> 'openAdd', //按钮调用的 js 函数, openAdd, openAddFull, openAddPage
    ],
    'openDivArea'=> ['600px', '300px'],
    'listcfg' => [
		'editor'=> true,
        'multiselect'=> true,
    ],
    'listButtons' => [
    ],
	'fields'=>[
		'cl_id'=>[
			'field'=>'cl_id',
			'cn_name'=>'ID', //字段描述
			'en_name'=>lg('ID'),
			'type'=>'int',
			'key'=>true, //是否为主键
			'unique'=>true, //是否唯一
			'scale'=>0, //小数位数
			'islist'=>true, //是否在列表中显示
            'list'=>[
                'width'=> 40,
                'hidden'=>true, //是否在列表中默认隐藏
    			'search'=>false, //是否参入查询
    			'editable'=>false, //是否编辑
    			'order'=>true, //是否参入排序
    			'edittype'=>'text',  //编辑类型,text,checkbox
            ]
		],
		// 'cl_type'=>[
		// 	'field'=>'cl_type',
		// 	'cn_name'=>'类型', //字段描述
		// 	'en_name'=>lg('类型'),
		// 	'type'=>'string',
		// 	'key'=>true, //是否为主键
		// 	'unique'=>false, //是否唯一
		// 	'scale'=>0, //小数位数
		// 	'islist'=>true, //是否在列表中显示
        //     'list'=>[
        //         'width'=> 80,
        //         'hidden'=>false, //是否在列表中默认隐藏
    	// 		'search'=>true, //是否参入查询
    	// 		'editable'=>false, //是否编辑
    	// 		'order'=>false, //是否参入排序
    	// 		'edittype'=>'select',  //编辑类型,text,checkbox
		// 		'items'=> '"":"",pro:"产品相关",model:"车型",suppro:"零件供应商",prosup:"商品供应商"',
        //     ]
		// ],
        'cl_dataid'=>[
			'field'=>'cl_dataid',
			'cn_name'=>$type_name[$cl_type]??'物料编码', //字段描述
			'en_name'=>lg($type_name[$cl_type]??'物料编码'), 
            // 'linkOne'=>[ //关联表
            //     'table'=>'pro',
            //     'field'=>'p_id',
            //     'myfield'=>'cl_dataid',
            //     'captionField'=>'p_innum',
            //     'caption'=>function($row,$db){
            //         return '<a href="javascript:qg.page.open(\''.$row['p_innum'].'\',\''.HOST.'/pro/detail?tab=base&p_id='.$row['p_id'].'\')">'.$row['p_innum'].'</a>';
            //     }, 
            //     'search'=>[
            //         'function'=>function(&$field,&$op,&$data,&$join,&$joinWhere,&$group,&$objList,$db){
			// 			$field = 'p_innum';
			// 			$join['[>]pro(p)'] = ['e.cl_dataid'=>'p_id'];

            //         }
            //     ],
            //     'order'=>[
            //         'function'=>function(&$join,&$joinWhere,&$group,&$objList,$db){
            //             if(!isset($this->join['[>]pro(p)'])){
            //                 $join['[>]pro(p)'] = ['e.cl_dataid'=>'p_id'];
            //             }
            //             return 'p.p_innum';
            //         }
            //     ]
            // ],
			'formartValue'=> function($value,&$row,$db){

				if($row['cl_type']=='pro'){
					$pro = $db->get('pro',['p_innum'],['p_id'=>$value]);
					return '<a href="javascript:qg.page.open(\''.$pro['p_innum'].'\',\''.HOST.'/pro/detail?tab=base&p_id='.$value.'\')">'.$pro['p_innum'].'</a>';
				}
				else if($row['cl_type']=='suppro'){
					$suppro = $db->get('supplier_pro(spr)',['[><]oe_item'=>['spr.spr_oe_id'=>'oe_id'],'[><]pro_factory(fac)'=>['oe_item.oe_pf_id'=>'pf_id']],['oe_id','oe_oe','pf_name'],['spr_id'=>$value]);
					return '<a href="javascript:qg.page.open(\''.$suppro['oe_id'].'\',\''.HOST.'/oe/detail?tab=base&oe_id='.$suppro['oe_id'].'\')">'.$suppro['pf_name'].':'.$suppro['oe_oe'].'</a>';
				}
				else if($row['cl_type']=='prosup'){
					$prosup = $db->get('pro_supplier(psu)',['[><]pro'=>['psu.psu_p_id'=>'p_id'],'[><]pro_factory(fac)'=>['pro.p_pf_id'=>'pf_id']],['p_id','p_innum','pf_name'],['psu_id'=>$value]);
					return '<a href="javascript:qg.page.open(\''.$prosup['p_id'].'\',\''.HOST.'/pro/detail?tab=base&p_id='.$prosup['p_id'].'\')">'.$prosup['pf_name'].':'.$prosup['p_innum'].'</a>';
				}
				// return ($value>0) ? 1 : 0;
			},
			'formartSearch'=> function(&$field,&$op,&$data){
				$field = 'RAW #1';
				$data = formatNum($data);
				$data = raw(" cl_dataid in (SELECT DISTINCT p_id FROM pro WHERE p_innum_format like '%".$data."%') 
				OR 
				cl_dataid in (SELECT DISTINCT psu_id FROM pro_supplier WHERE psu_p_id in (SELECT p_id FROM pro WHERE p_innum_format like '%".$data."%'))
				OR cl_dataid in (SELECT DISTINCT spr_id FROM supplier_pro WHERE spr_oe_id in (SELECT oe_id FROM oe_item WHERE oe_oe_format like '%".$data."%'))");
			},
			'type'=>'varchar',
			'key'=>false, //是否为主键
			'unique'=>false, //是否唯一
			'islist'=>\mvc::$req['p_id']?false:true, //是否在列表中显示
            'list'=>[
                'width'=> 90,
                'hidden'=>false, //是否在列表中默认隐藏
    			'search'=>true, //是否参入查询
    			'editable'=>false, //是否编辑
    			'order'=>false, //是否参入排序
    			'edittype'=>'number', //编辑类型
            ],
		],
		'cl_act'=>[
			'field'=>'cl_act',
			'cn_name'=>'变更类型', //字段描述
			'en_name'=>lg('变更类型'),
			'type'=>'varchar',
			'key'=>false, //是否为主键
			'unique'=>false, //是否唯一
			'islist'=>true, //是否在列表中显示
            'list'=>[
                'width'=> 60,
                'hidden'=>false, //是否在列表中默认隐藏
    			'search'=>true, //是否参入查询
    			'editable'=>false, //是否编辑
    			'order'=>true, //是否参入排序
    			'edittype'=>'select',  //编辑类型,text,checkbox
				'items'=> '"":"",add:"新增",edit:"编辑",del:"删除",oth:"其它"',
			],
		],
		'cl_change'=>[
			'field'=>'cl_change',
			'cn_name'=>'变更历史', //字段描述
			'en_name'=>lg('变更历史'), 
			'type'=>'varchar',
			'key'=>false, //是否为主键
			'unique'=>false, //是否唯一
			'islist'=>true, //是否在列表中显示
            'list'=>[
                'width'=> 400,
                'hidden'=>false, //是否在列表中默认隐藏
    			'search'=>true, //是否参入查询
    			'editable'=>false, //是否编辑
    			'order'=>true, //是否参入排序
    			'edittype'=>'text', //编辑类型
				'formart'=> <<<EOF
					function (cellvalue, options, rowObject) {
						if(rowObject.cl_act=='edit' && cellvalue){
							var arr = JSON.parse(cellvalue);
							var html = '';
							for (let key in arr) {
								var itemArr = arr[key];
							
								if(itemArr.length>0){
									for (let kk in itemArr) {
										var item = itemArr[kk];
										html += item.name+'：'+item.old+' <span class="green">变更为</span> '+item.new+"<br />";
									}
								}
							}
							return html;
						}else{
							return cellvalue;
						}

					}
				EOF,
			],
			'formartSearch'=> function(&$field,&$op,&$data){
				$field = 'RAW #1';
				$data =  raw("JSON_SEARCH(cl_change,'one','%{$data}%')  IS NOT NULL");
			}
		],
		'cl_opuser'=>[
			'field'=>'cl_opuser',
			'cn_name'=>'操作人', //字段描述
			'en_name'=>lg('Operator'),
			'islist'=>true, //是否在列表中显示
			'isview'=>false, //是否在详情视图中显示
			'linkOne'=>[ //关联表
                'table'=>'adm_user',
                'field'=>'au_id',
                'myfield'=>'cl_opuser',
                'caption'=>'au_name',
				'captionField'=>'au_id'
            ],
            'list'=>[
                'width'=> 80,
                'hidden'=>false, //是否在列表中默认隐藏
    			'search'=>true, //是否参入查询
    			'editable'=>false, //是否编辑
    			'order'=>true, //是否参入排序
    			'edittype'=>'text', //编辑类型
				'stype'=>'select', //搜索类型
				'searchoptions'=> "{searchOperMenu:false,sopt:['eq'], dataUrl: HOST+'/element/getAllKeyValues?elename=user&hasFirst=1&firstkey=', buildSelect: function (data){return grid.buildSelect(data, 'cop_opuser');}}",
				'formart'=> 'captions', //显示captions中的内容
            ],
		],
		'cl_create_time'=>[
			'field'=>'cl_create_time',
			'cn_name'=>'创建时间', //字段描述
			'en_name'=>lg('Create Time'), 
			'islist'=>true, //是否在列表中显示
			'isview'=>false, //是否在详情视图中显示
            'list'=>[
                'width'=> 150,
                'hidden'=>false, //是否在列表中默认隐藏
    			'search'=>true, //是否参入查询
    			'editable'=>false, //是否编辑
    			'order'=>true, //是否参入排序
    			'edittype'=>'text', //编辑类型
            ],
		],
	],
];