Orders.php 3.2 KB
<?php

namespace app\admin\model\workorder;

use think\Model;
use traits\model\SoftDelete;

class Orders extends Model
{

    use SoftDelete;


    // 表名
    protected $name = 'workorder_orders';

    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';

    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    protected $deleteTime = 'deletetime';

    // 追加属性
    protected $append = [
        'status_text'
    ];


    public function getStatusList()
    {
        return [
            '0' => __('Status 0'),
            '1' => __('Status 1'),
            '2' => __('Status 2'),
            '3' => __('Status 3'),
            '4' => __('Status 4'),
            '5' => __('Status 5')
        ];
    }

    public function getStatusTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
        $list  = $this->getStatusList();
        return isset($list[$value]) ? $list[$value] : '';
    }

    public static function getFields($values = null, $position = -1)
    {
        $where['status'] = 1;
        if ($position != -1) {
            $where['position'] = $position;
        }
        $fields = \app\admin\model\workorder\Fields::where($where)->order('weigh desc,id desc')->select();
        foreach ($fields as $k => $v) {
            $v->value = isset($values[$v['name']]) ? $values[$v['name']] : '';
            if (!$v->value) {
                $v->value = $v->default;
            }
            $v->rule = str_replace(',', '; ', $v->rule);
            if (in_array($v->type_list, ['checkbox', 'lists', 'images'])) {
                $checked = '';
                if ($v['minimum'] && $v['maximum']) {
                    $checked = "{$v['minimum']}~{$v['maximum']}";
                } elseif ($v['minimum']) {
                    $checked = "{$v['minimum']}~";
                } elseif ($v['maximum']) {
                    $checked = "~{$v['maximum']}";
                }
                if ($checked) {
                    $v->rule .= (';checked(' . $checked . ')');
                }
            }
            if (in_array($v->type_list, ['checkbox', 'radio']) && stripos($v->rule, 'required') !== false) {
                $v->rule = str_replace('required', 'checked', $v->rule);
            }
            if (in_array($v->type_list, ['selects'])) {
                $v->extend .= (' ' . 'data-max-options="' . $v['maximum'] . '"');
            }
        }
        return $fields;
    }

    public function user()
    {
        return $this->belongsTo('app\admin\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    public function urgentrank()
    {
        return $this->belongsTo('app\admin\model\workorder\Urgentrank', 'urgency', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    public function engineers()
    {
        return $this->belongsTo('app\admin\model\workorder\Engineers', 'engineer_id', 'id', [], 'LEFT')
            ->setEagerlyType(0);
    }

    public function category()
    {
        return $this->belongsTo('app\admin\model\workorder\Category', 'category_id', 'id', [], 'LEFT')
            ->setEagerlyType(0);
    }
}