import React, { Component } from "react"; import { View, Button, Text, Picker, RadioGroup, Label, Radio } from "@tarojs/components"; import Taro, { getCurrentInstance } from "@tarojs/taro"; import { getProvince } from '../../utils/tools/index' import { AtSearchBar, AtTextarea, AtModal, AtModalHeader, AtModalContent, AtModalAction, AtInput, AtIcon, AtButton, AtInputNumber } from "taro-ui"; import Skeleton from "taro-skeleton"; import { queryByUidAll, getInterviewByPrdid, updateUser, addOneContact, findCustomerContacts, updateMainContact, limitUser, getBusinessProjectByName, addProject, queryProjectList, delProject } from "../../utils/servers/servers"; import "./index.less"; import "taro-ui/dist/style/components/icon.scss"; import "taro-ui/dist/style/components/textarea.scss"; import "taro-ui/dist/style/components/modal.scss"; import "taro-ui/dist/style/components/timeline.scss"; import "taro-ui/dist/style/components/calendar.scss"; import "taro-ui/dist/style/components/input.scss"; import "taro-ui/dist/style/components/search-bar.scss"; import MessageNoticebar from "../../components/common/messageNoticebar"; import { industry, channelTypeList, yearList, addressList } from '../../utils/tools/config'; import { getChannel } from "../../utils/tools"; import Superior from "../../components/common/superior"; import CheckboxPicker from "../../components/common/CheckboxPicker"; import AddressPicker from "../../components/common/addressPicker" import CustomerProjectSelect from '../../components/common/CustomerProjectSelect'; import InterviewHisList from "../../components/common/InterviewHisList"; class CustomerProfile extends Component { $instance = getCurrentInstance(); constructor(props) { super(props); this.state = { upType: -1, isOpened: false, dtails: {}, projectingList: [], projectedList: [], projectList: [], info: {}, sector: {}, isAdd: false, obj: {}, userList: [], allProjectList: [], options: [], checkProject: [], checkOptions: [], isSuperior: false, channe: {}, isMask: false, addressPickerShow: false, region: [], customItem: [], multiplePickerShow: false, multiplePickerTitle: '', multiplePickerType: '', multiplePickerOptions: [], multiplePickerCheckedList: [], addItemShow: false, addItemType: '', addItemTitle: '', addItemInputVal: '', interactShow: false, interactShowType: '', interactTitle: '', interactList: [], checkCompShow: false, checkCompList: [], currAddress: [], }; this.queryByUidAll = this.queryByUidAll.bind(this); this.update = this.update.bind(this); this.add = this.add.bind(this); this.getUserList = this.getUserList.bind(this); this.getBusinessProjectByName = this.getBusinessProjectByName.bind(this); this.onSearchChange = this.onSearchChange.bind(this); this.handleOpenMultiplePicker = this.handleOpenMultiplePicker.bind(this); this.handleMultipleConfirm = this.handleMultipleConfirm.bind(this); this.handleAddItemSave = this.handleAddItemSave.bind(this); this.handleCloseAddItemDialog = this.handleCloseAddItemDialog.bind(this); } componentDidMount() { this.setState({ isMask: false }) this.queryByUidAll(); this.getProjectList(); } componentDidUpdate(prevProps) { const { interviewIdx, customerList } = this.props; if (interviewIdx != prevProps.interviewIdx && interviewIdx >= 0 && interviewIdx < customerList.length) { this.queryByUidAll(); this.getProjectList(); } } addCommas(num) { let newNum = num.toString().replace(/,/g, ''); if (num.toString().length > 1) { newNum = newNum.toString().replace(/^0+/, ''); } return newNum.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); } openAddressPicker() { const { dtails } = this.state; let currAddress = []; if (dtails.locationProvince && dtails.locationCity && dtails.locationArea) { let provIdx = 0, cityIdx = 0, areaIdx = 0; addressList.map((provItem, idx1) => { if (provItem.id == dtails.locationProvince) { provIdx = idx1; provItem.cityList.map((cityItem, idx2) => { if (cityItem.id == dtails.locationCity) { cityIdx = idx2; cityItem.areaList.map((areaItem, idx3) => { if (areaItem.id == dtails.locationArea) { areaIdx = idx3; } }) } }) } }) currAddress = [provIdx, cityIdx, areaIdx]; } this.setState({ addressPickerShow: true, currAddress }) } handlePrevClick() { this.props.onPrevClick(); } handleNextClick() { this.onSaveAllData((resData) => { this.props.onNextClick(resData); }) } toggleAddressPicker(e) { if (!e.province) { this.setState({ addressPickerShow: false }); return; } const addressIds = getProvince(e.province, e.city, e.area); const { dtails } = this.state; dtails.locationProvince = addressIds[0]; dtails.locationProvinceName = e.province; dtails.locationCity = addressIds[1]; dtails.locationCityName = e.city; dtails.locationArea = addressIds[2]; dtails.locationAreaName = e.area; this.setState({ dtails, addressPickerShow: false }); } handleSelComp() { const { dtails } = this.state; let externalInvestList = []; if (dtails.externalInvestName) { let externalInvestNameList = dtails.externalInvestName ? dtails.externalInvestName.split(',') : []; let externalInvestIdList = dtails.externalInvestId ? dtails.externalInvestId.split(',') : []; externalInvestList = externalInvestNameList.map((name, idx) => { return { id: externalInvestIdList[idx] || 0, name } }); } this.setState({ checkCompShow: true, checkCompList: externalInvestList }); } handleCheckCompConfirm(data) { let externalInvestId = data.map(item => item.id).join(','); let externalInvestName = data.map(item => item.name).join(','); this.setState({ dtails: { ...this.state.dtails, externalInvestId, externalInvestName } }); } handleOpenMultiplePicker(type) { let multiplePickerOptions = []; let multiplePickerTitle = ''; let multiplePickerCheckedList = []; const { dtails, info } = this.state; switch (type) { case 'industry': // 企业所属行业 multiplePickerOptions = industry; multiplePickerCheckedList = !!dtails.industry ? dtails.industry.toString().split(',') : []; multiplePickerTitle = '请选择企业所属行业'; break; case 'externalInvestIndustry': // 对外投资控股的行业 multiplePickerOptions = industry; multiplePickerCheckedList = !!dtails.externalInvestIndustry ? dtails.externalInvestIndustry.toString().split(',') : []; multiplePickerTitle = '请选择对外投资控股的行业'; break; case 'examineStatusOther': // 复审年份 multiplePickerOptions = yearList; multiplePickerCheckedList = info.examineStatusOther ? info.examineStatusOther.split(',') : []; multiplePickerTitle = '请选择年份'; break; case 'buyStatusOther': // 复购/复审年份 multiplePickerOptions = yearList; multiplePickerCheckedList = info.buyStatusOther ? info.buyStatusOther.split(',') : []; multiplePickerTitle = '请选择年份'; break; default: break; } this.setState({ multiplePickerShow: true, multiplePickerType: type, multiplePickerTitle, multiplePickerOptions, multiplePickerCheckedList: multiplePickerCheckedList.map(item => Number(item)) }) } handleMultipleConfirm(selectedIds, selectedLabels) { const { multiplePickerType, dtails, info } = this.state; switch (multiplePickerType) { case "industry": // 企业所属行业 dtails.industry = selectedIds.join(','); dtails.industryName = selectedLabels.join(','); this.setState({ dtails }) break; case "externalInvestIndustry": // 对外投资控股的行业 dtails.externalInvestIndustry = selectedIds.join(','); dtails.externalInvestIndustryName = selectedLabels.join(','); this.setState({ dtails }) break; case 'examineStatusOther': info.examineStatusOther = selectedIds.join(','); this.setState({ info }); break; case 'buyStatusOther': info.buyStatusOther = selectedIds.join(','); this.setState({ info }); break; default: break; } } bindRegionChange(e) { this.setState({ region: e.detail.value }) } isLogin() { return !!Taro.getStorageSync('userInfor'); } onShareAppMessage() { this.limitUser(); return { title: "客户档案", path: "/pages/customerProfile/index?id=" + this.$instance.router.params.id, }; } getInterviewData() { getInterviewByPrdid({ prdid: this.$instance.router.params.prdid }).then(res => { if (res.error.length === 0) { let defaultDetailData = this.state.dtails || {}; this.setState({ dtails: { ...defaultDetailData, earlyCommunication: res.data.data.earlyCommunication, customerDemand: res.data.data.customerDemand, interviewIdeas: res.data.data.interviewIdeas, interviewPurpose: res.data.data.interviewPurpose, interviewRecommend: res.data.data.interviewRecommend, interviewFeedback: res.data.data.interviewFeedback, followUpPlan: res.data.data.followUpPlan, interviewList: res.data.list.filter(item => !!item.prdid), } }); } else { Taro.showToast({ title: "沟通情况数据获取异常", icon: "none" }); } }) } // 客户档案详情 queryByUidAll() { const id = this.$instance.router.params.id; queryByUidAll( true, { id } ) .then((v) => { if (v.error.length === 0) { let dtailsData = { ...v.data, companyCount: this.addCommas(v.data.companyCount || 0), socialSecurityCount: this.addCommas(v.data.socialSecurityCount || 0), externalInvestCount: this.addCommas(v.data.externalInvestCount || 0), financialRevenue: this.addCommas(v.data.financialRevenue || 0), financialTax: this.addCommas(v.data.financialTax || 0), financialProperty: this.addCommas(v.data.financialProperty || 0), financialRd: this.addCommas(v.data.financialRd || 0), enterpriseCount: this.addCommas(v.data.enterpriseCount || 0), earlyCommunication: '', customerDemand: '', interviewIdeas: '', interviewPurpose: '', interviewRecommend: '', interviewFeedback: '', followUpPlan: '', interviewList: [], } let patentCount = this.countZlNum(dtailsData); this.setState({ dtails: { ...dtailsData, patentCount } }, () => { this.getInterviewData(); }); } else { setTimeout(() => { Taro.navigateBack({ delta: 1 }) }, 1800); Taro.showToast({ title: v.error[0].message, icon: "none", duration: 1800, }); } }) .catch((err) => { Taro.showToast({ title: "系统错误,请稍后再试", icon: "none" }); }); } validParams(params) { const { dtails } = this.state; let flag = true; let message = ''; if (dtails.newChannel == 1) { // 渠道客户 if (!params.channelType) { flag = false; message = '请选择渠道性质'; } else if (!params.enterpriseCount) { flag = false; message = '请输入渠道所覆盖企业数'; } else if (!params.channelIndicators) { flag = false; message = '请输入渠道考核指标'; } else if (!params.interviewIdeas || (params.interviewIdeas && params.interviewIdeas.length < 20)) { message = '请输入面谈思路,并且在20字以上'; flag = false; } else if (!params.interviewPurpose || (params.interviewPurpose && params.interviewPurpose.length < 20)) { message = '请输入面谈达成的目的,并且在20字以上'; flag = false; } else { if (this.state.dtails.interviewList.length) { if (!params.interviewFeedback || (params.interviewFeedback && params.interviewFeedback.length < 20)) { message = '请输入面谈后的反馈,并且在20字以上'; flag = false; } else if (!params.followUpPlan || (params.followUpPlan && params.followUpPlan.length < 20)) { message = '请输入后续跟进计划,并且在20字以上'; flag = false; } } } } else { if (!params.locationProvince) { message = '请选择企业所在地省市区'; flag = false; } else if (!params.industry) { message = '请选择企业所属行业'; flag = false; } else if (!params.businessScope) { message = '主营产品不能为空'; flag = false; } else if (params.companyCount === '' || params.companyCount === undefined || params.companyCount === null) { message = '请输入母/子公司数'; flag = false; } else if (params.socialSecurityCount === '' || params.socialSecurityCount === undefined || params.socialSecurityCount === null) { message = '请输入社保人数,并且不能为0'; flag = false; } else if (!Number(params.financialRevenue)) { message = '请输入营收数据,并且不能为0'; flag = false; } else if (!Number(params.financialTax)) { message = '请输入税收数据,并且不能为0'; flag = false; } else if (!Number(params.financialProperty)) { message = '请输入资产数据,并且不能为0'; flag = false; } else if (!Number(params.financialRd)) { message = '请输入研发费用,并且不能为0'; flag = false; } else if (!params.earlyCommunication || (params.earlyCommunication && params.earlyCommunication.length < 20)) { message = '请输入客户的难处,并且在20字以上'; flag = false; } else if (!params.customerDemand || (params.customerDemand && params.customerDemand.length < 20)) { message = '请输入客户的需求,并且在20字以上'; flag = false; } else if (!params.interviewIdeas || (params.interviewIdeas && params.interviewIdeas.length < 20)) { message = '请输入面谈思路,并且在20字以上'; flag = false; } else if (!params.interviewPurpose || (params.interviewPurpose && params.interviewPurpose.length < 20)) { message = '请输入面谈达成的目的,并且在20字以上'; flag = false; } else if (!params.interviewRecommend || (params.interviewRecommend && params.interviewRecommend.length < 20)) { message = '请输入经理/上级面谈建议,并且在20字以上'; flag = false; } else { if (this.state.dtails.interviewList.length) { if (!params.interviewFeedback || (params.interviewFeedback && params.interviewFeedback.length < 20)) { message = '请输入面谈后的反馈,并且在20字以上'; flag = false; } else if (!params.followUpPlan || (params.followUpPlan && params.followUpPlan.length < 20)) { message = '请输入后续跟进计划,并且在20字以上'; flag = false; } } } } return { flag, message }; } onSaveAllData(callback) { const { dtails } = this.state; let params = { id: dtails.id, uid: dtails.uid, locationProvince: dtails.locationProvince, locationProvinceName: dtails.locationProvinceName, locationCity: dtails.locationCity, locationCityName: dtails.locationCityName, locationArea: dtails.locationArea, locationAreaName: dtails.locationAreaName, type: 1, // 1、更新档案和面谈,0、只更新档案 }; // 是否在面谈中,表示本次面谈未结束 let curruaiIdList = this.props.uaiIdList.filter(item => item.uid == dtails.uid); if (curruaiIdList.length) { // 面谈编号 params.uaiId = curruaiIdList[0].uaiId; } if (dtails.newChannel == 1) { // 渠道客户 params = { ...params, channelType: dtails.channelType, enterpriseCount: dtails.enterpriseCount.replace(/,/g, ''), channelIndicators: dtails.channelIndicators, interviewIdeas: dtails.interviewIdeas, interviewPurpose: dtails.interviewPurpose, interviewFeedback: dtails.interviewFeedback, followUpPlan: dtails.followUpPlan, }; } else { params = { ...params, industry: dtails.industry, industryName: dtails.industryName, earlyCommunication: dtails.earlyCommunication, customerDemand: dtails.customerDemand, interviewIdeas: dtails.interviewIdeas, interviewPurpose: dtails.interviewPurpose, interviewRecommend: dtails.interviewRecommend, interviewFeedback: dtails.interviewFeedback, followUpPlan: dtails.followUpPlan, patentCount: dtails.patentCount, inventionPatentCount: dtails.inventionPatentCount, utilityModelCount: dtails.utilityModelCount, appearancePatentCount: dtails.appearancePatentCount, softwareWorksCount: dtails.softwareWorksCount, otherCount: dtails.otherCount, financialData: dtails.financialData, companyCount: dtails.companyCount.replace(/,/g, ''), socialSecurityCount: dtails.socialSecurityCount.replace(/,/g, ''), externalInvestCount: dtails.externalInvestCount.replace(/,/g, ''), externalInvestIndustry: dtails.externalInvestIndustry, externalInvestIndustryName: dtails.externalInvestIndustryName, externalInvestId: dtails.externalInvestId, externalInvestName: dtails.externalInvestName, financialRevenue: dtails.financialRevenue.replace(/,/g, ''), financialTax: dtails.financialTax.replace(/,/g, ''), financialProperty: dtails.financialProperty.replace(/,/g, ''), financialRd: dtails.financialRd.replace(/,/g, ''), standard: dtails.standard, businessScope: dtails.businessScope, }; } for (let key in params) { if (params[key] === undefined || params[key] === 'undefined' || params[key] === null || params[key] === 'null') { delete params[key]; } } const { flag, message } = this.validParams(params); if (!flag) { Taro.showToast({ title: message, icon: "none", }); return; } updateUser(params).then((v) => { if (v.error.length === 0) { Taro.showToast({ title: "修改成功", }); callback && callback(v.data); } else { Taro.showToast({ title: v.error[0].message, icon: "none", }); } }) } // 计算专利总数 countZlNum({ inventionPatentCount, utilityModelCount, appearancePatentCount, softwareWorksCount, otherCount }) { let count = 0; if (inventionPatentCount && !isNaN(inventionPatentCount)) { count += Number(inventionPatentCount); } if (utilityModelCount && !isNaN(utilityModelCount)) { count += Number(utilityModelCount); } if (appearancePatentCount && !isNaN(appearancePatentCount)) { count += Number(appearancePatentCount); } if (softwareWorksCount && !isNaN(softwareWorksCount)) { count += Number(softwareWorksCount); } if (otherCount && !isNaN(otherCount)) { count += Number(otherCount); } return count; } // 修改客户档案 update() { // const { upType, info } = this.state // console.log(info) // let tipList = [ // { key: "inventionPatentCount", value: "请填写发明专利数" }, // { key: "utilityModelCount", value: "请填写实用新型数" }, // { key: "appearancePatentCount", value: "请填写外观专利数" }, // { key: "softwareWorksCount", value: "请填写软著数" }, // { key: "otherCount", value: "请填写其他数量" }, // { key: "financialData", value: "请填写财务数据" }, // { key: "earlyCommunication", value: "请填写前期沟通" }, // { key: "interviewIdeas", value: "请填写面谈思路及目的" }, // { key: "interviewDistribution", value: "请填写主要面谈人及分工" }, // { key: "enterpriseCount", value: "请填写覆盖企业数" }, // { key: "channelIndicators", value: "请填写渠道考核指标" }, // ] // if (!info.id) { // delete info.id // } // for (let i in info) { // if (!info[i] && info[i] !== 0) { // for (var j = 0; j < tipList.length; j++) { // if (tipList[j].key == i) { // Taro.showToast({ // title: tipList[j].value, // icon: "none", // }); // } // } // return // } else if (info[i] == 0) { // if (i == "channelType") { // Taro.showToast({ // title: "请选择渠道类型", // icon: "none", // }); // return // } // } // if ((i == "financialData" || i == "earlyCommunication" || i == "interviewIdeas" || i == "interviewDistribution") // && info[i].length < 20) { // Taro.showToast({ // title: "至少20字以上", // icon: "none", // }); // return // } // } // updateUserDate(upType, info).then((v) => { // if (v.error.length === 0) { // Taro.showToast({ // title: "修改成功", // }); // this.setState({ // isOpened: false // }) // this.queryByUidAll() // } else { // Taro.showToast({ // title: v.error[0].message, // icon: "none", // }); // } // }).catch(() => { // }) if (this.state.upType == 5) { this.postAddProject(); } else { if (this.state.upType == 1) { // 计算专利 let patentCount = this.countZlNum(this.state.info); this.setState({ isOpened: false, dtails: { ...this.state.dtails, ...this.state.info, patentCount } }) } else { this.setState({ isOpened: false, dtails: { ...this.state.dtails, ...this.state.info } }) } } } postAddProject() { const { checkProject, dtails, info, projectList } = this.state; const params = { uid: dtails.uid }; if (!checkProject.length) { Taro.showToast({ title: "请选择要添加的项目", icon: "none", }); return; } else { let isAdded = projectList.some(item => item.pid == checkProject[0].id) if (isAdded) { Taro.showToast({ title: checkProject[0].bname + '已存在,请勿重复添加!', icon: "none", }); return false; } params.pid = checkProject[0].id; if (checkProject[0].cSort == 9) { if (!info.examineStatus) { Taro.showToast({ title: "请选择审核状态", icon: "none", }); return; } else if (info.examineStatus == 2 && !info.examineStatusOther) { Taro.showToast({ title: "请选择复审年份", icon: "none", }); return; } else if (info.examineStatus == 2 && info.examineStatusOther.split(',').length > 1) { Taro.showToast({ title: "复审年份只能选择一个", icon: "none", }); return; } else { params.examineStatus = info.examineStatus; params.examineStatusOther = info.examineStatus == 2 ? info.examineStatusOther : ''; } } else if (checkProject[0].cSort == 6) { if (!info.buyStatus) { Taro.showToast({ title: "请选择复购状态", icon: "none", }); return; } else if (info.buyStatus == 2 && !info.buyStatusOther) { Taro.showToast({ title: "请选择复购/复审年份", icon: "none", }); return; } else { params.buyStatus = info.buyStatus; params.buyStatusOther = info.buyStatus == 2 ? info.buyStatusOther : ''; } } } addProject(params).then(res => { if (res.error.length == 0) { Taro.showToast({ title: "项目新增成功!", }); this.setState({ isOpened: false, checkProject: [] }) this.getProjectList(); } else { Taro.showToast({ title: res.error[0].message, icon: "none" }); } }) } /** * 获取项目列表 */ getProjectList() { let uid = this.$instance.router.params.id; const params = { uid, pageNo: 1, pageSize: 9999 } queryProjectList(params).then(res => { let urlPrdid = this.$instance.router.params.prdid; if (!res.error.length) { let projectList = res.data.list.filter(item => item.status === 0); this.setState({ projectList, projectingList: projectList.filter(item => item.prdid == urlPrdid), projectedList: projectList.filter(item => item.prdid != urlPrdid) }); } }) } handleDelProject(data) { delProject(data.id, data).then(res => { if (!res.error.length) { Taro.showToast({ title: "删除成功!", }); this.getProjectList(); } else { Taro.showToast({ title: v.error[0].message, icon: "none" }); } }) } // 新建联系人 add() { let data = this.state.obj for (let i in data) { if (!data[i] && data[i] !== 0) { Taro.showToast({ title: "请完善信息", icon: "none", }); return } else if ('name,position,department'.indexOf(i) > -1) { if (!data[i].match(/^[\D].*[\u4e00-\u9fff]+$/)) { let keyObjName = { name: "姓名", position: "职位", department: "部门" }; Taro.showToast({ title: `请输入正确的${keyObjName[i]},不能以数字开头,且至少包含一个汉字`, icon: "none", }); return } } else if (i == "mobile") { if (!(/^1[3-9]\d{9}$/.test(data[i]))) { Taro.showToast({ title: "请输入正确地手机号", icon: "none", }); return } } } data.major = 1 addOneContact(data).then((v) => { if (v.error.length === 0) { Taro.showToast({ title: "添加成功", }); this.setState({ isAdd: false }) this.queryByUidAll() } else { Taro.showToast({ title: v.error[0].message, icon: "none", }); } }).catch(() => { }) } // 项目列表 getBusinessProjectByName(val) { getBusinessProjectByName({ businessName: val || "", }) .then((v) => { if (v.error.length === 0) { let theArr = []; if (v.data.length > 0) { for (let i = 0; i < v.data.length; i++) { let thisdata = v.data[i]; theArr.push({ value: thisdata.id, label: thisdata.bname, }); }; } this.setState({ allProjectList: v.data, options: theArr }) } else { Taro.showToast({ title: v.error[0].message, icon: "none" }); } }) .catch((err) => { Taro.showToast({ title: "系统错误,请稍后再试", icon: "none" }); }); } onSearchChange(value) { this.setState({ value, }); } getUserList() { findCustomerContacts({ uid: this.$instance.router.params.id, }) .then((v) => { if (v.error.length === 0) { this.setState({ userList: v.data || [] }) } else { Taro.showToast({ title: v.error[0].message, icon: "none" }); } }) .catch((err) => { Taro.showToast({ title: "系统错误,请稍后再试", icon: "none" }); }); } updateMainContact(id) { updateMainContact({ uid: this.$instance.router.params.id, ocbId: id, }).then((v) => { if (v.error.length === 0) { Taro.showToast({ title: "设置成功", }); this.getUserList() } else { Taro.showToast({ title: v.error[0].message, icon: "none", }); } }).catch(() => { }) } limitUser() { limitUser({ uid: this.$instance.router.params.id, // hours: 1, }).then((v) => { if (v.error.length === 0) { } else { Taro.showToast({ title: v.error[0].message, icon: "none", }); } }).catch(() => { }) } addItemDialog(type) { let title; switch (type) { case 'externalInvestName': // 对外投资控股的企业名称 title = '添加对外投资控股的企业名称'; break; default: break; } this.setState({ addItemShow: true, addItemType: type, addItemTitle: title }); } handleCloseAddItemDialog() { this.setState({ addItemShow: false, addItemType: '', addItemInputVal: '' }); } handleAddItemSave() { switch (this.state.addItemType) { case 'externalInvestName': const { dtails } = this.state; let externalInvestName = this.state.dtails.externalInvestName || ''; let externalInvestNameArr = externalInvestName.split(',').filter(item => !!item); externalInvestNameArr.push(this.state.addItemInputVal); dtails.externalInvestName = externalInvestNameArr.join(','); this.setState({ dtails }, () => { this.handleCloseAddItemDialog(); }); break; default: break; } } openInteractHis(type) { let interactTitle; let interactList = this.state.dtails.interviewList; switch (type) { case 'earlyCommunication': interactTitle = '客户的难处历史记录'; break; case 'customerDemand': interactTitle = '客户的需求历史记录'; break; case 'interviewIdeas': interactTitle = '面谈思路历史记录'; break; case 'interviewPurpose': interactTitle = '面谈达成的目的历史记录'; break; case 'interviewRecommend': interactTitle = '经理/上级面谈建议历史记录'; break; case 'interviewFeedback': interactTitle = '面谈后反馈历史记录'; interactList = interactList.slice(1, interactList.length); break; case 'followUpPlan': interactTitle = '后续跟进计划历史记录'; interactList = interactList.slice(1, interactList.length); break; default: break; } this.setState({ interactShow: true, interactShowType: type, interactTitle, interactList }); } renderProjectItemName(data) { let name = data.name; if (!!data.buyStatus) { // 会员项目 if (data.buyStatus === 1) { name = name + `(新购)`; } else if (data.buyStatus === 2) { name = name + `(复购${data.buyStatusOther})`; } } else if (!!data.examineStatus) { // 高新项目 if (data.examineStatus === 1) { name = name + `(初次审核)`; } else if (data.examineStatus === 2) { name = name + `(${data.examineStatusOther}年复审)`; } } return name; } render() { const { dtails, upType, info, obj, userList } = this.state; const publicType = this.$instance.router.params.publicType; return ( {Object.keys(dtails).length === 0 ? ( ) : ( {dtails.nickname}   {["未签单", "已签单"][dtails.signBills]} {publicType === '0' && } {/* 分享 */} { publicType === '0' && ( <> { e.stopPropagation() this.setState({ isSuperior: true }) }} >上级指导 { this.state.isSuperior && { this.setState({ isSuperior: false }) }} /> } { e.stopPropagation() Taro.navigateTo({ url: "/pages/situation/index?id=" + this.$instance.router.params.id + "¬Required=" + this.$instance.router.params.notRequired, }); }} >公出记录 {dtails.orgCode} {dtails.createTime} )} { dtails.newChannel == 1 ? 渠道面谈思路表 {publicType === '0' && ( <> 企业所在地省市区: {dtails.locationProvince ? `${dtails.locationProvinceName}-${dtails.locationCityName}-${dtails.locationAreaName}` : ''} 渠道类别: {!getChannel(dtails.channelType) ? "" : getChannel(dtails.channelType)} 渠道企业数: { dtails.enterpriseCount = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 渠道考核指标: { this.setState({ dtails: Object.assign(dtails, { channelIndicators: e, }), }) }} maxLength={200} placeholder='请填写渠道考核指标~' disabled /> 首次面谈时间: {dtails.firstInterviewDate || '暂无面谈记录'} 主要面谈联系信息: { !!dtails.contactList && dtails.contactList.map((v, k) => {v.name}  {v.position}  {v.department}  {v.mobile} ) } 本次面谈项目: { this.state.projectingList.map((item) => { return {this.renderProjectItemName(item)} }) } 已面谈项目: { this.state.projectedList.map((item, idx) => { if (idx == this.state.projectedList.length - 1) { return {this.renderProjectItemName(item)} } return {this.renderProjectItemName(item)}、 }) } )} 面谈思路: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewIdeas')}> ) : null} { dtails.interviewIdeas = value; this.setState({ dtails }); }} disabled /> 面谈达成的目的: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewPurpose')}> ) : null} { dtails.interviewPurpose = value; this.setState({ dtails }); }} disabled /> {dtails.interviewList && dtails.interviewList.length ? ( <> 面谈后的反馈: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewFeedback')}> ) : null} { dtails.interviewFeedback = value; this.setState({ dtails }); }} disabled /> 后续跟进计划: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('followUpPlan')}> ) : null} { dtails.followUpPlan = value; this.setState({ dtails }); }} disabled /> ) : null} : 企业面谈思路表 {publicType === '0' && ( <> 企业所在地省市区: {dtails.locationProvince ? `${dtails.locationProvinceName}-${dtails.locationCityName}-${dtails.locationAreaName}` : ''} 企业所属行业: {this.state.dtails.industryName || ''} 主营产品: { dtails.businessScope = value; this.setState({ dtails }) }} cursor={-1} disabled /> 母/子公司数: { dtails.companyCount = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 社保人数: { dtails.socialSecurityCount = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 对外投资控股的企业数: { dtails.externalInvestCount = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 对外投资控股的行业: {dtails.externalInvestIndustryName || ''} 对外投资控股的企业名称: {dtails.externalInvestName || ''} 首次面谈时间: {dtails.firstInterviewDate || '暂无面谈记录'} 主要面谈联系信息: { !!dtails.contactList && dtails.contactList.map((v, k) => {v.name}  {v.position}  {v.department}  {v.mobile} {this.state.isMask && } ) } 本次面谈项目: { this.state.projectingList.map((item) => { return {this.renderProjectItemName(item)} }) } 已面谈项目: { this.state.projectedList.map((item, idx) => { if (idx == this.state.projectedList.length - 1) { return {this.renderProjectItemName(item)} } return {this.renderProjectItemName(item)}、 }) } )} {publicType === '0' && ( <> 面谈已知企业情况 1.知识产权情况 (专利信息、标准、专利、软著) 专利 {dtails.patentCount || 0}    其中发明专利 {dtails.inventionPatentCount}    实用新型 {dtails.utilityModelCount}    外观设计 {dtails.appearancePatentCount}    软著 {dtails.softwareWorksCount}    标准 {String(dtails.standard) === '1' ? '有' : String(dtails.standard) === '0' ? '无' : ''}    其他类型 {dtails.otherCount}    2.财务数据 营收(万元): { dtails.financialRevenue = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 税收(万元): { dtails.financialTax = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 资产(万元): { dtails.financialProperty = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 研发费用(万元): { dtails.financialRd = this.addCommas(value); this.setState({ dtails }) }} cursor={-1} disabled /> 3.前期沟通情况 )} 客户的难处: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('earlyCommunication')}> ) : null} { dtails.earlyCommunication = value; this.setState({ dtails }); }} disabled /> 客户的需求: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('customerDemand')}> ) : null} { dtails.customerDemand = value; this.setState({ dtails }); }} disabled /> 面谈思路: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewIdeas')}> ) : null} { dtails.interviewIdeas = value; this.setState({ dtails }); }} disabled /> 面谈达成的目的: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewPurpose')}> ) : null} { dtails.interviewPurpose = value; this.setState({ dtails }); }} disabled /> 经理/上级面谈建议: (由经理/上级口述,本人整理,20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewRecommend')}> ) : null} { dtails.interviewRecommend = value; this.setState({ dtails }); }} disabled /> {dtails.interviewList && dtails.interviewList.length ? ( <> 面谈后的反馈: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('interviewFeedback')}> ) : null} { dtails.interviewFeedback = value; this.setState({ dtails }); }} disabled /> 后续跟进计划: (20字以上) {dtails.interviewList.length ? ( this.openInteractHis('followUpPlan')}> ) : null} { dtails.followUpPlan = value; this.setState({ dtails }); }} disabled /> ) : null} {/* 上一页 下一页 */} } )} { this.setState({ isOpened: false, checkProject: [], checkOptions: [] }) }} > 信息修改 { upType == 1 && { this.setState({ info: Object.assign(info, { inventionPatentCount: e, }) }) }} cursor={-1} /> { this.setState({ info: Object.assign(info, { utilityModelCount: e, }) }) }} cursor={-1} /> { this.setState({ info: Object.assign(info, { appearancePatentCount: e, }) }) }} cursor={-1} /> { this.setState({ info: Object.assign(info, { softwareWorksCount: e, }) }) }} cursor={-1} /> 标准 { info.standard = Number(e.target.value); this.setState({ info }); }}> { this.setState({ info: Object.assign(info, { otherCount: e, }) }) }} cursor={-1} /> } { upType == 5 && { this.getBusinessProjectByName(this.state.value); }} onClear={() => { this.setState({ value: "", }, () => { this.getBusinessProjectByName(this.state.value) }); }} cursor={-1} /> {/* 高新项目 */} {this.state.checkProject.length && this.state.checkProject[0].cSort == 9 ? { const { info } = this.state; info.examineStatus = e.target.value; this.setState({ info }); }}> {this.state.info.examineStatus == 2 && 复审年份: this.handleOpenMultiplePicker('examineStatusOther')}>{info.examineStatusOther || '请选择'} } : null} {/* 会员项目 */} {this.state.checkProject.length && this.state.checkProject[0].cSort == 6 ? { const { info } = this.state; info.buyStatus = e.target.value; this.setState({ info }); }}> {this.state.info.buyStatus == 2 && 复购/复审年份: this.handleOpenMultiplePicker('buyStatusOther')}>{info.buyStatusOther || '请选择'} } : null} {this.state.isOpened && { let currProject = this.state.allProjectList.find(item => item.id == e.target.value); this.setState({ checkOptions: [e.target.value], checkProject: [currProject] }); }}> {this.state.options.map((item, i) => { return ( ) })} } } { this.setState({ isAdd: false }) }} > 联系人 { userList.map((item) => {item.name || " "} {item.position || " "} {item.department || " "} {item.mobile || " "} { item.major != 1 && this.updateMainContact(item.id) }} > {item.major == 1 ? "已选" : "选择"} ) } { this.setState({ obj: Object.assign(obj, { name: e, }) }) }} cursor={-1} /> { this.setState({ obj: Object.assign(obj, { position: e, }) }) }} cursor={-1} /> { console.log(e) this.setState({ obj: Object.assign(obj, { department: e, }) }) }} cursor={-1} /> { this.setState({ obj: Object.assign(obj, { mobile: e, }) }) }} cursor={-1} /> {/* 新增项目 */} 新增对外投资控股的企业 this.setState({ addItemInputVal: value })} cursor={-1} /> {/* 多选框 */} { this.setState({ multiplePickerShow: false, multiplePickerCheckedList: [] }) }} onConfirm={this.handleMultipleConfirm} > {/* 沟通情况历史记录 */} { this.setState({ interactShow: false }) }} /> {/* 省市区选择器 */} { this.setState({ checkCompShow: false, checkCompList: [] }) }} onConfirm={this.handleCheckCompConfirm.bind(this)} /> ); } } export default CustomerProfile;