|
|
@@ -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)">×</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)">×</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)">×</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)">×</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>
|
|
|
+ <span v-if="customer.isShowLog">收起</span><span v-if="!customer.isShowLog">展开</span> @{{ 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>
|
|
|
- <span v-if="customer.isShowLog">收起</span><span v-if="!customer.isShowLog">展开</span> @{{ 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){
|