index.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. tradefieldIndex: 0,
  5. pickerIndex: 0,
  6. targetYear: null,
  7. hrid: null,
  8. "year": new Date().getFullYear().toString(),
  9. "content": {
  10. "nocache": true,
  11. "year": new Date().getFullYear().toString(), //年
  12. "type": 1,
  13. "where": {
  14. "condition": ""
  15. }
  16. },
  17. target: null, //目标
  18. showActions: false,
  19. actionSheet: getApp().globalData.Language.getMapText('开票金额'),
  20. actions: [{
  21. name: getApp().globalData.Language.getMapText('开票金额'),
  22. value: "1"
  23. }, {
  24. name: getApp().globalData.Language.getMapText('订单金额'),
  25. value: "2"
  26. }, {
  27. name: getApp().globalData.Language.getMapText('出货金额'),
  28. value: "3"
  29. }],
  30. },
  31. onLoad(options) {
  32. // this.getYear(true)
  33. getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
  34. },
  35. getYear(init = false) {
  36. /* 获取年份 */
  37. _Http.basic({
  38. "classname": "sysmanage.develop.optiontype.optiontype",
  39. "method": "optiontypeselect",
  40. "content": {
  41. pageSize: 999,
  42. "typename": 'targetyearofpersonal',
  43. "parameter": {
  44. "siteid": wx.getStorageSync('siteP').siteid
  45. }
  46. }
  47. }).then(res => {
  48. if (res.code != '1') return wx.showToast({
  49. title: res.msg,
  50. icon: "none"
  51. })
  52. this.setData({
  53. userYearList: res.data.map(v => v.year),
  54. "content.year": res.data.length ? res.data[res.data.length - 1].year : this.data.content.year,
  55. year: res.data.length ? res.data[res.data.length - 1].year : this.data.year,
  56. pickerIndex: res.data.length - 1
  57. })
  58. if (init) this.getData();
  59. })
  60. /* 获取年份 */
  61. _Http.basic({
  62. "classname": "sysmanage.develop.optiontype.optiontype",
  63. "method": "optiontypeselect",
  64. "content": {
  65. pageSize: 999,
  66. "typename": 'targetyearofproject',
  67. "parameter": {
  68. "siteid": wx.getStorageSync('siteP').siteid
  69. }
  70. }
  71. }).then(res => {
  72. console.log('项目分类', res)
  73. if (res.code != '1') return wx.showToast({
  74. title: res.msg,
  75. icon: "none"
  76. })
  77. this.setData({
  78. projectYearList: res.data.map(v => v.year)
  79. })
  80. })
  81. },
  82. onShow() {
  83. this.getData();
  84. },
  85. getData() {
  86. let content = this.data.content;
  87. _Http.basic({
  88. "id": wx.getStorageSync('userrole') == '业务员' ? 20230111163102 : 20230110151902,
  89. content
  90. }).then(res => {
  91. console.log("业绩目标", res)
  92. if (res.code != '1') return wx.showToast({
  93. title: res.data,
  94. icon: "none"
  95. })
  96. this.setData({
  97. list: res.data.map(v => {
  98. return {
  99. name: getApp().globalData.Language.getMapText(v.tradefield),
  100. tradefield: v.tradefield
  101. }
  102. }),
  103. tradefieldIndex: 0
  104. })
  105. this.setShowData();
  106. })
  107. },
  108. bindTradefieldChange(e) {
  109. this.setData({
  110. tradefieldIndex: e.detail.value
  111. })
  112. this.setShowData()
  113. },
  114. setShowData() {
  115. let data = this.data.list[this.data.tradefieldIndex];
  116. let lineData = [],
  117. histogram = [];
  118. data.month.forEach(v => {
  119. lineData = lineData.concat([{
  120. label: v.month + getApp().globalData.Language.getMapText('月'),
  121. value: v.l,
  122. type: getApp().globalData.Language.getMapText('基本目标金额')
  123. },
  124. {
  125. label: v.month + getApp().globalData.Language.getMapText('月'),
  126. value: v.h,
  127. type: getApp().globalData.Language.getMapText('挑战目标金额')
  128. },
  129. {
  130. label: v.month + getApp().globalData.Language.getMapText('月'),
  131. value: v.a,
  132. type: getApp().globalData.Language.getMapText('实际订单金额')
  133. }
  134. ])
  135. histogram = histogram.concat([{
  136. label: v.month + getApp().globalData.Language.getMapText('月'),
  137. value: v.pl,
  138. type: getApp().globalData.Language.getMapText('基础目标实际完成率')
  139. },
  140. {
  141. label: v.month + getApp().globalData.Language.getMapText('月'),
  142. value: v.ph,
  143. type: getApp().globalData.Language.getMapText('挑战目标实际完成率')
  144. }
  145. ])
  146. });
  147. //绘制线图
  148. this.selectComponent("#line").render(lineData);
  149. // this.selectComponent("#histogram").render(histogram);
  150. this.setData({
  151. targetYear: {
  152. yl: data.y1l,
  153. yh: data.y1h,
  154. ya: data.y1a,
  155. jl: (res.data.y1a == 0 && res.data.y1l == 0) ? '0.00%' : res.data.y1l == 0 ? res.data.y1a + '%' : (res.data.y1a / res.data.y1l * 100).toFixed(2) + '%'
  156. // jl: data.y1a || data.y1l?(data.y1a / data.y1l * 100).toFixed(2) + '%':'0.00%'
  157. }
  158. });
  159. if (this.data.year == this.data.content.year) {
  160. const m = new Date().getMonth() + 1;
  161. let s = [
  162. [1, 2, 3],
  163. [4, 5, 6],
  164. [7, 8, 9],
  165. [10, 11, 12]
  166. ].findIndex(v => v.some(va => va == m)) + 1;
  167. this.setData({
  168. targetSeason: {
  169. sl: data[`s${s}l`],
  170. sh: data[`s${s}h`],
  171. sa: data[`s${s}a`],
  172. jl: (res.data[`s${s}a`] == 0 && res.data[`s${s}l`] == 0) ? '0.00%' : res.data[`s${s}l`] == 0 ? res.data[`s${s}a`] + '%' : (res.data[`s${s}a`] / res.data[`s${s}l`] * 100).toFixed(2) + '%'
  173. // jl: data[`s${s}a`] || data[`s${s}l`] ? (data[`s${s}a`] / data[`s${s}l`] * 100).toFixed(2) + '%' : "0.00%"
  174. },
  175. targetMonth: {
  176. ml: data[`m${m}l`],
  177. mh: data[`m${m}h`],
  178. ma: data[`m${m}a`],
  179. jl: (res.data[`m${m}a`] == 0 && res.data[`m${m}l`] == 0) ? '0.00%' : res.data[`m${m}l`] == 0 ? res.data[`m${m}a`] + '%' : (res.data[`m${m}a`] / res.data[`m${m}l`] * 100).toFixed(2) + '%'
  180. // jl: data[`m${m}a`] || data[`m${m}l`] ? (data[`m${m}a`] / data[`m${m}l`] * 100).toFixed(2) + '%' : "0.00%"
  181. }
  182. })
  183. }
  184. },
  185. /* 弹出选择 */
  186. select({
  187. detail
  188. }) {
  189. if (this.data.actionSheet == detail.name) return;
  190. this.setData({
  191. actionSheet: detail.name,
  192. "content.type": detail.value,
  193. showActions: false
  194. });
  195. this.getData();
  196. },
  197. cancelActions() {
  198. this.setData({
  199. showActions: false
  200. })
  201. },
  202. openActions() {
  203. this.setData({
  204. showActions: true
  205. })
  206. },
  207. /* 选择年份 */
  208. bindDateChange({
  209. detail
  210. }) {
  211. let index = detail.value;
  212. let year = this.data.userYearList[index];
  213. if (year == detail.value) return;
  214. this.setData({
  215. "content.year": year,
  216. pickerIndex: index
  217. });
  218. this.getData();
  219. },
  220. onShareAppMessage() {}
  221. })