Pārlūkot izejas kodu

客户管理-显示BUG修复

Zhouzhendong 5 gadi atpakaļ
vecāks
revīzija
b6b78ed5ab

+ 11 - 8
resources/views/customer/customer/index.blade.php

@@ -58,23 +58,25 @@
                             <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-else @click="edit(i,customer.customer_logs[0].user)" @mouseenter="textClass($event,true)" @mouseleave="textClass($event,false)" class="col-4">
+                            <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="row text-center mb-0 up" v-for="(log,j) in customer.customer_logs" v-if="j!==0" :id="'log-'+customer.id">
-                            <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="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>
                         </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-else>展开</span>&nbsp;@{{ customer.customer_logs.length }} 条日志
+                                &nbsp;<span v-if="customer.isShowLog">收起</span><span v-if="!customer.isShowLog">展开</span>&nbsp;@{{ customer.customer_logs.length }} 条日志
                             </label>
                         </div>
                     </td>
@@ -144,6 +146,7 @@
                 this._formatOwner();
                 $(".up").slideUp();
                 $('#container').removeClass('d-none');
+                console.log(this.customers[0].customer_logs);
                 this.rendering();
                 let data=[
                     [

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

@@ -167,6 +167,7 @@
                         additional_weight:"",
                         items:[],
                     },
+                    logistic:{},
                 },
                 pool:{//基础数据选择池,以方便异步懒加载而非即时加载 例:units,owners等
                     counting_type:[
@@ -226,6 +227,9 @@
                         case "express":
                             this._loadExpress();
                             break;
+                        case "logistic":
+                            this._loadLogistic();
+                            break;
                     }
                     this.type = type;
                 },
@@ -304,6 +308,10 @@
                 _loadExpress(){
                     if (!this.pool.provinces)this._getProvinces();
                 },
+                //加载物流
+                _loadLogistic(){
+                    if (!this.pool.units) this._getUnits();
+                },
                 //获取单位
                 _getUnits(){
                     let url = "{{url('maintenance/unit/getUnits')}}";
@@ -649,7 +657,21 @@
                         tempTip.setDuration(3000);
                         tempTip.show("网络错误:"+err);
                     })
-                }
+                },
+                //物流详情列表modal
+                showDetailModal() {
+                    $("#logisticModal").modal("show");
+                },
+                //新增物流详情
+                addLogisticDetail(){
+                    this.model.logistic.items.unshift({
+                        "edit" : true,
+                    });
+                },
+                //导入物流详情
+                importLogistic(event){
+                    console.log(event);
+                },
             },
         });
     </script>

+ 72 - 1
resources/views/customer/project/part/_logistic.blade.php

@@ -1 +1,72 @@
-1
+<div class="row">
+    <label for="logistic_name" class="col-2"><b class="text-danger">* </b>价格名称</label>
+    <input id="logistic_name" type="text" class="col-6 form-control"
+           :class="errors.name ? 'is-invalid' : ''" v-model="model.logistic.name">
+    <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.name">
+        <strong>@{{ errors.name[0] }}</strong>
+    </span>
+</div>
+<div class="row mt-3">
+    <label for="logistic_pick_up_price" class="col-2">提货费</label>
+    <input id="logistic_pick_up_price" type="number" min="0" step="0.01" class="col-3 form-control"
+           :class="errors.pick_up_price ? 'is-invalid' : ''" v-model="model.logistic.pick_up_price">
+    <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.pick_up_price">
+        <strong>@{{ errors.pick_up_price[0] }}</strong>
+    </span>
+</div>
+<div class="row mt-3">
+    <label for="logistic_fuel_price" class="col-2">燃油附加费</label>
+    <input id="logistic_fuel_price" type="number" min="0" step="0.01" class="col-3 form-control"
+           :class="errors.fuel_price ? 'is-invalid' : ''" v-model="model.logistic.fuel_price">
+    <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.fuel_price">
+        <strong>@{{ errors.fuel_price[0] }}</strong>
+    </span>
+</div>
+<div class="row mt-3">
+    <label for="logistic_service_price" class="col-2">信息服务费</label>
+    <input id="logistic_service_price" type="number" min="0" step="0.01" class="col-3 form-control"
+           :class="errors.service_price ? 'is-invalid' : ''" v-model="model.logistic.service_price">
+    <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.service_price">
+        <strong>@{{ errors.service_price[0] }}</strong>
+    </span>
+</div>
+<div class="row mt-3">
+    <label for="logistic_unit_id" class="col-2"><b class="text-danger">* </b>单位一</label>
+    <select id="logistic_unit_id" class="col-2 form-control"
+            v-model="model.logistic.unit_id" :class="errors.unit_id ? 'is-invalid' : ''">
+        <option v-for="unit in pool.units" :value="unit.id">@{{ unit.name }}</option>
+    </select>
+    <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.unit_id">
+        <strong>@{{ errors.unit_id[0] }}</strong>
+    </span>
+    <label for="logistic_unit_range" class="col-2 text-right"><b class="text-danger">*</b>区间值</label>
+    <input id="logistic_unit_range" type="text" placeholder="文字描述区间逗号(,)间隔,示例:0-5,10-30,30-"
+           v-model="model.logistic.unit_range" class="col-3 form-control" :class="errors.unit_range ? 'is-invalid' : ''">
+    <span class="invalid-feedback mt-0 offset-6" role="alert" v-if="errors.unit_range">
+        <strong>@{{ errors.unit_range[0] }}</strong>
+    </span>
+</div>
+<div class="row mt-3">
+    <label for="logistic_other_unit_id" class="col-2"><b class="text-danger">* </b>单位二</label>
+    <select id="logistic_other_unit_id" class="col-2 form-control"
+            v-model="model.logistic.other_unit_id" :class="errors.other_unit_id ? 'is-invalid' : ''">
+        <option v-for="unit in pool.units" :value="unit.id">@{{ unit.name }}</option>
+    </select>
+    <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.other_unit_id">
+        <strong>@{{ errors.other_unit_id[0] }}</strong>
+    </span>
+    <label for="logistic_other_unit_range" class="col-2 text-right"><b class="text-danger">*</b>区间值</label>
+    <input id="logistic_other_unit_range" type="text" placeholder="文字描述区间逗号(,)间隔,示例:0-5,10-30,30-"
+           v-model="model.logistic.other_unit_range" class="col-3 form-control" :class="errors.other_unit_range ? 'is-invalid' : ''">
+    <span class="invalid-feedback mt-0 offset-6" role="alert" v-if="errors.other_unit_range">
+        <strong>@{{ errors.other_unit_range[0] }}</strong>
+    </span>
+</div>
+<div class="row mt-3">
+    <label class="col-2">详情</label>
+    <div class="col-10">
+        <div class="row">
+            <button type="button" class="btn btn-sm btn-outline-info col-4">详情列表</button>
+        </div>
+    </div>
+</div>

+ 115 - 0
resources/views/customer/project/part/_logisticDetail.blade.php

@@ -0,0 +1,115 @@
+<div class="modal fade" tabindex="-1" role="dialog" id="logisticModal">
+    <div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
+        <div class="modal-content">
+            <div class="modal-header">
+                <div class="row w-100">
+                    <button type="button" class="btn btn-sm btn-outline-dark col-1" @click="addLogisticDetail()">新增</button>
+                    <input id="logisticFile" type="file" style="display:none" accept=".csv, .xlsx, .xls" @change="importLogistic($event)"/>
+                    @can("计费模型-物流-录入")<button type="button" class="btn btn-sm btn-outline-info col-1" @click="selectFile('logisticFile')">导入</button>@endcan
+                    <div class="font-weight-bolder offset-3">物流收费标准</div>
+                </div>
+            </div>
+            <div class="modal-body">
+                <div class="w-100 text-center mb-1" v-if="importError.length > 0">
+                    <button class="btn btn-sm btn-danger mb-1" @click="isShowError = true" v-if="!isShowError">@{{ importError.length }}条错误,点击展开</button>
+                    <button class="btn btn-sm btn-dark mb-1" @click="isShowError = false" v-else>收起错误展示</button>
+                    <div v-if="isShowError" class="container-fluid text-danger font-weight-bolder">
+                        <div class="row text-left">
+                            <div class="col-6" v-for="err in importError">@{{ error }}</div>
+                        </div>
+                    </div>
+                </div>
+                <div class="w-100 text-primary text-center mt-0" v-else>
+                    <div class="small"><b class="text-dark font-weight-bold">导入导出表头示例:</b>计数单位,计数区间,省份,市,单价,送货费,起始计费,起始计数,费率</div>
+                </div>
+                <table class="table table-sm table-bordered">
+                    <tr class="text-success">
+                        <th>操作</th>
+                        <th>计价单位</th>
+                        <th>计价区间</th>
+                        <th style="min-width: 100px">省份</th>
+                        <th style="min-width: 100px">市</th>
+                        <th>单价</th>
+                        <th>送货费</th>
+                        <th>起始计费</th>
+                        <th>起始计数</th>
+                        <th>费率(%)</th>
+                        <th>操作</th>
+                    </tr>
+                    <tr v-for="(detail,i) in details[models[index].id]">
+                        <td>
+                            <div v-if="detail.edit">
+                                <button type="button" class="btn btn-sm btn-success" @click="submitDetail(detail)">确定</button>
+                                <button type="button" class="btn btn-sm btn-danger" @click="delDetail(detail,i)">取消</button>
+                            </div>
+                            <div v-else>
+                                @can("计费模型-物流-录入")<button type="button" class="btn btn-sm btn-outline-info" @click="addDetail()" v-if="i == 0">新增</button>@endcan
+                                @can("计费模型-物流-编辑")<button type="button" class="btn btn-sm btn-outline-primary" v-if="detail.id" @click="updateDetail(detail)">修改</button>@endcan
+                            </div>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit && !detail.id">
+                                <select class="form-control form-control-sm col-6" style="min-width: 80px" v-model="detail.unit_id" @change="$forceUpdate()">
+                                    <option v-for="unit in units" :value="unit.id" v-if="unit.id == models[index].unitId || unit.id == models[index].otherUnitId">@{{ unit.name }}</option>
+                                </select>
+                            </label>
+                            <label v-else>@{{ detail.unit ? detail.unit.name : '' }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit && !detail.id">
+                                <select class="form-control form-control-sm col-6" style="min-width: 80px" v-model="detail.range">
+                                    <option v-for="range in (detail.unit_id == models[index].unitId ? models[index].unitRange : models[index].otherUnitRange)" :value="range">@{{ range }}</option>
+                                </select>
+                            </label>
+                            <label v-else>@{{ detail.range }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit && !detail.id">
+                                <select class="form-control form-control-sm" v-model="detail.province_id" @change="$forceUpdate()">
+                                    <option v-for="province in provinces" :value="province.id">@{{ province.name }}</option>
+                                </select>
+                            </label>
+                            <label v-else>@{{ detail.province ? detail.province.name : '' }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit && !detail.id">
+                                <select class="form-control form-control-sm" v-model="detail.city_id" v-if="detail.province_id">
+                                    <option v-for="city in cities[detail.province_id]" :value="city.id">@{{ city.name }}</option>
+                                </select>
+                            </label>
+                            <label v-else>@{{ detail.city ? detail.city.name : '' }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit"><input type="number" min="0" step="0.001" class="form-control form-control-sm"
+                                         :id="'unit_price-'+detail.id" v-model="detail.unit_price" :data="detail.unit_price"></label>
+                            <label v-else>@{{ detail.unit_price }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit"><input type="number" min="0" step="0.001" class="form-control form-control-sm"
+                                     :id="'delivery_fee-'+detail.id" v-model="detail.delivery_fee" :data="detail.delivery_fee"></label>
+                            <label v-else>@{{ detail.delivery_fee }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit"><input type="number" min="0" step="0.001" class="form-control form-control-sm"
+                                     :id="'initial_fee-'+detail.id"  v-model="detail.initial_fee" :data="detail.initial_fee"></label>
+                            <label v-else>@{{ detail.initial_fee }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit"><input type="number" min="0" class="form-control form-control-sm"
+                                     :id="'initial_amount-'+detail.id" v-model="detail.initial_amount" :data="detail.initial_amount"></label>
+                            <label v-else>@{{ detail.initial_amount }}</label>
+                        </td>
+                        <td>
+                            <label v-if="detail.edit"><input type="number" min="0" step="0.001" class="form-control form-control-sm"
+                                     :id="'rate-'+detail.id"  v-model="detail.rate" :data="detail.rate"></label>
+                            <label v-else>@{{ detail.rate }}</label>
+                        </td>
+                        <td>
+                            @can("计费模型-物流-编辑")<button type="button" class="btn btn-sm btn-outline-danger" @click="deletePriceModel(detail.id,i)" v-if="detail.id">删</button>@endcan
+                        </td>
+                    </tr>
+                </table>
+            </div>
+        </div>
+    </div>
+</div>