<style>
    @import '../../assets/css/customerManage.css';
    /* .tools{
    padding-bottom: 0
}
.tools-item{
    display: flex;
    height: 41px;
}
.tools-item h1{
    margin: 0 20px 0 0;
    height: 100%;
    line-height: 100%;
    border-bottom: solid 2px rgba(35, 98, 251, 0);
}
.customerManage .tools h1:last-child{
    margin: 0
}
.tools-item .active{
    color: rgb(35, 98, 251);
    border-color: rgb(35, 98, 251);
} */
    
    .el-table__fixed-body-wrapper table {
        padding-bottom: 8px!important;
    }
</style>
<template>
  <div class="customerManage">
    <div class="tools">
        <div class="tools-item">
            <h1>线索管理</h1>
            <!-- <h1 class="cp" :class="[activeMenu === 1 ? 'active' : '']" @click="activeMenu = 1, getList()">客户线索管理</h1>
            <h1 class="cp" :class="[activeMenu === 2 ? 'active' : '']" @click="activeMenu = 2">直客线索管理</h1> -->
        </div>
        <div style="width: 340px;">
            <el-input placeholder="请输入线索名称/手机" v-model="msg.CustomerName" class="input-with-select">
                <el-button slot="append"  icon="el-icon-search" @click="getList"></el-button>
            </el-input>
        </div>
        <div class="rightmenu">
            <!-- <el-button class="crm-btn query-btn" @click="getList">查询</el-button> -->
            <el-dropdown @command="handleCommand">
                <el-button icon="el-icon-plus" class="crm-btn org-btn">新建线索</el-button>
                <el-dropdown-menu slot="dropdown">
                    <el-dropdown-item command="1"><i class="iconfont iconkehu"></i> 客户线索</el-dropdown-item>
                    <el-dropdown-item command="2"><i class="iconfont icontongxunlu"></i> 直客线索</el-dropdown-item>
                </el-dropdown-menu>
            </el-dropdown>
            <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="3"><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>
    </div>
    <div class="query-box" :style="{'padding-bottom': sceneList.length > 0 ? '0px' : '10px'}">
        <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"
                    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>
                        <div class="handle-interval">
                            <div class="vux-flexbox handle-button vux-flex-row"  @click="MsgBus.$emit('sceneBoxShow', 4, 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', 4, 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"
                            :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', 4)">高级筛选</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>
            </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-else>{{item.str}}&nbsp;“{{item.start}}-{{item.end}}”</span>
                    <i class="el-icon-close icon" @click="deleteScene(index)"></i>
                </li>
            </ul>
        </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-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"
            @selection-change="handleSelectionChange">
            <el-table-column fixed type="selection" width="40"></el-table-column>
            <el-table-column
                prop="ClueName"
                label="线索名称"
                v-if="queryType[0].show"
                show-overflow-tooltip>
                <template slot-scope="scope">
                    <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>
<!-- 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="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>

<el-table-column prop="WeChatNo" label="微信号" sortable v-if="queryType[7].show && msg.CustomerType === 1" show-overflow-tooltip>
</el-table-column>
<!-- <el-table-column prop="Address" label="地址" v-if="queryType[4].show" show-overflow-tooltip>
</el-table-column> -->
<el-table-column prop="PersonChargeStr" label="负责人" sortable v-if="queryType[8].show && msg.CustomerType === 1" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="CreateByStr" label="创建人" sortable v-if="queryType[9].show" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="UpdateTime" label="上次更新时间" sortable v-if="queryType[10].show" show-overflow-tooltip>
    <template slot-scope="scope">
                    <span>{{scope.row.UpdateTime}}</span>
                </template>
</el-table-column>
<el-table-column prop="CreateTimestr" label="创建时间" sortable v-if="queryType[11].show" 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>
                        </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>
                        </el-tooltip>
                    </p>
                </template>
</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"/>
                        <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-pagination>
</div>
<el-drawer :with-header="false" size='70%' :visible.sync="drawer" direction="rtl" :before-close="handleClose">
    <customerInfoBox :CustomerId="CustomerId" @transferS="transfer" @deleteClue="deleteClue" @watersS="waters" @editCustS="editCust" />
</el-drawer>
<el-drawer :with-header="false" size='70%' :visible.sync="drawer2" direction="rtl" :before-close="handleClose">
    <guestInfoBox :CustomerId="CustomerId" @transferS="transfer" @deleteClue="deleteClue" @watersS="waters" @editCustS="editCust" />
</el-drawer>
<div v-if="dialogTableVisible">
    <customerDialogBox @getList="getList" :name="dialogTableVisibleName" :CustomerId="CustomerId" />
</div>
<div v-if="guestDialogBoxShow">
    <guestDialogBox @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 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>
</template>
<script>
    import mySelect from "../dialogModel/select";
    import customerInfoBox from "./customerInfoBox";
    import customerDialogBox from "./customerDialogBox";
    import guestDialogBox from "./guestDialogBox";
    import guestInfoBox from "./guestInfoBox";
    export default {
        components: {
            mySelect,
            customerInfoBox,
            customerDialogBox,
            guestDialogBox,
            guestInfoBox
        },
        data() {
            return {
                ruleList:[],
                guestDialogBoxShow: false,
                drawer2: false,
                activeMenu: 1,
                queryType2: [{
                    label: '线索名称',
                    show: true,
                }, {
                    label: '线索来源',
                    show: true,
                }, {
                    label: '来源细分',
                    show: true,
                }, {
                    label: '需求',
                    show: true,
                }, {
                    label: '客户级别',
                    show: true,
                }, {
                    label: '联系人',
                    show: true,
                }, {
                    label: '联系电话',
                    show: true,
                }, {
                    label: '微信',
                    show: true,
                }, {
                    label: '负责人',
                    show: true,
                }, {
                    label: '创建人',
                    show: true,
                }, {
                    label: '上次更新时间',
                    show: true,
                }, {
                    label: '创建时间',
                    show: true,
                }],
                queryType: [{
                    label: '线索名称',
                    show: true,
                }, {
                    label: '线索来源',
                    show: true,
                }, {
                    label: '来源细分',
                    show: true,
                }, {
                    label: '需求',
                    show: true,
                }, {
                    label: '客户级别',
                    show: true,
                }, {
                    label: '联系人',
                    show: true,
                }, {
                    label: '联系电话',
                    show: true,
                }, {
                    label: '微信',
                    show: true,
                }, {
                    label: '负责人',
                    show: true,
                }, {
                    label: '创建人',
                    show: true,
                }, {
                    label: '上次更新时间',
                    show: true,
                }, {
                    label: '创建时间',
                    show: true,
                }],
                CustomerId: 0,
                CustomerIdStr: '',
                transferVisible: false,
                mySelectCtrl: false,
                drawer: false,
                loading: true,
                dialogTableVisible: false,
                dialogTableVisibleName: '新建线索',
                tableData: [],
                multipleSelection: [],
                EmployeeList: [],
                value: '',
                userInfo: {},
                transferMsg: {
                    CustomerIds: [],
                    EmpId: '',
                },
                msg: {
                    CustomerName: '',
                    Contact: '',
                    pageIndex: 1,
                    pageSize: 30,
                    ContactNumber: '',
                    WhereType: -1,
                    OrderBy: '',
                    CustomerType: 1,
                    ID: 29,
                },
                total: 0,
                WhereTypeList: [{
                    id: -1,
                    name: '全部'
                }, {
                    id: 1,
                    name: '我负责的'
                }, {
                    id: 2,
                    name: '下属的'
                }, {
                    id: 3,
                    name: '我参与的'
                }, {
                    id: 4,
                    name: '我关注的'
                }, ],
                selectionList: [{
                    name: '转移',
                    class: 'iconfont iconplus-transfer',
                    myFun: this.transfer
                }, {
                    name: '转化为客户',
                    class: 'iconfont iconplus-transfer',
                    myFun: this.waters
                }, {
                    name: '删除',
                    class: 'iconfont icondelete',
                    myFun: this.deleteClue
                }],
                sceneList: [],
                SceneEmployeeList: [],
                sceneID: 29,
                visible: false,
            };
        },
        mounted() {
            this.userInfo = this.getLocalStorage();
            this.getList()
            this.Employee()
            let $this = this
            this.MsgBus.$on('closeCustomerDialogBox', function() {
                $this.dialogTableVisible = false
                $this.guestDialogBoxShow = false
            })
            this.GetSceneEmployeeList()
            this.MsgBus.$on('sceneSave', function(msg) {
                $this.sceneList = [...msg]
                $this.GetSceneEmployeeList()
                let obj = {}
                msg.forEach(element => {
                    obj[element.name] = element
                });
                $this.msg.Data = obj
                $this.getList()
            })
            this.MsgBus.$on('editScene', function() {
                $this.GetSceneEmployeeList()
            })
        },
        beforeDestroy() {
            this.MsgBus.$off('sceneSave');
            this.MsgBus.$off('editScene');
        },
        methods: {
            changeWhere(item) {
                this.msg.ID = item.ID
                this.sceneID = item.ID
                this.msg.Data = item.WhereData ? JSON.parse(item.WhereData) : {}
                this.msg.WhereType = item.WhereType
                this.visible = false
                this.getList()
            },
            GetSceneEmployeeList() {
                this.apipost('/api/Scene/GetSceneEmployeeList', {
                    LableType: 4
                }, res => {
                    if (res.data.resultCode == 1) {
                        this.SceneEmployeeList = res.data.data
                    }
                })
            },
            deleteScene(index) {
                this.sceneList.splice(index, 1)
                let obj = {}
                this.sceneList.forEach(element => {
                    obj[element.name] = element
                });
                this.msg.Data = obj
                this.getList()
            },
            handleCommand(command) {
                this.CustomerId = 0
                if (command === '1') {
                    this.dialogTableVisibleName = '新建线索'
                    this.dialogTableVisible = true
                } else if (command === '2') {
                    this.guestDialogBoxShow = true
                } else if (command === '3') {
                    this.$message.warning('功能正在开发中~');
                }
            },
            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 => {}
                );
            },

            //删除
            deleteClue(type) {
                console.log('删除')
                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/DelCustomerClue', {
                        CustomerIds: str.substring(0, str.length - 1)
                    }, res => {
                        if (res.data.resultCode == 1) {
                            if (type === 1) {} {
                                this.drawer = false
                                this.drawer2 = false
                            }
                            this.multipleSelection = []
                            this.$message.success(res.data.message);
                            this.getList()
                        }
                    })
                }).catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消'
                    });
                });
            },
            //导出
            export () {
                console.log('导出')
            },
            // 更改状态
            changeState() {
                console.log('更改状态')
            },
            // 转换为客户
            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 + ','
                    })
                    let msg = {
                        CustomerIds: str.substring(0, str.length - 1),
                        CustomerType: this.msg.CustomerType
                    }
                    this.apipost('/api/Customer/UpdateCustomerClue', msg, res => {
                        if (res.data.resultCode == 1) {
                            if (type === 1) {} {
                                this.drawer = false
                                this.drawer2 = false
                            }
                            this.multipleSelection = []
                            this.$message.success(res.data.message);
                            this.getList()
                        }
                    })
                }).catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消'
                    });
                });
            },
            // 关注
            CareforCustomer(scope) {
                this.apipost('/api/Customer/CareforCustomer', {
                    CustomerCreateId: scope.row.CustomerCreateId
                }, res => {
                    if (res.data.resultCode == 1) {
                        this.$message.success('操作成功');
                        this.getList()
                    }
                })
            },
            // 转移
            transfer(type) {
                if (type !== 2) {
                    if (type === 3) {
                        this.multipleSelection.push(this.CustomerId)
                    }
                    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('请选择变更负责人！')
                    }
                    let str = ''
                    this.multipleSelection.map((x, i) => {
                        str = str + x + ','
                    })
                    this.transferMsg.CustomerIds = str.substring(0, str.length - 1)
                    this.apipost('/api/Customer/TransferCustomerClue', this.transferMsg, res => {
                        if (res.data.resultCode == 1) {
                            this.multipleSelection = []
                            this.transferVisible = false
                            if (type === 3) {} {
                                this.drawer = false
                                this.drawer2 = false
                            }
                            this.$message.success(res.data.message);
                            this.getList()
                            this.transferMsg = {
                                CustomerIds: [],
                                EmpId: '',
                            }
                        }
                    })
                }
                console.log('转移')
            },
            showMessageFromChild(list) {
                this.mySelectCtrl = !this.mySelectCtrl
                if (list) {
                    this.queryType = list
                    this.getList()
                }
            },
            editCust(type) {
                this.dialogTableVisibleName = '修改线索'
                if (type === 1) {
                    this.dialogTableVisible = true
                } else {
                    this.guestDialogBoxShow = true
                }
            },
            openDetails(scope) {
                this.CustomerId = scope.row.CustomerId
                this.CustomerName = scope.row.CustomerName
                if (this.msg.CustomerType === 0) {
                    this.drawer = true
                } else {
                    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();
            },
            handleCurrentChange(val) {
                this.msg.pageIndex = val;
                this.getList();
            },
            handleClose(done) {
                done();
            },
            getList: function() {
                this.tableData = []
                this.loading = true
                this.apipost('/api/Customer/GetCustomerCluePage', this.msg, res => {
                    if (res.data.resultCode == 1) {
                        this.tableData = res.data.data.pageData;
                        this.total = res.data.data.count;
                        this.loading = false;
                    }
                })
                if(this.msg.CustomerType==1){
                    // 获取是否开启规则
                    this.GetCustomerAllotRule()
                }
                
            },
            handleSelectionChange(val) {
                this.multipleSelection = val.map(x =>
                    x.CustomerId
                )
            }
        }
    };
</script>