* @day: 2017/11/11 */ namespace app\admin\controller\water; use app\admin\controller\AuthController; use app\admin\model\user\User; use app\admin\model\water\WaterMaterial; use crmeb\services\{ExpressService, JsonService, JsonService as Json, MiniProgramService, PHPExcelService, WechatService, FormBuilder as Form, CacheService, UtilService as Util}; use think\facade\Route as Url; use think\facade\Validate; Use app\admin\model\water\WaterOrder as model; /** * 订单管理控制器 同一个订单表放在一个控制器 * Class StoreOrder * @package app\admin\controller\store */ class WaterOrder extends AuthController { /** * @return mixed */ public function index() { return $this->fetch(); } public function list() { $where = Util::getMore([ ['page', 1], ['limit', 20], ['name', ''], ['card', ''], ['order_id', ''], ]); return Json::successlayui(model::list($where)); } /** * 显示创建资源表单页. * * @return \think\Response */ public function create($id = 0) { $f = []; $f[] = Form::input('name', '名称')->col(12); $f[] = Form::select('type', '选择分类', '')->options([ ['value' => 0, 'label' => '请选择分类'], ['value' => 1, 'label' => '顶板'], ['value' => 2, 'label' => '侧板'], ['value' => 3, 'label' => '拉筋'], ['value' => 4, 'label' => '底板'], ])->filterable(true); $f[] = Form::select('th_id', '选择厚度', '')->options( array_merge([['value' => 0, 'label' => '请选择分类']], \app\admin\model\water\WaterThickness::order('id DESC')->field('id as value,name as label')->select()->toArray()) )->filterable(true); $f[] = Form::input('weight', '重量(kg)'); $f[] = Form::input('unit_price', '单价'); $f[] = Form::input('company', '单位'); $f[] = Form::input('long', '长'); $f[] = Form::input('wide', '宽'); $f[] = Form::radio('is_gc', '公差', 0)->options([['value' => 0, 'label' => '正常'], ['value' => 1, 'label' => '大公差']]); $form = Form::make_post_form('添加', $f, Url::buildUrl('save')); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } public function save() { $model = new model; $data = Util::postMore([ 'name', 'type', 'th_id', 'weight', 'unit_price', 'company', 'long', 'wide', ]); $validate = Validate::rule('name', 'require')->rule([ 'name' => 'require', 'type' => 'require', 'th_id' => 'require', 'weight' => 'require', 'unit_price' => 'require', 'company' => 'require', 'long' => 'require', 'wide' => 'require', ]); $validate->message([ 'name.require' => '名称不能为空', 'type.require' => '请选择分类', 'th_id.require' => '请选择厚度', 'weight.require' => '请填写重量', 'unit_price.require' => '请填写单价', 'company.require' => '请填写单位', 'long.require' => '请填写长度', 'wide.require' => '请填写宽度', ]); if (!$validate->check($data)) { return Json::fail($validate->getError()); } $res = $model->save($data); if ($res) return Json::successful('添加成功'); return Json::fail('添加失败'); } /** * 显示创建资源表单页. * * @return \think\Response */ public function edit($id = 0) { $data = model::find($id); $f = []; $f[] = Form::input('name', '名称', $data['name'])->col(12); $f[] = Form::select('type', '选择分类', (string)$data['type'])->options([ ['value' => 0, 'label' => '请选择分类'], ['value' => 1, 'label' => '顶板'], ['value' => 2, 'label' => '侧板'], ['value' => 3, 'label' => '拉筋'], ['value' => 4, 'label' => '底板'], ])->filterable(true); $f[] = Form::select('th_id', '选择厚度', (string)$data['th_id'])->options( array_merge([['value' => 0, 'label' => '请选择分类']], \app\admin\model\water\WaterThickness::order('id DESC')->field('id as value,name as label')->select()->toArray()) )->filterable(true); $f[] = Form::input('weight', '重量(kg)', $data['weight']); $f[] = Form::input('unit_price', '单价', $data['unit_price']); $f[] = Form::input('company', '单位', $data['company']); $f[] = Form::input('long', '长', $data['long']); $f[] = Form::input('wide', '宽', $data['wide']); $f[] = Form::hidden('id', $id); $form = Form::make_post_form('修改', $f, Url::buildUrl('update')); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } /** * 修改 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function update() { $model = new model; $data = Util::postMore([ 'name', 'type', 'th_id', 'weight', 'unit_price', 'company', 'long', 'wide', 'id', ]); $validate = Validate::rule('name', 'require')->rule([ 'name' => 'require', 'type' => 'require', 'th_id' => 'require', 'weight' => 'require', 'unit_price' => 'require', 'company' => 'require', 'long' => 'require', 'wide' => 'require', ]); $validate->message([ 'name.require' => '名称不能为空', 'type.require' => '请选择分类', 'th_id.require' => '请选择厚度', 'weight.require' => '请填写重量', 'unit_price.require' => '请填写单价', 'company.require' => '请填写单位', 'long.require' => '请填写长度', 'wide.require' => '请填写宽度', ]); $details = $model->find($data['id']); $details['name'] = $data['name']; $details['thickness'] = $data['thickness']; $res = $details->save(); if ($res) return Json::successful('修改成功'); return Json::fail('修改失败'); } /** * 删除 * @param $id * @return void * @throws \Exception */ public function delete($id) { if (!$id) Json::fail('删除失败'); $model = new model; $res = model::destroy($id); if ($res){ return Json::success('删除成功!'); }else{ return Json::fail($model->getErrorInfo()); } } public function excel($id) { $details = model::where('id', $id)->find(); $list = WaterMaterial::where('query_id', $id)->select(); $user = User::where('uid', $details['uid'])->find(); $export = []; foreach ($list as $item) { $export[] = [ $item['title'], $item['name'], $item['specifications'], $item['number'], $item['unit_price'], $item['ot_price'], $item['company'], $item['create_time'], ]; } PHPExcelService::setExcelHeader(['标题', '名称', '规格', '数量', '单价', '总价', '单位','时间']) ->setExcelTile('用户'.$user['phone'].'计算订单导出-总价'.$details['price'], '计算订单' . time(), '记录ID'.$details['id'].'-水口价格'.$details['water_mouth'].'-隔板价格'.$details['partition'].'-税点'.($details['tax_point']).'%') ->setExcelContent($export) ->ExcelSave(); } }