import React from 'react'; import ajax from 'jquery/src/ajax/xhr.js'; import $ from 'jquery/src/ajax'; import moment from 'moment'; import '@/manageCenter/financialManage/distribute/public.less'; import { Button, Spin, DatePicker, Radio, message } from 'antd'; import { getToday, ShowModal } from '@/tools'; import ShowModalDiv from "@/showModal.jsx"; import './index.less'; import ReactEcharts from 'echarts-for-react/lib/core'; import echarts from 'echarts/lib/echarts'; import 'echarts/lib/chart/line'; import 'echarts/lib/component/legend'; import 'echarts/lib/component/title'; import 'echarts/lib/component/tooltip'; import 'echarts/lib/component/toolbox'; import 'echarts/lib/component/grid'; const RadioButton = Radio.Button; const RadioGroup = Radio.Group; const { RangePicker } = DatePicker const Statistics = React.createClass({ getInitialState() { return { status: 1, releaseDate: getToday(1), info: {}, data: {}, htmlMenus: [], } }, componentWillMount() { this.loadData(); this.getData(); this.mainMenu(); }, mainMenu() { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/selectNavList", data: {}, success: function (data) { if (!data.data) { if (data.error && data.error.length) { message.warning(data.error[0].message); return; } } let menu = data.data; this.setState({ htmlMenus: menu, }); }.bind(this), }).always( function (data) { this.setState({ loading: false, }); }.bind(this) ); }, loadData() { const { releaseDate } = this.state this.setState({ loading: true, }); $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/statistics/consultant/info", data: { startTime: releaseDate[0], endTime: releaseDate[1], }, success: function (data) { ShowModal(this); this.setState({ loading: false, }); if (data.error && data.error.length === 0) { this.setState({ info: data.data }) } else { message.warning(data.error[0].message); } }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, getData() { $.ajax({ method: "get", dataType: "json", crossDomain: false, url: globalConfig.context + "/api/admin/statistics/consultant/lists", success: function (data) { if (data.error && data.error.length === 0) { this.setState({ data: data.data, }) } else { message.warning(data.error[0].message); } }.bind(this), }).always( function () { this.setState({ loading: false, }); }.bind(this) ); }, search() { this.loadData(); }, reset() { this.state.releaseDate = [] this.loadData(); }, getNewUrl(url, cd) { const { htmlMenus = [] } = this.state let id = '' htmlMenus.map(function (item) { if (item.url == url) { id = item.id; } }); return `${url}?rid=${id}#${cd}` }, render() { const { status, info, data } = this.state let array = window.adminData.shiroList.split(","); const list = [ { color: "#99FFFF", title: "总项目数:", sum: info.projectCount, tit: "项目数", number: info.rangeProjectCount, url: this.getNewUrl("/admin/project.html", "myTaskZxs"), type: '' }, { color: "#FFFFCC", title: "总进行中数:", sum: info.inProgress, tit: "进行中", number: info.rangeInProgress, url: this.getNewUrl("/admin/project.html", "myTaskZxs"), type: '1' }, { color: "#FFCCCC", title: "总完成数:", sum: info.complete, tit: "完成数", number: info.rangeComplete, url: this.getNewUrl("/admin/project.html", "myTaskZxs"), type: '4' }, { color: "#99CCFF", title: "总未启动数:", sum: info.notStarted, tit: "未启动", number: info.rangeNotStarted, url: this.getNewUrl("/admin/project.html", "myTaskZxs"), type: '0' }, { color: "#99FFCC", title: "总暂停数:", sum: info.stop, tit: "暂停数", number: info.rangeStop, url: this.getNewUrl("/admin/project.html", "myTaskZxs"), type: '29' }, { color: "#CC99CC", title: "总公出数:", sum: info.countPublicRelease, tit: "公出数", number: info.rangeCountPublicRelease, url: '', type: '' }, { color: "#99CCCC", title: "总协单数:", sum: info.countAssist, tit: "协单数", number: info.rangeCountAssist, url: '', type: '' }, { color: "#FFCC99", title: "待紧急处理事项", list: [ { key: "待变更订单:", value: info.countChange, url: this.getNewUrl('/admin/project.html', array.includes("9") ? "contractChangeJsjl" : "contractChangeJsy"), }, { key: "待成本付款处理:", value: info.orderPayment, url: '' },] }, ] const option = { title: { text: '' }, tooltip: { trigger: 'axis' }, legend: { data: ['项目数', '进行中数', '未发起数', '完成数', '暂停数', '公出数', '协单数',] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, // axisLabel: { // interval: 0, // 设置X轴刻度间隔为0 // }, data: data.dates }, yAxis: { type: 'value' }, color: ['#99FFFF', '#cccca3', '#FFCCCC', '#99CCFF', '#99FFCC', '#CC99CC', '#CC99CC', '#99CCCC'], series: [ { name: '项目数', type: 'line', data: data.projectCountList, }, { name: '进行中数', type: 'line', data: data.inProgressList, }, { name: '未发起数', type: 'line', data: data.notStartedList, }, { name: '完成数', type: 'line', data: data.completeList, }, { name: '暂停数', type: 'line', data: data.stopList, }, { name: '公出数', type: 'line', data: data.publicReleaseCountList, }, { name: '协单数', type: 'line', data: data.assistCountList, } ] } return (
{ this.setState({ showModal: false }) }} />
数据统计
{ this.setState({ status: e.target.value }) if (e.target.value == 0) { this.setState({ releaseDate: [] }) } else { this.setState({ releaseDate: getToday(e.target.value) }, () => { this.loadData() }) } }} > 今日 昨日 近7日 近15日 近30日 自定义 { status == 0 && { this.setState({ releaseDate: dataString }) }} /> }
{ list.map((item, index) =>
{ item.title == "待紧急处理事项" ?
{ item.list.map((t, i) =>
{t.key} {t.value}
) }
: }
) }
); }, }); export default Statistics;