dataOverview.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. const _Http = getApp().globalData.http;
  2. Component({
  3. options: {
  4. addGlobalClass: true,
  5. },
  6. properties: {
  7. update: {
  8. type: Function
  9. }
  10. },
  11. lifetimes: {
  12. attached: function () {
  13. getApp().globalData.Language.getLanguagePackage(this)
  14. this.setData({
  15. dates: this.data.dates.map(v => {
  16. v.name = getApp().globalData.Language.getMapText(v.value);
  17. v.color = v.value == this.data.content.dateType ? "#3874F6" : "";
  18. return v
  19. })
  20. })
  21. }
  22. },
  23. data: {
  24. "content": {
  25. dateType: "本年",
  26. dataid: wx.getStorageSync('userMsg').userid,
  27. username: wx.getStorageSync('userMsg').name,
  28. type: 0,
  29. "where": {
  30. isleave: "1"
  31. }
  32. },
  33. detaShow: false,
  34. dates: [{
  35. value: "全部"
  36. }, {
  37. value: "本年"
  38. }, {
  39. value: "本季"
  40. }, {
  41. value: "本月"
  42. }, {
  43. value: "去年"
  44. }, ],
  45. },
  46. methods: {
  47. getList() {
  48. let content = this.data.content;
  49. _Http.basic({
  50. "id": 20231018110404,
  51. content
  52. }).then(res => {
  53. console.log("项目数据概况", res)
  54. if (res.code != '1') return wx.showToast({
  55. title: res.msg,
  56. icon: "none"
  57. })
  58. const getMapText = getApp().globalData.Language.getMapText;
  59. let list = [{
  60. title: '项目总数',
  61. value: res.data.totalqty,
  62. tips: getMapText('项目总数:统计所有项目的数量'),
  63. link: true
  64. },
  65. {
  66. title: '报备项目数',
  67. value: res.data.reportProject,
  68. tips: getMapText('报备项目数:统计已报备的项目数量'),
  69. link: true
  70. },
  71. {
  72. title: '进行中项目数',
  73. value: res.data.dealProject,
  74. tips: getMapText('进行中项目数:进行中状态的项目数量'),
  75. link: true
  76. },
  77. {
  78. title: '项目成交数',
  79. value: res.data.dealProject,
  80. tips: getMapText('项目成交数:统计有关联审核过的订单的项目数量'),
  81. link: true
  82. },
  83. {
  84. title: '项目成交率',
  85. value: res.data.cjl + '%',
  86. tips: getMapText('项目成交率=有关联审核订单的项目数÷项目总数×100%'),
  87. link: false
  88. },
  89. {
  90. title: '项目失败数',
  91. value: res.data.failedproject,
  92. tips: getMapText('项目失败数:已失败状态的项目数量'),
  93. link: true
  94. },
  95. {
  96. title: '项目失败率',
  97. value: Math.round(((res.data.sbl) * 100) / 100) + '%',
  98. tips: getMapText('项目失败率=已失败项目数÷项目总数×100%'),
  99. link: false
  100. },
  101. {
  102. title: '参与项目数',
  103. value: res.data.joinProject,
  104. tips: getMapText('参与项目数:参与的并且至少有一次跟进的项目数量'),
  105. link: true
  106. },
  107. {
  108. title: '参与项目成交数',
  109. value: res.data.joinDealProject,
  110. tips: getMapText('参与项目成交数:参与的并且至少有一次跟进的项目的成交数量'),
  111. link: true
  112. },
  113. {
  114. title: '参与项目成交率',
  115. value: Math.round(((res.data.joinDealProjectcjl) * 100) / 100) + '%',
  116. tips: getMapText('参与项目成交率=参与项目成交数 ÷ 参与项目数 ×100%'),
  117. link: false
  118. },
  119. ];
  120. try {
  121. list = list.concat(res.data.projecttype.map(v => {
  122. return {
  123. title: v.value,
  124. value: v.qty,
  125. tips: "",
  126. link: true
  127. }
  128. }))
  129. } catch (error) {
  130. }
  131. this.setData({
  132. list,
  133. content
  134. })
  135. this.onCancel()
  136. })
  137. },
  138. showTips(e) {
  139. const {
  140. tips
  141. } = e.currentTarget.dataset;
  142. wx.showModal({
  143. content: tips,
  144. showCancel: false,
  145. confirmText: getApp().globalData.Language.getMapText('确定'),
  146. })
  147. },
  148. toDetail(e) {
  149. const {
  150. item
  151. } = e.currentTarget.dataset,
  152. content = this.data.content;
  153. content.typemx = item.title;
  154. wx.navigateTo({
  155. url: '/salesPanel/dataOverview/OverviewAndDetails/project?content=' + JSON.stringify(content),
  156. })
  157. },
  158. openDateType() {
  159. this.setData({
  160. detaShow: true
  161. })
  162. },
  163. dateOnSelect(event) {
  164. const {
  165. value
  166. } = event.detail;
  167. if (this.data.content.dateType == value) return this.onCancel();
  168. this.setData({
  169. "content.dateType": value,
  170. dates: this.data.dates.map(item => {
  171. item.color = item.value == value ? "#3874F6" : "";
  172. item.loading = item.value == value ? true : false;
  173. return item
  174. }),
  175. })
  176. this.getList(true)
  177. },
  178. onCancel() {
  179. this.setData({
  180. actionShow: false,
  181. detaShow: false,
  182. list: this.data.list.map(item => {
  183. item.loading = false;
  184. return item
  185. }),
  186. dates: this.data.dates.map(item => {
  187. item.loading = false;
  188. return item
  189. })
  190. })
  191. },
  192. }
  193. })