service-sheet-analysis.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. var reqList = [];
  2. var util = {};
  3. util.treeTableXcode = function(data, xcode) {
  4. xcode = xcode || "";
  5. for(var i = 0; i < data.length; i++) {
  6. var item = data[i];
  7. item.xcode = xcode + i;
  8. if(item.children && item.children.length > 0) {
  9. util.treeTableXcode(item.children, item.xcode + "-");
  10. }
  11. }
  12. };
  13. Vue.use(Vuedals.default);
  14. new Vue({
  15. el: "#main",
  16. data: {
  17. tableData: [],
  18. valueArea: "",
  19. optionsArea: [],
  20. dateValue: "",
  21. defaultValue: ['00:00:00', '23:59:59'],
  22. pickerOptions: {
  23. shortcuts: [{
  24. text: '最近一周',
  25. onClick: function(picker) {
  26. var end = new Date();
  27. var start = new Date();
  28. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  29. picker.$emit('pick', [start, end]);
  30. }
  31. }, {
  32. text: '最近一个月',
  33. onClick: function(picker) {
  34. var end = new Date();
  35. var start = new Date();
  36. start.setMonth(start.getMonth() - 1);
  37. picker.$emit('pick', [start, end]);
  38. }
  39. }, {
  40. text: '最近三个月',
  41. onClick: function(picker) {
  42. var end = new Date();
  43. var start = new Date();
  44. start.setMonth(start.getMonth() - 3);
  45. picker.$emit('pick', [start, end]);
  46. },
  47. }, {
  48. text: '最近半年',
  49. onClick: function(picker) {
  50. var end = new Date();
  51. var start = new Date();
  52. start.setMonth(start.getMonth() - 6);
  53. picker.$emit('pick', [start, end]);
  54. },
  55. }, {
  56. text: '最近一年',
  57. onClick: function(picker) {
  58. var end = new Date();
  59. var start = new Date();
  60. start.setFullYear(start.getFullYear() - 1);
  61. picker.$emit('pick', [start, end]);
  62. },
  63. }],
  64. disabledDate: function(d) {
  65. return d > new Date();
  66. }
  67. }
  68. },
  69. components: {
  70. vuedals: Vuedals.Component
  71. },
  72. mounted: function() {
  73. var vm = this
  74. //初始化时间
  75. var end = new Date();
  76. var start = new Date();
  77. start.setFullYear(start.getFullYear() - 1);
  78. vm.dateValue = [start, end]
  79. //初始化数据
  80. vm.getDistrict()
  81. $("#main").removeClass("c-hide");
  82. //监听后退按钮的操作
  83. EventBus.$on("back-click", function(arg) {
  84. history.go(-1);
  85. });
  86. //监听页面刷新
  87. EventBus.$on("refresh-click", function(arg) {
  88. alert("刷新")
  89. vm.initData()
  90. });
  91. window.onresize = function() {
  92. }
  93. },
  94. methods: {
  95. initData: function() {
  96. var vm=this
  97. var startDate,endDate
  98. if(typeof(vm.dateValue[0])!="string"){
  99. startDate=vm.dateValue[0].format("yyyy-MM-dd")
  100. endDate=vm.dateValue[1].format("yyyy-MM-dd")
  101. }else{
  102. startDate=vm.dateValue[0]
  103. endDate=vm.dateValue[1]
  104. }
  105. var params={
  106. userAgent:localStorage.getItem('wlyyAgentForDoc'),
  107. area:vm.valueArea,startDate:startDate,endDate:endDate,
  108. }
  109. statisticAPI.doorServiceOrderAnalyze(params).then(function(res) {
  110. if(res.status == 200) {
  111. vm.tableData=res.data
  112. util.treeTableXcode(vm.tableData);
  113. } else {
  114. vm.$message.error(res.msg)
  115. }
  116. })
  117. },
  118. changeDateValue: function() {
  119. alert(JSON.stringify(this.dateValue))
  120. },
  121. getDistrict: function() {
  122. var vm=this
  123. var params={
  124. type:3,code:"350200"
  125. }
  126. homeAPI.getDistrict(params).then(function(res) {
  127. if(res.status == 200) {
  128. vm.optionsArea=res.list
  129. vm.valueArea=vm.optionsArea[0].code
  130. vm.initData()
  131. } else {
  132. vm.$message.error(res.msg)
  133. }
  134. })
  135. },
  136. exportData: function() {
  137. var vm=this
  138. var startDate,endDate
  139. if(typeof(vm.dateValue[0])!="string"){
  140. startDate=vm.dateValue[0].format("yyyy-MM-dd")
  141. endDate=vm.dateValue[1].format("yyyy-MM-dd")
  142. }else{
  143. startDate=vm.dateValue[0]
  144. endDate=vm.dateValue[1]
  145. }
  146. var params={
  147. userAgent:localStorage.getItem('wlyyAgentForDoc'),
  148. area:vm.valueArea,startDate:startDate,endDate:endDate,
  149. }
  150. var str = statisticAPI.doorServiceOrderAnalyzeExport+"?area="+vm.valueArea+"&startDate="+startDate+"&endDate="+endDate;
  151. window.open(str, "接收包数据导出")//导出数据
  152. },
  153. treeClick: function(item, index) {
  154. if(item.open) {
  155. this.collapse(item, index);
  156. } else {
  157. this.expand(item, index);
  158. }
  159. },
  160. expand: function(item, index) {
  161. if(!item.children) {
  162. return index;
  163. }
  164. //展开
  165. for(var i = 0; item.children && i < item.children.length; i++) {
  166. var child = item.children[i];
  167. this.tableData.splice(++index, 0, child);
  168. if(child.children && child.children.length > 0 && child.open) {
  169. index = this.expand(child, index);
  170. }
  171. }
  172. item.open = true;
  173. return index;
  174. },
  175. collapse: function(item, index) {
  176. if(!item.children) {
  177. return index;
  178. }
  179. //收缩
  180. item.open = false;
  181. var len = 0;
  182. for(var i = index + 1; i < this.tableData.length - 1; i++) {
  183. var xcode = this.tableData[i].xcode;
  184. if(xcode.startsWith(item.xcode + "-")) {
  185. len++;
  186. } else {
  187. break;
  188. }
  189. }
  190. this.tableData.splice(index + 1, len);
  191. },
  192. customFieldColumn (h, { column, $index }) {
  193. return h('span', {style:'height:23px;line-height:28px;'}, [
  194. h('el-popover', { props: { placement: 'top', width: '200',trigger: 'hover', content: '评价均分=“已完成”工单总评分/“已完成”工单数量' }}, [
  195. h('span', {slot: 'reference',class:'font-normal'}, ['评价均分(分)',h('span',{class:'wenhao'},'....')])
  196. ])
  197. ])
  198. },
  199. }
  200. });