Other.php 6.5 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * Steps 表单: Goods Step Form-分类
+-----------------------------------------------------------------------------------------------------------------------
 * PHP version 7
 *
 * @category  App\Admin\Forms\Steps\Goods
 * @package   App\Admin\Forms\Steps\Goods
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年5月7日15:14:47
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Forms\Steps\Goods;

use App\Admin\Traits\FormFieldTrait;
use App\Models\Goods\Goods;
use App\Models\Goods\GoodsCategory;
use App\Admin\Rewrite\Widgets\StepForm;
use Encore\Admin\Facades\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;

/**
 * Class Other
 *
 * @category  App\Admin\Forms\Steps\Goods
 * @package   App\Admin\Forms\Steps\Goods
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年5月7日15:14:47
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class Other extends StepForm
{
    use FormFieldTrait;
    /**
     * The form title.
     *
     * @var string
     */
    public $title = '详细信息';

    /**
     * The form.
     *
     * @var string
     */
    public $form = null;

    public $suffix = 'goods';

    /**
     * Other constructor.
     * @param array $data
     */
    public function __construct($data = [])
    {
        $this->model = new Goods();

        $this->form = $this;

        parent::__construct($data);
    }

    /**
     * The form title.
     *
     * @var string
     */
    public $model = null;

    /**
     * Handle the form request.
     *
     * @param Request $request
     *
     * @return \Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request)
    {
        $this->save($request);
        $this->clear();
        admin_toastr(trans('admin.save_succeeded'));
        $route_prefix = config('admin.route.prefix');
        $url = '/'.$route_prefix.'/'.$this->suffix;
        return redirect($url);
    }

    /**
     * Build a form here.
     */
    public function form()
    {
        Admin::script(' $(".step-submit").on("click", function() {$(this).text("Loading...").addClass("disabled");});');

        $id = $this->getId() ;
        if ($id) {
            $this->hidden('id')->default($this->getId());
        }
        // 渲染视频字段域
        $this->formVideoField('video', '视频');
        $this->formSingleImageField('cover_image', '商品封面图', 0, 1, 1);
        $this->formMultipleImageField('images', '商品主图', 0, 1, 1);
        $this->formTextField('origin_place', __('origin_place'), 100, 1, 2);
        $this->formTextField('shipment_place', __('shipment_place'), 100, 1, 2);
        $this->formTextAreaField('server', __('server'), 255, 3);
        $this->formTextAreaField('non_delivery_area', __('non_delivery_area'), 255, 3);

        $this->formRichTextField();
        $this->formTextAreaField();
        $this->formCommonFields();
        // 设置专用字段
         $this->renderSpecialFields();
    }

    /**
     * 渲染不同模块的特殊字段
     */
    public function renderSpecialFields()
    {
    }

    /**
     * The data of the form.
     *
     * @return array $data
     */
    public function data()
    {
        return optional($this->getBase())->toArray();
    }

    /**
     * 获取 id
     *
     * @return int|null
     */
    private function getId()
    {
        return optional($this->getBase())->id;
    }

    /**
     * 获取基础信息模型对象
     *
     * @return array
     */
    protected function getBase()
    {
        return Arr::get(session('steps'), 'base');
    }

    /**
     * 保存方案:新增或者更新
     *
     * @param $request
     * @return mixed
     */
    public function save($request)
    {
        $id = $request->id;
        // 获取信息
        $data = $request->all();


        // 封面图
        if (array_key_exists('url_cover_image', $data)) {
            $image = $request->url_cover_image;
            if ($image && $image !== 'undefined' && $image !== 'null') {
                $data['cover_image']   = substr_file_path($image);
            }
            unset($data['url_cover_image']);
        }

        if (array_key_exists('images', $data)) {
            $images = array_filter($request->images);
            if ($images && is_array($images)) {
                $data['images']   = my_json_encode(substr_file_path($images));
            }
        }

        if (array_key_exists('url_images', $data)) {
            $images = array_filter($request->url_images);
            if ($images && is_array($images)) {
                $data['images']   = my_json_encode(substr_file_path($images));
            }
            unset($data['url_images']);
        }

        if (array_key_exists('name_images', $data)) {
            unset($data['name_images']);
        }
        if (array_key_exists('file', $data)) {
            unset($data['file']);
        }

//        $model['facility']  = implode(',', array_filter(Arr::get($model, 'facility')));
//        $model['tags']      = $request->tags;//implode(',', array_filter(Arr::get($model, 'tags') ?? []));
        // 设置上架
        $data['unshelved_status']  = config('constants.SHELVED');
        $data['unshelved_opinion'] = '';
        $data['unshelved_at']  = null;
        $data['unshelved_by']  = 0;


        $model = $this->model->find($id);
        if ($model) {
//            $model->video = request('video');
            $model->video = Arr::get($data, 'video');
            $model->cover_image = Arr::get($data, 'cover_image');
            $model->images = Arr::get($data, 'images');
            $model->origin_place = request('origin_place');
            $model->shipment_place = request('shipment_place');
            $model->server = request('server');
            $model->non_delivery_area = request('non_delivery_area');
            $model->body = request('body');
            $model->non_delivery_area = request('description');
            $model->unshelved_status = config('constants.SHELVED');
            $model->unshelved_opinion = '';
            $model->unshelved_at = null;
            $model->unshelved_by = 0;
            $model->save();
        }

//        $this->model->where('id', $id)->update($data);
        return true;
    }
}