index.js 6.4 KB

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