'array', ]; /** * 设置配置信息 * @author Michael_xu * @param types 分类 * @param param 参数 * @param id 主键ID * @return */ public function updateConfig($types, $param, $id = '') { if (!is_array($param['value']) || ($param['hide_value'] && !is_array($param['hide_value']))) { $this->error = '参数错误'; return false; } $data = []; if ($id) { $resInfo = $this->where(['id' => $id])->find(); } else { $resInfo = $this->where(['types' => $types,'user_id' => $param['user_id']])->find(); } if (!$resInfo) { $data['types'] = $types; $data['user_id'] = $param['user_id']; } //处理value $valueData = []; //展示列 if ($param['value']) { foreach ($param['value'] as $k=>$v) { $valueData[$v['field']]['width'] = $v['width']; $valueData[$v['field']]['is_hide'] = 0; } } //隐藏列 if ($param['hide_value']) { foreach ($param['hide_value'] as $k=>$v) { $valueData[$v['field']]['width'] = $v['width']; $valueData[$v['field']]['is_hide'] = 1; } } $data['datas'] = $valueData; if ($resInfo) { $data['id'] = $resInfo['id']; $res = $this->update($data); } else { $res = $this->save($data); } if ($res == false) { $this->error = '设置出错'; return false; } return true; } /** * 配置信息详情 * @author Michael_xu * @param types 分类 * @return */ public function getConfig($types, $user_id) { $data = $this->where(['types' => $types,'user_id' => $user_id])->value('datas'); return $data ? : []; } /** * 配置列宽度 * @author Michael_xu * @param types 分类 * @param field 字段 * @param width 宽度 * @return */ public function setColumnWidth($types, $field, $width, $user_id) { $info = db('admin_user_field')->where(['types' => $types,'user_id' => $user_id])->find(); if ($info) { $datas = json_decode($info['datas'], true); $datas[$field]['width'] = $width; $datas = json_encode($datas); $res = $this->where(['id' => $info['id']])->update(['datas' => $datas]); } else { $newTypes = $types; if ($types == 'crm_customer_pool') $newTypes = 'crm_customer'; $fieldArr = db('admin_field')->where(['types' => ['in',['',$newTypes]]])->field('field,name')->order('types desc,order_id asc')->select(); $value = []; foreach ($fieldArr as $k=>$v) { $field_width = ''; if ($field == $v['field']) { $field_width = $width; } $value[$v['field']]['width'] = $field_width; $value[$v['field']]['is_hide'] = 0; $value[$v['field']]['field'] = $v['field']; } $param['value'] = $value; $param['hide_value'] = []; $param['user_id'] = $user_id; $res = $this->updateConfig($types, $param); } if (!$res) { $this->error = '设置出错,请重试!'; return false; } return true; } /** * 列表数据 * @author Michael_xu * @param types 分类 * @return */ public function getDataList($types, $user_id) { $grantData = getFieldGrantData($user_id); $userLevel = isSuperAdministrators($user_id); $fieldArr = (new Field)->getFieldList($types); $fieldList = []; $field_list = []; foreach ($fieldArr as $k=>$v) { $fieldList[] = $v['field']; $field_list[$v['field']]['name'] = $v['name']; $fieldArr[$k]['width'] = ''; } //已设置字段 $value = $this->where(['types' => $types,'user_id' => $user_id])->value('datas'); $value = $value ? json_decode($value, true) : []; $valueList = []; $value_list = []; //显示列 $hideList = []; $hide_list = []; //隐藏列 if ($value) { $a = 0; $b = 0; foreach ($value as $k=>$v) { if (empty($field_list[$k]['name'])) continue; if (empty($v['is_hide'])) { $valueList[] = $k; $value_list[$a]['field'] = $k; $value_list[$a]['width'] = $v['width']; $value_list[$a]['name'] = $field_list[$k]['name']; $a++; } else { $hideList[] = $k; $hide_list[$b]['field'] = $k; $hide_list[$b]['width'] = $v['width']; $hide_list[$b]['name'] = $field_list[$k]['name']; $b++; } } $diffList = $valueList ? array_diff($fieldList, $valueList) : $fieldList; //隐藏的列(新增的字段数据) $hideList = $hideList ? array_diff($diffList,$hideList) : $diffList; foreach ($hideList as $k=>$v) { $hide_list[$b]['field'] = $v; $hide_list[$b]['width'] = ''; $hide_list[$b]['name'] = $field_list[$v]['name']; $b++; } } else { $value_list = array_values($fieldArr); $hide_list = []; } # 处理显示列的字段授权 foreach ($value_list AS $key => $value) { if (!$userLevel && !empty($grantData[$types])) { foreach ($grantData[$types] AS $k => $v) { $status = getFieldGrantStatus($value['field'], $grantData[$types]); if (empty($status['read'])) unset($value_list[(int)$key]); } } } # 处理隐藏列的字段授权 foreach ($hide_list AS $key => $value) { if (!$userLevel && !empty($grantData[$types])) { foreach ($grantData[$types] AS $k => $v) { $status = getFieldGrantStatus($value['field'], $grantData[$types]); if (empty($status['read'])) unset($hide_list[(int)$key]); } } } $data = []; $data['value_list'] = array_values($value_list) ? : []; //展示列 $data['hide_list'] = array_values($hide_list) ? : []; //隐藏列 if ($types == 'crm_visit') { foreach ($data['value_list'] AS $key => $value) { if ($value['name'] == '负责人') $data['value_list'][$key]['name'] = '回访人'; } foreach ($data['hide_list'] AS $key => $value) { if ($value['name'] == '负责人') $data['hide_list'][$key]['name'] = '回访人'; } } return $data ? : []; } }