Browse Source

Merge branch 'zzd' of ssh://was.baoshi56.com:10022/var/git/bswas

LD 5 years ago
parent
commit
cdd33b5a15

+ 4 - 1
app/Http/Controllers/CustomerLogController.php

@@ -20,7 +20,10 @@ class CustomerLogController extends Controller
     {
         $id = $request->input("id");
         if (!$id) return ["success"=>false,"data"=>"非法参数"];
-        return ["success"=>true,"data"=>app("CustomerLogService")->update(["id"=>$id],["description"=>$request->input("description")])];
+        $params = [];
+        if ($request->has("description"))$params["description"] = $request->input("description");
+        if ($request->has("customer_log_status_id"))$params["customer_log_status_id"] = $request->input("customer_log_status_id");
+        return ["success"=>true,"data"=>app("CustomerLogService")->update(["id"=>$id],$params)];
     }
 
     public function store(Request $request)

+ 1 - 1
app/Http/Controllers/TestController.php

@@ -159,7 +159,7 @@ sql;
     }
     public function zzd()
     {
-        dd(300%300);
+        dd(env("DB_HOST"));
     }
 
     public function zzd1()

+ 1 - 0
app/Http/Controllers/WaybillController.php

@@ -88,6 +88,7 @@ class WaybillController extends Controller
         if(!Gate::allows('运输管理-编辑')){ return redirect(url('/'));  }
         /** @var WaybillService */
         $waybill = app('waybillService')->find($id);
+        if (!$waybill)return view("exception.default",["code"=>"500","message"=>"数据已被删除或丢失"]);
         if ($waybill->deliver_at){
             $waybill->deliver_at_date=Carbon::parse($waybill->deliver_at)->format('Y-m-d');
             $waybill->deliver_at_time=Carbon::parse($waybill->deliver_at)->format('H:i:s');

+ 3 - 0
database/migrations/2020_12_14_103401_create_customerlogstatuses_table.php

@@ -14,6 +14,9 @@ class CreateCustomerLogStatusesTable extends Migration
             $table->text('description');
             $table->timestamps();
         });
+		\App\CustomerLogStatus::query()->create([
+		    "name"=>"日志"
+        ]);
 	}
 
 	public function down()

+ 115 - 51
resources/views/customer/customer/index.blade.php

@@ -29,12 +29,14 @@
                         <div class="row">
                             <label class="col-12">日志</label>
                         </div>
-                        <div class="row text-secondary">
-                            <label class="col-2">状态</label>
-                            <label class="col-2">操作者</label>
-                            <label class="col-4">说明</label>
-                            <label class="col-3">操作时间</label>
-                            <label class="col-1"></label>
+                        <div class="row">
+                            <div class="row text-secondary offset-1 col-11">
+                                <label class="col-4">说明</label>
+                                <label class="col-2">状态</label>
+                                <label class="col-2">操作者</label>
+                                <label class="col-3">操作时间</label>
+                                <label class="col-1"></label>
+                            </div>
                         </div>
                     </th>
                     <th>合同</th>
@@ -52,33 +54,55 @@
                     <td>@{{ customer.phone }}</td>
                     <td>@{{ customer.remark }}</td>
                     <td>
-                        <div class="row text-center mb-0" v-if="customer.customer_logs.length > 0">
-                            <div class="col-2">@{{ customer.customer_logs[0].status ? customer.customer_logs[0].status.name : '' }}</div>
-                            <div class="col-2">@{{ customer.customer_logs[0].user ? customer.customer_logs[0].user.name : '' }}</div>
-                            <label v-if="editCustomer == customer.id">
-                                <textarea @blur="editLog(i,$event)" class="form-control form-control-sm">@{{ customer.customer_logs[0].description }}</textarea>
-                            </label>
-                            <div v-if="editCustomer != customer.id" @click="edit(i,customer.customer_logs[0].user)" @mouseenter="textClass($event,true)" @mouseleave="textClass($event,false)" class="col-4">
-                                <div class="text-overflow-replace cursor-pointer">@{{ customer.customer_logs[0].description }}</div>
-                            </div>
-                            <div class="col-3">@{{ customer.customer_logs[0].created_at }}</div>
-                            @can("客户-编辑")<div class="col-1 font-weight-bold text-danger h4 cursor-pointer" @click="delLog(i,0)">&times;</div>@endcan
-                        </div>
-                        <div class="w-100 up" :id="'log-'+customer.id">
-                            <div class="text-center mb-0 row" v-for="(log,j) in customer.customer_logs" v-if="j!==0">
-                                <div class="col-2">@{{ log.status ? log.status.name : '' }}</div>
-                                <div class="col-2">@{{ log.user ? log.user.name : '' }}</div>
-                                <div @mouseenter="textClass($event,true)" @mouseleave="textClass($event,false)" class="col-4"><div class="text-overflow-replace cursor-pointer">@{{ log.description }}</div></div>
-                                <div class="col-3">@{{ log.created_at }}</div>
-                                @can("客户-编辑")<div class="col-1 font-weight-bold text-danger h4 cursor-pointer" @click="delLog(i,j)">&times;</div>@endcan
+                        <div class="bg-white row">
+                            <div class="col-1"><button class="btn btn-sm btn-outline-info" @click="addCustomerLog(i)">添加</button></div>
+                            <div class="col-11">
+                                <div class="w-100">
+                                    <div class="text-center mb-0 row" v-for="(log,j) in customer.customer_logs" v-if="j<2" @click="edit(i,j,log.user)">
+                                        <div @mouseenter="textClass($event,true)" @mouseleave="textClass($event,false)" class="col-4">
+                                            <div class="text-overflow-replace cursor-pointer text-secondary" v-if="log.id && (editCustomer!=customer.id || j!=0)">
+                                                @{{ log.description }}
+                                            </div>
+                                            <label v-if="!log.id">
+                                                <textarea class="form-control form-control-sm" @blur="addLog(i,j)" v-model="log.description"></textarea>
+                                            </label>
+                                            <label v-if="editCustomer == customer.id && j==0">
+                                                <textarea @blur="editLog(i,$event)" class="form-control form-control-sm">@{{ log.description }}</textarea>
+                                            </label>
+                                        </div>
+                                        <div class="col-2">
+                                            <span v-if="log.id && (editCustomer!=customer.id || j!=0)">@{{ log.status ? log.status.name : '' }}</span>
+                                            <label v-if="!log.id"><select class="form-control form-control-sm" @change="addLog(i,j)" @click="editLogEvent(log)">
+                                                <option v-for="status in logStatuses" :value="status.id">@{{ status.name }}</option>
+                                            </select></label>
+                                            <label v-if="editCustomer == customer.id && j==0">
+                                                <select class="form-control form-control-sm" @change="editLogStatus(i,log)" v-model="log.customer_log_status_id">
+                                                    <option v-for="status in logStatuses" :value="status.id">@{{ status.name }}</option>
+                                                </select>
+                                            </label>
+                                        </div>
+                                        <div class="col-2 text-secondary">@{{ log.user ? log.user.name : '' }}</div>
+                                        <div class="col-3 text-secondary">@{{ log.created_at }}</div>
+                                        @can("客户-编辑")<div class="col-1 font-weight-bold text-danger h4 cursor-pointer" @click="delLog(i,j)">&times;</div>@endcan
+                                    </div>
+                                </div>
+                                <div class="w-100 up" :id="'log-'+customer.id">
+                                    <div class="text-center mb-0 row" v-for="(log,j) in customer.customer_logs" v-if="j>1">
+                                        <div @mouseenter="textClass($event,true)" @mouseleave="textClass($event,false)" class="col-4"><div class="text-overflow-replace cursor-pointer text-secondary">@{{ log.description }}</div></div>
+                                        <div class="col-2">@{{ log.status ? log.status.name : '' }}</div>
+                                        <div class="col-2 text-secondary">@{{ log.user ? log.user.name : '' }}</div>
+                                        <div class="col-3 text-secondary">@{{ log.created_at }}</div>
+                                        @can("客户-编辑")<div class="col-1 font-weight-bold text-danger h4 cursor-pointer" @click="delLog(i,j)">&times;</div>@endcan
+                                    </div>
+                                </div>
+                                <div class="row" @click="showLog(i)" v-if="customer.customer_logs.length > 2">
+                                    <label class="text-center mt-0 p-0 cursor-pointer offset-5">
+                                        <span class="fa" :class="customer.isShowLog ? 'fa-angle-double-down' : 'fa-angle-double-right'"></span>
+                                        &nbsp;<span v-if="customer.isShowLog">收起</span><span v-if="!customer.isShowLog">展开</span>&nbsp;@{{ customer.customer_logs.length }} 条日志
+                                    </label>
+                                </div>
                             </div>
                         </div>
-                        <div class="row" @click="showLog(i)">
-                            <label class="text-center mt-0 p-0 cursor-pointer offset-5">
-                                <span class="fa" :class="customer.isShowLog ? 'fa-angle-double-down' : 'fa-angle-double-right'"></span>
-                                &nbsp;<span v-if="customer.isShowLog">收起</span><span v-if="!customer.isShowLog">展开</span>&nbsp;@{{ customer.customer_logs.length }} 条日志
-                            </label>
-                        </div>
                     </td>
                     <td v-if="customer.contractQuantity>0" class="cursor-pointer" @click="showContract(customer.id)"><span class="fa" :class="contractIds['_'+customer.id] === true ? 'fa-angle-double-down' : 'fa-angle-double-right'"></span>@{{ customer.contractQuantity }}份合同</td>
                     <td v-else>#</td>
@@ -99,7 +123,6 @@
                     </td>
                     <td>
                         @can("客户-编辑")
-                            <button class="btn btn-sm btn-outline-info" @click="showCustomerLog(i)">新建日志</button>
                             <button class="btn btn-sm btn-outline-success" @click="addContract(i)">新建合同</button>
                             <button v-if="!tagIndexes[i]" class="btn btn-sm btn-info text-white" @click="setTag(i)">设定标签</button>
                             <button class="btn btn-sm btn-outline-primary" @click="relatedOwner(i)">关联项目</button>
@@ -120,7 +143,6 @@
             el:"#container",
             data:{
                 customers :  {!!  $customers->toJson() !!}['data'],
-                customerLogs : [],
                 index:'',
                 logStatuses:null,
                 contractIds:[],
@@ -146,7 +168,6 @@
                 this._formatOwner();
                 $(".up").slideUp();
                 $('#container').removeClass('d-none');
-                console.log(this.customers[0].customer_logs);
                 this.rendering();
                 let data=[
                     [
@@ -163,10 +184,13 @@
                 }).init();
             },
             methods:{
+                editLogEvent(log){
+                    log.isEdit = true;
+                },
                 textClass(event,isOver){
                     event = event.target.children[0];
                     if (isOver) event.className = "text-overflow-warp";
-                    else event.className = "cursor-pointer text-overflow-replace";
+                    else event.className = "cursor-pointer text-overflow-replace text-secondary";
                 },
                 editLog(customer_index,event){
                     let description = event.target.value;
@@ -179,11 +203,30 @@
                     window.tempTip.confirm("确定要提交该条日志的修改信息吗?",()=>{
                         window.tempTip.postBasicRequest(url,params,(res)=> {
                             this.customers[customer_index].customer_logs[0].description = description;
+                            this.editCustomer = "";
                             this.$forceUpdate();
                             return "修改说明成功!";
                         });
                     });
                 },
+                editLogStatus(customer_index,log){
+                    let url="{{url('customer/customer/editLog')}}";
+                    let params = {id:log.id,customer_log_status_id:log.customer_log_status_id};
+                    window.tempTip.confirm("确定要提交该条日志的修改信息吗?",()=>{
+                        window.tempTip.postBasicRequest(url,params,(res)=> {
+                            this.customers[customer_index].customer_logs[0].customer_log_status_id = log.customer_log_status_id;
+                            this.logStatuses.some(status=> {
+                                if (status.id === log.customer_log_status_id){
+                                    this.customers[customer_index].customer_logs[0].status = status;
+                                    return true;
+                                }
+                            });
+                            this.editCustomer = "";
+                            this.$forceUpdate();
+                            return "修改状态成功!";
+                        });
+                    });
+                },
                 showLog(index){
                     if(this.customers[index].isShowLog){
                         this.customers[index].isShowLog = false;
@@ -196,6 +239,10 @@
                 },
                 delLog(customer_index,log_index){
                     let id = this.customers[customer_index].customer_logs[log_index].id;
+                    if (!id){
+                        this.$delete(this.customers[customer_index].customer_logs,log_index);
+                        return;
+                    }
                     window.tempTip.confirm("确定要删除该条日志吗?",()=>{
                         window.tempTip.postBasicRequest("{{url('customer/customer/destroyLog')}}",{id:id},res=>{
                             this.$delete(this.customers[customer_index].customer_logs,log_index);
@@ -303,31 +350,48 @@
                         })
                     })
                 },
-                showCustomerLog(index){
+                addCustomerLog(index){
+                    if (this.customers[index].customer_logs[0] && !this.customers[index].customer_logs[0].id)return;
                     if (!this.logStatuses)window.tempTip.postBasicRequest("{{url('customer/customer/getLogStatus')}}",{},(res)=>{
                         this.logStatuses = res;
                     },true);
-                    this.addCustomerLogIndex = index;
-                    $("#modal").modal('show');
+                    this.customers[index].customer_logs.unshift({
+                        id:"",
+                        status:"1",
+                        description:"",
+                    });
                 },
-                edit(index,user){
+                edit(index,logIndex,user){
+                    if (logIndex!==0)return;
                     if (!user)return;
                     let id = "{{\Illuminate\Support\Facades\Auth::id()}}";
                     if (id != user.id) return;
+                    if (!this.logStatuses)window.tempTip.postBasicRequest("{{url('customer/customer/getLogStatus')}}",{},(res)=>{
+                        this.logStatuses = res;
+                    });
                     this.editCustomer = this.customers[index].id;
                 },
-                addLog(){
-                    let description = $("#description")[0].value;
-                    let logStatus = $("#status")[0].value;
-                    let url="{{url('customer/customer/storeLog')}}";
-                    let params = {customer_id:this.customers[this.addCustomerLogIndex].id,description:description,customer_log_status_id:logStatus};
-                    window.tempTip.postBasicRequest(url,params,(res)=>{
-                        this.customers[this.addCustomerLogIndex].customer_logs.unshift(res);
-                        console.log(this.customers[this.addCustomerLogIndex].customer_logs);
-                        this.$forceUpdate();
-                        $("#modal").modal('hide');
-                        return "成功创建客户日志";
-                    },true);
+                addLog(index,logIndex){
+                    let exe = ()=>{
+                        let url="{{url('customer/customer/storeLog')}}";
+                        let params = {customer_id:this.customers[index].id,description:this.customers[index].customer_logs[logIndex].description,customer_log_status_id:this.customers[index].customer_logs[logIndex].status};
+                        window.tempTip.postBasicRequest(url,params,(res)=>{
+                            this.customers[index].customer_logs[logIndex] = res;
+                            this.$forceUpdate();
+                            $("#modal").modal('hide');
+                            return "成功创建客户日志";
+                        },true);
+                    };
+                    if (!this.customers[index].customer_logs[logIndex].description || !this.customers[index].customer_logs[logIndex].status)return;
+                    if (this.customers[index].customer_logs[logIndex].isEdit){
+                        exe();
+                        return;
+                    }
+                    setTimeout(()=>{
+                        if (this.customers[index].customer_logs[logIndex].isEdit) return;
+                        exe();
+                        this.customers[index].customer_logs[logIndex].isEdit = false;
+                    },500);
                 },
                 showContract(id){
                     if (this.contractIds['_'+id] &&  this.contractIds['_'+id]===true){

+ 5 - 1
resources/views/customer/project/create.blade.php

@@ -226,19 +226,23 @@
                 //切换类型
                 switchType(type){
                     if (type === this.type)return;//相同终止是为了减少重复加载动作
+                    let parent = $("#parent");
                     switch (type) {
                         case "storage":
                             this._loadStorage();
+                            parent.prepend($("#storage-card"));
                             break;
                         case "operation":
                             this._loadOperation();
+                            parent.prepend($("#operation-card"));
                             break;
                         case "express":
                             this._loadExpress();
+                            parent.prepend($("#express-card"));
                             break;
                         case "logistic":
                             this._loadLogistic();
-                            $("#parent").append($("#logistic-card"));
+                            parent.prepend($("#logistic-card"));
                             break;
                     }
                     this.type = type;

+ 10 - 2
resources/views/customer/project/part/_three.blade.php

@@ -27,11 +27,19 @@
                 </table>
             </div>
         </div>
-        <div class="card">
+        <div class="card" id="operation-card">
             <div class="card-header bg-light-info">
                 <span class="pull-left font-weight-bold cursor-pointer" @click="show('operation')"><span class="fa fa-suitcase"></span>&nbsp;作业</span>
             </div>
             <div class="card-body" id="operation">
+                <div class="container-fluid">
+                    <div class="row">
+                        <div>入库</div>
+                    </div>
+                    <div class="row">
+                        <div>入库</div>
+                    </div>
+                </div>
                 <table class="table table-sm">
                     <tr>
                         <th>操作类型</th>
@@ -52,7 +60,7 @@
                 </table>
             </div>
         </div>
-        <div class="card">
+        <div class="card" id="express-card">
             <div class="card-header bg-light-info">
                 <span class="pull-left font-weight-bold cursor-pointer" @click="show('express')"><span class="fa fa-cube"></span>&nbsp;快递</span>
             </div>