2e6bcef42ed0ff91e0bdd633f8de35e8fbcf9d80.svn-base 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. <!-- -->
  2. <template>
  3. <div>
  4. <!-- <div class="time">
  5. <el-row>
  6. <span v-if="spanForPan">开始时间:</span>
  7. <el-date-picker class="input-class" value-format="yyyy-MM-dd" v-model="sttm" type="date" placeholder="选择日期" @change="changeStartDay()"></el-date-picker>
  8. </el-row>
  9. <el-row style="margin-top:.5vh">
  10. <span v-if="spanForPan" style="margin-right: .6vw;">结束时间:</span>
  11. <el-date-picker class="input-class" value-format="yyyy-MM-dd" v-model="entm" type="date" placeholder="选择日期" @change="changeEndDay()" ></el-date-picker>
  12. </el-row>
  13. </div> -->
  14. <div class="button" >
  15. <div v-waves class="dcz" @click="changeClass(buttonList[0])" >
  16. <div class="content">
  17. <div class="content_top" >
  18. <span style="color:#fff;">督查组</span>
  19. </div>
  20. <div class="content_bottom">
  21. <span class="content_bottom_num" style="color:#fff;font-family:digtalNumber;">{{animateDczNum}}</span>
  22. <span class="content_bottom_dw" style="color:#fff;">组</span>
  23. </div>
  24. </div>
  25. </div>
  26. <div v-waves class="dcry" @click="changeClass(buttonList[1])" >
  27. <div class="content">
  28. <div class="content_top" >
  29. <span style="color:#fff;">督查人员</span>
  30. </div>
  31. <div class="content_bottom">
  32. <span class="content_bottom_num" style="color:#fff;font-family:digtalNumber;">{{animateDcyrNum}}</span>
  33. <span class="content_bottom_dw" style="color:#fff;">人/次</span>
  34. </div>
  35. </div>
  36. </div>
  37. <div v-waves class="dcdx" @click="changeClass(buttonList[2])" >
  38. <div class="content">
  39. <div class="content_top" >
  40. <span style="color:#fff;">督查对象</span>
  41. </div>
  42. <div class="content_bottom">
  43. <span class="content_bottom_num" style="color:#fff;font-family:digtalNumber;">{{animateDcdxNum}}</span>
  44. <span class="content_bottom_dw" style="color:#fff;">个</span>
  45. </div>
  46. </div>
  47. </div>
  48. <div v-waves class="fxwt" @click="changeClass(buttonList[3])" >
  49. <div class="content">
  50. <div class="content_top" >
  51. <span style="color:#fff;">发现问题</span>
  52. </div>
  53. <div class="content_bottom">
  54. <span class="content_bottom_num" style="color:#fff;font-family:digtalNumber;">{{animateFxwtNum}}</span>
  55. <span class="content_bottom_dw" style="color:#fff;">个</span>
  56. </div>
  57. </div>
  58. </div>
  59. <div v-waves class="jbyywt" @click="changeClass(buttonList[4])" >
  60. <div class="content" >
  61. <div class="content_top" >
  62. <span style="color:#fff;">简报引用问题</span>
  63. </div>
  64. <div class="content_bottom">
  65. <span class="content_bottom_num" style="color:#fff;font-family:digtalNumber;">{{animateJbyywtNum}}</span>
  66. <span class="content_bottom_dw" style="color:#fff;">个</span>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. </template>
  73. <script>
  74. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  75. //例如:import 《组件名称》 from '《组件路径》';
  76. import waves from "../../directive/waves/index.js"; // 水波纹指令
  77. // var TWEEN = require('@tweenjs/tween.js');
  78. export default {
  79. //import引入的组件需要注入到对象中才能使用
  80. components: {},
  81. props:["dczNum","dcyrNum","dcdxNum","fxwtNum","jbyywtNum"],
  82. data() {
  83. //这里存放数据
  84. return {
  85. spanForPan:true,
  86. animateDczNum:0,
  87. animateDcyrNum:0,
  88. animateDcdxNum:0,
  89. animateFxwtNum:0,
  90. animateJbyywtNum:0,
  91. sttm: "",
  92. entm: "",
  93. buttonList:[
  94. {
  95. id:'dcz',
  96. className:'dcz',
  97. spanName:'督查组',
  98. count:0,
  99. unit:'组',
  100. checked:false,
  101. mapPointColor:'#13C5A6',
  102. barStartColor:'#59f3be',
  103. barEndColor:'#13C4B8'
  104. },
  105. {
  106. id:'dcry',
  107. className:'dcry',
  108. spanName:'督查人员',
  109. count:0,
  110. unit:'人/次',
  111. checked:false,
  112. mapPointColor:'#3D62F6',
  113. barStartColor:'#50b1eb',
  114. barEndColor:'#5072f7'
  115. },
  116. {
  117. id:'dcdx',
  118. className:'dcdx',
  119. spanName:'督查对象',
  120. count:0,
  121. unit:'个',
  122. checked:false,
  123. mapPointColor:'#13C4B8',
  124. barStartColor:'#76eac2',
  125. barEndColor:'#27cbc1'
  126. },
  127. {
  128. id:'fxwt',
  129. className:'fxwt',
  130. spanName:'发现问题',
  131. count:0,
  132. unit:'个',
  133. checked:false,
  134. mapPointColor:'#35A0FC',
  135. barStartColor:'#3ccefa',
  136. barEndColor:'#48abfc'
  137. },
  138. {
  139. id:'jbyywt',
  140. className:'jbyywt',
  141. spanName:'简报引用问题',
  142. count:0,
  143. unit:'个',
  144. checked:false,
  145. mapPointColor:'#35A0FC',
  146. barStartColor:'#3ccefa',
  147. barEndColor:'#48abfc'
  148. }
  149. ],
  150. // checkedClassName: "",
  151. resultClass:"dcz_checked",
  152. findVal:{},
  153. };
  154. },
  155. directives: {
  156. waves
  157. },
  158. //监听属性 类似于data概念
  159. computed: {
  160. },
  161. //监控data中的数据变化
  162. watch: {
  163. dczNum(newValue,oldValue){
  164. this.animateCount(oldValue,newValue,'animateDczNum');
  165. },
  166. dcyrNum(newValue,oldValue){
  167. this.animateCount(oldValue,newValue,'animateDcyrNum');
  168. },
  169. dcdxNum(newValue,oldValue){
  170. this.animateCount(oldValue,newValue,'animateDcdxNum');
  171. },
  172. fxwtNum(newValue,oldValue){
  173. this.animateCount(oldValue,newValue,'animateFxwtNum');
  174. },
  175. jbyywtNum(newValue,oldValue){
  176. this.animateCount(oldValue,newValue,'animateJbyywtNum');
  177. },
  178. },
  179. //方法集合
  180. methods: {
  181. animateCount:function(oldValue,newValue,numberName){
  182. let _self = this;
  183. function animate () {
  184. if (TWEEN.update()) {
  185. requestAnimationFrame(animate);
  186. }
  187. }
  188. new TWEEN.Tween({ animateNumber:oldValue })
  189. .easing(TWEEN.Easing.Quadratic.Out)
  190. .to({ animateNumber:newValue }, 400)
  191. .onUpdate(function () {
  192. var tempNumber =Number(this.animateNumber.toFixed(0));
  193. _self[numberName] = _self.toThousands(tempNumber);
  194. }).start();
  195. animate();
  196. },
  197. //动画配套逗号方法
  198. toThousands:function(num) {
  199. var result = [ ], counter = 0;
  200. num = (num || 0).toString().split('');
  201. for (var i = num.length - 1; i >= 0; i--) {
  202. counter++;
  203. result.unshift(num[i]);
  204. if (!(counter % 3) && i != 0) { result.unshift(','); }
  205. }
  206. return result.join('');
  207. } ,
  208. changeClass(item){
  209. var _this = this;
  210. this.$emit('barsType',item);
  211. if(this.resultClass === ""){
  212. this.resultClass = item.id;
  213. item.checked = true;
  214. item.className += '_checked';
  215. }else{
  216. if(item.checked === false){
  217. if(this.resultClass !== item.id){
  218. for(let i = 0; i < this.buttonList.length; i++){
  219. if(this.buttonList[i].checked === true){
  220. this.buttonList[i].className = this.buttonList[i].className.split('_')[0];
  221. this.buttonList[i].checked = false;
  222. }
  223. }
  224. item.className += '_checked';
  225. item.checked = true;
  226. this.resultClass = item.id;
  227. }else{
  228. item.className += '_checked';
  229. item.checked = true;
  230. }
  231. }else{
  232. item.className = item.className.split('_')[0];
  233. item.checked = false;
  234. }
  235. }
  236. },
  237. changeStartDay(){
  238. if(this.sttm === null){
  239. this.sttm = "";
  240. }
  241. if(this.entm === null){
  242. this.entm = "";
  243. }
  244. this.$emit('globalTime',{sttm:this.sttm,entm:this.entm});
  245. },
  246. changeEndDay(){
  247. if(this.sttm === null){
  248. this.sttm = "";
  249. }
  250. if(this.entm === null){
  251. this.entm = "";
  252. }
  253. this.$emit('globalTime',{sttm:this.sttm,entm:this.entm});
  254. },
  255. },
  256. //生命周期 - 创建完成(可以访问当前this实例)
  257. created() {
  258. },
  259. //生命周期 - 挂载完成(可以访问DOM元素)
  260. mounted() {
  261. // this.$emit('barsType',{id:'dcz',unit:'组'});
  262. this.$emit('globalTime',{sttm:this.sttm,entm:this.entm});
  263. if(window.innerWidth <= 1024){
  264. this.spanForPan = false;
  265. }else{
  266. this.spanForPan = true;
  267. }
  268. TWEEN.update();
  269. },
  270. beforeCreate() {}, //生命周期 - 创建之前
  271. beforeMount() {}, //生命周期 - 挂载之前
  272. beforeUpdate() {}, //生命周期 - 更新之前
  273. updated() {}, //生命周期 - 更新之后
  274. beforeDestroy() {}, //生命周期 - 销毁之前
  275. destroyed() {}, //生命周期 - 销毁完成
  276. activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
  277. };
  278. </script>
  279. <style lang="scss">
  280. @mixin inputBorder_dark{
  281. [data-theme="dark"] & {
  282. border:1px solid rgba(110, 134, 166, 1);
  283. }
  284. }
  285. @media screen and (min-width: 900px) {
  286. @import "@scss/homeForPad";
  287. .input-class {
  288. width: 16vw !important;
  289. }
  290. }
  291. // @media screen and (min-width: 960px) {
  292. // @import "@scss/homeForPad";
  293. // .input-class {
  294. // width: 16vw !important;
  295. // }
  296. // }
  297. @media screen and (min-width: 1024px) and (max-width:1920px){
  298. @import "@scss/home";
  299. .input-class {
  300. width: 9vw !important;
  301. }
  302. }
  303. @media screen and (min-width: 1920px) {
  304. @import "@scss/home1920";
  305. .input-class {
  306. width: 9vw !important;
  307. }
  308. }
  309. .input-class .el-input__inner {
  310. background-color: transparent;
  311. @include inputBorder_dark;
  312. }
  313. </style>
  314. <style>
  315. /* 浅色input */
  316. </style>