Commit 92b88e3c authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/huaguohao/crm

parents ca09eb14 71ca592a
......@@ -146,18 +146,21 @@
v-if="queryType[0].show"
show-overflow-tooltip>
<template slot-scope="scope">
<p @click="openDetails(scope)" class="font-color-link cp">{{scope.row.ClueName}}</p>
<p @click="openDetails(scope)" class="font-color-link cp">{{msg.CustomerType===1?scope.row.ClueName:scope.row.CustomerName}}</p>
</template>
</el-table-column>
<el-table-column prop="CustomerSourceTypeStr" label="线索来源" v-if="queryType[1].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerSource" label="来源细分" v-if="queryType[2].show && msg.CustomerType === 1" show-overflow-tooltip>
<!-- CustomerSource 其他的来源 -->
<el-table-column prop="SourceAccountName" label="来源细分" v-if="queryType[2].show && msg.CustomerType === 1" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="ClueDemand" label="需求" v-if="queryType[3].show && msg.CustomerType === 1" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerLevelStr" label="客户级别" sortable width="100" v-if="queryType[4].show && msg.CustomerType === 0" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerName" label="联系人" v-if="queryType[5].show" show-overflow-tooltip>
<el-table-column prop="Contact" label="联系人" v-if="queryType[5].show&&msg.CustomerType!=1" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerName" label="联系人" v-if="queryType[5].show&&msg.CustomerType===1" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="MobilePhone" label="联系电话" sortable v-if="queryType[6].show" show-overflow-tooltip>
</el-table-column>
......@@ -255,6 +258,7 @@
},
data() {
return {
ruleList:[],
guestDialogBoxShow: false,
drawer2: false,
activeMenu: 1,
......@@ -583,6 +587,37 @@
this.multipleSelection.push(this.CustomerId)
}
this.transferVisible = true
return
if(this.ruleList.length==0){
this.transferVisible = true
}else{
let tips = '系统已开启自动分配,无法指定推送,是否继续推送?'
this.$confirm(tips, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let ids
if(this.CustomerId){
ids = this.CustomerId
}else{
ids = this.multipleSelection.join(',')
}
this.apipost('/api/Customer/AutoTransferCustomer', {
IDs: ids
}, res=>{
if (res.data.resultCode == 1) {
this.$message.success(res.data.message);
this.getList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
}
} else {
if (this.transferMsg.EmpId === '') {
return this.$message.error('请选择变更负责人!')
......@@ -635,6 +670,15 @@
this.drawer2 = true
}
},
// 获取是否开启规则
GetCustomerAllotRule(){
this.apipost('/api/Customer/GetCustomerAllotRule', {}, res=>{
if (res.data.resultCode == 1) {
this.ruleList = res.data.data.EmpList
}
})
},
handleSizeChange(val) {
this.msg.pageSize = val
this.getList();
......@@ -656,6 +700,11 @@
this.loading = false;
}
})
if(this.msg.CustomerType==1){
// 获取是否开启规则
this.GetCustomerAllotRule()
}
},
handleSelectionChange(val) {
this.multipleSelection = val.map(x =>
......
......@@ -18,110 +18,6 @@
padding: 0 20px;
background-color: #fff;
}
/* .customerManage .tools{
padding-top: 20px;
} */
.vux-flexbox{
width: 100%;
text-align: left;
display: flex;
box-align: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.vux-flex-row {
box-direction: row;
box-orient: horizontal;
-webkit-box-orient: horizontal;
-ms-flex-direction: row;
flex-direction: row;
}
.el-table__fixed-body-wrapper table{
padding-bottom: 8px!important;
}
.scene-container {
position: relative;
width: 180px;
}
.scene-list{
max-height: 240px;
overflow-y: auto;
font-size: 12px;
margin-bottom: 10px;
}
.scene-list .scene-list-item{
color: #333;
padding: 10px 15px;
cursor: pointer;
background-color: #fff;
}
.scene-list .scene-list-item-select, .scene-list .scene-list-item::before {
background-color: #f7f8fa;
color: #2362fb;
}
.handle-interval{
border-top: 1px solid #efefef;
}
.handle-button{
padding: 6px 20px;
font-size: 12px;
cursor: pointer;
color: #2362fb;
}
.handle-button .handle-button-icon{
margin-right: 8px;
margin-top: 3px;
}
.handle-button .handle-button-name{
font-size: 12px;
}
.popover-class{
padding: 0 !important;
}
.select-no{
display: none;
}
.scene-wrapper{
min-height: 50px;
background: #fff;
border-top: 1px solid #e1e1e1;
font-size: 13px;
overflow-x: scroll;
color: #aaa;
margin-top: 20px;
}
.scene-wrapper .list, .scene-wrapper{
width: 100%;
display: flex;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.scene-wrapper .list{
-ms-flex-negative: 0;
flex-shrink: 0;
}
.scene-wrapper .list .list-item{
height: 30px;
padding: 0 10px;
margin: 10px 15px 0 0;
border: 1px solid #e1e1e1;
border-radius: 3px;
-ms-flex-negative: 0;
flex-shrink: 0;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.scene-wrapper .list .list-item .icon{
margin-left: 20px;
cursor: pointer;
}
</style>
<template>
<div class="customerManage">
......@@ -130,193 +26,39 @@
:class="selectTitle==item.id?'active':''"
@click="clickTitle(item)">{{item.title}}</div>
</div>
<div class="tools"></div>
<div class="page-content">
<el-table
v-loading="loading"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:height="sceneList.length > 0 ? '600' : '660'"
border
row-class-name="font-size-12">
<el-table-column
fixed
prop="CustomerName"
label="渠道"
width="120"
align="center"
show-overflow-tooltip>
<template slot-scope="scope">
<p class="cp">{{scope.row.Name}}</p>
</template>
</el-table-column>
<el-table-column
prop="IsAppLogin"
label="账号"
show-overflow-tooltip>
<template slot-scope="scope">
<div class="SelectedAccount_box">
<el-tag class="SelectedAccount"
v-for="(item,index) in scope.row.list"
:key="index" closable
@click="editAccount(item)"
@close="handleClose(item)">{{item.Name}}</el-tag>
</div>
</template>
</el-table-column>
<el-table-column
align="center"
prop="IsCarefor"
fixed="right"
width="100"
label="新建">
<template slot-scope="scope">
<el-button class="button-new-tag" size="small" @click="addAccount(scope.row)">+ 账号 </el-button>
</template>
</el-table-column>
</el-table>
</div>
<div>
</div>
<!-- 添加账号弹窗 -->
<div v-if="addCustomerShow">
<addCustomer :obj="newObj" @addCustomerOk="addCustomerOk"/>
</div>
<!-- 客户来源 -->
<customerSource v-if="selectTitle==1"></customerSource>
<!-- 分配规则 -->
<distributionRules v-if="selectTitle==2"></distributionRules>
</div>
</template>
<script>
import addCustomer from "../dialogModel/addCustomer";
import customerSource from "./customerSource";
import distributionRules from "./distributionRules";
export default {
components: {
addCustomer
customerSource,
distributionRules
},
data() {
return {
newObj:{},
list:[],
selectTitle:1,
headerList:[
{title:'客户来源',id:1}
],
visible: false,
CustomerId: 0,
CustomerIdStr: '',
addCustomerShow: false,
loading:false,
tableData:[],
sceneList:[]
{title:'客户来源',id:1},
{title:'分配规则',id:2},
]
};
},
mounted() {
this.getList()
let $this = this
this.MsgBus.$on('closeCustomerDialogBox', function (){
$this.dialogTableVisible = false
})
this.MsgBus.$on('closeaaddCustomer', function (){
$this.addCustomerShow = false
})
},beforeDestroy() {
this.MsgBus.$off('sceneSave');
this.MsgBus.$off('editScene');
},
methods: {
addCustomerOk(){
this.addCustomerShow = false
this.getList()
},
editAccount(row){
this.newObj = {
ID:row.ID,
SNO:row.SNO,
Name:row.Name,
title: '编辑账号'
}
setTimeout(()=>{
this.addCustomerShow = true
},100)
},
addAccount(row){
this.newObj = {
ID:row.ID,
title: '新建账号'
}
setTimeout(()=>{
this.addCustomerShow = true
},100)
},
clickTitle(item){
this.selectTitle = item.id
},
//删除
handleClose(row){
let tips = '确定将这条账号删除?'
tips = '是否把账号“'+ row.Name + '”删除?'
this.$confirm(tips, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.apipost('/api/Customer/DelGuestSourceAccount', {
SAccountId: row.ID
}, res=>{
if (res.data.resultCode == 1) {
this.$message.success(res.data.message);
this.getList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
getList: function (){
this.tableData = []
this.loading = true
this.apipost('/api/Customer/GetCustomerSourceEnum', {}, res=>{
if (res.data.resultCode == 1) {
let data = res.data.data;
let addList = function(arr) {
arr.forEach(item => {
item.list = []
});
};
addList(data);
this.tableData = res.data.data;
this.loading = false;
this.getGetGuestSourceAccountList()
}
})
beforeDestroy() {
},
getGetGuestSourceAccountList(){
this.apipost('/api/Customer/GetGuestSourceAccountList', {}, res=>{
if (res.data.resultCode == 1) {
this.list = res.data.data
for(let i=0;i<this.tableData.length;i++){
for(let j=0;j<this.list.length;j++){
if(this.tableData[i].ID==this.list[j].SNO){
let obj = {
ID: this.list[j].ID,
Name: this.list[j].Name,
SNO: this.list[j].SNO,
UpdateBy: this.list[j].UpdateBy,
UpdateDate: this.list[j].UpdateDate,
}
this.tableData[i].list.push(obj)
}
}
}
methods: {
}
})
clickTitle(item){
this.selectTitle = item.id
},
}
};
......
<style>
@import '../../assets/css/customerManage.css';
.SelectedAccount_box{
display: flex;
flex-wrap: wrap;
}
.SelectedAccount{
margin: 5px;
}
.vux-flexbox{
width: 100%;
text-align: left;
display: flex;
box-align: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.vux-flex-row {
box-direction: row;
box-orient: horizontal;
-webkit-box-orient: horizontal;
-ms-flex-direction: row;
flex-direction: row;
}
.el-table__fixed-body-wrapper table{
padding-bottom: 8px!important;
}
.scene-container {
position: relative;
width: 180px;
}
.scene-list{
max-height: 240px;
overflow-y: auto;
font-size: 12px;
margin-bottom: 10px;
}
.scene-list .scene-list-item{
color: #333;
padding: 10px 15px;
cursor: pointer;
background-color: #fff;
}
.scene-list .scene-list-item-select, .scene-list .scene-list-item::before {
background-color: #f7f8fa;
color: #2362fb;
}
.handle-interval{
border-top: 1px solid #efefef;
}
.handle-button{
padding: 6px 20px;
font-size: 12px;
cursor: pointer;
color: #2362fb;
}
.handle-button .handle-button-icon{
margin-right: 8px;
margin-top: 3px;
}
.handle-button .handle-button-name{
font-size: 12px;
}
.popover-class{
padding: 0 !important;
}
.select-no{
display: none;
}
.scene-wrapper{
min-height: 50px;
background: #fff;
border-top: 1px solid #e1e1e1;
font-size: 13px;
overflow-x: scroll;
color: #aaa;
margin-top: 20px;
}
.scene-wrapper .list, .scene-wrapper{
width: 100%;
display: flex;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.scene-wrapper .list{
-ms-flex-negative: 0;
flex-shrink: 0;
}
.scene-wrapper .list .list-item{
height: 30px;
padding: 0 10px;
margin: 10px 15px 0 0;
border: 1px solid #e1e1e1;
border-radius: 3px;
-ms-flex-negative: 0;
flex-shrink: 0;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.scene-wrapper .list .list-item .icon{
margin-left: 20px;
cursor: pointer;
}
</style>
<template>
<div class="customerManage">
<div class="page-content">
<el-table
v-loading="loading"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:height="sceneList.length > 0 ? '600' : '660'"
border
row-class-name="font-size-12">
<el-table-column
fixed
prop="CustomerName"
label="渠道"
width="120"
align="center"
show-overflow-tooltip>
<template slot-scope="scope">
<p class="cp">{{scope.row.Name}}</p>
</template>
</el-table-column>
<el-table-column
prop="IsAppLogin"
label="账号"
show-overflow-tooltip>
<template slot-scope="scope">
<div class="SelectedAccount_box">
<el-tag class="SelectedAccount"
v-for="(item,index) in scope.row.list"
:key="index" closable
@click="editAccount(item)"
@close="handleClose(item)">{{item.Name}}</el-tag>
</div>
</template>
</el-table-column>
<el-table-column
align="center"
prop="IsCarefor"
fixed="right"
width="100"
label="新建">
<template slot-scope="scope">
<el-button class="button-new-tag" size="small" @click="addAccount(scope.row)">+ 账号 </el-button>
</template>
</el-table-column>
</el-table>
</div>
<div>
</div>
<!-- 添加账号弹窗 -->
<div v-if="addCustomerShow">
<addCustomer :obj="newObj" @addCustomerOk="addCustomerOk"/>
</div>
</div>
</template>
<script>
import addCustomer from "../dialogModel/addCustomer";
export default {
components: {
addCustomer
},
data() {
return {
newObj:{},
list:[],
visible: false,
CustomerId: 0,
CustomerIdStr: '',
addCustomerShow: false,
loading:false,
tableData:[],
sceneList:[]
};
},
mounted() {
this.getList()
let $this = this
this.MsgBus.$on('closeaaddCustomer', function (){
$this.addCustomerShow = false
})
},
beforeDestroy() {
this.MsgBus.$off('sceneSave');
this.MsgBus.$off('editScene');
},
methods: {
addCustomerOk(){
this.addCustomerShow = false
this.getList()
},
editAccount(row){
this.newObj = {
ID:row.ID,
SNO:row.SNO,
Name:row.Name,
title: '编辑账号'
}
setTimeout(()=>{
this.addCustomerShow = true
},100)
},
addAccount(row){
this.newObj = {
ID:row.ID,
title: '新建账号'
}
setTimeout(()=>{
this.addCustomerShow = true
},100)
},
//删除
handleClose(row){
let tips = '确定将这条账号删除?'
tips = '是否把账号“'+ row.Name + '”删除?'
this.$confirm(tips, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.apipost('/api/Customer/DelGuestSourceAccount', {
SAccountId: row.ID
}, res=>{
if (res.data.resultCode == 1) {
this.$message.success(res.data.message);
this.getList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
getList: function (){
this.tableData = []
this.loading = true
this.apipost('/api/Customer/GetCustomerSourceEnum', {}, res=>{
if (res.data.resultCode == 1) {
let data = res.data.data;
let addList = function(arr) {
arr.forEach(item => {
item.list = []
});
};
addList(data);
this.tableData = res.data.data;
this.loading = false;
this.getGetGuestSourceAccountList()
}
})
},
getGetGuestSourceAccountList(){
this.apipost('/api/Customer/GetGuestSourceAccountList', {}, res=>{
if (res.data.resultCode == 1) {
this.list = res.data.data
for(let i=0;i<this.tableData.length;i++){
for(let j=0;j<this.list.length;j++){
if(this.tableData[i].ID==this.list[j].SNO){
let obj = {
ID: this.list[j].ID,
Name: this.list[j].Name,
SNO: this.list[j].SNO,
UpdateBy: this.list[j].UpdateBy,
UpdateDate: this.list[j].UpdateDate,
}
this.tableData[i].list.push(obj)
}
}
}
}
})
},
}
};
</script>
<style scoped>
.distributionRules{
}
.distributionRules_title{
font-weight: bold;
font-size: 18px;
font-family: perfectFont;
padding: 20px 0;
}
.page-content{
background-color: #fff;
padding: 20px;
}
.distributionRules_text{
padding: 0 0 20px 0;
}
.text-negative{
color: #f5576c
}
.distributionRules_num{
display: flex;
justify-content: space-between;
}
.distributionRules_num div{
flex: 1;
}
.dataText{
display: flex;
flex-wrap: wrap;
padding: 10px 0;
}
.dataText_text{
margin-right: 10px;
margin-bottom: 10px;
}
.select-radio{
display: flex;
align-items: center;
}
</style>
<template>
<div class="customerManage">
<h1 class="distributionRules_title">分配给以下部门/成员</h1>
<div class="page-content">
<div class="distributionRules_text">
<span>使用部门/成员</span>
<span class="text-negative">*</span>
</div>
<div class="distributionRules_num">
<div>
<el-button @click="clickSelectPeople">选择部门/成员</el-button>
</div>
<div><span>已选择:{{list.length}}</span></div>
</div>
<div class="dataText">
<el-tag v-for="(item,index) in list" :key="index"
class="dataText_text">{{item.EmName}}
</el-tag>
</div>
<h1 class="distributionRules_title">设置分配规则</h1>
<div class="select-radio">
<span>选择设置分配:</span>
<el-radio-group v-model="msg.SNO">
<el-radio v-for="(item,index) in radioList"
:key="index"
:label="item.id">{{item.name}}</el-radio>
</el-radio-group>
</div>
<br/><br/>
<el-button class="add-box-btn add-box-cancel" @click="saveNow" :disabled="disabledOff">立即保存</el-button>
</div>
<!-- 添加账号弹窗 -->
<div v-if="addDistributionRulesShow">
<addDistributionRules :obj="newObj" @addCustomerOk="addCustomerOk"/>
</div>
</div>
</template>
<script>
import addDistributionRules from "../dialogModel/addDistributionRules";
export default {
components: {
addDistributionRules
},
data() {
return {
disabledOff: false,
newObj:{},
radioList:[
{name:'顺序分配',id:1},
{name:'随机分配',id:2},
],
list:[],
addDistributionRulesShow: false,
loading:false,
tableData:[],
msg:{
SNO:0,
Content:''
}
};
},
mounted() {
this.GetCustomerAllotRule()
let $this = this
this.MsgBus.$on('closeaaddDistributionRules', function (){
$this.addDistributionRulesShow = false
})
},
beforeDestroy() {
this.MsgBus.$off('sceneSave');
this.MsgBus.$off('editScene');
},
methods: {
saveNow(){
let ids = []
this.list.forEach(item=>{
ids.push(item.EmployeeId)
})
this.msg.Content = ids.join(',')
console.log(this.msg)
this.disabledOff = true
this.apipost('/api/Customer/SetCustomerAllotRule', this.msg, res=>{
if (res.data.resultCode == 1) {
this.$message.success(res.data.message)
this.disabledOff = false
} else {
this.$message.error(res.data.message)
this.disabledOff = false
}
})
},
addCustomerOk(){
this.addDistributionRulesShow = false
},
clickSelectPeople(){
this.addDistributionRulesShow = true
},
// 获取规则详情
GetCustomerAllotRule(){
this.apipost('/api/Customer/GetCustomerAllotRule', {}, res=>{
if (res.data.resultCode == 1) {
this.msg = {
SNO: res.data.data.SNO,
Content: res.data.data.Content
};
this.list = res.data.data.EmpList
this.newObj = res.data.data
}
})
},
}
};
</script>
<style scoped>
.addDistributionRules .add-tit{
display: flex;
justify-content: space-between;
align-items: center;
height: 20px;
}
.addDistributionRules .add-tit p{
display: flex;
align-items: center;
font-weight: bold;
color:rgba(17,17,17,1);
font-size:14px;
}
.addDistributionRules .add-tit p span{
display: inline-block;
width:6px;
height:6px;
background:rgba(13,36,129,1);
border-radius:50%;
margin-right: 10px;
}
.addDistributionRules .el-dialog__header{
padding: 15px 20px;
background:rgba(255,255,255,1);
}
.add_box{
display: flex;
flex-direction: row;
justify-content: space-between;
}
.addSearch{
display: flex;
flex-direction: column;
}
.addSearch-left{
height: 40px;
flex: 1;
display: flex;
align-items: center;
}
.addSearch-left span{
flex-shrink: 0;
}
.addSearch-s{
height: 40px;
line-height: 4px;
display: flex;
align-items: center;
}
.addCenter{
margin-left: 20px;
flex: 1;
display: flex;
flex-direction: column;
}
.addCenter-left,.addCenter-right{
flex: 1;
margin-top: 20px;
background-color: #fff;
padding: 10px;
}
.addCenter-left,.addCenter-right{
min-height: 400px;
max-height: 400px;
overflow: hidden;
}
.addCenter-right-box{
width: 50%;
float: left;
margin-bottom: 10px;
}
.addCenter-hidden{
min-height: 400px;
max-height: 400px;
overflow: scroll;
}
</style>
<template>
<el-dialog @closed="closedDialog" :modal="false" :visible.sync="dialogTableVisible" width="600px" :close-on-click-modal="false" class="addCustomer">
<div class="add-tit" slot="title">
<p><span></span>分配规则</p>
<span icon="el-icon-close"></span>
</div>
<div class="add_box">
<div class="addSearch">
<div class="addSearch-left">
<span>选择:</span>
<el-input placeholder="关键词进行过滤" v-model="filterText"/>
</div>
<div class="addCenter-left">
<div class="addCenter-hidden">
<el-tree
v-loading="loading"
class='ApprovalProcessBg'
:data="memberList"
show-checkbox
:filter-node-method="filterNode"
:default-checked-keys="memberSetCheckedUserKeys"
ref="tree"
:props="defaultProps"
:render-after-expand="false"
node-key="DepartmentId"
@check-change="handleNodeChange">
</el-tree>
</div>
</div>
</div>
<div class="addCenter">
<div class="addSearch-s">
<span>已选:</span>
</div>
<div class="addCenter-right">
<div class="addCenter-hidden">
<div class="addCenter-right-box"
v-for="(item,index) in showMember"
:key="index">
<el-tag closable @close="mySetCheckedKeys(item.EmployeeId)">
{{item.EmName}}
</el-tag>
</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add_box-btn" @click="clickSure">确 定</el-button>
<el-button class="add_box-btn add_box-cancel" @click="dialogTableVisible = false">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
obj:Object
},
data() {
return {
loading:false,
filterText:"",
memberSetCheckedUserKeys:[],
showMember:[],
defaultProps: {
children: 'ChildList',
label: 'DepartmentName',
},
memberList:[],
dialogTableVisible: false,
};
},
watch:{
filterText(val) {
this.$refs.tree.filter(val);
}
},
mounted() {
this.getMember()
if(this.obj.EmpList){
this.showMember = this.obj.EmpList
this.showMember.forEach(item=>{
this.memberSetCheckedUserKeys.push(item.EmployeeId)
})
}
let $this = this
setTimeout(()=>{
$this.dialogTableVisible = true
},50)
},
methods: {
// 获取部门成员列表
getMember() {
this.loading = true
this.apipost2('WorkFlow_get_GetTempLateDepartMentEmployee', {}, res => {
this.memberList = res.data.data
this.loading = false
}, err => {})
},
// 删除指定人员
mySetCheckedKeys(id) {
if(this.memberSetCheckedUserKeys.length == 0) return
this.showMember.splice(this.showMember.findIndex(item => item.EmployeeId === id), 1)
this.memberSetCheckedUserKeys.splice(this.memberSetCheckedUserKeys.findIndex(item => item === id), 1)
this.$refs.tree.setCheckedKeys(this.memberSetCheckedUserKeys);
},
filterNode(value, data) {
if (!value) return true;
return data.DepartmentName.indexOf(value) !== -1;
},
handleNodeChange(data, checked) { //操作选中
data.IsCheck = checked;
if(data.Type == 2 && data.IsCheck) { //是员工且选中
let isExsit = false
this.showMember.forEach(x => {
if(x.EmployeeId == data.DepartmentId) {
isExsit = true
return false
}
})
if(!isExsit) {
this.showMember.push({
EmName: data.DepartmentName,
EmployeeId: data.DepartmentId,
Sort: this.showMember.length + 1
})
this.memberSetCheckedUserKeys.push(data.DepartmentId)
}
}
else if(data.Type == 2 && !data.IsCheck) {
if(this.showMember.findIndex(item => item.EmployeeId === data.DepartmentId) != -1) {
this.showMember.splice(this.showMember.findIndex(item => item.EmployeeId === data.DepartmentId), 1)
this.memberSetCheckedUserKeys.splice(this.memberSetCheckedUserKeys.findIndex(item => item === data.DepartmentId), 1)
if(this.showMember.findIndex(item => item.EmployeeId === data.ParentId) != -1) {
this.memberSetCheckedUserKeys.splice(this.memberSetCheckedUserKeys.findIndex(item => item === data.ParentId), 1)
}
}
}
if(data.Type != 2 && data.IsCheck) {
if(this.memberSetCheckedUserKeys.findIndex(item => item === data.DepartmentId) == -1) {
this.memberSetCheckedUserKeys.push(data.DepartmentId)
}
} else if(data.Type == 2 && !data.IsCheck) {
if(this.memberSetCheckedUserKeys.findIndex(item => item === data.DepartmentId) != -1) {
this.memberSetCheckedUserKeys.splice(this.memberSetCheckedUserKeys.findIndex(item => item === data.DepartmentId), 1)
if(this.showMember.findIndex(item => item.EmployeeId === data.ParentId) != -1) {
this.memberSetCheckedUserKeys.splice(this.memberSetCheckedUserKeys.findIndex(item => item === data.ParentId), 1)
}
}
}
},
closedDialog(){
this.MsgBus.$emit('closeaaddDistributionRules')
},
clickSure() {
this.dialogTableVisible = false
},
}
}
</script>
\ No newline at end of file
<style>
.editGuestTeam .add-tit {
display: flex;
justify-content: space-between;
align-items: center;
height: 20px;
}
.editGuestTeam .add-tit p {
display: flex;
align-items: center;
font-weight: bold;
color: rgba(17, 17, 17, 1);
font-size: 14px;
}
.editGuestTeam .add-tit p span {
display: inline-block;
width: 6px;
height: 6px;
background: #409efe;
border-radius: 50%;
margin-right: 10px;
}
.editGuestTeam .el-dialog__header {
padding: 15px 20px;
background: rgba(255, 255, 255, 1);
}
.editGuestTeam .dialog-footer {
text-align: center;
background-color: rgba(248, 250, 251, 1);
padding-bottom: 20px;
}
.editGuestTeam .el-dialog__footer {
padding: 0;
}
.editGuestTeam .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>
<el-dialog @closed="closedDialog" :modal="false" :visible.sync="dialogTableVisible" width="450px"
:close-on-click-modal="false" class="editGuestTeam">
<div class="add-tit" slot="title">
<p><span></span>添加团队成员</p>
<span icon="el-icon-close"></span>
</div>
<div class="form-box">
<el-form :model="form" ref="form" class="MyEditForm">
<div class="MyEditForm-item">
<el-form-item label="成员" class="label-pad-left" prop="ContactDuty">
<el-select multiple filterable v-model="EmpIdsS" 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>
<div class="MyEditForm-item">
<el-form-item label="权限" class="label-pad-left form-check">
<div class="pad-left-10">
<el-radio v-model="form.IsRead" :label="0">只读</el-radio>
<el-radio v-model="form.IsRead" :label="1">读写</el-radio>
</div>
</el-form-item>
</div>
<div class="MyEditForm-item">
<el-form-item label="同时添加至" class="label-pad-left form-check">
<div class="pad-left-10">
<el-checkbox-group v-model="TransferOther">
<el-checkbox :value="4" :label="4">订单</el-checkbox>
<el-checkbox :value="2" :label="2">商机</el-checkbox>
<el-checkbox :value="3" :label="3">合同</el-checkbox>
</el-checkbox-group>
</div>
</el-form-item>
</div>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add-box-btn" @click="submitForm('form')">确 定</el-button>
<el-button class="add-box-btn add-box-cancel" @click="dialogTableVisible = false, resetForm('form')">取 消
</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: ["ID"],
data() {
return {
dialogTableVisible: true,
EmployeeList: [],
EmpIdsS: [],
TransferOther: [],
form: {
CustomerIds: 0,
EmpIds: "",
IsRead: 0,
TransferOther: "",
},
};
},
watch: {},
mounted() {
this.Employee();
let $this = this;
setTimeout(() => {
$this.dialogTableVisible = true;
}, 50);
},
methods: {
closedDialog() {
this.MsgBus.$emit("closeeditGuestTeam");
},
addData() {
this.form.CustomerIds = this.ID;
if (this.EmpIdsS.length < 1) {
return this.$message.error("请选择成员");
} else {
let str = "";
this.EmpIdsS.map((x, i) => {
str = str + x + ",";
});
this.form.EmpIds = str.substring(0, str.length - 1);
}
if (this.TransferOther.length < 1) {
let str2 = "";
this.TransferOther.map((x, i) => {
str2 = str2 + x + ",";
});
this.form.TransferOther = str2.substring(0, str2.length - 1);
}
this.apipost("/api/SellEvent/SetGuestTeam", this.form, (res) => {
if (res.data.resultCode == 1) {
this.resetForm("form");
this.dialogTableVisible = false;
this.$emit("editGuestTeamOk");
this.$message.success(res.data.message);
} else {
this.$message.error(res.data.message);
}
});
},
submitForm(addMsg) {
//提交创建、修改表单
this.$refs[addMsg].validate((valid) => {
if (valid) {
this.addData();
} else {
return false;
}
});
},
Employee() {
let userInfo = this.getLocalStorage();
let msg = {
RB_Group_id: 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) => {}
);
},
resetForm(formName) {
// 重置表单
this.form = {
CustomerId: 0,
EmpIds: [],
IsRead: 0,
TransferOther: [],
};
this.$refs[formName].resetFields();
},
},
};
</script>
\ No newline at end of file
<style>
.editGuestTeamPower .add-tit {
display: flex;
justify-content: space-between;
align-items: center;
height: 20px;
}
.editGuestTeamPower .add-tit p {
display: flex;
align-items: center;
font-weight: bold;
color: rgba(17, 17, 17, 1);
font-size: 14px;
}
.editGuestTeamPower .add-tit p span {
display: inline-block;
width: 6px;
height: 6px;
background: #409efe;
border-radius: 50%;
margin-right: 10px;
}
.editGuestTeamPower .el-dialog__header {
padding: 15px 20px;
background: rgba(255, 255, 255, 1);
}
.editGuestTeamPower .dialog-footer {
text-align: center;
background-color: rgba(248, 250, 251, 1);
padding-bottom: 20px;
}
.editGuestTeamPower .el-dialog__footer {
padding: 0;
}
</style>
<template>
<el-dialog @closed="closedDialog" :modal="false" width="400px" :visible.sync="dialogTableVisible" :close-on-click-modal="false" class="editGuestTeamPower">
<div class="add-tit" slot="title">
<p><span></span>编辑权限</p>
<span icon="el-icon-close"></span>
</div>
<div class="form-box" >
<el-form :model="form" ref="form" class="MyEditForm">
<div class="MyEditForm-item">
<el-form-item label="权限" class="label-pad-left form-check">
<div class="pad-left-10">
<el-radio v-model="form.IsRead" :label="1">只读</el-radio>
<el-radio v-model="form.IsRead" :label="0">读写</el-radio>
</div>
</el-form-item>
</div>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add-box-btn" @click="submitForm('form')">确 定</el-button>
<el-button class="add-box-btn add-box-cancel" @click="dialogTableVisible = false, resetForm('form')">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
ID: {
type: "",
default: 0,
},
CustomerId: {
type: Number,
default: 0,
},
},
data() {
return {
dialogTableVisible: true,
zwList: [],
form: {
CustomerId: 0,
ID: "",
IsRead: 1,
},
};
},
watch: {},
mounted() {
let $this = this;
setTimeout(() => {
$this.dialogTableVisible = true;
}, 50);
},
methods: {
closedDialog() {
this.MsgBus.$emit("closeeditGuestTeamPower");
},
addData() {
this.form.CustomerId = this.CustomerId;
this.form.IDs = this.ID;
this.apipost(
"/api/Customer/EditCustomerJurisdiction",
this.form,
(res) => {
if (res.data.resultCode == 1) {
this.$message.success("操作成功");
this.resetForm("form");
this.dialogTableVisible = false;
this.$emit("addTeammanOk");
}
}
);
},
submitForm(addMsg) {
//提交创建、修改表单
this.$refs[addMsg].validate((valid) => {
if (valid) {
this.addData();
} else {
return false;
}
});
},
resetForm(formName) {
// 重置表单
this.form = {
CustomerId: 0,
ID: "",
IsRead: 0,
};
this.$refs[formName].resetFields();
},
},
};
</script>
......@@ -31,7 +31,6 @@
<div class="Details">
<div class="Details_box">
<p class="tit">基本信息</p>
<el-row :gutter="40" class="Details_box_row">
<el-col :span="12">
<el-row>
......
<style>
.addTeamman-ctrl{
text-align: right;
padding: 0 0 20px 0;
}
</style>
<template>
<div class="addTeamman">
<div class="addTeamman-ctrl">
<el-button icon="el-icon-plus" class="crm-btn crm-btn-mini query-btn" @click="addTeammanShow=true" v-if="IsRead === 0">团队成员</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="bianji" v-if="IsRead === 0">编辑</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="yichu" v-if="IsRead === 0">移除</el-button>
<el-button class="crm-btn query-btn crm-btn-mini org-btn margin-right0" @click="tuichu">退出团队</el-button>
</div>
<el-table
v-loading="loading"
stripe
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
row-class-name="font-size-12">
<el-table-column :selectable='checkboxT' fixed type="selection" width="40"></el-table-column>
<el-table-column
prop="EmpName"
label="销售名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="PostName"
label="岗位"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="RoleName"
label="角色名称"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="RoleType"
label="角色属性"
show-overflow-tooltip>
<template slot-scope="scope">
<p v-if="scope.row.RoleType === 1">负责人</p>
<p v-else>普通员工</p>
</template>
</el-table-column>
<el-table-column
prop="JurisdictionName"
label="权限"
show-overflow-tooltip>
</el-table-column>
</el-table>
<div v-if="addTeammanShow">
<addTeamman :ID="CustomerId" @addTeammanOk="addTeammanOk"/>
</div>
<div v-if="editTeamPowerShow">
<editTeamPower :CustomerId="CustomerId" :ID="IDs" @addTeammanOk="addTeammanOk"/>
</div>
</div>
</template>
<script>
import addTeamman from "../dialogModel/addTeamman";
import editTeamPower from "../dialogModel/editTeamPower";
export default {
components: {
addTeamman,
editTeamPower
},
props:{
CustomerId: {
type: Number,
default: 0
},
IsRead: {
type: Number,
default: 0
}
},
data() {
return {
loading: false,
addTeammanShow: false,
editTeamPowerShow: false,
dataList: [],
multipleSelection: [],
IDs: ''
};
},watch:{
CustomerId: {
handler(val, oldVal){
console.log(val)
this.GetCustomerTeamList()
},
deep:true
}
},
mounted() {
this.GetCustomerTeamList()
let $this = this
this.MsgBus.$on('closeaddTeamman', function (){
$this.addTeammanShow = false
})
this.MsgBus.$on('closeeditTeamPower', function(){
$this.editTeamPowerShow = false
})
},
methods: {
tuichu(){
this.$confirm('确定退出团队?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let str = ''
this.multipleSelection.map((x, i)=>{
str = str + x + ','
})
let msg = {
CustomerId: this.CustomerId,
IDs: str.substring(0, str.length - 1)
}
this.apipost('/api/Customer/ExitCustomerJurisdiction', msg, res=>{
if (res.data.resultCode == 1) {
this.$message.success('操作成功')
this.GetCustomerTeamList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
yichu(){
if(this.multipleSelection.length < 1) {
return this.$message.error('请勾选需要操作的团队成员')
}
this.$confirm('此操作将移除这些团队成员是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let str = ''
this.multipleSelection.map((x, i)=>{
str = str + x + ','
})
let msg = {
CustomerId: this.CustomerId,
IDs: str.substring(0, str.length - 1)
}
this.apipost('/api/Customer/RemoveCustomerListJurisdiction', msg, res=>{
if (res.data.resultCode == 1) {
this.$message.success('操作成功')
this.GetCustomerTeamList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
bianji(){
if(this.multipleSelection.length < 1) {
return this.$message.error('请勾选需要操作的团队成员')
}
let str = ''
this.multipleSelection.map((x, i)=>{
str = str + x + ','
})
this.IDs = str.substring(0, str.length - 1)
this.editTeamPowerShow = true
},
checkboxT(row,index){
if(row.JurisdictionName==='负责人权限'){
return 0;
}else{
return 1;
}
},
handleSelectionChange(val) {
this.multipleSelection = val.map(x=>
x.ID
)
},
addTeammanOk(){
this.GetCustomerTeamList()
},
GetCustomerTeamList(){
if(this.CustomerId === 0) return
this.loading = true
this.apipost('/api/Customer/GetCustomerTeamList', {CustomerId: this.CustomerId}, res=>{
if (res.data.resultCode == 1) {
this.loading = false
this.dataList = res.data.data
}
})
},
}
}
</script>
\ No newline at end of file
<style>
.drawer-box {
.drawer-box {
height: 100%;
}
.drawer-header {
}
.drawer-header {
height: 83px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 30px;
}
.drawer-header .left {
}
.drawer-header .left {
display: flex;
align-items: center;
}
.drawer-header .left img {
}
.drawer-header .left img {
display: inline-block;
margin-right: 10px;
}
.drawer-body {
}
.drawer-body {
height: calc(100% - 83px);
}
.drawer-body .top-info {
}
.drawer-body .top-info {
height: 115px;
padding: 30px;
box-sizing: border-box;
font-size: 12px;
background-color: #f6f4fc;
}
.drawer-body .top-info .info-lable {
}
.drawer-body .top-info .info-lable {
display: inline-block;
width: 80px;
color: #999999;
}
.margin-bottom-25 {
}
.margin-bottom-25 {
margin-bottom: 25px;
}
.drawer-box .el-tabs__nav-wrap::after {
}
.drawer-box .el-tabs__nav-wrap::after {
height: 0;
}
.drawer-body .el-tabs__header {
}
.drawer-body .el-tabs__header {
padding: 0 25px;
margin-bottom: 0;
}
.drawer-body > .content {
}
.drawer-body>.content {
height: calc(100% - 115px);
}
.drawer-body .el-tabs {
}
.drawer-body .el-tabs {
height: 100%;
}
.drawer-body .el-tabs__content {
}
.drawer-body .el-tabs__content {
background-color: #f6f4fc;
height: calc(100% - 40px);
box-sizing: border-box;
}
.drawer-body .el-tabs__content .el-tab-pane {
}
.drawer-body .el-tabs__content .el-tab-pane {
height: 100%;
position: absolute;
width: calc(100%);
padding: 17px 20px;
box-sizing: border-box;
}
}
</style>
<template>
<div class="drawer-box" v-if="loading">
......@@ -69,8 +82,8 @@
<p>{{detailsData.SurName + detailsData.Name}}</p>
</div>
<div class="right" v-if="!hiddenMenu">
<el-button class="crm-btn query-btn" @click="editCust" >编辑</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;" >
<el-button class="crm-btn query-btn" @click="editCust">编辑</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;">
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
</el-button>
......@@ -84,32 +97,28 @@
<div class="drawer-body">
<div class="top-info">
<el-row class="margin-bottom-25">
<el-col :span="12">
<span class="info-lable">客户级别:</span><span>{{detailsData.CustomerIdLevelStr}}</span>
</el-col>
<el-col :span="12">
<span class="info-lable">创建时间:</span><span>{{detailsData.CreateDate ? detailsData.CreateDate : ''}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<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 : ''}}</span>
<span class="info-lable">创建时间:</span><span>{{detailsData.CreateDate ? detailsData.CreateDate : ''}}</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" :showType="2"/>
<Activity v-if="activeName === '1'" :CustomerId="CustomerId" :showType="2" />
</el-tab-pane>
<el-tab-pane label="详细资料" name="2">
<Details v-if="activeName === '2'" :detailsData="detailsData"/>
<Details v-if="activeName === '2'" :detailsData="detailsData" />
</el-tab-pane>
<el-tab-pane label="团队" name="10">
<guestTeam v-if="activeName === '10'" :ID="CustomerId" />
</el-tab-pane>
<el-tab-pane label="商机" name="5">
<Business v-if="activeName === '5'" :ID="CustomerId"/>
<Business v-if="activeName === '5'" :ID="CustomerId" />
</el-tab-pane>
<el-tab-pane label="订单" name="6">
<Agreement />
......@@ -118,10 +127,10 @@
<MoneyBack />
</el-tab-pane>
<el-tab-pane label="附件" name="8">
<Enclosure :ID='CustomerId' :type='1' :isGuest="true" v-if="activeName === '8'"/>
<Enclosure :ID='CustomerId' :type='1' :isGuest="true" v-if="activeName === '8'" />
</el-tab-pane>
<el-tab-pane label="操作记录" name="9">
<Record v-if="activeName === '9'" :CustomerId="CustomerId"/>
<Record v-if="activeName === '9'" :CustomerId="CustomerId" />
</el-tab-pane>
</el-tabs>
</div>
......@@ -129,14 +138,15 @@
</div>
</template>
<script>
import Activity from "./Activity";
import Details from "./Details";
import Business from "./Business";
import Agreement from "./Agreement";
import MoneyBack from "./MoneyBack";
import Enclosure from "../clueManagement/Enclosure";
import Record from "./Record";
export default {
import Activity from "./Activity";
import Details from "./Details";
import Business from "./Business";
import Agreement from "./Agreement";
import MoneyBack from "./MoneyBack";
import guestTeam from "./guestTeam";
import Enclosure from "../clueManagement/Enclosure";
import Record from "./Record";
export default {
components: {
Activity,
Details,
......@@ -145,6 +155,7 @@ export default {
MoneyBack,
Enclosure,
Record,
guestTeam,
},
props: {
CustomerId: {
......@@ -176,15 +187,16 @@ export default {
let $this = this;
$this.init();
// 监听修改更新界面
this.MsgBus.$on("RefreshInfoBox", function() {
this.MsgBus.$on("RefreshInfoBox", function () {
$this.init();
});
},
methods: {
init() {
this.apipost(
"/api/Customer/GetAllGuesstCustomerModel",
{ ID: this.CustomerId },
"/api/Customer/GetAllGuesstCustomerModel", {
ID: this.CustomerId
},
(res) => {
if (res.data.resultCode == 1) {
let data = res.data.data;
......@@ -224,8 +236,7 @@ export default {
handleCommand(command) {
if (command === "z") {
this.$emit("transferS", 3);
} else if (command === "g") {
}
} else if (command === "g") {}
},
handleClick(tab, event) {},
editCust() {
......@@ -235,5 +246,5 @@ export default {
done();
},
},
};
};
</script>
\ No newline at end of file
<style>
@import "../../assets/css/customerManage.css";
.el-table__fixed-body-wrapper table {
padding-bottom: 8px !important;
}
......@@ -14,15 +15,14 @@
</el-input>
</div>
<div class="rightmenu">
<!-- <el-button class="crm-btn query-btn" @click="getList">查询</el-button> -->
<el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新建直客', dialogTableVisible=true">新建直客</el-button>
<el-button icon="el-icon-plus" class="crm-btn org-btn"
@click="CustomerId = 0, dialogTableVisibleName = '新建直客', dialogTableVisible=true">新建直客</el-button>
<el-dropdown @command="handleCommand">
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="1"><i class="iconfont icondaoru"></i> 导入</el-dropdown-item>
<!-- <el-dropdown-item><i class="iconfont icondaochu"></i> 导出</el-dropdown-item> -->
</el-dropdown-menu>
</el-dropdown>
</div>
......@@ -31,57 +31,52 @@
<el-row v-if="!multipleSelection.length" :gutter="30">
<el-col :span="4">
<span class="font-size-12" style="padding-right: 10px">场景</span>
<el-popover
placement="bottom"
width="180"
popper-class="popover-class"
v-model="visible"
<el-popover placement="bottom" width="180" popper-class="popover-class" v-model="visible"
trigger="click">
<div data-v-16d669bb="" class="scene-container">
<div class="scene-list">
<div class="scene-list-item" :class="{'scene-list-item-select': sceneID === item.ID}" v-for="(item, index) in SceneEmployeeList" :key="index" @click="changeWhere(item)">{{item.SceneName}}</div>
<div class="scene-list-item" :class="{'scene-list-item-select': sceneID === item.ID}"
v-for="(item, index) in SceneEmployeeList" :key="index" @click="changeWhere(item)">
{{item.SceneName}}</div>
</div>
<div class="handle-interval">
<div class="vux-flexbox handle-button vux-flex-row" @click="MsgBus.$emit('sceneBoxShow', 5, 1)">
<div class="vux-flexbox handle-button vux-flex-row"
@click="MsgBus.$emit('sceneBoxShow', 5, 1)">
<i class="el-icon-circle-plus-outline handle-button-icon"></i>
<div class="handle-button-name">新建场景</div></div>
<div class="vux-flexbox handle-button vux-flex-row" @click="MsgBus.$emit('sceneEditBoxShow', 5, SceneEmployeeList)">
<div class="handle-button-name">新建场景</div>
</div>
<div class="vux-flexbox handle-button vux-flex-row"
@click="MsgBus.$emit('sceneEditBoxShow', 5, SceneEmployeeList)">
<i class="el-icon-setting handle-button-icon"></i>
<div class="handle-button-name">管理</div>
</div>
</div>
</div>
<el-select size="mini" popper-class="select-no" slot="reference" v-model="msg.ID" placeholder="请选择">
<el-option
v-for="item in SceneEmployeeList"
:key="item.ID"
:label="item.SceneName"
<el-select size="mini" popper-class="select-no" slot="reference" v-model="msg.ID"
placeholder="请选择">
<el-option v-for="item in SceneEmployeeList" :key="item.ID" :label="item.SceneName"
:value="item.ID">
</el-option>
</el-select>
</el-popover>
</el-col>
<!-- <el-col :span="4">
<span class="font-size-12" style="padding-right: 10px">客户类型</span>
<el-select size="mini" v-model="msg.CustomerType" placeholder="请选择" @change="getList">
<el-option key="0" label="客户" :value="0"></el-option>
<el-option key="1" label="直客" :value="1"></el-option>
</el-select>
</el-col> -->
<el-col :span="4">
<el-button icon="iconfont iconshaixuan" class="crm-btn query-btn crm-btn-mini margin-right0" @click="MsgBus.$emit('sceneBoxShow', 5)">高级筛选</el-button>
<el-button icon="iconfont iconshaixuan" class="crm-btn query-btn crm-btn-mini margin-right0"
@click="MsgBus.$emit('sceneBoxShow', 5)">高级筛选</el-button>
</el-col>
</el-row>
<div v-else class="flex-center">
<p class="font-size-12">已选 <span class="font-color-link">{{multipleSelection.length}}</span></p>
<div class="selection-box">
<el-button v-for="(item, index) in selectionList" :key="index" @click="item.myFun"><i :class="item.class"></i>{{item.name}}</el-button>
<el-button v-for="(item, index) in selectionList" :key="index" @click="item.myFun"><i
:class="item.class"></i>{{item.name}}</el-button>
</div>
</div>
<div class="scene-wrapper" v-if="sceneList.length > 0">
<ul class="list">
<li class="list-item" v-for="(item, index) in sceneList" :key="index">
<span v-if="item.formType !== 'datetime'">{{item.str}}&nbsp;{{item.regionStr}}{{item.nameFC ? item.nameFC : item.value}}</span>
<span
v-if="item.formType !== 'datetime'">{{item.str}}&nbsp;{{item.regionStr}}{{item.nameFC ? item.nameFC : item.value}}</span>
<span v-else>{{item.str}}&nbsp;{{item.start}}-{{item.end}}</span>
<i class="el-icon-close icon" @click="deleteScene(index)"></i>
</li>
......@@ -89,140 +84,159 @@
</div>
</div>
<div class="page-content">
<el-table
v-if="loading"
v-loading="true"
:data="[]">
<el-table-column
v-for="(item, index) in queryType2" :key="index"
:label="item.label">
<el-table v-if="loading" v-loading="true" :data="[]">
<el-table-column v-for="(item, index) in queryType2" :key="index" :label="item.label">
</el-table-column>
</el-table>
<el-table
v-if="!loading"
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:height="sceneList.length > 0 ? '600' : '660'"
border
row-class-name="font-size-12"
<el-table v-if="!loading" ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
:height="sceneList.length > 0 ? '600' : '660'" border row-class-name="font-size-12"
@selection-change="handleSelectionChange">
<el-table-column fixed type="selection" width="40"></el-table-column>
<el-table-column
fixed
prop="GusetName"
label="客户名称"
width="120"
v-if="queryType[0].show"
<el-table-column fixed prop="GusetName" label="客户名称" width="120" v-if="queryType[0].show"
show-overflow-tooltip>
<template slot-scope="scope">
<div style="width:100%;min-height:38px;line-height:38px;" class="cp" @click="openDetails(scope)">
<div style="width:100%;min-height:38px;line-height:38px;" class="cp"
@click="openDetails(scope)">
<p class="font-color-link cp">{{scope.row.GusetName}}</p>
</div>
</template>
</el-table-column>
<el-table-column prop="MobilePhone" label="手机号码" width="120" v-if="queryType[1].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Address" label="地址" v-if="queryType[2].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerSourceTypeStr" label="客户来源" v-if="queryType[3].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="TraveNum" label="参团数" sortable v-if="queryType[4].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="OrderCount" label="订单交易数" sortable v-if="queryType[24].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="OrderMoney" label="交易金额" sortable v-if="queryType[25].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="BirthdayAddress" label="出生地点" sortable v-if="queryType[28].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="AddressDetail" label="家庭详细地址" sortable v-if="queryType[27].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="HistoryRecord" label="出境记录" sortable v-if="queryType[26].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="EconomicCapability" label="经济能力确认" sortable v-if="queryType[29].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="MobilePhone" label="手机号码" width="120" v-if="queryType[1].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerSourceTypeStr" label="客户来源" v-if="queryType[3].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="SourceAccountName" label="来源细分" v-if="queryType[31].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="ClueDemand" label="需求" v-if="queryType[32].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="WeChatNo" label="微信号" v-if="queryType[33].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="TraveNum" label="参团数" sortable v-if="queryType[4].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="OrderCount" label="订单交易数" sortable v-if="queryType[24].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="OrderMoney" label="交易金额" sortable v-if="queryType[25].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="BirthdayAddress" label="出生地点" sortable v-if="queryType[28].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="AddressDetail" label="家庭详细地址" sortable v-if="queryType[27].show"
show-overflow-tooltip>
<el-table-column prop="Address" label="地址" v-if="queryType[2].show" show-overflow-tooltip>
</el-table-column>
</el-table-column>
<el-table-column prop="HistoryRecord" label="出境记录" sortable v-if="queryType[26].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="EconomicCapability" label="经济能力确认" sortable v-if="queryType[29].show"
show-overflow-tooltip>
<template slot-scope="scope">
<span v-for="(item, index) in scope.row.EconomicCapability" :key="index">{{item.Value}}{{index === scope.row.EconomicCapability.length -1 ? '' : '、'}}</span>
<span v-for="(item, index) in scope.row.EconomicCapability"
:key="index">{{item.Value}}{{index === scope.row.EconomicCapability.length -1 ? '' : '、'}}</span>
</template>
</el-table-column>
<el-table-column prop="IsRecommendStr" label="是否推存" sortable v-if="queryType[30].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="BusinessCount" label="商机数" sortable v-if="queryType[5].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="ScoreNum" label="总评分" sortable v-if="queryType[6].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Client_Balance" label="余额" sortable v-if="queryType[8].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Birthday" label="生日" width="120" sortable v-if="queryType[13].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="MarriageStr" label="是否结婚" sortable v-if="queryType[14].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop=" Duty" label="职务" sortable v-if="queryType[15].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IsHightSchool" label="是否高中生" sortable width="120" v-if="queryType[16].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IsRecommendStr" label="是否推存" sortable v-if="queryType[30].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="BusinessCount" label="商机数" sortable v-if="queryType[5].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="ScoreNum" label="总评分" sortable v-if="queryType[6].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Client_Balance" label="余额" sortable v-if="queryType[8].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Birthday" label="生日" width="120" sortable v-if="queryType[13].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="MarriageStr" label="是否结婚" sortable v-if="queryType[14].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop=" Duty" label="职务" sortable v-if="queryType[15].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IsHightSchool" label="是否高中生" sortable width="120" v-if="queryType[16].show"
show-overflow-tooltip>
<template slot-scope="scope">
<p>{{scope.row.IsHightSchool === 1 ? '是': '否'}}</p>
</template>
</el-table-column>
<el-table-column prop=" IdCard" label="身份证" sortable v-if="queryType[17].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportNo" label="护照号" sortable v-if="queryType[18].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportAddress" label="护照签发地" width="120" sortable v-if="queryType[19].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportIssuedStr" label="护照签发日期" width="120" sortable v-if="queryType[20].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportExpiryStr" label="护照过期时间" width="120" sortable v-if="queryType[21].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IssuingAuthority" label="签发机关" sortable v-if="queryType[22].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerLevelStr" label="客户等级" sortable v-if="false" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Remarks" label="备注" sortable v-if="queryType[23].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="UpdateDate" label="最后更新时间" sortable v-if="queryType[9].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PersonChargeStr" label="负责人" sortable v-if="queryType[10].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CreateTimestr" label="创建时间" v-if="queryType[11].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CreateByStr" label="创建人" v-if="queryType[12].show" width="120" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IsCarefor" fixed="right" width="50" label="关注">
</el-table-column>
<el-table-column prop=" IdCard" label="身份证" sortable v-if="queryType[17].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportNo" label="护照号" sortable v-if="queryType[18].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportAddress" label="护照签发地" width="120" sortable v-if="queryType[19].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportIssuedStr" label="护照签发日期" width="120" sortable v-if="queryType[20].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PassportExpiryStr" label="护照过期时间" width="120" sortable v-if="queryType[21].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IssuingAuthority" label="签发机关" sortable v-if="queryType[22].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CustomerLevelStr" label="客户等级" sortable v-if="false" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="Remarks" label="备注" sortable v-if="queryType[23].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="UpdateDate" label="最后更新时间" sortable v-if="queryType[9].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PersonChargeStr" label="负责人" sortable v-if="queryType[10].show"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CreateTimestr" label="创建时间" v-if="queryType[11].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CreateByStr" label="创建人" v-if="queryType[12].show" width="120"
show-overflow-tooltip>
</el-table-column>
<el-table-column prop="IsCarefor" fixed="right" width="50" label="关注">
<template slot-scope="scope">
<p>
<el-tooltip class="item" effect="dark" content="关注" placement="top">
<i v-if="scope.row.IsCarefor === 0" @click="CareforCustomer(scope)" class="iconfont iconwujiaoxing cp"></i>
<i v-if="scope.row.IsCarefor === 0" @click="CareforCustomer(scope)"
class="iconfont iconwujiaoxing cp"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="取消关注" placement="top">
<i v-if="scope.row.IsCarefor === 1" @click="CareforCustomer(scope)" class="iconfont iconstar_full cp"></i>
<i v-if="scope.row.IsCarefor === 1" @click="CareforCustomer(scope)"
class="iconfont iconstar_full cp"></i>
</el-tooltip>
</p>
</template>
</el-table-column>
<el-table-column width="40" fixed="right">
</el-table-column>
<el-table-column width="40" fixed="right">
<template slot="header" slot-scope="scope">
<el-popover
placement="bottom"
width="240">
<mySelect :queryType="queryType" @listenTochildEvent="showMessageFromChild"/>
<el-popover placement="bottom" width="240">
<mySelect :queryType="queryType" @listenTochildEvent="showMessageFromChild" />
<i class="el-icon-s-operation cp" slot="reference"></i>
</el-popover>
</template>
</el-table-column>
</el-table>
</div>
<div>
<el-pagination class="Mypagination" background @current-change="handleCurrentChange" :page-sizes="[30, 60, 90, 100]" :page-size="msg.pageSize" layout="sizes, prev, pager, next" @size-change="handleSizeChange" :total="total">
</el-table-column>
</el-table>
</div>
<div>
<el-pagination class="Mypagination" background @current-change="handleCurrentChange"
:page-sizes="[30, 60, 90, 100]" :page-size="msg.pageSize" layout="sizes, prev, pager, next"
@size-change="handleSizeChange" :total="total">
</el-pagination>
</div>
<el-drawer :with-header="false" size='70%' :visible.sync="drawer" direction="rtl" :before-close="handleClose">
</div>
<el-drawer :with-header="false" size='70%' :visible.sync="drawer" direction="rtl" :before-close="handleClose">
<customerInfoBox :CustomerId="CustomerId" @transferS="transfer" @editCustS="editCust" />
</el-drawer>
<div v-if="dialogTableVisible">
</el-drawer>
<div v-if="dialogTableVisible">
<customerDialogBox @getList="getList" :name="dialogTableVisibleName" :CustomerId="CustomerId" />
</div>
<el-dialog :visible.sync="transferVisible" :close-on-click-modal="false" width="450px" custom-class="transfer-box add-box add-box2">
</div>
<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>
......@@ -231,7 +245,8 @@
<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 v-for="item in EmployeeList" :label='item.EmName' :value='item.EmployeeId'
:key='item.EmployeeId'>
</el-option>
</el-select>
</el-form-item>
......@@ -241,8 +256,8 @@
<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>
</el-dialog>
</div>
</template>
<script>
import mySelect from "../dialogModel/select";
......@@ -443,7 +458,16 @@
}, {
label: "是否推存",
show: true,
}, ],
}, {
label: "来源细分",
show: true,
}, {
label: "需求",
show: true,
}, {
label: "微信号",
show: true,
},],
CustomerId: 0,
CustomerIdStr: "",
transferVisible: false,
......@@ -501,15 +525,14 @@
},
mounted() {
this.userInfo = this.getLocalStorage();
console.log(this.queryType);
this.getList();
this.Employee();
let $this = this;
this.MsgBus.$on("closeCustomerDialogBox", function() {
this.MsgBus.$on("closeCustomerDialogBox", function () {
$this.dialogTableVisible = false;
});
this.GetSceneEmployeeList();
this.MsgBus.$on("sceneSave", function(msg) {
this.MsgBus.$on("sceneSave", function (msg) {
$this.sceneList = [...msg];
$this.GetSceneEmployeeList();
let obj = {};
......@@ -519,8 +542,7 @@
$this.msg.Data = obj;
$this.getList();
});
this.MsgBus.$on("editScene", function() {
console.log(1);
this.MsgBus.$on("editScene", function () {
$this.GetSceneEmployeeList();
});
},
......@@ -588,30 +610,9 @@
(err) => {}
);
},
//锁定
locking() {
console.log("锁定");
},
//解锁
Unlock() {
console.log("解锁");
},
//删除团队成员
delCust() {
console.log("删除团队成员");
},
//删除
delete() {
console.log("删除");
},
//导出
export () {
console.log("导出");
},
// 更改状态
changeState() {
console.log("更改状态");
},
// 关注
CareforCustomer(scope) {
......@@ -663,7 +664,6 @@
}
);
}
console.log("转移");
},
showMessageFromChild(list) {
this.mySelectCtrl = !this.mySelectCtrl;
......@@ -692,7 +692,7 @@
handleClose(done) {
done();
},
getList: function() {
getList: function () {
this.tableData = [];
this.loading = true;
this.apipost(
......
<style>
.addTeamman-ctrl {
text-align: right;
padding: 0 0 20px 0;
}
</style>
<template>
<div class="addTeamman">
<div class="addTeamman-ctrl">
<el-button icon="el-icon-plus" class="crm-btn crm-btn-mini query-btn" @click="addTeammanShow=true"
v-if="IsRead === 0">团队成员</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="bianji" v-if="IsRead === 0">编辑</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="yichu" v-if="IsRead === 0">移除</el-button>
<el-button class="crm-btn query-btn crm-btn-mini org-btn margin-right0" @click="tuichu">退出团队</el-button>
</div>
<el-table v-loading="loading" stripe ref="multipleTable" :data="dataList" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChange" row-class-name="font-size-12">
<el-table-column :selectable='checkboxT' fixed type="selection" width="40"></el-table-column>
<el-table-column prop="EmpName" label="销售名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="PostName" label="岗位" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="RoleName" label="角色名称" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="RoleType" label="角色属性" show-overflow-tooltip>
<template slot-scope="scope">
<p v-if="scope.row.RoleType === 1">负责人</p>
<p v-else>普通员工</p>
</template>
</el-table-column>
<el-table-column prop="JurisdictionName" label="权限" show-overflow-tooltip>
</el-table-column>
</el-table>
<div v-if="addTeammanShow">
<editGuestTeam :ID="CustomerId" @addTeammanOk="addTeammanOk" />
</div>
<div v-if="editTeamPowerShow">
<editGuestTeamPower :CustomerId="CustomerId" :ID="IDs" @addTeammanOk="addTeammanOk" />
</div>
</div>
</template>
<script>
import editGuestTeam from "../dialogModel/editGuestTeam";
import editGuestTeamPower from "../dialogModel/editGuestTeamPower";
export default {
components: {
editGuestTeam,
editGuestTeamPower
},
props: {
CustomerId: {
type: Number,
default: 0
},
IsRead: {
type: Number,
default: 0
}
},
data() {
return {
loading: false,
addTeammanShow: false,
editTeamPowerShow: false,
dataList: [],
multipleSelection: [],
IDs: ''
};
},
watch: {
CustomerId: {
handler(val, oldVal) {
this.GetGuestTeamList()
},
deep: true
}
},
mounted() {
this.GetGuestTeamList()
let $this = this
this.MsgBus.$on('closeaddTeamman', function () {
$this.addTeammanShow = false
})
this.MsgBus.$on('closeeditTeamPower', function () {
$this.editTeamPowerShow = false
})
},
methods: {
tuichu() {
this.$confirm('确定退出团队?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let str = ''
this.multipleSelection.map((x, i) => {
str = str + x + ','
})
let msg = {
CustomerId: this.CustomerId,
IDs: str.substring(0, str.length - 1)
}
this.apipost('/api/Customer/ExitCustomerJurisdiction', msg, res => {
if (res.data.resultCode == 1) {
this.$message.success('操作成功')
this.GetGuestTeamList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
yichu() {
if (this.multipleSelection.length < 1) {
return this.$message.error('请勾选需要操作的团队成员')
}
this.$confirm('此操作将移除这些团队成员是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let str = ''
this.multipleSelection.map((x, i) => {
str = str + x + ','
})
let msg = {
CustomerId: this.CustomerId,
IDs: str.substring(0, str.length - 1)
}
this.apipost('/api/Customer/RemoveCustomerListJurisdiction', msg, res => {
if (res.data.resultCode == 1) {
this.$message.success('操作成功')
this.GetGuestTeamList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
bianji() {
if (this.multipleSelection.length < 1) {
return this.$message.error('请勾选需要操作的团队成员')
}
let str = ''
this.multipleSelection.map((x, i) => {
str = str + x + ','
})
this.IDs = str.substring(0, str.length - 1)
this.editTeamPowerShow = true
},
checkboxT(row, index) {
if (row.JurisdictionName === '负责人权限') {
return 0;
} else {
return 1;
}
},
handleSelectionChange(val) {
this.multipleSelection = val.map(x =>
x.ID
)
},
addTeammanOk() {
this.GetGuestTeamList()
},
GetGuestTeamList() {
if (this.CustomerId === 0) return
this.loading = true
this.apipost('/api/SellEvent/GetGuestTeamPage', {
GuestId: this.CustomerId
}, res => {
if (res.data.resultCode == 1) {
this.loading = false
this.dataList = res.data.data
}
})
},
}
}
</script>
\ No newline at end of file
......@@ -6,14 +6,18 @@ export default {
apiurl: ''
},
install(Vue, options) {
Vue.prototype.isOnline = function() {
Vue.prototype.isOnline = function () {
return process.env.NODE_ENV !== 'development';
},
//域名管理对象
Vue.prototype.domainManager = function() {
let domainUrl = "http://192.168.10.2:8098"
Vue.prototype.domainManager = function () {
//CRM API
let domainUrl = "";
domainUrl = "http://192.168.10.2:8098";
//domainUrl = "http://localhost:5003";
let locationName = window.location.hostname;
let domainPostUrl = "http://192.168.10.2:8083"
//旅游ERPApi
let domainPostUrl = "http://192.168.10.214"
if (this.isOnline()) {
if (window.location.host.indexOf('fcrmyx.oytour.com') != -1) {
domainUrl = "http://crm.oytour.com"
......@@ -47,7 +51,7 @@ export default {
};
return obj;
},
Vue.prototype.GetLocalFile = function(cmd, msg, fileName, successCall) {
Vue.prototype.GetLocalFile = function (cmd, msg, fileName, successCall) {
var apiurl = this.domainManager().LocalFileStreamDownLoadUrl;
var timestamp = (new Date()).valueOf();
if (!localStorage.userInfo && localStorage.userInfo != "" && this.$route.path.toLowerCase() != "/login") {
......@@ -83,10 +87,10 @@ export default {
document.body.appendChild(link);
link.click();
successCall(res);
}).catch(function(res) {});
}).catch(function (res) {});
},
//价钱格式化,三位数逗号分隔,保留两位小数 duanjun
Vue.prototype.moneyFormat = function(value) {
Vue.prototype.moneyFormat = function (value) {
let nStr = Number(value).toFixed(2)
nStr += '';
let x = nStr.split('.');
......@@ -99,7 +103,7 @@ export default {
return x1 + x2;
},
//消息成功提示
Vue.prototype.Success = function(msg) {
Vue.prototype.Success = function (msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -107,7 +111,7 @@ export default {
});
},
//错误提示
Vue.prototype.Error = function(msg) {
Vue.prototype.Error = function (msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -116,7 +120,7 @@ export default {
},
//一般提示
Vue.prototype.Info = function(msg) {
Vue.prototype.Info = function (msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -124,7 +128,7 @@ export default {
});
},
//警告提示
Vue.prototype.Warning = function(msg) {
Vue.prototype.Warning = function (msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -132,7 +136,7 @@ export default {
});
},
//Confirm
Vue.prototype.Confirm = function(msg, callback) {
Vue.prototype.Confirm = function (msg, callback) {
this.$confirm(msg, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
......@@ -152,7 +156,7 @@ export default {
//type : m_filt 填充 m_w 宽度固定 高度不固定 m_h 高度固定 宽度不固定
// w : 宽
// h : 高
Vue.prototype.compressImg = function(path, type, w, h) {
Vue.prototype.compressImg = function (path, type, w, h) {
let url = this.domainManager().UploadUrl;
let poise = 'width=';
w = w ? w : ''
......@@ -165,13 +169,13 @@ export default {
return path.split('?')[0] + '?width=' + w;
}
//打开新窗口连接
Vue.prototype.OpenNewUrl = function(URL) {
Vue.prototype.OpenNewUrl = function (URL) {
if (URL != '') {
window.open('http://' + URL, '_blank');
}
}
//HTTP提交数据
Vue.prototype.apipost2 = function(cmd, msg, successCall, faildCall, isOnline) {
//旅游ERP接口
Vue.prototype.apipost2 = function (cmd, msg, successCall, faildCall, isOnline) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -218,7 +222,7 @@ export default {
}
}, faildCall)
}
Vue.prototype.apipost = function(cmd, msg, successCall, faildCall) {
Vue.prototype.apipost = function (cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -234,13 +238,11 @@ export default {
var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
var postData = {
"msg": msg,
// "cmd": cmd,
"timestamp": timestamp,
"token": token,
"sign": md5Str
}
if (localStorage.g && localStorage.g != 'undefined') {
// postData.groupId = parseInt(JSON.parse(localStorage.g).i)
postData.groupId = 2;
}
this.$http.post(apiurl, postData, {
......@@ -261,7 +263,7 @@ export default {
}
}, faildCall)
},
Vue.prototype.apiJavaPost = function(cmd, msg, successCall, faildCall) {
Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -270,8 +272,7 @@ export default {
this.apiurl = apiurl;
var token = "";
var key = "";
// let userInfo = localStorage.userInfo ? JSON.parse(localStorage.userInfo) : ''
// let uid = userInfo.accountId ? userInfo.accountId : 0
if (this.getLocalStorage() != null) {
token = this.getLocalStorage().token;
key = this.getLocalStorage().secretKey;
......@@ -286,7 +287,7 @@ export default {
"sign": md5Str
}
if (localStorage.g && localStorage.g != 'undefined') {
// postData.groupId = parseInt(JSON.parse(localStorage.g).i)
postData.groupId = 2;
}
this.$http.post(apiurl, postData, {
......@@ -297,11 +298,11 @@ export default {
})
.then(res => {
if (res.data.resultCode == 10000 || res.data.resultCode == 10001) {
// if (window.location.href.indexOf('IntegralMall') === -1 && window.location.href.indexOf('productDetail') === -1) {
this.$router.push({
path: '/login'
})
// }
} else if (res.data.resultCode == 10005) {
this.$router.go(-1)
} else {
......@@ -312,16 +313,8 @@ export default {
}
}, faildCall)
},
Vue.prototype.getAction = function(actionId, lineId) {
// if(actionId==1){
// console.log("浏览签证产品",actionId)
// }
// if(actionId==7){
// console.log("浏览跟团游",actionId)
// }
// if(actionId==9){
// console.log("浏览跟团游下单",actionId)
// }
Vue.prototype.getAction = function (actionId, lineId) {
let msg = {};
msg.actionId = actionId;
if (lineId) {
......@@ -331,7 +324,6 @@ export default {
this.Travelload = false;
if (res.data.resultCode == 1) {
} else {
this.Error(res.data.message);
}
......@@ -339,7 +331,7 @@ export default {
}
//验证只能输入2位小数
Vue.prototype.checkPrice = function(item, filed) {
Vue.prototype.checkPrice = function (item, filed) {
var value = "";
if (typeof item[filed] == "string") {
value = item[filed];
......@@ -360,7 +352,7 @@ export default {
item[filed] = value;
}
//验证只能输入整数
Vue.prototype.checkInteger = function(item, filed) {
Vue.prototype.checkInteger = function (item, filed) {
var value = "";
if (typeof item[filed] == "string") {
value = item[filed];
......@@ -370,6 +362,5 @@ export default {
value = value.replace(this.$commonUtils.Regex.isInteger, "");
item[filed] = value;
}
}
}
\ No newline at end of file
......@@ -10,9 +10,8 @@
</div>
<div class="publisher">徐总</div>
<div class="job">总经理</div>
<div
class="content"
>職場上成功者與失敗者最大的分別就是,前者找機會,後者找藉口,今日的你痛恨每天上班「度日如年」,將來的你會感激經歷過這一切,你練成了更強大的自己,玻璃心不再怕碎。</div>
<div class="content">職場上成功者與失敗者最大的分別就是,前者找機會,後者找藉口,今日的你痛恨每天上班「度日如年」,將來的你會感激經歷過這一切,你練成了更強大的自己,玻璃心不再怕碎。
</div>
</div>
</el-carousel-item>
</el-carousel>
......@@ -28,13 +27,8 @@
<div class="mu-text-field has-label">
<div class="mu-text-field-content">
<div class="mu-text-field-label">账号</div>
<input
type="text"
v-model="account"
class="mu-text-field-input"
@focus="accountStatus=true"
@blur="accountStatus=false"
/>
<input type="text" v-model="account" class="mu-text-field-input" @focus="accountStatus=true"
@blur="accountStatus=false" />
<div>
<hr class="mu-text-field-line" />
<hr class="mu-text-field-focus-line" :class="{'focus':accountStatus}" />
......@@ -48,13 +42,8 @@
<div class="mu-text-field has-label">
<div class="mu-text-field-content">
<div class="mu-text-field-label">密码</div>
<input
type="password"
v-model="pwd"
class="mu-text-field-input"
@focus="pwdStatus=true"
@blur="pwdStatus=false"
/>
<input type="password" v-model="pwd" class="mu-text-field-input" @focus="pwdStatus=true"
@blur="pwdStatus=false" />
<div>
<hr class="mu-text-field-line" />
<hr class="mu-text-field-focus-line" :class="{'focus':pwdStatus}" />
......@@ -64,12 +53,8 @@
</div>
</div>
<div class="field_wrap" style="margin-top:30px;">
<el-button
type="primary"
:loading="isLogining"
@click="goLogin()"
style="width:100%; font-family:perfectFont;font-size: 16px;"
>立即登录</el-button>
<el-button type="primary" :loading="isLogining" @click="goLogin()"
style="width:100%; font-family:perfectFont;font-size: 16px;">立即登录</el-button>
</div>
<div class="field_wrap forget">
<div class="item-forget">
......@@ -96,7 +81,7 @@
</template>
<script>
export default {
export default {
data() {
return {
accountStatus: false,
......@@ -108,9 +93,9 @@ export default {
};
},
created() {
let autoLogin = localStorage.autoLogin
? JSON.parse(localStorage.autoLogin)
: null;
let autoLogin = localStorage.autoLogin ?
JSON.parse(localStorage.autoLogin) :
null;
this.account = autoLogin ? autoLogin.acc : "";
this.pwd = autoLogin ? autoLogin.pwd : "";
this.isAutoLogin = autoLogin ? true : false;
......@@ -132,25 +117,29 @@ export default {
var msg = {
EmAccount: this.account,
EmPassword: this.pwd,
// Domain:'testerp.oytour.com'
Domain: "fcrmyx.oytour.com",
};
if (!this.isOnline()) {
msg.Domain = "www.test.com";
}
this.apipost("/api/Login/UserLogin", msg, (res) => {
var jsonData = res.data;
if (jsonData.resultCode == 1) {
//登录成功
let autoLogin = this.isAutoLogin
? {
let autoLogin = this.isAutoLogin ?
{
acc: this.account,
pwd: this.pwd,
}
: null;
} :
null;
localStorage.autoLogin = JSON.stringify(autoLogin);
var userData = jsonData.data;
var userJson = JSON.stringify(userData);
localStorage.userInfo = userJson;
this.loginState = 0;
this.$router.push({ path: "/Home" });
this.$router.push({
path: "/Home"
});
} else {
this.$message({
message: res.data.message,
......@@ -161,11 +150,11 @@ export default {
});
},
},
};
};
</script>
<style scoped>
.login {
.login {
background: url("../assets/img/login/bg.jpg") no-repeat 100% 100%;
width: 100%;
height: 100%;
......@@ -173,8 +162,9 @@ export default {
display: flex;
align-items: center;
justify-content: center;
}
.logo-box {
}
.logo-box {
position: absolute;
top: 30px;
left: 30px;
......@@ -182,8 +172,9 @@ export default {
font-size: 48px;
font-family: perfectFont;
color: #fff;
}
.login .login-box {
}
.login .login-box {
width: 1000px;
height: 560px;
box-shadow: 0 6px 20px 5px rgba(40, 120, 255, 0.1),
......@@ -191,12 +182,14 @@ export default {
border-radius: 8px;
background: #fff;
display: flex;
}
.login .login-box .left-card {
}
.login .login-box .left-card {
width: 440px;
height: 100%;
}
.login .login-box .left-card .item-card {
}
.login .login-box .left-card .item-card {
background: url("../assets/img/login/yinhao.png") right bottom/221px no-repeat,
linear-gradient(180deg, #2878ff, #409efe);
width: 100%;
......@@ -204,89 +197,101 @@ export default {
padding-top: 96px;
color: white;
box-sizing: border-box;
}
.login .login-box .left-card .item-card .head-icon {
}
.login .login-box .left-card .item-card .head-icon {
width: 104px;
height: 104px;
margin: 0 auto;
border-radius: 100%;
background: rgba(40, 120, 255, 0.5);
padding: 5px;
}
.login .login-box .left-card .item-card .head-icon img {
}
.login .login-box .left-card .item-card .head-icon img {
width: 100%;
height: 100%;
border-radius: 100%;
}
.login .login-box .left-card .item-card .publisher,
.login .login-box .left-card .item-card .job {
}
.login .login-box .left-card .item-card .publisher,
.login .login-box .left-card .item-card .job {
margin-top: 20px;
font-size: 24px;
font-family: perfectFont;
text-align: center;
}
.login .login-box .left-card .item-card .publisher {
}
.login .login-box .left-card .item-card .publisher {
font-weight: bold;
}
.login .login-box .left-card .item-card .job {
}
.login .login-box .left-card .item-card .job {
font-size: 16px;
margin-top: 10px;
}
.login .login-box .left-card .item-card .content {
}
.login .login-box .left-card .item-card .content {
font-size: 13px;
font-family: perfectFont;
margin-top: 20px;
margin: 20px;
line-height: 24px;
text-indent: 28px;
}
.login .login-box .right-card {
}
.login .login-box .right-card {
flex: 1;
padding-top: 50px;
font-family: perfectFont;
}
.login .login-box .right-card .company {
}
.login .login-box .right-card .company {
font-size: 20px;
text-align: center;
font-weight: bold;
}
.login .login-box .right-card .t {
}
.login .login-box .right-card .t {
margin-top: 20px;
font-size: 34px;
text-align: center;
font-weight: bold;
margin-bottom: 30px;
}
.field_wrap {
}
.field_wrap {
width: 330px;
margin: 0 auto;
font-family: perfectFont;
}
.field_wrap .pwd_box {
}
.field_wrap .pwd_box {
position: relative;
}
.field_wrap .pwd_box .mu-text-field {
}
.field_wrap .pwd_box .mu-text-field {
width: 100%;
color: rgba(0, 0, 0, 0.54);
}
.field_wrap .pwd_box .mu-text-field.has-label {
}
.field_wrap .pwd_box .mu-text-field.has-label {
min-height: 72px;
}
.field_wrap .pwd_box .mu-text-field .mu-text-field-content {
}
.field_wrap .pwd_box .mu-text-field .mu-text-field-content {
display: block;
height: 100%;
padding-bottom: 12px;
padding-top: 4px;
}
.field_wrap .pwd_box .mu-text-field.has-label .mu-text-field-content {
}
.field_wrap .pwd_box .mu-text-field.has-label .mu-text-field-content {
padding-top: 28px;
padding-bottom: 12px;
}
.field_wrap
.pwd_box
.mu-text-field.has-label
.mu-text-field-content
.mu-text-field-label {
}
.field_wrap .pwd_box .mu-text-field.has-label .mu-text-field-content .mu-text-field-label {
line-height: 20px;
transition: all 0.45s cubic-bezier(0.23, 1, 0.32, 1);
z-index: 1;
......@@ -299,21 +304,14 @@ export default {
font-size: 16px;
font-family: perfectFont;
font-weight: bold;
}
.field_wrap
.pwd_box
.mu-text-field.has-label
.mu-text-field-content
.mu-text-field.has-label
.mu-text-field-label {
}
.field_wrap .pwd_box .mu-text-field.has-label .mu-text-field-content .mu-text-field.has-label .mu-text-field-label {
top: 8px;
position: absolute;
}
.field_wrap
.pwd_box
.mu-text-field.has-label
.mu-text-field-content
.mu-text-field-input {
}
.field_wrap .pwd_box .mu-text-field.has-label .mu-text-field-content .mu-text-field-input {
appearance: none;
outline: none;
border: none;
......@@ -328,12 +326,14 @@ export default {
color: rgba(0, 0, 0, 0.87);
font-family: inherit;
position: relative;
}
.field_wrap .el-button,
.field_wrap .el-checkbox__inner {
}
.field_wrap .el-button,
.field_wrap .el-checkbox__inner {
border-radius: 0;
}
.mu-text-field-line {
}
.mu-text-field-line {
background-color: rgba(0, 0, 0, 0.4);
margin: 0;
height: 1px;
......@@ -343,8 +343,9 @@ export default {
position: absolute;
box-sizing: content-box;
overflow: visible;
}
.mu-text-field-focus-line {
}
.mu-text-field-focus-line {
margin: 0;
height: 2px;
border: none;
......@@ -358,33 +359,40 @@ export default {
transition: transform 0.45s cubic-bezier(0.23, 1, 0.32, 1);
transition: transform 0.45s cubic-bezier(0.23, 1, 0.32, 1),
-webkit-transform 0.45s cubic-bezier(0.23, 1, 0.32, 1);
}
.mu-text-field-focus-line.focus {
}
.mu-text-field-focus-line.focus {
transform: scaleX(1);
}
.el-button--primary,
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
}
.el-button--primary,
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #409efe !important;
border-color: #409efe !important;
}
.login .login-box .right-card .forget {
}
.login .login-box .right-card .forget {
margin-top: 12px;
display: flex;
}
.login .login-box .right-card .forget .item-forget {
}
.login .login-box .right-card .forget .item-forget {
flex: 1;
font-size: 14px;
font-family: perfectFont;
}
.login .login-box .right-card .forget .item-forget:last-child {
}
.login .login-box .right-card .forget .item-forget:last-child {
text-align: right;
}
.login .login-box .right-card .forget .item-forget a {
}
.login .login-box .right-card .forget .item-forget a {
color: #000;
text-decoration: none;
}
.login .login-box .right-card .forget .item-forget a:hover {
}
.login .login-box .right-card .forget .item-forget a:hover {
color: #409efe;
}
}
</style>
\ No newline at end of file
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