123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- import F2 from '@antv/f2';
- // 建议统一从 lib 下引入
- const PieLabel = require('@antv/f2/lib/plugin/pie-label'); // 引入 PieLabel 模块
- // 方式一:全局注册
- F2.Chart.plugins.register(PieLabel);
- import request from '../../../util/http'
- import apiUrl from '../../../util/apiUrl'
- var app = getApp();
- Page({
- data: {
- reportDate: '',
- servantName: '',
- serviceDay: '',
- percentTop: '',
- expendTotal: '',
- taskNum: '',
- reportInfo:'',
- chartShow:true,
- },
- onLoad() {
- let reportInfo=app.globalData.reportInfo;
- let serviceTime=JSON.parse(reportInfo.serviceTime);
- let year=(serviceTime.year==null?'':serviceTime.year);
- let month=(serviceTime.month==null?'':serviceTime.month);
- console.log(reportInfo);
- if(reportInfo.attrOne=='3'){
- this.setData({
- chartShow:false,
- })
- }else{
- this.setData({
- chartShow:true,
- })
- }
- this.setData({
- reportInfo:reportInfo,
- reportDate:year+'年'+month+'月',
- servantName:serviceTime.nickName,
- serviceDay:serviceTime.serviceDays,
- percentTop:serviceTime.serviceQuality,
- expendTotal:reportInfo.expenses
- })
- },
- onInitChart(F2, config) {
- // 饼状图
- const chart = new F2.Chart(config);
- const data = [
- { name: '打扫房间', proportion: 0.4, a: '1' },
- { name: '打扫厨房', proportion: 0.2, a: '1' },
- { name: '带孩子', proportion: 0.18, a: '1' },
- { name: '照顾老人', proportion: 0.15, a: '1' },
- { name: '清洁厨房', proportion: 0.05, a: '1' },
- { name: '其他', proportion: 0.02, a: '1' },
- ];
- chart.source(data);
- chart.legend({
- position: 'right'
- });
- chart.coord('polar', {
- transposed: true,
- innerRadius: 0.7,
- });
- chart.axis(false);
- chart
- .interval()
- .position('a*proportion')
- .color('name', [
- '#1890FF',
- '#13C2C2',
- '#2FC25B',
- '#FACC14',
- '#F04864',
- '#8543E0',
- ])
- .adjust('stack');
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- onInitChart1(F2, config) {
- // 本月任务分布饼状图
- const chart = new F2.Chart(config);
- let taskNum = JSON.parse(this.data.reportInfo.pieChart).taskSum;
- let dataList=JSON.parse(this.data.reportInfo.pieChart).randList;
- dataList.forEach(item => {
- item.percentage=(item.percentage)*1;
- });
- const data =dataList;
- // const data = JSON.parse(this.data.reportInfo.pieChart).randList;
- // const data=[{"taskName":"洗护类","percentage":0.2},{"taskName":"洗e类","percentage":0.8}]
- chart.source(data);
- chart.legend(false);
- chart.coord('polar', {
- transposed: true,
- innerRadius: 0.6,
- });
- chart.axis(false);
- chart
- .interval()
- .position('1*percentage')
- .color('taskName', [
- '#EB6F49',
- '#00D98B',
- '#FDB628',
- '#0091F1',
- '#00E4EC',
- '#8256E8',
- ])
- .adjust('stack');
- chart.guide()
- .text({
- position: ['50%', '50%'],
- style: {
- fill: '#7ED4F6',
- fontSize: '12',
- },
- content: ` 本月共
- ${taskNum}条任务`,
- limitInPlot: true,
- });
- chart.pieLabel({
- sidePadding: 30,
- activeShape: true,
- label1: function label1(data) {
- return {
- text: data.taskName,
- fill: '#7ED4F6',
- fontWeight: 'bold'
- };
- },
- label2: function label2(data) {
- return {
- text: data.percentage+'%',
- fill: '#7ED4F6'
- };
- },
- onClick: function onClick(ev) {
- console.log(ev.data);
- }
- });
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- onInitChart2(F2, config) {
- // 本月任务完成情况
- const chart = new F2.Chart(config);
- let dataList=JSON.parse(this.data.reportInfo.finishInfo);
- dataList.forEach(item => {
- item.percent=(item.percent)*1;
- item.const='const';
- });
- const data =dataList;
- // const data=[{"name":"完成","percent":100,"const":'const'},{"name":"无法完成","percent":200,"const":'const'},{"name":"未完成","percent":300,"const":'const'},{"name":"补打卡","percent":400,"const":'const'}]
- // const data = JSON.parse(this.data.reportInfo.finishInfo);
- chart.source(data);
- chart.legend(false);
- chart.coord('polar', {
- transposed: true,
- });
- chart.axis(false);
- chart
- .interval()
- .position('const*percent')
- .color('name', [
- '#EB6F49',
- '#00D98B',
- '#FDB628',
- '#0091F1',
- '#00E4EC',
- '#8256E8',
- ])
- .adjust('stack');
- chart.pieLabel({
- sidePadding: 30,
- activeShape: true,
- label1: function label1(data) {
- return {
- text: data.name,
- fill: '#7ED4F6',
- fontWeight: 'bold'
- };
- },
- label2: function label2(data) {
- return {
- text: data.percent+'%',
- fill: '#7ED4F6'
- };
- },
- onClick: function onClick(ev) {
- console.log(ev.data);
- }
- });
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- onInitChart3(F2, config) {
- //任务完成趋势图
- const chart = new F2.Chart(config);
- const data = JSON.parse(this.data.reportInfo.taskTrend);
- chart.source(data, {
- workDay: {
- type: 'timeCat',
- tickCount: 5,
- // mask: 'hh:mm',
- range: [ 0, 1 ]
- },
- taskNum: {
- tickCount: 3,
- // formatter: function formatter(ivalue) {
- // return ivalue + '%';
- // }
- }
- });
- // chart.tooltip({
- // showItemMarker: false,
- // onShow: function onShow(ev) {
- // const items = ev.items;
- // items[0].name = null;
- // items[0].name = items[0].title;
- // items[0].value = '¥ ' + items[0].value;
- // }
- // });
- chart.axis('workDay', {
- line: null,
- label: function label(text, index, total) {
- const textCfg = {};
- if (index === 0) {
- textCfg.textAlign = 'left';
- } else if (index === total - 1) {
- textCfg.textAlign = 'right';
- }
- return textCfg;
- }
- });
- chart.axis('tem', {
- grid: function grid(text) {
- if (text === '0%') {
- return {
- lineDash: null,
- lineWidth: 1
- };
- }
- }
- });
- chart.legend({
- position: 'bottom',
- offsetY: -5
- });
- chart.line()
- .position('workDay*taskNum')
- .color('name');
-
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- onInitChart4(F2, config) {
- // 任务类完成详细情况
- const chart = new F2.Chart(config);
- let dataList=JSON.parse(this.data.reportInfo.classfInish).lefts;
- dataList.forEach(item => {
- item.finishRate=(item.finishRate)*1;
- });
- const data =dataList;
- // const data = [{"taskClass":"洗护类","finishRate":100.00,"type":"1","name":null},{"taskClass":"做饭类","finishRate":66.67,"type":"2","name":null},{"taskClass":"打扫类","finishRate":83.33,"type":"3","name":null},{"taskClass":"照顾老人类","finishRate":100.00,"type":"4","name":null},{"taskClass":"照顾孩子类","finishRate":66.67,"type":"5","name":null}];
- // const data=JSON.parse(this.data.reportInfo.classfInish).lefts;
- chart.source(data, {
- finishRate: {
- tickCount: 3,
- range: [ 0, 1 ],
- formatter: function formatter(ivalue) {
- return ivalue + '%';
- }
- }
- });
- // chart.tooltip({
- // showItemMarker: false,
- // onShow: function onShow(ev) {
- // const items = ev.items;
- // items[0].name = null;
- // items[0].name = items[0].title;
- // items[0].value = '¥ ' + items[0].value;
- // }
- // });
- chart.interval()
- .position('taskClass*finishRate')
- .color('l(90) 0:#1890ff 1:#70cdd0'); // 定义柱状图渐变色
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- onInitChart5(F2, config) {
- //任务无法完成原因
- const chart = new F2.Chart(config);
- // const data = [{"number":"20","typeName":"任务太多"},{"number":"0","typeName":"我不会"},{"number":"10","typeName":"任务不详细"}];
-
- let dataList=JSON.parse(this.data.reportInfo.unfinishd);
- dataList.forEach(item => {
- item.number=(item.number)*1;
- });
- const data =dataList;
- // const data=JSON.parse(this.data.reportInfo.unfinishd);
- chart.source(data, {
- sales: {
- tickCount: 5
- }
- });
- // chart.tooltip({
- // showItemMarker: false,
- // onShow: function onShow(ev) {
- // const items = ev.items;
- // items[0].name = null;
- // items[0].name = items[0].title;
- // items[0].value = '¥ ' + items[0].value;
- // }
- // });
- chart.interval()
- .position('typeName*number')
- .color('l(90) 0:#FBEC9F 1:#F3D34D'); // 定义柱状图渐变色
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- onInitChart0(F2, config) {
- //折线图
- const chart = new F2.Chart(config);
- const data = [
- { value: 63.4, city: 'New York', date: '2011-10-01' },
- { value: 62.7, city: 'Alaska', date: '2011-10-01' },
- { value: 72.2, city: 'Austin', date: '2011-10-01' },
- { value: 58, city: 'New York', date: '2011-10-02' },
- { value: 59.9, city: 'Alaska', date: '2011-10-02' },
- { value: 67.7, city: 'Austin', date: '2011-10-02' },
- { value: 53.3, city: 'New York', date: '2011-10-03' },
- { value: 59.1, city: 'Alaska', date: '2011-10-03' },
- { value: 69.4, city: 'Austin', date: '2011-10-03' },
- ];
- chart.source(data, {
- date: {
- range: [0, 1],
- type: 'timeCat',
- mask: 'MM-DD'
- },
- value: {
- max: 300,
- tickCount: 4
- }
- });
- chart.area().position('date*value').color('city').adjust('stack');
- chart.line().position('date*value').color('city').adjust('stack');
- chart.render();
- // 注意:需要把chart return 出来
- return chart;
- },
- });
|