|
@@ -1335,6 +1335,9 @@ class Database
|
|
|
$i++;
|
|
|
$j = 0;
|
|
|
foreach ($data as $ki => $vi) {
|
|
|
+ if (!isset($vi[$k])) {
|
|
|
+ $vi[$k] = '';
|
|
|
+ }
|
|
|
if (isset($vi[$k])) {
|
|
|
$value = $vi[$k];
|
|
|
|
|
@@ -1342,26 +1345,7 @@ class Database
|
|
|
$value = $this->value($v['list'], $data[$ki], $config['struct']);
|
|
|
}
|
|
|
if (isset($v['option'])) {
|
|
|
- $v['option'] = $this->option($v['option']);
|
|
|
-
|
|
|
- if (strstr($value, ',')) {
|
|
|
- $temp = explode(',', $value);
|
|
|
- $t = array();
|
|
|
- foreach ($temp as $vv) {
|
|
|
- if (isset($v['option'][$vv]) && is_array($v['option'][$vv])) {
|
|
|
- $t[] = $v['option'][$vv]['name'];
|
|
|
- } else {
|
|
|
- $t[] = $vv;
|
|
|
- }
|
|
|
- }
|
|
|
- $value = implode("\r\n", $t);
|
|
|
- } elseif (isset($v['option'][$value])) {
|
|
|
- if (is_array($v['option'][$value])) {
|
|
|
- $value = $v['option'][$value]['name'];
|
|
|
- } else {
|
|
|
- $value = $v['option'][$value];
|
|
|
- }
|
|
|
- }
|
|
|
+ $value = $this->getOptionValue($value, $v);
|
|
|
}
|
|
|
|
|
|
//$value = mb_convert_encoding($value,'gb2312','utf-8');
|
|
@@ -1376,6 +1360,49 @@ class Database
|
|
|
Dever::excelExport($body, $header, $file);
|
|
|
}
|
|
|
|
|
|
+ private function getOptionValue($value, $v)
|
|
|
+ {
|
|
|
+ # 验证option是否是匿名函数
|
|
|
+ $v['option'] = $this->option($v['option']);
|
|
|
+ # 位运算
|
|
|
+ if (isset($v['bit'])) {
|
|
|
+ $ts = array();
|
|
|
+ foreach ($v['option'] as $tm => $tv) {
|
|
|
+ if (isset($v['bit'][$tm]) && ($value & $tm) > 0) {
|
|
|
+ $ts[] = $tv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $value = implode(',', $ts);
|
|
|
+ }
|
|
|
+ if ((isset($v['child_name']) || (isset($v['show']) && is_string($v['show'])))) {
|
|
|
+ if (isset($v['option'][$value]) && is_array($v['option'][$value])) {
|
|
|
+ $value = $v['option'][$value]['name'];
|
|
|
+ } else {
|
|
|
+ $value = isset($v['option'][$value]) ? $v['option'][$value] : $value;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (strstr($value, ',')) {
|
|
|
+ $temp = explode(',', $value);
|
|
|
+ $t = array();
|
|
|
+ foreach ($temp as $vv) {
|
|
|
+ if (isset($v['option'][$vv]) && is_array($v['option'][$vv])) {
|
|
|
+ $t[] = $v['option'][$vv]['name'];
|
|
|
+ } elseif(isset($v['option'][$vv])) {
|
|
|
+ $t[] = $v['option'][$vv];
|
|
|
+ } else {
|
|
|
+ $t[] = $vv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $value = implode("\r\n", $t);
|
|
|
+ } elseif (isset($v['option'][$value]) && is_array($v['option'][$value])) {
|
|
|
+ $value = $v['option'][$value]['name'];
|
|
|
+ } else {
|
|
|
+ $value = isset($v['option'][$value]) ? $v['option'][$value] : $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $value;
|
|
|
+ }
|
|
|
+
|
|
|
private function _getChr($start, $num)
|
|
|
{
|
|
|
$num = $start + $num;
|