import React from 'react'; import { Tooltip, Button, AutoComplete, Input, Select, Spin, Table, message, Form, Tabs, DatePicker, } from 'antd'; import $ from 'jquery/src/ajax'; import { ShowModal, } from "@/tools.js"; import { industry } from "@/dataDic.js" import ShowModalDiv from "@/showModal.jsx"; import { ChooseList } from "../../../order/orderNew/chooseList"; import MainBusinessLog from './mainBusinessLog'; import moment from 'moment'; import './customer.less'; const TabPane = Tabs.TabPane; const { RangePicker } = DatePicker; const IntentionCustomer = Form.create()(React.createClass({ getInitialState() { return { searchInfor: {}, fjlist: [], loading: false, visible: false, changeList: undefined, uid: '', dataSource: [], pagination: { defaultCurrent: 1, defaultPageSize: 10, showQuickJumper: true, pageSize: 10, onChange: function (page) { this.loadData(page); }.bind(this), showTotal: function (total) { return '共' + total + '条数据'; } }, columns: [{ title: '客户名称', dataIndex: 'nickname', key: 'nickname', fixed: 'left', width: 200, render: text => { return (
{text}
) } }, { title: '地区', dataIndex: 'area', key: 'area', width: 150, render: (text, record) => { return (record.province || "") + (!record.city ? "" : "-") + (record.city || "") + (!record.area ? "" : "-") + (record.area || ""); }, }, { title: '客户类型', dataIndex: 'shareType', key: 'shareType', render: text => { return (
{["私有客户", "公共客户", "签单客户", "外联客户"][text]}
) } }, { title: '是否签单', dataIndex: 'signBills', key: 'signBills', render: text => { return (
{["否", "是"][text]}
) } }, { title: '主营产品', dataIndex: 'businessScope', key: 'businessScope', width: 200, }, { title: '行业', dataIndex: 'industry', key: 'industry', }, { title: '联系人', dataIndex: 'contactName', key: 'contactName', }, { title: '所属人', dataIndex: 'adminName', key: 'adminName', }, { title: '意向合作项目', dataIndex: 'intendedProject', key: 'intendedProject', width: 220, }, { title: '知产情况', dataIndex: 'patentCount', key: 'patentCount', width: 220, render: (text, record) => { return (
专利 {text || 0}  其中发明专利 {record.inventionPatentCount || 0}  实用新型 {record.utilityModelCount || 0}  外观设计 {record.appearancePatentCount || 0}  软著 {record.softwareWorksCount || 0}  其他类型 {record.otherCount || 0}
) } }, { title: '财务数据', dataIndex: 'financialData', key: 'financialData', width: 200, }, { title: '前期沟通', dataIndex: 'earlyCommunication', key: 'earlyCommunication', width: 200, }, { title: '面谈思路及目的', dataIndex: 'interviewIdeas', key: 'interviewIdeas', width: 200, }, { title: '更新时间', dataIndex: 'updateTime', key: 'updateTime', width: 80, }, { title: '所属部门', dataIndex: 'depName', key: 'depName', }, { title: '操作', dataIndex: 'id', key: 'id', render: text => { return (
) } } ], columnsX: [ { title: '客户名称', dataIndex: 'nickname', key: 'nickname', fixed: 'left', width: 200, render: text => { return (
{text}
) } }, { title: '地区', dataIndex: 'area', key: 'area', width: 150, render: (text, record) => { return (record.province || "") + (!record.city ? "" : "-") + (record.city || "") + (!record.area ? "" : "-") + (record.area || ""); }, }, { title: '客户类型', dataIndex: 'shareType', key: 'shareType', render: text => { return (
{["私有客户", "公共客户", "签单客户", "外联客户"][text]}
) } }, { title: '渠道类别', dataIndex: 'channelType', key: 'channelType', render: text => { return (
{["", "其他", "民主党派", "园区", "民间组织", "战略合作单位"][text]}
) } }, { title: '企业数', dataIndex: 'enterpriseCount', key: 'enterpriseCount', }, { title: '联系人', dataIndex: 'contactName', key: 'contactName', }, { title: '所属人', dataIndex: 'adminName', key: 'adminName', }, { title: '面谈项目', dataIndex: 'intendedProject', key: 'intendedProject', width: 200, }, { title: '考核指标', dataIndex: 'channelIndicators', key: 'channelIndicators', width: 200, }, { title: '面谈思路及目的', dataIndex: 'interviewIdeas', key: 'interviewIdeas', width: 200, }, { title: '面谈人及分工', dataIndex: 'interviewDistribution', key: 'interviewDistribution', width: 200, }, { title: '所属部门', dataIndex: 'depName', key: 'depName', }, { title: '操作', dataIndex: 'id', key: 'id', render: text => { return (
) } } ], dataSource: [], }; }, componentWillMount() { this.loadData(); }, componentWillReceiveProps(nextProps) { if (nextProps.newChannel !== this.props.newChannel) { this.setState({ changeList: undefined }) this.reset(); } }, loadData(pageNo) { const { searchInfor, pagination } = this.state; this.setState({ loading: true, }); let datas = Object.assign(searchInfor, { newChannel: this.props.newChannel, pageNo: pageNo || 1, pageSize: pagination.pageSize, }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/userArchives/selectUserArchives", data: datas, success: function (data) { ShowModal(this); this.setState({ loading: false, }); if (data.error && data.error.length === 0) { if (data.data.list) { pagination.current = data.data.pageNo; pagination.total = data.data.totalCount; if (data.data && data.data.list && !data.data.list.length) { pagination.current = 0; pagination.total = 0; } this.setState({ dataSource: data.data.list, pagination: this.state.pagination, pageNo: data.data.pageNo, }); } else { this.setState({ dataSource: data.data, pagination: false, }); } } else { message.warning(data.error[0].message); } }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, followUp(e) { const { searchInfor } = this.state; this.setState({ searchInfor: Object.assign(searchInfor, { aname: e, }), }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/customer/listAdminByName", data: { adminName: e, }, success: function (data) { let thedata = data.data; if (!thedata) { if (data.error && data.error.length) { message.warning(data.error[0].message); } thedata = {}; } this.setState({ fjlist: thedata, }); }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, selectF(value) { const { searchInfor, fjlist } = this.state; const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist; this.setState({ searchInfor: Object.assign(searchInfor, { aid: newdataSources.find((item) => item.name == value).id, }), }); }, changeList(arr) { const newArr = []; let list = this.props.newChannel == 1 ? this.state.columnsX : this.state.columns list.forEach((item) => { arr.forEach((val) => { if (val === item.title) { newArr.push(item); } }); }); this.setState({ changeList: newArr, }); }, exportAll() { message.config({ duration: 20, }); let loading = message.loading("下载中..."); this.setState({ exportPendingLoading: true, }); let data = JSON.parse(JSON.stringify(this.state.searchInfor)); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: "/api/admin/userArchives/selectUserArchives/export", data, success: function (data) { if (data.error.length === 0) { this.download(data.data); } else { message.warning(data.error[0].message); } }.bind(this), }).always( function () { loading(); this.setState({ exportPendingLoading: false, }); }.bind(this) ); }, download(fileName) { window.location.href = globalConfig.context + "/open/download?fileName=" + fileName; }, search() { this.loadData(); }, reset() { this.setState({ searchInfor: JSON.parse(JSON.stringify({})), }, () => { this.loadData(); }) }, render() { const { searchInfor } = this.state const { newChannel } = this.props const newdataSources = JSON.stringify(this.state.fjlist) == "{}" ? [] : this.state.fjlist; const newoptions = newdataSources.map((group) => ( {group.name} )); return (
{ this.setState({ showModal: false }) }} />
{newChannel == 1 ? "渠道档案汇总" : "客户档案汇总"}
{ this.setState({ searchInfor: Object.assign(searchInfor, { name: e.target.value, }), }); }} /> {newChannel == 1 && } {newChannel == 0 && { this.setState({ searchInfor: Object.assign(searchInfor, { businessScope: e.target.value, }), }); }} />} {newChannel == 0 && } 更新时间: { this.setState({ searchInfor: Object.assign(searchInfor, { startTime: dataString[0], endTime: dataString[1], }), }); }} />
{this.state.visible && { this.setState({ visible: false, uid: '' }) }} />} ); } })); export default IntentionCustomer;