caviar 3 years ago
parent
commit
bd60e358d6

+ 18 - 5
app/admin/controller/Order.php

@@ -5,6 +5,7 @@ namespace app\admin\controller;
 
 
 use app\common\model\OrderModel;
+use app\common\model\StoreModel;
 use app\Request;
 use think\App;
 use think\facade\View;
@@ -13,28 +14,40 @@ class Order extends \app\BaseController
 {
 
     private $model;
+    private $storeModel;
 
     public function __construct(App $app)
     {
-
         $this->model = new OrderModel();
+        $this->storeModel = new StoreModel();
         parent::__construct($app);
     }
 
     public function index(Request $request) {
         $params = $request->param();
         $format_params = [
-            'bar_code' => format_string($params['bar_code'] ?? null),
-            'category_id' => format_string($params['category_id'] ?? null) != null ? (int)$params['category_id']: null,
-            'is_serve' => format_string($params['is_serve'] ?? null) != null ? (int)$params['is_serve']: null,
+            'store_id' => format_string($params['store_id'] ?? null),
+            'type' => format_string($params['type'] ?? null) != null ? (int)$params['type']: null,
         ];
+        $orders = $this->model->findByPaginate($format_params);
         View::assign([
-            'list' => $this->model->findByPaginate($params),
+            'list' => $orders,
+            'all_store' =>$this->storeModel->findAllStore(),
             'params' => $format_params
         ]);
         return view();
     }
 
+    public function edit(Request $request) {
+        $params = $request->param();
+        if(!isset($params['id']))
+            return $this->fail(lang('ID not exist'));
+        $order = $this->model->findById($params['id']);
+        View::assign([
+            'order' => $order,
+        ]);
+        return view();
+    }
 
 
 

+ 16 - 0
app/admin/lang/zh-cn.php

@@ -179,6 +179,22 @@ return [
     "Zue Coin" => "御龙币",
     "Lose time" => "过期时间",
     "Detail"    => "明细",
+    "Order no" => "订单编号",
+    "History order" => "历史订单",
+    "Earnest order" => "定金订单",
+    "Rental amount" => "商品总额",
+    "Receivable amount" => "应收金额",
+    "Receive amount" => "实收金额",
+    "Imposed Amount" => "待收金额",
+    "Creator" => "创建者",
+    "Adviser" => "顾问",
+    "Teacher" => "老师",
+    "Payment Channel" => "支付渠道",
+    "Channel name" => "渠道名称",
+    "Credit card name" => "信用卡名称",
+    "Stage num" => "分期数",
+    "Is pay" => "是否已经支付",
+    "Annual Fee" => "年费",
 ];
 
 

+ 227 - 0
app/admin/view/order/edit.html

@@ -0,0 +1,227 @@
+{include file='common/_js_css'}
+
+<div class="lyear-layout-web">
+    <div class="lyear-layout-container">
+        <!--页面主要内容-->
+        <main>
+            <div class="container-fluid">
+                <div class="row">
+                    <div class="col-lg-12">
+                        <div class="card">
+                            <div class="card-body">
+                                <form class="layui-form">
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("ID")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="text" name="id" value="{$order.id}" disabled lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Order no")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="text" name="no" value="{$order.no}" lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Customer")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="text" name="customer_name" value="{$order.customer_name}" lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Rental amount")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="number" name="rental_amount" value="{$order.rental_amount}" lay-verify="required|Min:0" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Receivable amount")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="number" name="receivable_amount" value="{$order.receivable_amount}" lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Receive amount")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="number" value="{$order.receive_amount}" name="receive_amount" lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Imposed amount")}</label>
+                                        <div class="layui-input-block">
+                                            <input type="number" value="0.00" name="imposed_amount" lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Product")}</label>
+                                        <div class="layui-input-block">
+                                            <div class="table-responsive">
+                                                <table class="table table-bordered">
+                                                    <thead>
+                                                    <tr>
+                                                        <th>{:lang("ID")}</th>
+                                                        <th>{:lang("Product")}</th>
+                                                        <th>{:lang("Adviser")} 1</th>
+                                                        <th>{:lang("Adviser")} 2</th>
+                                                        <th>{:lang('Teacher')}</th>
+                                                        <th>{:lang('Report')}</th>
+                                                        <th>{:lang('Real price')}</th>
+                                                    </tr>
+                                                    </thead>
+                                                    <tbody>
+                                                    {volist name="order.products" id="item"}
+                                                    <tr>
+                                                        <td>{$item.id}</td>
+                                                        <td>{$item.product_name}</td>
+                                                        <td>{if $item.adviser_1_id > 0}【{$item.adviser_1_id}】{$item.adviser_1_name} {else /} / {/if}</td>
+                                                        <td>{if $item.adviser_2_id > 0}【{$item.adviser_2_id}】{$item.adviser_2_name}  {else /} / {/if}</td>
+                                                        <td>{if $item.teacher_id > 0}【{$item.teacher_id}】{$item.teacher_name} {else /} / {/if}</td>
+                                                        <td>{if $item.report == null}未上传{else /}已上传{/if}</td>
+                                                        <td>{$item.real_price}</td>
+                                                    </tr>
+                                                    {/volist}
+                                                    </tbody>
+                                                </table>
+                                            </div>
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Payment Channel")}</label>
+                                        <div class="layui-input-block">
+                                            <div class="table-responsive">
+                                                <table class="table table-bordered">
+                                                    <thead>
+                                                    <tr>
+                                                        <th>{:lang("ID")}</th>
+                                                        <th>{:lang("Channel name")}</th>
+                                                        <th>{:lang("Fee")}(¥)</th>
+                                                        <th>{:lang("credit_card_name")}</th>
+                                                        <th>{:lang('stage_num')}</th>
+                                                        <th>{:lang('create_time')}</th>
+                                                    </tr>
+                                                    </thead>
+                                                    <tbody>
+                                                    {volist name="order.payments" id="item"}
+                                                    <tr>
+                                                        <td>{$item.id}</td>
+                                                        <td>{$item.payment_channel.name}</td>
+                                                        <td>{$item.fee}</td>
+                                                        <td>{if $item.credit_card_id > 0}{$item.credit_card_name}  {else /} / {/if}</td>
+                                                        <td>{if $item.credit_card_id > 0}{$item.stage_num}  {else /} / {/if}</td>
+                                                        <td>{$item.create_time}</td>
+                                                    </tr>
+                                                    {/volist}
+                                                    </tbody>
+                                                </table>
+                                            </div>
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label">{:lang("Annual Fee")}</label>
+                                        <div class="layui-input-block">
+                                            <div class="table-responsive">
+                                                <table class="table table-bordered">
+                                                    <thead>
+                                                    <tr>
+                                                        <th>{:lang("ID")}</th>
+                                                        <th>{:lang("Product")}</th>
+                                                        <th>{:lang("Fee")}(¥)</th>
+                                                        <th>{:lang("Start Time")}</th>
+                                                        <th>{:lang('End Time')}</th>
+                                                        <th>{:lang('Is pay')}</th>
+                                                        <th>{:lang('create_time')}</th>
+                                                    </tr>
+                                                    </thead>
+                                                    <tbody>
+                                                    {volist name="order.annuals" id="item"}
+                                                    <tr>
+                                                        <td>{$item.id}</td>
+                                                        <td>{$item.order_product_name}</td>
+                                                        <td>{$item.fee}</td>
+                                                        <td>{:date("Y-m-d", $item.start_time)}</td>
+                                                        <td>{:date("Y-m-d", $item.end_time)}</td>
+                                                        <td>{if $item.is_pay == 1}{:lang("Yes")}{else /}{:lang("No")}{/if}</td>
+                                                        <td>{$item.create_time}</td>
+                                                    </tr>
+                                                    {/volist}
+                                                    </tbody>
+                                                </table>
+                                            </div>
+                                        </div>
+                                    </div>
+
+                                </form>
+
+                            </div>
+                        </div>
+                    </div>
+
+                </div>
+
+            </div>
+        </main>
+    </div>
+</div>
+<script>
+
+    //当你在iframe页面关闭自身时
+    // var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
+    // parent.layer.close(index); //再执行关闭
+    layui.use(['laydate','form','upload'], () => {
+        const laydate = layui.laydate;
+        const form = layui.form;
+
+        const upload = layui.upload;
+
+        //执行实例
+        upload.render({
+            elem: '#upload_img' //绑定元素
+            ,url: '/admin/product/upload'
+            ,done: function(res){
+                console.log(res);
+                if(res.code === 200) {
+                    $(".image_input").attr("value", res.data);
+                    $(".img_view").attr('src', res.data)
+                    $('.img_view').css('display','block');
+                } else {
+                    layer.message(res.message, {icon: 5});
+                }
+                return false;
+            }
+            ,error: function(){
+                //请求异常回调
+            }
+        });
+
+        form.on('submit(caviar_submit_btn)', (data) =>{
+            const response = request('/admin/product/add',data.field)
+            response.then((res) => {
+                console.log(res);
+                res.code === 200 ? layer.msg("{:lang('Succeed')}", {icon: 1,time:500},() => {
+                    parent.location.reload();
+                }) : layer.msg(res.message,{icon: 5})
+            })
+            return false;
+        });
+
+
+        laydate.render({
+            elem: '#sun_calendar',
+            type: 'datetime'
+        });
+        laydate.render({
+            elem: '#lunar_calendar',
+            type: 'datetime'
+        });
+    });
+</script>

+ 37 - 20
app/admin/view/order/index.html

@@ -10,18 +10,25 @@
                         <div class="row">
                             <div class="col-md-4">
                                 <div class="form-group">
-                                    <label class="w-120 pull-left control-label">{:lang("Bar Code")}</label>
+                                    <label class="w-120 pull-left control-label">{:lang("Store")}</label>
                                     <div class="pull-left w-120-calc">
-                                        <input type="text" class="form-control pull-left" name="bar_code" value="{$params.bar_code}" placeholder='{:lang("Bar Code")}' />
+                                        <select class="form-control pull-left" name="store_id">
+                                            <option value="0" selected>{:lang("Unknown")}</option>
+                                            {volist name="all_store" id="item"}
+                                            <option value="{$item.id}" {if $params.store_id == $item.id} selected {/if}>{$item.name}</option>
+                                            {/volist}
+                                        </select>
                                     </div>
                                 </div>
                             </div>
                             <div class="col-md-4">
                                 <div class="form-group">
-                                    <label class="w-120 pull-left control-label">{:lang("Category")}</label>
+                                    <label class="w-120 pull-left control-label">{:lang("Type")}</label>
                                     <div class="pull-left w-120-calc">
-                                        <select class="form-control pull-left" name="category_id">
+                                        <select class="form-control pull-left" name="type">
                                             <option value="0" selected>{:lang("Unknown")}</option>
+                                            <option value="1" {if $params.type == 1} selected {/if}>{:lang('History order')}</option>
+                                            <option value="2" {if $params.type == 2} selected {/if}>{:lang('Earnest order')}</option>
                                         </select>
                                     </div>
                                 </div>
@@ -43,10 +50,10 @@
                 <div class="card-toolbar clearfix">
                     <div class="toolbar-btn-action">
                         <a class="btn btn-success m-r-5" id="caviar_search_btn" href="#!" onclick="select_card_switch()">{$Think.lang.unfold_search}</a>
-                        <a class="btn btn-primary m-r-5" href="#!" onclick="add('{:url(\'admin/order/add\')}')"><i class="mdi mdi-plus"></i> {:lang('add')}</a>
-                        <a class="btn btn-danger" href="#!" onclick="
-                            caviar_checkbox_delete('{:url(\'admin/order/delete\')}', ['{:lang(\'Check at least one box\')}','{:lang(\'Succeed\')}'],'{:lang(\'Warn\')}','{:lang(\'Are you sure you want to delete the selected data\')}',['{:lang(\'Confirm\')}'])"
-                        ><i class="mdi mdi-window-close"></i> {:lang('delete')}</a>
+<!--                        <a class="btn btn-primary m-r-5" href="#!" onclick="add('{:url(\'admin/order/add\')}')"><i class="mdi mdi-plus"></i> {:lang('add')}</a>-->
+<!--                        <a class="btn btn-danger" href="#!" onclick="-->
+<!--                            caviar_checkbox_delete('{:url(\'admin/order/delete\')}', ['{:lang(\'Check at least one box\')}','{:lang(\'Succeed\')}'],'{:lang(\'Warn\')}','{:lang(\'Are you sure you want to delete the selected data\')}',['{:lang(\'Confirm\')}'])"-->
+<!--                        ><i class="mdi mdi-window-close"></i> {:lang('delete')}</a>-->
                     </div>
                 </div>
                 <div class="card-body">
@@ -61,10 +68,15 @@
                                 </th>
                                 <th>{:lang("ID")}</th>
                                 <th>{:lang("Order no")}</th>
-                                <th>{:lang('rental_amount')}</th>
-                                <th>{:lang('receivable_amount')}</th>
-                                <th>{:lang('receive_money')}</th>
-                                <th>{:lang('imposed_amount')}</th>
+                                <th>{:lang("Customer")}</th>
+                                <th>{:lang("Store")}</th>
+                                <th>{:lang("Product")}</th>
+                                <th>{:lang('Rental amount')}(¥)</th>
+                                <th>{:lang('Receivable amount')}(¥)</th>
+                                <th>{:lang('Receive amount')}(¥)</th>
+                                <th>{:lang('Imposed amount')}(¥)</th>
+                                <th>{:lang('Type')}</th>
+                                <th>{:lang('Creator')}</th>
                                 <th>{:lang('create_time')}</th>
                                 <th>{:lang('operation')}</th>
                             </tr>
@@ -79,17 +91,22 @@
                                 </td>
                                 <td>{$item.id}</td>
                                 <td>{$item.no}</td>
-                                <td>{$item.name}</td>
-                                <td>{$item.tax_rate}</td>
-                                <td>{$item.tax_rate}</td>
-                                <td>{$item.tax_rate}</td>
+                                <td>【{$item.customer_id}】{$item.customer_name}</td>
+                                <td>【{$item.store_id}】{$item.store.abbr}</td>
+                                <td>{volist name="$item.products" id="product"}{$product.product_name}<br />{/volist}</td>
+                                <td>{$item.rental_amount}</td>
+                                <td>{$item.receivable_amount}</td>
+                                <td>{$item.receive_amount}</td>
+                                <td>{$item.imposed_amount}</td>
+                                <td>{if $item.type == 1}{:lang('History order')}{else /}{:lang('Earnest order')}{/if}</td>
+                                <td>【{$item.admin_id}】{$item.admin_name}</td>
                                 <td>{$item.create_time}</td>
                                 <td>
                                     <div class="btn-group">
                                         <a class="btn btn-xs btn-default" href="#!" title="{:lang('select')}" data-toggle="tooltip" onclick='view("/admin/order/edit?id={$item.id}")'><i class="mdi mdi-eye"></i></a>
-                                        <a class="btn btn-xs btn-default" href="#!" title="{:lang('delete')}" data-toggle="tooltip" onclick='
-                                           deletingASingle("{:url(\"admin/order/delete\")}","{$item.id}",["{:lang(\"Succeed\")}"],"{:lang(\"Warn\")}","{:lang(\"Are you sure you want to delete the selected data\")}",["{:lang(\"Confirm\")}"])'
-                                        ><i class="mdi mdi-window-close"></i></a>
+<!--                                        <a class="btn btn-xs btn-default" href="#!" title="{:lang('delete')}" data-toggle="tooltip" onclick='-->
+<!--                                           deletingASingle("{:url(\"admin/order/delete\")}","{$item.id}",["{:lang(\"Succeed\")}"],"{:lang(\"Warn\")}","{:lang(\"Are you sure you want to delete the selected data\")}",["{:lang(\"Confirm\")}"])'-->
+<!--                                        ><i class="mdi mdi-window-close"></i></a>-->
                                     </div>
                                 </td>
                             </tr>
@@ -109,7 +126,7 @@
 </style>
 
 <script type="text/javascript">
-    if(check_params(["{$params.bar_code}","{$params.category_id}", "{$params.is_serve}"]))
+    if(check_params(["{$params.type}","{$params.store_id}"]))
         $('#select_card_caviar').css('display','block');
 </script>
 

+ 16 - 0
app/common/model/OrderAnnualFeeModel.php

@@ -0,0 +1,16 @@
+<?php
+
+
+namespace app\common\model;
+
+
+class OrderAnnualFeeModel extends BaseModel
+{
+
+    protected $table = 'erp_order_annual_fee';
+
+    protected function genSchema(array $schema)
+    {
+        // TODO: Implement genSchema() method.
+    }
+}

+ 40 - 3
app/common/model/OrderModel.php

@@ -1,9 +1,7 @@
 <?php
 
-
 namespace app\common\model;
 
-
 class OrderModel extends BaseModel
 {
 
@@ -14,12 +12,51 @@ class OrderModel extends BaseModel
         // TODO: Implement genSchema() method.
     }
 
+    public function products() {
+        return $this->hasMany(OrderProductModel::class, 'order_id','id')->where('is_delete',0);
+    }
+
+    public function payments() {
+        return $this->hasMany(OrderPaymentModel::class, 'order_id','id')->where('is_delete',0);
+    }
+
+    public function annuals() {
+        return $this->hasMany(OrderAnnualFeeModel::class, 'order_id','id')->where('is_delete',0);
+    }
+
+    public function proceeds() {
+        return $this->hasMany(OrderProceedsModel::class, 'order_id','id')->where('is_delete',0);
+    }
+
+    public function store() {
+        return $this->hasOne(StoreModel::class, 'id', 'store_id');
+    }
 
     public function findByPaginate(array $params) {
         $where = [
             ['is_delete', '=', 0]
         ];
-        return $this->where($where)->order('create_time','desc')->paginate(['list_rows'=>10, "query" => $params]);
+        if($params['store_id'] > 0)
+            array_push($where,['store_id', '=', $params['store_id']]);
+        if($params['type'] > 0)
+            array_push($where,['type', '=', $params['type']]);
+        return $this->where($where)
+            ->with(['products','store'])
+            ->order('create_time','desc')
+            ->paginate(['list_rows'=>10, "query" => $params]);
+    }
+
+    public function findById($id)
+    {
+        return $this->where('is_delete',0)
+            ->with([
+                'products',
+                'payments',
+                'payments.payment_channel',
+//                'payments.card_config',
+                'annuals',
+                'proceeds'
+            ])->find($id);
     }
 
 }

+ 24 - 0
app/common/model/OrderPaymentModel.php

@@ -0,0 +1,24 @@
+<?php
+
+
+namespace app\common\model;
+
+
+class OrderPaymentModel extends BaseModel
+{
+    protected $table = 'erp_order_payment';
+
+    public function paymentChannel() {
+        return $this->hasOne(PaymentChannelModel::class,'id', 'channel_id');
+    }
+
+    public function cardConfig() {
+        return $this->hasOne(CreditCardConfigModel::class,'id', 'channel_credit_card_config_id');
+    }
+
+
+    protected function genSchema(array $schema)
+    {
+        // TODO: Implement genSchema() method.
+    }
+}

+ 15 - 0
app/common/model/OrderProceedsModel.php

@@ -0,0 +1,15 @@
+<?php
+
+
+namespace app\common\model;
+
+
+class OrderProceedsModel extends BaseModel
+{
+    protected $table = 'erp_order_proceeds';
+
+    protected function genSchema(array $schema)
+    {
+        // TODO: Implement genSchema() method.
+    }
+}

+ 15 - 0
app/common/model/OrderProductModel.php

@@ -0,0 +1,15 @@
+<?php
+
+
+namespace app\common\model;
+
+
+class OrderProductModel extends BaseModel
+{
+    protected $table = 'erp_order_product';
+
+    protected function genSchema(array $schema)
+    {
+        // TODO: Implement genSchema() method.
+    }
+}

+ 0 - 2
task.text

@@ -1,7 +1,5 @@
 2022.12.22周会议纪要
 
-7.御龙币可先建数据表,可以展示数据
-
 3.订单列表 增加导出功能 可供财务计算员工业绩
 8.整理财务报表需求