service-sheet-analysis.js 6.1 KB

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