Commit 5e1efea0 authored by 华国豪's avatar 华国豪 🙄

新增很多页面

parent 726d4d10
......@@ -229,3 +229,7 @@ textarea{
color: rgba(13, 36, 129, 1);
background-color: white;
}
.MyEditForm-item .el-input.is-disabled .el-input__inner{
background-color: white;
border-color: white;
}
\ No newline at end of file
......@@ -91,7 +91,8 @@ export default {
},
{
class: "iconfont icondaiban",
name: "待办事项"
name: "待办事项",
path: '/waitMatter'
},
{
class: "iconfont iconxiansuo",
......@@ -110,7 +111,8 @@ export default {
},
{
class: "iconfont icongonghaiguanli",
name: "公海"
name: "公海",
path: '/watersManagement'
},
{
class: "iconfont iconshangji",
......
......@@ -390,7 +390,7 @@
<div class="content-item font-color-info" :key="subIndex" v-if="!subItem.CustomerFollowUpModel">
<i class="iconfont iconcompany"></i>
<div class="content">
<p class="content-ea"><span>{{subItem.UpdateDate.replace('T', ' ')}}</span> <span> {{subItem.LogInfo}}</span></p>
<p class="content-ea"><span>{{subItem.UpdateDate}}</span> <span> {{subItem.LogInfo}}</span></p>
</div>
</div>
<div class="content-item" v-else :key="subIndex" >
......@@ -402,7 +402,7 @@
</div>
<div>
<p>{{subItem.CustomerFollowUpModel.CreateByStr}}</p>
<p class="font-color-info">{{subItem.UpdateDate.replace('T', ' ')}}</p>
<p class="font-color-info">{{subItem.UpdateDate}}</p>
</div>
<div class="tag">
<span>{{subItem.CustomerFollowUpModel.FollowUpTypeStr}}</span>
......@@ -424,7 +424,7 @@
</p>
</div>
</div>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate.replace('T', ' ')}}</span></p>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate}}</span></p>
</div>
</div>
</div>
......
......@@ -3,26 +3,76 @@
</style>
<template>
<div class="Business">
Business
<div class="add-Enclosure">
<el-button icon="el-icon-plus" class="crm-btn query-btn crm-btn-mini margin-right0" @click="addBusiness">新建商机</el-button>
</div>
<el-table
v-loading="loading"
stripe
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
row-class-name="font-size-12">
<el-table-column
prop="BusinessName"
label="商机名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="BudgetPrice"
label="商机金额"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerName"
label="客户名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="BusinessStatusStr"
label="商机阶段"
show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
props:{
},
props: ['ID', 'BusinessType'],
data() {
return {
dataList: [],
loading: false
};
},watch:{
},
mounted() {
this.GetBusinessList()
},
methods: {
GetBusinessList(){
this.apipost('/api/Customer/GetBusinessList', {CustomerId: this.ID}, res=>{
if (res.data.resultCode == 1) {
console.log(res.data.data)
this.dataList = res.data.data
} else {
this.$message.error(res.data.message);
}
})
},
addBusiness(){
let $this= this
this.MsgBus.$emit('addBusinessBoxOpen', $this.ID, 0)
},
guanlian(){
},
jiechuguanlian(){
},
}
}
</script>
\ No newline at end of file
......@@ -126,7 +126,7 @@
更新时间:
</el-col>
<el-col :span="14">
{{detailsData.UpdateTime ? detailsData.UpdateTime.replace('T', ' ') : detailsData.UpdateTime}}
{{detailsData.UpdateTime ? detailsData.UpdateTime : detailsData.UpdateTime}}
</el-col>
</el-row>
</el-col>
......@@ -149,7 +149,7 @@
创建时间:
</el-col>
<el-col :span="14">
{{detailsData.CreateTime ? detailsData.CreateTime.replace('T', ' ') : detailsData.CreateTime }}
{{detailsData.CreateTime ? detailsData.CreateTime : detailsData.CreateTime }}
</el-col>
</el-row>
</el-col>
......
......@@ -70,7 +70,7 @@
<div class="Record" id="Record">
<div class="ha-cont" style="justify-content: flex-start; align-items: stretch;" v-for="(item, index) in logList" :key="index">
<div class="ha-circle"></div>
<div class="ha-time">{{item.UpdateDate.replace('T', ' ')}}</div>
<div class="ha-time">{{item.UpdateDate}}</div>
<!-- <div class="ha-name">admin</div> -->
<div class="ha-content">
<p data-v-0d9b8f7a="">{{item.LogInfo}}</p>
......
......@@ -100,7 +100,7 @@
<span class="info-lable">负责人:</span><span>{{detailsData.Contact}}</span>
</el-col>
<el-col :span="12">
<span class="info-lable">更新时间:</span><span>{{detailsData.UpdateTime ? detailsData.UpdateTime.replace('T', ' ') : ''}}</span>
<span class="info-lable">更新时间:</span><span>{{detailsData.UpdateTime ? detailsData.UpdateTime : ''}}</span>
</el-col>
</el-row>
</div>
......@@ -119,7 +119,7 @@
<TeamMembers v-if="activeName === '4'" :CustomerId="CustomerId"/>
</el-tab-pane>
<el-tab-pane label="商机" name="5">
<Business />
<Business v-if="activeName === '5'" :ID="CustomerId"/>
</el-tab-pane>
<el-tab-pane label="合同" name="6">
<Agreement />
......
......@@ -387,7 +387,7 @@
<div class="content-item font-color-info" :key="subIndex" v-if="!subItem.CustomerFollowUpModel">
<i class="iconfont iconcompany"></i>
<div class="content">
<p class="content-ea"><span>{{subItem.UpdateDate.replace('T', ' ')}}</span> <span> {{subItem.LogInfo}}</span></p>
<p class="content-ea"><span>{{subItem.UpdateDate}}</span> <span> {{subItem.LogInfo}}</span></p>
</div>
</div>
<div class="content-item" v-else :key="subIndex" >
......@@ -399,7 +399,7 @@
</div>
<div>
<p>{{subItem.CustomerFollowUpModel.CreateByStr}}</p>
<p class="font-color-info">{{subItem.UpdateDate.replace('T', ' ')}}</p>
<p class="font-color-info">{{subItem.UpdateDate}}</p>
</div>
<div class="tag">
<span>{{subItem.CustomerFollowUpModel.FollowUpTypeStr}}</span>
......@@ -420,7 +420,7 @@
</p>
</div>
</div>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate.replace('T', ' ')}}</span></p>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate}}</span></p>
</div>
</div>
</div>
......
......@@ -206,6 +206,7 @@ export default {
},
addContactsOk(){
this.GetContactByBusinessID()
this.getGLcustomerList()
},
SetFirstContact(scope){
this.apipost('/api/Customer/SetBusinessFirstContact', {BusinessID: this.BusinessId, ID: scope.row.ID}, res=>{
......
......@@ -63,7 +63,7 @@
<div class="Record" id="Record">
<div class="ha-cont" style="justify-content: flex-start; align-items: stretch;" v-for="(item, index) in logList" :key="index">
<div class="ha-circle"></div>
<div class="ha-time">{{item.UpdateDate.replace('T', ' ')}}</div>
<div class="ha-time">{{item.UpdateDate}}</div>
<div class="ha-content">
<p>{{item.LogInfo}}</p>
</div>
......
......@@ -151,7 +151,7 @@
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="客户名称" prop="CustomerId">
<el-select v-model="form.CustomerId" filterable placeholder="请选择客户">
<el-select v-model="form.CustomerId" :disabled="type==='1' ? true : false" placeholder="请选择客户">
<el-option
v-for="item in CustomerList"
:key="item.CustomerId"
......@@ -249,16 +249,7 @@
</template>
<script>
export default {
props:{
ID: {
type: Number,
default: 0
},
name: {
type: String,
default: '新建商机'
}
},
props:['ID', 'name', 'CustomerId', 'ContactId', 'type'],
data() {
return {
CustomerList: [],
......@@ -315,6 +306,12 @@ export default {
console.log(val)
},
deep:true
},
CustomerId: {
handler(val, oldVal){
console.log(val)
},
deep:true
}
},
mounted() {
......@@ -322,6 +319,9 @@ export default {
this.getLineList()
this.GetBusinessStatusEnum()
let $this = this
if (this.CustomerId!==0) {
this.form.CustomerId = this.CustomerId
}
setTimeout(()=>{
$this.dialogTableVisible = true
},50)
......@@ -382,12 +382,13 @@ export default {
this.dialogTableVisible = false;
// 有id 发送更新抽屉消息
if(this.CustomerId !== 0) {
this.$message.success('修改商机成功');
this.$message.success('操作成功');
this.MsgBus.$emit('RefreshInfoBox')
} else {
this.$message.success('新建商机成功');
this.$message.success('操作成功');
}
this.$emit('getList')
this.MsgBus.$emit('RefreshbusSelect')
this.resetForm("form");
} else {
this.$message.error(res.data.message);
......
......@@ -114,7 +114,7 @@
创建时间:
</el-col>
<el-col :span="14">
{{detailsData.CreateTime ? detailsData.CreateTime.replace('T', ' ') : detailsData.CreateTime}}
{{detailsData.CreateTime ? detailsData.CreateTime : detailsData.CreateTime}}
</el-col>
</el-row>
</el-col>
......@@ -126,7 +126,7 @@
更新时间:
</el-col>
<el-col :span="14">
{{detailsData.UpdateTime ? detailsData.UpdateTime.replace('T', ' ') : detailsData.UpdateTime}}
{{detailsData.UpdateTime ? detailsData.UpdateTime : detailsData.UpdateTime}}
</el-col>
</el-row>
</el-col>
......
......@@ -363,7 +363,7 @@
<div class="content-item font-color-info" :key="subIndex" v-if="!subItem.CustomerFollowUpModel">
<i class="iconfont iconcompany"></i>
<div class="content">
<p class="content-ea"><span>{{subItem.UpdateDate.replace('T', ' ')}}</span> <span> {{subItem.LogInfo}}</span></p>
<p class="content-ea"><span>{{subItem.UpdateDate}}</span> <span> {{subItem.LogInfo}}</span></p>
</div>
</div>
<div class="content-item" v-else :key="subIndex" >
......@@ -375,7 +375,7 @@
</div>
<div>
<p>{{subItem.CustomerFollowUpModel.CreateByStr}}</p>
<p class="font-color-info">{{subItem.UpdateDate.replace('T', ' ')}}</p>
<p class="font-color-info">{{subItem.UpdateDate}}</p>
</div>
<div class="tag">
<span>{{subItem.CustomerFollowUpModel.FollowUpTypeStr}}</span>
......@@ -396,7 +396,7 @@
</p>
</div>
</div>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate.replace('T', ' ')}}</span></p>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate}}</span></p>
</div>
</div>
</div>
......
......@@ -126,7 +126,7 @@
更新时间:
</el-col>
<el-col :span="14">
{{detailsData.UpdateTime ? detailsData.UpdateTime.replace('T', ' ') : detailsData.UpdateTime}}
{{detailsData.UpdateTime ? detailsData.UpdateTime : detailsData.UpdateTime}}
</el-col>
</el-row>
</el-col>
......@@ -149,7 +149,7 @@
创建时间:
</el-col>
<el-col :span="14">
{{detailsData.CreateTime ? detailsData.CreateTime.replace('T', ' ') : detailsData.CreateTime }}
{{detailsData.CreateTime ? detailsData.CreateTime : detailsData.CreateTime }}
</el-col>
</el-row>
</el-col>
......
......@@ -37,7 +37,7 @@
label="上传时间"
show-overflow-tooltip>
<template slot-scope="scope">
<span class="cfont-color-info">{{scope.row.CreateTime.replace('T', ' ')}}</span>
<span class="cfont-color-info">{{scope.row.CreateTime}}</span>
</template>
</el-table-column>
<el-table-column
......
......@@ -70,7 +70,7 @@
<div class="Record" id="Record">
<div class="ha-cont" style="justify-content: flex-start; align-items: stretch;" v-for="(item, index) in logList" :key="index">
<div class="ha-circle"></div>
<div class="ha-time">{{item.UpdateDate.replace('T', ' ')}}</div>
<div class="ha-time">{{item.UpdateDate}}</div>
<!-- <div class="ha-name">admin</div> -->
<div class="ha-content">
<p data-v-0d9b8f7a="">{{item.LogInfo}}</p>
......
......@@ -129,7 +129,7 @@
v-if="queryType[7].show"
show-overflow-tooltip>
<template slot-scope="scope">
<span>{{scope.row.UpdateTime.replace('T', ' ')}}</span>
<span>{{scope.row.UpdateTime}}</span>
</template>
</el-table-column>
<el-table-column
......
......@@ -97,7 +97,7 @@
<span class="info-lable">负责人:</span><span>{{detailsData.Contact}}</span>
</el-col>
<el-col :span="12">
<span class="info-lable">更新时间:</span><span>{{detailsData.UpdateTime.replace('T', ' ')}}</span>
<span class="info-lable">更新时间:</span><span>{{detailsData.UpdateTime}}</span>
</el-col>
</el-row>
</div>
......
......@@ -370,7 +370,7 @@
<div class="content-item font-color-info" :key="subIndex" v-if="!subItem.CustomerFollowUpModel">
<i class="iconfont iconcompany"></i>
<div class="content">
<p class="content-ea"><span>{{subItem.UpdateDate.replace('T', ' ')}}</span> <span> {{subItem.LogInfo}}</span></p>
<p class="content-ea"><span>{{subItem.UpdateDate}}</span> <span> {{subItem.LogInfo}}</span></p>
</div>
</div>
<div class="content-item" v-else :key="subIndex" >
......@@ -382,7 +382,7 @@
</div>
<div>
<p>{{subItem.CustomerFollowUpModel.CreateByStr}}</p>
<p class="font-color-info">{{subItem.UpdateDate.replace('T', ' ')}}</p>
<p class="font-color-info">{{subItem.UpdateDate}}</p>
</div>
<div class="tag">
<span>{{subItem.CustomerFollowUpModel.FollowUpTypeStr}}</span>
......@@ -404,7 +404,7 @@
</p>
</div>
</div>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate.replace('T', ' ')}}</span></p>
<p> <span class="font-color-info">下次联系时间:</span> <span>{{subItem.CustomerFollowUpModel.NextContactDate}}</span></p>
</div>
</div>
</div>
......@@ -419,6 +419,10 @@
<script>
export default {
props:{
ContactId: {
type: Number,
default: 0
},
CustomerId: {
type: Number,
default: 0
......@@ -451,7 +455,7 @@ export default {
type: 1,
FollowUpMsg: {
ID: 0,
CustomerId: '',
CustomerId: 0,
ContactId: 0,
ContactName: '',
BusinessId: 0,
......@@ -485,14 +489,14 @@ export default {
fjList: [],
logList: [],
logMsg: {
Type: 1,
Type: 5,
pageIndex: 1,
pageSize: 3,
CustomerId: 0
}
};
},watch:{
CustomerId: {
ContactId: {
handler(val, oldVal){
this.GetLogPageList()
},
......@@ -541,6 +545,7 @@ export default {
})
},
CreateContactFollowUp(){
this.FollowUpMsg.ContactId = this.ContactId
this.FollowUpMsg.CustomerId = this.CustomerId
if (this.gjImgList.length){
this.gjImgList.map(x=>{
......@@ -565,7 +570,7 @@ export default {
this.gjImgList = []
this.FollowUpMsg = {
ID: 0,
CustomerId: '',
CustomerId: 0,
ContactId: 0,
ContactName: '',
BusinessId: 0,
......@@ -576,6 +581,7 @@ export default {
NextContactDate: '',
ContactContent: ''
}
this.GetLogPageList()
}
})
},
......
......@@ -3,26 +3,182 @@
</style>
<template>
<div class="Business">
Business
<div class="add-Enclosure">
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="guanlianBox = true">关联</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="jiechuguanlian">解除关联</el-button>
<el-button icon="el-icon-plus" class="crm-btn query-btn crm-btn-mini margin-right0" @click="addBusiness">新建商机</el-button>
</div>
<el-table
v-loading="loading"
stripe
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
row-class-name="font-size-12"
@selection-change="handleSelectionChange">
<el-table-column fixed type="selection" width="40"></el-table-column>
<el-table-column
prop="BusinessName"
label="商机名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="BudgetPrice"
label="商机金额"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerName"
label="客户名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="BusinessStatusStr"
label="商机阶段"
show-overflow-tooltip>
</el-table-column>
</el-table>
<el-dialog :visible.sync="guanlianBox" :modal="false" :close-on-click-modal="false" width="450px" custom-class="transfer-box add-box add-box2">
<div class="add-tit" slot="title">
<p><span></span>关联商机</p>
<span icon="el-icon-close"></span>
</div>
<el-form :model="msg" ref="form" class="MyEditForm" >
<div class="MyEditForm-item">
<el-form-item label="商机" class="label-pad-left">
<el-select
filterable
multiple
v-model="BusinessIDs" placeholder="请选择">
<el-option
v-for="item in selectList"
:label='item.BusinessName'
:value='item.ID'
:key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add-box-btn" @click="guanlian()">确 定</el-button>
<el-button class="add-box-btn add-box-cancel" @click="guanlianBox = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
props:{
},
props: ['ID', 'CustomerId'],
data() {
return {
dataList: [],
loading: false,
guanlianBox: false,
BusinessIDs: [],
selectList: [],
selectID: [],
msg: {
BusinessIDs: '',
ContactIDs: ''
}
};
},watch:{
},
mounted() {
this.GetBusinessByContactID()
this.GetBusinessList()
let $this = this
this.MsgBus.$on('RefreshbusSelect', function (){
$this.GetBusinessList()
})
},
methods: {
handleSelectionChange(val) {
this.selectID = val.map(x=>
x.ID
)
},
GetBusinessList(){
this.apipost('/api/Customer/GetBusinessList', {CustomerId: this.CustomerId}, res=>{
if (res.data.resultCode == 1) {
this.selectList = res.data.data
} else {
this.$message.error(res.data.message);
}
})
},
GetBusinessByContactID(){
this.loading = true
this.apipost('/api/Customer/GetBusinessByContactID', {ContactID: this.ID}, res=>{
if (res.data.resultCode == 1) {
this.dataList = res.data.data
this.loading = false
} else {
this.loading = false
this.$message.error(res.data.message);
}
})
},
addBusiness(){
let $this= this
this.MsgBus.$emit('addBusinessBoxOpen', $this.CustomerId, $this.ID)
},
guanlian(){
if (this.BusinessIDs.length < 1) {
return this.$message.error('青选择需要关联的商机!')
}
let str = ''
this.BusinessIDs.map((x, i)=>{
str = str + x + ','
})
this.msg.ContactIDs = this.ID
this.msg.BusinessIDs = str.substring(0, str.length - 1)
this.apipost('/api/Customer/SetBusinessContacts', this.msg, res=>{
if (res.data.resultCode == 1) {
this.guanlianBox = false
this.GetBusinessByContactID()
this.$message.success('操作成功');
} else {
this.$message.error(res.data.message);
}
})
},
jiechuguanlian(){
if(this.selectID.length < 1) {
return this.$message.error('请选择数据')
}
this.$confirm('确定解除关联?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let str = ''
this.selectID.map((x, i)=>{
str = str + x + ','
})
let msg = {
BusinessIDs: str.substring(0, str.length - 1),
ContactID: this.ID
}
this.apipost('/api/Customer/DelBusinessContacts', msg, res=>{
if (res.data.resultCode == 1) {
this.selectID = []
this.GetBusinessByContactID()
this.$message.success('操作成功');
} else {
this.$message.error(res.data.message);
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
}
}
</script>
\ No newline at end of file
......@@ -83,18 +83,6 @@
</el-col>
</el-row>
</el-col>
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
手机:
</el-col>
<el-col :span="14">
{{detailsData.ContactNumber}}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row :gutter="40" class="Details_box_row">
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
......@@ -106,6 +94,9 @@
</el-row>
</el-col>
</el-row>
<el-row :gutter="40" class="Details_box_row">
</el-row>
</div>
<div class="Details_box">
<p class="tit" style="margin-top: 30px;">系统信息</p>
......@@ -113,48 +104,35 @@
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
获取客户时间
创建人
</el-col>
<el-col :span="14">
{{detailsData.PersonChargeTime}}
{{detailsData.CreateByStr}}
</el-col>
</el-row>
</el-col>
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
更新时间:
创建时间:
</el-col>
<el-col :span="14">
{{detailsData.UpdateTime ? detailsData.UpdateTime.replace('T', ' ') : detailsData.UpdateTime}}
{{detailsData.CreateTime ? detailsData.CreateTime : detailsData.CreateTime }}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row :gutter="40" class="Details_box_row">
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
创建人:
</el-col>
<el-col :span="14">
{{detailsData.CreateByStr}}
</el-col>
</el-row>
</el-col>
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
创建时间:
更新时间:
</el-col>
<el-col :span="14">
{{detailsData.CreateTime ? detailsData.CreateTime.replace('T', ' ') : detailsData.CreateTime }}
{{detailsData.UpdateTime ? detailsData.UpdateTime : detailsData.UpdateTime}}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row :gutter="40" class="Details_box_row">
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
......@@ -165,6 +143,8 @@
</el-col>
</el-row>
</el-col>
</el-row>
<el-row :gutter="40" class="Details_box_row">
<el-col :span="12">
<el-row>
<el-col :span="6" class="Details_box_lable">
......
......@@ -70,7 +70,7 @@
<div class="Record" id="Record">
<div class="ha-cont" style="justify-content: flex-start; align-items: stretch;" v-for="(item, index) in logList" :key="index">
<div class="ha-circle"></div>
<div class="ha-time">{{item.UpdateDate.replace('T', ' ')}}</div>
<div class="ha-time">{{item.UpdateDate}}</div>
<!-- <div class="ha-name">admin</div> -->
<div class="ha-content">
<p data-v-0d9b8f7a="">{{item.LogInfo}}</p>
......@@ -82,7 +82,6 @@
</div>
</div>
</template>
</template>
<script>
export default {
props: ['CustomerId'],
......@@ -90,7 +89,7 @@ export default {
return {
logList: [],
msg: {
Type: 1,
Type: 3,
pageIndex: 1,
pageSize: 10,
SourceId: 0
......
......@@ -85,10 +85,10 @@
<div class="top-info">
<el-row class="margin-bottom-25">
<el-col :span="12">
<span class="info-lable">客户级别:</span><span>{{detailsData.CustomerIdLevelStr}}</span>
<span class="info-lable">职务:</span><span>{{detailsData.ContactDutyStr}}</span>
</el-col>
<el-col :span="12">
<span class="info-lable">成交状态:</span><span >已成交</span>
<span class="info-lable">联系电话:</span><span >{{detailsData.ContactPhone}}</span>
</el-col>
</el-row>
<el-row>
......@@ -96,26 +96,26 @@
<span class="info-lable">负责人:</span><span>{{detailsData.PersonChargeStr}}</span>
</el-col>
<el-col :span="12">
<span class="info-lable">更新时间:</span><span>{{detailsData.UpdateTime ? detailsData.UpdateTime.replace('T', ' ') : ''}}</span>
<span class="info-lable">更新时间:</span><span>{{detailsData.UpdateTime ? detailsData.UpdateTime : ''}}</span>
</el-col>
</el-row>
</div>
<div class="content">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="活动" name="1">
<Activity v-if="activeName === '1'" :CustomerId="CustomerId" />
<Activity v-if="activeName === '1'" :ContactId="ContactId" :CustomerId="CustomerId" />
</el-tab-pane>
<el-tab-pane label="详细资料" name="2">
<Details v-if="activeName === '2'" :detailsData="detailsData"/>
</el-tab-pane>
<el-tab-pane label="商机" name="5">
<Business />
<Business v-if="activeName === '5'" :ID="ContactId" :CustomerId="CustomerId"/>
</el-tab-pane>
<el-tab-pane label="附件" name="8">
<Enclosure :ID='CustomerId' :type='3'/>
<Enclosure :ID='ContactId' :type='3'/>
</el-tab-pane>
<el-tab-pane label="操作记录" name="9">
<Record v-if="activeName === '9'" :CustomerId="CustomerId"/>
<Record v-if="activeName === '9'" :CustomerId="ContactId"/>
</el-tab-pane>
</el-tabs>
</div>
......@@ -137,6 +137,10 @@ export default {
Record
},
props:{
ContactId: {
type: Number,
default: 0
},
CustomerId: {
type: Number,
default: 0
......@@ -149,12 +153,17 @@ export default {
loading: false,
};
},watch:{
CustomerId: {
ContactId: {
handler(val, oldVal){
this.init()
this.activeName = '1'
},
deep:true
},
CustomerId: {
handler(val, oldVal){
},
deep:true
}
},
mounted() {
......@@ -167,7 +176,7 @@ export default {
},
methods: {
init(){
this.apipost('/api/Customer/GetAllContactModel', {Id: this.CustomerId}, res=>{
this.apipost('/api/Customer/GetAllContactModel', {Id: this.ContactId}, res=>{
if (res.data.resultCode == 1) {
let data = res.data.data
this.detailsData = data
......
......@@ -217,7 +217,7 @@
:visible.sync="drawer2"
direction="rtl"
:before-close="handleClose">
<ContactsInfoBox :CustomerId="BusinessId" @transferS="transfer" @watersS="waters" @editCustbusiness="editCustbusiness"/>
<ContactsInfoBox :ContactId="BusinessId" :CustomerId="BusinessIdCustomerId" @transferS="transfer" @watersS="waters" @editCustbusiness="editCustbusiness"/>
</el-drawer>
<!-- 编辑客户 -->
<div v-if="dialogCustomerVisible">
......@@ -510,7 +510,6 @@ export default {
this.dialogCustomerVisible = true
},
openDetails2(scope){
console.log(scope.row)
this.BusinessId = scope.row.ID
this.BusinessIdCustomerId = scope.row.CustomerId
this.drawer2 = true
......
This diff is collapsed.
......@@ -713,7 +713,6 @@ export default {
this.drawer = true
this.CustomerId = scope.row.CustomerId
this.CustomerName = scope.row.CustomerName
this.drawer = true
},
handleSizeChange(val) {
this.msg.pageSize = val
......
<style>
.myClue{
height: 100%;
}
.myClue .title{
padding: 10px 20px;
font-size: 14px;
color: #333;
}
.title .iconfont{
display: inline-block;
font-size: 12px;
padding: 6px;
color: #fff;
margin-right: 10px;
}
.myClue .query-box{
padding: 15px 20px;
}
.myClue .title .tips{
cursor: pointer;
font-size: 12px;
color: white;
background-color: #cbcbcb;
display: inline-block;
width: 13px;
height: 13px;
border-radius: 50%;
text-align: center;
line-height: 13px;
margin-left: 5px;
}
</style>
<template>
<div class="myClue">
<div class="title">
<i class="iconfont iconxiansuo" style="background-color: rgb(112, 74, 253)"></i>
<span>分配给我的线索</span>
<el-tooltip class="item" effect="dark" content="转移之后未跟进的线索" placement="top">
<span class="tips">?</span>
</el-tooltip>
</div>
<div class="query-box">
<el-select size="mini" v-model="msg.ToDayContactType" @change="getList">
<el-option :key="1" label="待跟进" :value="1"> </el-option>
<el-option :key="2" label="已跟进" :value="2"> </el-option>
</el-select>
</div>
<div>
<el-table
v-loading="loading"
stripe
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
row-class-name="font-size-12"
@selection-change="handleSelectionChange">
<el-table-column fixed type="selection" width="40"></el-table-column>
<el-table-column
prop="CustomerName"
label="线索名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerName"
label="线索来源"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerLevelStr"
label="客户级别"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerSourceTypeStr"
label="客户来源"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="Contact"
label="联系人"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="ContactNumber"
label="联系电话"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="NextContantTime"
label="下次联系时间"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="Remark"
label="备注"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CreateTimestr"
label="创建时间"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="PersonChargeStr"
label="创建人"
show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
data(){
return {
msg: {
ToDayContactType: 1,
pageIndex: 1,
pageSize: 15
},
dataList: [],
loading: false,
selectID: []
}
},
mounted() {
this.getList()
},
methods: {
handleSelectionChange(val) {
this.selectID = val.map(x=>
x.ID
)
},
getList(){
this.loading = true
this.apipost('/api/CustomerAgency/GetFollowUpCluePageList', this.msg, res=>{
if (res.data.resultCode == 1) {
this.loading = false
this.dataList = res.data.data.pageData
} else {
this.loading = false
}
})
}
}
}
</script>
\ No newline at end of file
<style>
.myCustomer{
height: 100%;
}
.myCustomer .title{
padding: 10px 20px;
font-size: 14px;
color: #333;
}
.myCustomer .title .iconfont{
display: inline-block;
font-size: 12px;
padding: 6px;
color: #fff;
margin-right: 10px;
}
.myCustomer .query-box{
padding: 15px 20px;
}
.myCustomer .title .tips{
cursor: pointer;
font-size: 12px;
color: white;
background-color: #cbcbcb;
display: inline-block;
width: 13px;
height: 13px;
border-radius: 50%;
text-align: center;
line-height: 13px;
margin-left: 5px;
}
</style>
<template>
<div class="myCustomer">
<div class="title">
<i class="iconfont iconkehu" style="background-color: rgb(25, 181, 246)"></i>
<span>分配给我的客户</span>
<el-tooltip class="item" effect="dark" content="转移、领取、分配之后未跟进的客户,默认显示自己负责的客户" placement="top">
<span class="tips">?</span>
</el-tooltip>
</div>
<div class="query-box">
<el-select size="mini" v-model="msg.ToDayContactType" @change="getList">
<el-option :key="1" label="待跟进" :value="1"> </el-option>
<el-option :key="2" label="已跟进" :value="2"> </el-option>
</el-select>
</div>
<div>
<el-table
v-loading="loading"
stripe
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
row-class-name="font-size-12"
@selection-change="handleSelectionChange">
<el-table-column fixed type="selection" width="40"></el-table-column>
<el-table-column
prop="CustomerName"
label="客户名称"
show-overflow-tooltip>
<template slot-scope="scope">
<p @click="openDetails(scope)" class="font-color-link cp">{{scope.row.CustomerName}}</p>
</template>
</el-table-column>
<el-table-column
prop="CustomerLevelStr"
label="客户级别"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerSourceTypeStr"
label="客户来源"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="Contact"
label="联系人"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="ContactNumber"
label="联系电话"
show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
data(){
return {
msg: {
ToDayContactType: 1,
pageIndex: 1,
pageSize: 15
},
dataList: [],
loading: false,
selectID: []
}
},
mounted() {
this.getList()
},
methods: {
openDetails(scope){
this.MsgBus.$emit('openCustomerWin', scope.row)
},
handleSelectionChange(val) {
this.selectID = val.map(x=>
x.ID
)
},
getList(){
this.loading = true
this.apipost('/api/CustomerAgency/GetFollowUpPageList', this.msg, res=>{
if (res.data.resultCode == 1) {
this.loading = false
this.dataList = res.data.data.pageData
} else {
this.loading = false
}
})
}
}
}
</script>
\ No newline at end of file
<style>
.todayCustomer{
height: 100%;
}
.todayCustomer .title{
padding: 10px 20px;
font-size: 14px;
color: #333;
}
.title .iconfont{
display: inline-block;
font-size: 12px;
padding: 6px;
color: #fff;
margin-right: 10px;
}
.todayCustomer .query-box{
padding: 15px 20px;
}
.todayCustomer .title .tips{
cursor: pointer;
font-size: 12px;
color: white;
background-color: #cbcbcb;
display: inline-block;
width: 13px;
height: 13px;
border-radius: 50%;
text-align: center;
line-height: 13px;
margin-left: 5px;
}
</style>
<template>
<div class="todayCustomer">
<div class="title">
<i class="iconfont iconcompany" style="background-color: rgb(35, 98, 251)"></i>
<span>今日需联系客户</span>
<el-tooltip class="item" effect="dark" content="下次跟进时间为今日的客户" placement="top">
<span class="tips">?</span>
</el-tooltip>
</div>
<div class="query-box">
<el-select size="mini" v-model="msg.ToDayContactType" @change="getList">
<el-option :key="1" label="今日需联系的" :value="1"> </el-option>
<el-option :key="2" label="已逾期" :value="2"> </el-option>
<el-option :key="3" label="已联系" :value="3"> </el-option>
</el-select>
<el-select size="mini" v-model="msg.WhereType" style="width: 120px;margin-left: 10px;" @change="getList">
<el-option :key="1" label="我的" :value="1"> </el-option>
<el-option :key="2" label="下属的" :value="2"> </el-option>
</el-select>
</div>
<div>
<el-table
v-loading="loading"
stripe
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
row-class-name="font-size-12">
<el-table-column
prop="CustomerName"
label="客户名称"
show-overflow-tooltip>
<template slot-scope="scope">
<p @click="openDetails(scope)" class="font-color-link cp">{{scope.row.CustomerName}}</p>
</template>
</el-table-column>
<el-table-column
prop="CustomerLevelStr"
label="客户级别"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="CustomerSourceTypeStr"
label="客户来源"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="Contact"
label="联系人"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="ContactNumber"
label="联系电话"
show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
data(){
return {
msg: {
ToDayContactType: 1,
WhereType: 1,
pageIndex: 1,
pageSize: 15
},
dataList: [],
loading: false
}
},
mounted() {
this.getList()
},
methods: {
openDetails(scope){
this.MsgBus.$emit('openCustomerWin', scope.row)
},
getList(){
this.loading = true
this.apipost('/api/CustomerAgency/GetToDayContactPageList', this.msg, res=>{
if (res.data.resultCode == 1) {
this.loading = false
this.dataList = res.data.data.pageData
} else {
this.loading = false
}
})
}
}
}
</script>
\ No newline at end of file
<style>
.waitMatter{
height: 100%;
}
.waitMatter h1{
font-weight: bold;
font-size: 18px;
padding-bottom: 10px;
}
.waitMatter .waitMatter-main{
position: relative;
height: calc(100% - 50px);
}
.waitMatter .waitMatter-main .left{
padding: 20px 0;
width: 200px;
font-size: 14px;
background-color: #fff;
position: absolute;
top: 0;
left: 0;
bottom: 0;
z-index: 1;
border: 1px solid #e6e6e6;
overflow-y: auto;
}
.waitMatter .waitMatter-main .right{
margin-left: 210px;
height: 100%;
overflow: hidden;
background-color: #fff;
border: 1px solid #e6e6e6;
}
.waitMatter .waitMatter-main .left .item{
padding: 12px 20px;
position: relative;
cursor: pointer;
}
.waitMatter .waitMatter-main .left .item.active, .waitMatter .waitMatter-main .left .item:hover{
background-color: #f6f8fa;
}
.waitMatter .waitMatter-main .left .item::before{
content: " ";
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 2px;
background-color: #2362fb;
opacity: 0;
}
.waitMatter .waitMatter-main .left .item.active::before{
opacity: 1;
}
.waitMatter .waitMatter-main .left .iconfont{
display: inline-block;
font-size: 12px;
padding: 6px;
color: #fff;
}
.waitMatter .waitMatter-main .left .lable{
color: #333;
font-size: 13px;
margin-left: 10px;
}
</style>
<template>
<div class="waitMatter">
<h1>待办事项</h1>
<div class="waitMatter-main">
<div class="left">
<div v-for="(item, index) in menuList" :key="index" @click="changeMenuList(item, index)" class="item" :class="[index === activeIndex ? 'active' : '']"><i :class="item.class" :style="item.style"></i><span class="lable">{{item.text}}</span></div>
</div>
<div class="right">
<todayCustomer v-if="activeIndex === 0" />
<myClue v-if="activeIndex === 1" />
<myCustomer v-if="activeIndex === 2" />
</div>
</div>
</div>
</template>
<script>
import todayCustomer from "./todayCustomer";
import myClue from "./myClue";
import myCustomer from "./myCustomer";
export default {
components: {
todayCustomer,
myClue,
myCustomer
},
data(){
return {
activeIndex: 0,
menuList: [
{
text: '今日需联系客户',
class: 'iconfont iconcompany',
style: 'background-color: rgb(35, 98, 251);'
},{
text: '分配给我的线索',
class: 'iconfont iconxiansuo',
style: 'background-color: rgb(112, 74, 253);'
},{
text: '分配给我的客户',
class: 'iconfont iconkehu',
style: 'background-color: rgb(25, 181, 246);'
},{
text: '待审核合同',
class: 'iconfont iconcompany',
style: 'background-color: rgb(253, 91, 74);'
},{
text: '待审核回款',
class: 'iconfont iconcompany',
style: 'background-color: rgb(255, 185, 64);'
},{
text: '待回款提醒',
class: 'iconfont iconcompany',
style: 'background-color: rgb(255, 122, 56);'
},{
text: '即将到期的合同',
class: 'iconfont iconcompany',
style: 'background-color: rgb(35, 98, 251);'
},
]
}
},
mounted() {
},
methods: {
changeMenuList(item, index){
this.activeIndex = index
},
}
}
</script>
\ No newline at end of file
This diff is collapsed.
......@@ -8,6 +8,8 @@ import customerManageDemo from "./components/customerManage/customerManageDemo"
import businessManagement from "./components/businessManagement/businessManagement"
import clueManagement from "./components/clueManagement/clueManagement"
import contactsManagement from "./components/contactsManagement/contactsManagement"
import watersManagement from "./components/watersManagement/watersManagement"
import waitMatter from "./components/waitMatter/waitMatter"
Vue.use(Router);
export default new Router({
......@@ -91,6 +93,22 @@ export default new Router({
meta: {
title: "联系人管理"
}
},
{
path: "/watersManagement",
name: "watersManagement",
component: watersManagement,
meta: {
title: "公海管理"
}
},
{
path: "/waitMatter",
name: "waitMatter",
component: waitMatter,
meta: {
title: "待办事项"
}
}
]
},
......
......@@ -35,7 +35,7 @@
}
.template-div{
position: absolute;
top: 90px;
top: 80px;
left: 0;
right: 0;
bottom: 0;
......@@ -54,6 +54,14 @@
box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
background: #555;
}
.main .el-tag.el-tag--info{
background-color: rgba(0,0,0,0);
border-color: rgba(0,0,0,0);
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow:ellipsis;
}
</style>
<template>
<div class="main">
......@@ -68,23 +76,194 @@
<router-view/>
</div>
</div>
<!-- 添加商机弹窗 -->
<div v-if="dialogBusinessVisible">
<addBusinessBox name="新建商机" :ID="0" :CustomerId="CustomerId" :ContactId="ContactId" type="1"/>
</div>
<!-- 客户信息抽屉 -->
<el-drawer
:with-header="false"
size='70%'
:visible.sync="drawer"
direction="rtl"
:before-close="handleClose">
<customerInfoBox :CustomerId="CustomerId" @transferS="transfer" @watersS="waters" @editCustS="editCust"/>
</el-drawer>
<el-dialog :visible.sync="transferVisible" :close-on-click-modal="false" width="450px" custom-class="transfer-box add-box add-box2">
<div class="add-tit" slot="title">
<p><span></span>移交联系人</p>
<span icon="el-icon-close"></span>
</div>
<el-form :model="transferMsg" ref="form" class="MyEditForm" >
<div class="MyEditForm-item">
<el-form-item label="变更负责人为" class="label-pad-left">
<el-select
filterable
v-model="transferMsg.EmpId" placeholder="请选择">
<el-option
v-for="item in EmployeeList"
:label='item.EmName'
:value='item.EmployeeId'
:key='item.EmployeeId'>
</el-option>
</el-select>
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add-box-btn" @click="transfer(2)">确 定</el-button>
<el-button class="add-box-btn add-box-cancel" @click="transferVisible = false">取 消</el-button>
</div>
</el-dialog>
<!-- 编辑客户 -->
<div v-if="dialogCustomerVisible">
<customerDialogBox :name="dialogTableVisibleName" :CustomerId="CustomerId"/>
</div>
</div>
</template>
<script>
import HomeNavLeft from '../components/HomeNav/HomeNavLeft'
import HomeNavTop from '../components/HomeNav/HomeNavTop'
import addBusinessBox from "../components/businessManagement/addBusinessBox";
import customerDialogBox from "../components/dialogModel/customerDialogBox";
import customerInfoBox from "../components/assembly/customerInfoBox";
export default {
components: {HomeNavLeft, HomeNavTop},
components: {HomeNavLeft, HomeNavTop, addBusinessBox, customerDialogBox, customerInfoBox},
data () {
return {
dialogBusinessVisible: false,
CustomerId: 0,
ContactId: 0,
drawer: false,
CustomerId: 0,
CustomerName: '',
transferVisible: false,
EmployeeList: [],
dialogCustomerVisible: false,
dialogTableVisibleName: '新增客户',
transferMsg: {
ContactIds: [],
EmpId: '',
},
businessIdsArr: [],
multipleSelection: []
}
},
mounted () {
this.userInfo = this.getLocalStorage();
this.Employee()
let $this= this
this.MsgBus.$on('openCustomerWin', function (row) {
$this.CustomerId = row.CustomerId
$this.CustomerName = row.CustomerName
$this.drawer = true
})
this.MsgBus.$on('addBusinessBoxOpen', function(CustomerId, ContactId){
$this.CustomerId = CustomerId
$this.ContactId = ContactId
$this.dialogBusinessVisible = true
})
this.MsgBus.$on('closeBusinessDialogBox', function (){
$this.dialogBusinessVisible = false
})
this.MsgBus.$on('closeCustomerDialogBox', function (){
$this.dialogCustomerVisible = false
})
},
methods: {
editCust(){
this.dialogTableVisibleName = '修改客户'
this.dialogCustomerVisible = true
},
Employee(){
let msg = {
RB_Group_id: this.userInfo.RB_Group_id,
BranchId:-1,
DepartmentId:0,
PostId:0,
IsLeave:0,
}
this.apipost2(
"admin_get_EmployeeGetList",
this.msg,
res => {
if (res.data.resultCode == 1) {
this.EmployeeList = res.data.data;
} else {
}
},
err => {}
);
},
handleClose(done) {
done();
},
// 放入公海
waters(type){
let tips = '是否放入公海?'
if(type === 1) {
tips = '是否把客户“'+ this.CustomerName + '”放入公海?'
this.multipleSelection.push(this.CustomerId)
}
this.$confirm(tips, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let str = ''
this.multipleSelection.map((x, i)=>{
str = str + x + ','
})
this.apipost('/api/Customer/RemoveMyCustomer', {CustomerIds: str.substring(0, str.length - 1)}, res=>{
if (res.data.resultCode == 1) {
if (type === 1) {} {
this.drawer = false
}
this.multipleSelection = []
this.$message.success(res.data.message);
this.getList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
// 转移
transfer(type){
if (type !== 2) {
if (type === 3) {
this.businessIdsArr.push(this.CustomerId)
}
this.transferVisible = true
} else {
if (this.transferMsg.EmpId === '') {
return this.$message.error('请选择变更负责人!')
}
let str = ''
this.businessIdsArr.map((x, i)=>{
str = str + x + ','
})
this.transferMsg.ContactIds = str.substring(0, str.length - 1)
this.apipost('/api/Customer/TransferCustomerContact', this.transferMsg, res=>{
if (res.data.resultCode == 1) {
this.businessIdsArr = []
this.transferVisible = false
if (type === 3) {} {
this.drawer = false
}
this.$message.success(res.data.message);
this.getList()
this.transferMsg = {
ContactIds: [],
EmpId: '',
}
}
})
}
},
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment