YXXMWGJTSFX.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. const _Http = getApp().globalData.http,
  2. currency = require("../../../utils/currency"),
  3. CNY = (value, symbol = "¥", precision = 2) => currency(value, {
  4. symbol,
  5. precision
  6. }).format();
  7. import * as echarts from '../../ec-canvas/echarts';
  8. Component({
  9. options: {
  10. addGlobalClass: true
  11. },
  12. lifetimes: {
  13. attached: function () {
  14. getApp().globalData.Language.getLanguagePackage(this)
  15. this.setData({
  16. "content.dataid": wx.getStorageSync('userMsg').userid,
  17. "content.username": wx.getStorageSync('userMsg').name,
  18. })
  19. }
  20. },
  21. data: {
  22. year: new Date().getFullYear().toString(),
  23. "content": {
  24. enddate: new Date().toISOString().split('T')[0],
  25. where: {
  26. dateType: "15-30天",
  27. projecttype: ""
  28. },
  29. pageNumber: 1,
  30. pageSize: 20,
  31. pageTotal: 1
  32. },
  33. types: [],
  34. filterShow: false,
  35. filtratelist: [{
  36. label: "项目状态",
  37. index: null,
  38. showName: "value", //显示字段
  39. valueKey: "status", //返回Key
  40. selectKey: "value", //传参 代表选着字段 不传参返回整个选择对象
  41. value: "", //选中值
  42. type: "checkbox",
  43. list: [{
  44. value: "跟进中"
  45. }, {
  46. value: "已成交"
  47. }, {
  48. value: "已失败"
  49. }, {
  50. value: "已结案"
  51. }]
  52. }]
  53. },
  54. methods: {
  55. async getList(init = false) {
  56. if (init.detail != undefined) init = init.detail;
  57. let content = this.data.content
  58. const {
  59. dataid,
  60. type,
  61. username,
  62. isleave
  63. } = getCurrentPages()[getCurrentPages().length - 1].data;
  64. if (content.dataid != dataid || content.type != type || isleave != isleave) init = true
  65. content.dataid = dataid;
  66. content.type = type;
  67. content.username = username;
  68. content.where.isleave = isleave;
  69. if (init) {
  70. content.pageNumber = 1;
  71. content.pageSize = 20;
  72. }
  73. if (content.pageNumber > content.pageTotal) return;
  74. _Http.basic({
  75. "id": 20231019095904,
  76. content
  77. }).then(res => {
  78. console.log("有效项目未跟进天数分析", res)
  79. this.selectComponent('#ListBox').automaticSetHei();
  80. this.selectComponent('#ListBox').RefreshToComplete();
  81. if (res.code != '1') return wx.showToast({
  82. title: res.data,
  83. icon: "none"
  84. })
  85. res.data = res.data.map(v => {
  86. v.signamount_due = CNY(v.signamount_due)
  87. return v
  88. })
  89. this.setData({
  90. list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
  91. "content.pageNumber": res.pageNumber + 1,
  92. "content.pageSize": res.pageSize,
  93. "content.pageTotal": res.pageTotal,
  94. "total": res.total,
  95. })
  96. try {
  97. this.selectAllComponents("#Filtrate").forEach(v => v.onCancel())
  98. } catch (error) {}
  99. if (init) _Http.basic({
  100. "id": 20231019095804,
  101. content
  102. }).then(res1 => {
  103. console.log("图标", res1)
  104. this.initChart(res1.data)
  105. })
  106. })
  107. },
  108. initChart(data) {
  109. let projecttype = [...new Set(data.map(v => getApp().globalData.Language.getMapText(v.projecttype)))]
  110. let source = [
  111. ['product'].concat(projecttype),
  112. ];
  113. data.forEach(v => {
  114. if (!source.find(item => item[0] === getApp().globalData.Language.getMapText(v.datetype))) {
  115. source.push([getApp().globalData.Language.getMapText(v.datetype)])
  116. }
  117. let index = source.findIndex(item => item[0] === getApp().globalData.Language.getMapText(v.datetype));
  118. source[index].push(v.value);
  119. })
  120. if (this.data.types.length == 0) {
  121. let types = projecttype.map(v => {
  122. return {
  123. remarks: v,
  124. value: v.split("-")[0],
  125. }
  126. })
  127. types.unshift({
  128. remarks: '全部',
  129. value: ''
  130. })
  131. console.log("types", types)
  132. this.setData({
  133. types
  134. })
  135. }
  136. let that = this,
  137. countDown = null,
  138. datetypes = [...new Set(data.map(v => v.datetype))];
  139. function changeDateType(params) {
  140. clearTimeout(countDown)
  141. countDown = setTimeout(() => {
  142. if (datetypes[params.dataIndex] === that.data.content.where.dateType) return;
  143. that.setData({
  144. "content.where.dateType": datetypes[params.dataIndex],
  145. "content.pageNumber": 1,
  146. })
  147. that.getList();
  148. }, 200)
  149. }
  150. let option = {
  151. legend: {
  152. type: 'scroll',
  153. orient: 'horizontal',
  154. top: 10
  155. },
  156. tooltip: {
  157. trigger: 'axis',
  158. axisPointer: {
  159. type: 'shadow'
  160. },
  161. formatter: function (params) {
  162. changeDateType(params[0]);
  163. let filteredParams = params.filter(item => item.value !== 0);
  164. if (filteredParams.length === 0) return '';
  165. let tooltipText = `${params[0].axisValue}\n`;
  166. filteredParams.forEach((item, index) => {
  167. if (item.value[index + 1] != 0) {
  168. tooltipText += `${item.marker} ${item.dimensionNames[index + 1]}: ${item.value[index + 1]}\n`;
  169. }
  170. });
  171. return tooltipText;
  172. }
  173. },
  174. dataset: {
  175. source
  176. },
  177. xAxis: {
  178. type: 'category',
  179. axisLabel: {
  180. interval: 0,
  181. rotate: 30
  182. }
  183. },
  184. yAxis: {
  185. type: 'value'
  186. },
  187. series: projecttype.map(() => ({
  188. type: 'bar',
  189. barMaxWidth: 30
  190. }))
  191. };
  192. this.chartComponent = this.selectComponent('#mychart');
  193. this.chartComponent.init((canvas, width, height, dpr) => {
  194. const chart = echarts.init(canvas, null, {
  195. width,
  196. height,
  197. devicePixelRatio: dpr
  198. });
  199. chart.setOption(option);
  200. return chart;
  201. });
  202. },
  203. changeDate({
  204. detail
  205. }) {
  206. this.setData({
  207. "content.enddate": detail
  208. })
  209. this.getList(true)
  210. },
  211. clickOpen() {
  212. this.setData({
  213. filterShow: true
  214. })
  215. },
  216. /* 处理筛选 */
  217. handleFilter({
  218. detail
  219. }) {
  220. if (detail.name == "confirm") {
  221. this.setData({
  222. "content.where.status": detail.status
  223. })
  224. this.selectComponent('#Filtrate1').setShowArrText(detail.status)
  225. this.getList(true)
  226. } else if (detail.name == 'reset') {
  227. this.setData({
  228. "content.where.status": []
  229. })
  230. this.selectComponent('#Filtrate1').setShowArrText([])
  231. this.getList(true)
  232. }
  233. },
  234. changeType2({
  235. detail
  236. }) {
  237. this.setData({
  238. "content.where.projecttype": detail,
  239. })
  240. this.getList(true)
  241. },
  242. }
  243. })