up2.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <template>
  2. <div id="up2">
  3. <div class="bg-color-black">
  4. <div class="d-flex pt-1 pl-2 jc-center">
  5. <span class="fs-xxl text mx-2 fw-b">当日工序计划进度</span>
  6. </div>
  7. <div class="body-box">
  8. <div class="pt-2 " >
  9. <BarChart :bardata="bardata" />
  10. </div>
  11. <div class="d-flex jc-center fs-xl fw-b rate flex-column mt-2">
  12. <div class="mt-1">今日待完成紧急订单数:{{finishrate}}</div>
  13. <div class="mt-1">今日待完成正常订单数:{{finishrate2}}</div>
  14. <div class="mt-1">今日待完成订单数:{{finishrate3}}</div>
  15. <div class="mt-1">当日已完成比例:{{finishrate4}}% </div>
  16. <div class="mt-1">昨日已完成比例:{{finishrate5}}% </div>
  17. </div>
  18. </div>
  19. </div>
  20. </div>
  21. </template>
  22. <script>
  23. import BarChart from '@/components/prodlinechart/up2Chart'
  24. import {mapState} from "vuex";
  25. export default {
  26. computed: {
  27. ...mapState(['factory']),
  28. },
  29. data() {
  30. return {
  31. timing:null,
  32. bardata : {
  33. planData:[],
  34. actData:[],
  35. yAxis:[],
  36. max : 1000,
  37. },
  38. finishrate:0,
  39. finishrate2:0,
  40. finishrate3:0,
  41. finishrate4:0,
  42. finishrate5:0,
  43. }
  44. },
  45. components: {BarChart},
  46. mounted() {
  47. this.refreshdata();
  48. },
  49. beforeDestroy () {
  50. clearInterval(this.timing)
  51. },
  52. methods: {
  53. refreshdata() {
  54. this.setdata(); //获取数据
  55. this.timing = setInterval(() => {
  56. this.setdata(); //获取-主题词
  57. }, 10000);
  58. },
  59. async setdata() {
  60. //当前工单
  61. var caller = 'KB!LongLineLinePlan';
  62. var licode= sessionStorage.getItem('li_code');
  63. await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",{
  64. params: {
  65. condition: " V_OUTLINE='"+licode+"'",
  66. }
  67. }).then((result)=>{
  68. let dataList = JSON.parse(result.data.data);
  69. if(dataList.length>0){
  70. let yAxis0 = new Array();
  71. let series0 = new Array();
  72. let series1 = new Array();
  73. var maxnumber=0;
  74. for (let index = 0; index < dataList.length; index++) {
  75. const element = dataList[index];
  76. yAxis0.push(element.v_wccode);
  77. //计划
  78. series0.push(element.v_planqty);
  79. if(element.v_planqty>maxnumber){
  80. maxnumber= element.v_planqty;
  81. }
  82. //实际
  83. series1.push(element.v_actqty);
  84. if(element.v_actqty>maxnumber){
  85. maxnumber= element.v_actqty;
  86. }
  87. }
  88. this.bardata.planData = series0;
  89. this.bardata.actData = series1;
  90. this.bardata.yAxis = yAxis0;
  91. this.bardata.max = Math.ceil(maxnumber*1.2);
  92. }
  93. },(result)=>{
  94. console.error(result)
  95. }
  96. );
  97. this.finishrate = 0;
  98. this.finishrate2 = 0;
  99. this.finishrate3 = 0;
  100. this.finishrate4 = 0;
  101. this.finishrate5 = 0;
  102. //比例,用的是总看板的达成比例caller,如果不一样,自行修改caller
  103. caller = 'KB!TOTALDayMakeRate';
  104. await this.$http.get("kanban/datalist.action?caller="+caller+"&_noc=1&page=1&pageSize=100",{
  105. params: {
  106. condition: "V_OUTLINE='"+licode+"'" ,
  107. }
  108. }).then((result) => {
  109. let dataList = JSON.parse(result.data.data);
  110. if(dataList.length>0){
  111. this.finishrate = dataList[0].finishrate;
  112. this.finishrate2 = dataList[0].finishrate2;
  113. this.finishrate3 = dataList[0].finishrate3;
  114. this.finishrate4 = dataList[0].finishrate4;
  115. this.finishrate5 = dataList[0].finishrate5;
  116. }
  117. }, (result) => {
  118. console.error(result)
  119. }
  120. );
  121. }
  122. }
  123. }
  124. </script>
  125. <style lang="scss" scoped>
  126. $box-height: 430px;
  127. $box-width: 100%;
  128. #up2 {
  129. padding: 13px;
  130. height: $box-height;
  131. font-size: 40px;
  132. width: $box-width;
  133. border-radius: 5px;
  134. .bg-color-black {
  135. height: $box-height - 25px;
  136. //width: $box-width - 10px;
  137. border-radius: 10px;
  138. padding: 5px ;
  139. }
  140. .text {
  141. color: #c3cbde;
  142. font-size: 25px;
  143. }
  144. .body-box {
  145. border-radius: 10px;
  146. overflow: hidden;
  147. .rate{
  148. justify-content: center; /* 水平居中 */
  149. align-items: center;
  150. div{
  151. font-size:22px;
  152. margin-top:8px;
  153. }
  154. }
  155. }
  156. }
  157. </style>