|
|
@@ -56,7 +56,6 @@ Page({
|
|
|
isleave: 1
|
|
|
}
|
|
|
},
|
|
|
- showComingYear: true,
|
|
|
filtratelist: [],
|
|
|
firstTwelveMonths: {
|
|
|
dealaccuracyrate: '0%',
|
|
|
@@ -66,7 +65,6 @@ Page({
|
|
|
},
|
|
|
projectPhases: [],
|
|
|
stagename: ['全部'],
|
|
|
- showStagename: [],
|
|
|
projectPhasesShow: false,
|
|
|
chartDataUnfinish: 1,
|
|
|
ComingYearUnfinish: 1
|
|
|
@@ -113,6 +111,15 @@ Page({
|
|
|
}
|
|
|
}).then(res => {
|
|
|
if (res.code == 1) {
|
|
|
+ try {
|
|
|
+ if (!this.data.isHY) {
|
|
|
+ this.setData({
|
|
|
+ "sa_projstagemagid": res.data[0].sa_projstagemagid
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+
|
|
|
+ }
|
|
|
let list = res.data;
|
|
|
list.unshift({
|
|
|
stagename: '全部'
|
|
|
@@ -129,7 +136,7 @@ Page({
|
|
|
value: ['全部'], //选中值
|
|
|
list
|
|
|
}],
|
|
|
- showStagename: [getApp().globalData.Language.getMapText('全部')]
|
|
|
+ stagename: ['全部']
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
@@ -195,8 +202,8 @@ Page({
|
|
|
"近一年": 1,
|
|
|
"近九个月": 2,
|
|
|
"近六个月": 3,
|
|
|
- "近三个月": 4
|
|
|
- } [content.dateType];
|
|
|
+ "近三个月": 4,
|
|
|
+ } [content.dateType] || 0;
|
|
|
_Http.basic({
|
|
|
"id": 20230630151504,
|
|
|
content
|
|
|
@@ -228,10 +235,33 @@ Page({
|
|
|
this.selectComponent("#TimeRange").onCancel()
|
|
|
} catch (error) {
|
|
|
|
|
|
+ }
|
|
|
+ let damRiver = null,
|
|
|
+ that = this;
|
|
|
+
|
|
|
+ function updateList(params) {
|
|
|
+ clearTimeout(damRiver);
|
|
|
+ damRiver = setTimeout(() => {
|
|
|
+ that.setData({
|
|
|
+ "sa_projstagemagid": params.sa_projstagemagid,
|
|
|
+ stagename: [params.stagename],
|
|
|
+ showIndex: params.rowindex - 1
|
|
|
+ })
|
|
|
+ that.getList(true);
|
|
|
+ }, 200);
|
|
|
}
|
|
|
let option = {
|
|
|
tooltip: {
|
|
|
trigger: 'item',
|
|
|
+ formatter: function (params) {
|
|
|
+ let data = statistics[params.dataIndex];
|
|
|
+ if (!that.data.isHY) {
|
|
|
+ updateList(data);
|
|
|
+ }
|
|
|
+ let tooltipText = params.name + '\n';
|
|
|
+ tooltipText += `${getApp().globalData.Language.getMapText('项目总数')}: ${data.projectqty}\n${data.zhl}`;
|
|
|
+ return tooltipText;
|
|
|
+ }
|
|
|
},
|
|
|
legend: {
|
|
|
data: statistics.map(v => getApp().globalData.Language.getMapText(v.stagename))
|
|
|
@@ -288,6 +318,13 @@ Page({
|
|
|
chart.setOption(option);
|
|
|
return chart;
|
|
|
});
|
|
|
+ if (!this.data.isHY) {
|
|
|
+ this.setData({
|
|
|
+ sa_projstagemagid: res.data[0].sa_projstagemagid,
|
|
|
+ showIndex: 0
|
|
|
+ })
|
|
|
+ this.getList(true)
|
|
|
+ }
|
|
|
})
|
|
|
},
|
|
|
onCheckboxChange(e) {
|
|
|
@@ -315,9 +352,6 @@ Page({
|
|
|
if (!this.data.isHY) this.setComingYear();
|
|
|
},
|
|
|
setComingYear() {
|
|
|
- this.setData({
|
|
|
- showComingYear: false
|
|
|
- })
|
|
|
let pageMsg = this.data.pageMsg;
|
|
|
let content = Object.assign(JSON.parse(JSON.stringify(this.data.content)), this.data.pageMsg)
|
|
|
if (this.data.isHY) {
|
|
|
@@ -330,35 +364,33 @@ Page({
|
|
|
}
|
|
|
pageMsg.signdate_due = '';
|
|
|
content.pageNumber = 1;
|
|
|
- content.stagename = this.data.stagename[0] == '全部' ? [] : this.data.stagename;
|
|
|
+ content.stagename = this.data.stagename[0] == '全部' || this.data.stagename[0] == getApp().globalData.Language.getMapText("全部") ? [] : this.data.stagename;
|
|
|
_Http.basic({
|
|
|
"id": 20241028162104,
|
|
|
content
|
|
|
}).then(res => {
|
|
|
console.log("前12个月总数据", res)
|
|
|
- this.setData({
|
|
|
- showComingYear: true
|
|
|
- })
|
|
|
if (res.code != '1') return wx.showToast({
|
|
|
title: res.msg,
|
|
|
icon: "none"
|
|
|
})
|
|
|
- let comingYear = [];
|
|
|
+ let arr = []
|
|
|
+
|
|
|
if (res.data[0].extradata.array) {
|
|
|
const array = res.data[0].extradata.array;
|
|
|
- comingYear = array.map(v => {
|
|
|
+ arr = [array.map(v => {
|
|
|
return {
|
|
|
name: getApp().globalData.Language.getMapText('预计签约金额'),
|
|
|
value: (v.signamount_due / (wx.getStorageSync('languagecode') == 'ZH' ? 10000 : 1000)).toFixed(0) - 0,
|
|
|
date: v.signdate_due
|
|
|
}
|
|
|
- }).concat(array.map(v => {
|
|
|
+ }), array.map(v => {
|
|
|
return {
|
|
|
name: getApp().globalData.Language.getMapText('预计成交金额'),
|
|
|
value: (v.dealamount_due / (wx.getStorageSync('languagecode') == 'ZH' ? 10000 : 1000)).toFixed(0) - 0,
|
|
|
date: v.signdate_due
|
|
|
}
|
|
|
- }))
|
|
|
+ })];
|
|
|
}
|
|
|
try {
|
|
|
if (res.data[0].extradata) {
|
|
|
@@ -382,25 +414,99 @@ Page({
|
|
|
})
|
|
|
}
|
|
|
} catch (error) {}
|
|
|
- res.data = res.data.map(v => {
|
|
|
- v.progress = v.stage / v.totalstage * 100;
|
|
|
- v.signamount_due = CNY(v.signamount_due, "¥")
|
|
|
- v.dealamount = CNY(v.dealamount, "¥")
|
|
|
- return v
|
|
|
- })
|
|
|
- pageMsg.pageNumber = res.pageNumber + 1
|
|
|
- pageMsg.pageSize = res.pageSize
|
|
|
- pageMsg.pageTotal = res.pageTotal
|
|
|
- pageMsg.total = res.total
|
|
|
- pageMsg.sumsignamount_due = CNY(res.data[0].extradata.sumsignamount_due, "¥")
|
|
|
- pageMsg.sumdealamount_due = CNY(res.data[0].extradata.sumdealamount_due, "¥")
|
|
|
- this.setData({
|
|
|
- comingYear,
|
|
|
- pageMsg,
|
|
|
- list: res.data
|
|
|
- })
|
|
|
-
|
|
|
- let arr = [comingYear.filter(v => v.name == '预计签约金额'), comingYear.filter(v => v.name == '预计成交金额')];
|
|
|
+ if (this.data.isHY) {
|
|
|
+ res.data = res.data.map(v => {
|
|
|
+ v.progress = v.stage / v.totalstage * 100;
|
|
|
+ v.signamount_due = CNY(v.signamount_due, "¥")
|
|
|
+ v.dealamount = CNY(v.dealamount, "¥")
|
|
|
+ return v
|
|
|
+ })
|
|
|
+ pageMsg.pageNumber = res.pageNumber + 1
|
|
|
+ pageMsg.pageSize = res.pageSize
|
|
|
+ pageMsg.pageTotal = res.pageTotal
|
|
|
+ pageMsg.total = res.total
|
|
|
+ pageMsg.sumsignamount_due = CNY(res.data[0].extradata.sumsignamount_due, "¥")
|
|
|
+ pageMsg.sumdealamount_due = CNY(res.data[0].extradata.sumdealamount_due, "¥")
|
|
|
+ this.setData({
|
|
|
+ pageMsg,
|
|
|
+ list: res.data
|
|
|
+ })
|
|
|
+ let option = {
|
|
|
+ color: ['#3875F9', '#F29B3A'], // Custom colors for the bars
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis',
|
|
|
+ axisPointer: {
|
|
|
+ type: 'shadow'
|
|
|
+ },
|
|
|
+ formatter: function (params) {
|
|
|
+ updateList(params);
|
|
|
+ let tooltipText = params[0].name + '\n';
|
|
|
+ params.forEach(item => {
|
|
|
+ tooltipText += `${item.seriesName}: ${item.value}\n`;
|
|
|
+ });
|
|
|
+ return tooltipText;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: '15%', // Adjusted to leave more space for Y-axis labels
|
|
|
+ right: '10%',
|
|
|
+ bottom: '15%', // Adjusted to leave space for rotated X-axis labels
|
|
|
+ top: '16%' // Increased top margin to reduce the height of the main chart area
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ data: ['预计签约金额(万元)', '预计成交金额(万元)'].map(v => getApp().globalData.Language.getMapText(v))
|
|
|
+ },
|
|
|
+ xAxis: [{
|
|
|
+ type: 'category',
|
|
|
+ data: arr[0].map(v => v.date),
|
|
|
+ axisPointer: {
|
|
|
+ type: 'shadow'
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ rotate: 45, // Rotate X-axis labels by 45 degrees
|
|
|
+ align: 'right' // Align labels to the right for better readability
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ yAxis: [{
|
|
|
+ type: 'value',
|
|
|
+ axisLabel: {
|
|
|
+ formatter: '{value}',
|
|
|
+ rotate: 45, // Rotate X-axis labels by 45 degrees
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ series: [{
|
|
|
+ name: getApp().globalData.Language.getMapText('预计签约金额(万元)'),
|
|
|
+ type: 'bar',
|
|
|
+ tooltip: {
|
|
|
+ valueFormatter: function (value) {
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: arr[0].map(v => v.value)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: getApp().globalData.Language.getMapText('预计成交金额(万元)'),
|
|
|
+ type: 'bar',
|
|
|
+ tooltip: {
|
|
|
+ valueFormatter: function (value) {
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: arr[1].map(v => v.value)
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+ this.chartComponent = this.selectComponent('#barGraph');
|
|
|
+ this.chartComponent.init((canvas, width, height, dpr) => {
|
|
|
+ const chart = echarts.init(canvas, null, {
|
|
|
+ width,
|
|
|
+ height,
|
|
|
+ devicePixelRatio: dpr
|
|
|
+ });
|
|
|
+ chart.setOption(option);
|
|
|
+ return chart;
|
|
|
+ });
|
|
|
+ }
|
|
|
let damRiver = null,
|
|
|
that = this;
|
|
|
|
|
|
@@ -415,87 +521,10 @@ Page({
|
|
|
that.getList(true)
|
|
|
}, 200);
|
|
|
}
|
|
|
- let option = {
|
|
|
- color: ['#3875F9', '#F29B3A'], // Custom colors for the bars
|
|
|
- tooltip: {
|
|
|
- trigger: 'axis',
|
|
|
- axisPointer: {
|
|
|
- type: 'shadow'
|
|
|
- },
|
|
|
- formatter: function (params) {
|
|
|
- updateList(params);
|
|
|
- let tooltipText = params[0].name + '\n';
|
|
|
- params.forEach(item => {
|
|
|
- tooltipText += `${item.seriesName}: ${item.value}\n`;
|
|
|
- });
|
|
|
- return tooltipText;
|
|
|
- }
|
|
|
- },
|
|
|
- grid: {
|
|
|
- left: '15%', // Adjusted to leave more space for Y-axis labels
|
|
|
- right: '10%',
|
|
|
- bottom: '15%', // Adjusted to leave space for rotated X-axis labels
|
|
|
- top: '16%' // Increased top margin to reduce the height of the main chart area
|
|
|
- },
|
|
|
- legend: {
|
|
|
- data: ['预计签约金额(万元)', '预计成交金额(万元)'].map(v => getApp().globalData.Language.getMapText(v))
|
|
|
- },
|
|
|
- xAxis: [{
|
|
|
- type: 'category',
|
|
|
- data: arr[0].map(v => v.date),
|
|
|
- axisPointer: {
|
|
|
- type: 'shadow'
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- rotate: 45, // Rotate X-axis labels by 45 degrees
|
|
|
- align: 'right' // Align labels to the right for better readability
|
|
|
- }
|
|
|
- }],
|
|
|
- yAxis: [{
|
|
|
- type: 'value',
|
|
|
- axisLabel: {
|
|
|
- formatter: '{value}',
|
|
|
- rotate: 45, // Rotate X-axis labels by 45 degrees
|
|
|
- }
|
|
|
- }],
|
|
|
- series: [{
|
|
|
- name: getApp().globalData.Language.getMapText('预计签约金额(万元)'),
|
|
|
- type: 'bar',
|
|
|
- tooltip: {
|
|
|
- valueFormatter: function (value) {
|
|
|
- return value;
|
|
|
- }
|
|
|
- },
|
|
|
- data: arr[0].map(v => v.value)
|
|
|
- },
|
|
|
- {
|
|
|
- name: getApp().globalData.Language.getMapText('预计成交金额(万元)'),
|
|
|
- type: 'bar',
|
|
|
- tooltip: {
|
|
|
- valueFormatter: function (value) {
|
|
|
- return value;
|
|
|
- }
|
|
|
- },
|
|
|
- data: arr[1].map(v => v.value)
|
|
|
- }
|
|
|
- ]
|
|
|
- };
|
|
|
- this.chartComponent = this.selectComponent('#barGraph');
|
|
|
- this.chartComponent.init((canvas, width, height, dpr) => {
|
|
|
- const chart = echarts.init(canvas, null, {
|
|
|
- width,
|
|
|
- height,
|
|
|
- devicePixelRatio: dpr
|
|
|
- });
|
|
|
- chart.setOption(option);
|
|
|
- return chart;
|
|
|
- });
|
|
|
-
|
|
|
})
|
|
|
},
|
|
|
getList(init = false) {
|
|
|
if (init.detail != undefined) init = init.detail;
|
|
|
- if (!this.data.isHY) return;
|
|
|
let pageMsg = this.data.pageMsg;
|
|
|
if (init) {
|
|
|
pageMsg.pageNumber = 1;
|
|
|
@@ -503,12 +532,26 @@ Page({
|
|
|
}
|
|
|
if (pageMsg.pageNumber > pageMsg.pageTotal) return;
|
|
|
let content = Object.assign(JSON.parse(JSON.stringify(this.data.content)), pageMsg)
|
|
|
- content.stagename = this.data.stagename[0] == '全部' ? [] : this.data.stagename;
|
|
|
+ content.stagename = this.data.stagename[0] == '全部' || this.data.stagename[0] == getApp().globalData.Language.getMapText("全部") ? [] : this.data.stagename;
|
|
|
+ if (this.data.isHY) {
|
|
|
+ content.where.unfinish = this.data.ComingYearUnfinish;
|
|
|
+ delete content.dateType
|
|
|
+ } else {
|
|
|
+ content.where.unfinish = this.data.chartDataUnfinish;
|
|
|
+ content.sa_projstagemagid = this.data.sa_projstagemagid;
|
|
|
+ content.dateType = {
|
|
|
+ "全部": 99,
|
|
|
+ "近一年": 1,
|
|
|
+ "近九个月": 2,
|
|
|
+ "近六个月": 3,
|
|
|
+ "近三个月": 4
|
|
|
+ } [content.dateType] || 0;
|
|
|
+ }
|
|
|
_Http.basic({
|
|
|
- "id": 20241028162104,
|
|
|
+ "id": this.data.isHY ? 20241028162104 : 20230719085004,
|
|
|
content
|
|
|
}).then(res => {
|
|
|
- console.log("获取前12月列表", res)
|
|
|
+ console.log("获取项目列表", res)
|
|
|
this.setData({
|
|
|
list: res.data
|
|
|
})
|
|
|
@@ -516,7 +559,6 @@ Page({
|
|
|
pageMsg.pageSize = res.pageSize
|
|
|
pageMsg.pageTotal = res.pageTotal
|
|
|
pageMsg.total = res.total
|
|
|
-
|
|
|
try {
|
|
|
res.data = res.data.map(v => {
|
|
|
v.progress = v.stage / v.totalstage * 100;
|
|
|
@@ -527,16 +569,12 @@ Page({
|
|
|
} catch (error) {
|
|
|
|
|
|
}
|
|
|
-
|
|
|
this.setData({
|
|
|
list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
|
|
|
pageMsg
|
|
|
})
|
|
|
})
|
|
|
},
|
|
|
- onReachBottom() {
|
|
|
- this.getList();
|
|
|
- },
|
|
|
openProjectPhases() {
|
|
|
this.setData({
|
|
|
projectPhasesShow: true
|