_ViewCompany_General.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <script setup lang="ts">
  2. import { ref, withDefaults, onMounted, watch } from "vue"
  3. import moment from "moment"
  4. import Rs from "@/core/services/RequestService"
  5. const props = withDefaults(defineProps<{ id: string }>(), { id: "" })
  6. const date = ref<Array<any>>([
  7. [moment(new Date()).add(-6, "d").toDate(), new Date()],
  8. new Date(),
  9. [moment(new Date()).add(-6, "d").toDate(), new Date()],
  10. [moment(new Date()).add(-6, "d").toDate(), new Date()],
  11. ])
  12. const titles = ref(["", "", "", ""])
  13. const chartData = ref<any>([{}, {}, {}, {}])
  14. const lineOptions = {
  15. titleText: " ",
  16. }
  17. function onOverDateChange(type: number) {
  18. queryChart(type)
  19. }
  20. function queryChart(type: number) {
  21. let url = ""
  22. let data: any = {}
  23. switch (type) {
  24. case 0:
  25. url = "sys/onlineDataCompany/getOverWarnBar"
  26. data = {
  27. id: props.id,
  28. start: moment(date.value[type][0]).format("YYYYMMDD"),
  29. end: moment(date.value[type][1]).format("YYYYMMDD"),
  30. }
  31. break
  32. case 1:
  33. url = "sys/onlineData/line"
  34. data = { id: props.id, getTime: moment(date.value[type]).format("YYYYMMDD"), type: "" }
  35. break
  36. case 2:
  37. url = "sys/onlineDataCompany/getDeviceRuntimeBar"
  38. data = {
  39. id: props.id,
  40. start: moment(date.value[type][0]).format("YYYYMMDD"),
  41. end: moment(date.value[type][1]).format("YYYYMMDD"),
  42. }
  43. break
  44. case 3:
  45. url = "sys/onlineDataCompany/getCompanyEmissionsBar"
  46. data = {
  47. id: props.id,
  48. start: moment(date.value[type][0]).format("YYYYMMDD"),
  49. end: moment(date.value[type][1]).format("YYYYMMDD"),
  50. }
  51. break
  52. }
  53. Rs.post(url, { data: data, successAlert: false }).then((res) => {
  54. chartData.value[type] = res.data
  55. titles.value[type] = res.data.chartData[0].title
  56. })
  57. }
  58. function init() {
  59. queryChart(0)
  60. queryChart(1)
  61. queryChart(2)
  62. queryChart(3)
  63. }
  64. watch(
  65. () => props.id,
  66. () => {
  67. init()
  68. }
  69. )
  70. onMounted(() => {
  71. init()
  72. })
  73. </script>
  74. <template>
  75. <el-row :gutter="20" class="mb-5">
  76. <el-col :span="12">
  77. <div class="card card-bordered border-primary">
  78. <div class="card-header bg-light-primary min-h-50px">
  79. <div class="card-title"><h2 class="text-primary">异常时间:</h2></div>
  80. <div class="card-toolbar">
  81. <el-date-picker
  82. v-model="date[0]"
  83. type="daterange"
  84. range-separator="~"
  85. start-placeholder="开始时间"
  86. end-placeholder="结束时间"
  87. size="default"
  88. @change="
  89. () => {
  90. onOverDateChange(0)
  91. }
  92. "
  93. />
  94. </div>
  95. </div>
  96. <div class="card-body p-3">
  97. <div class="text-primary">
  98. <span class="fw-bolder">{{ titles[0] }}:</span>
  99. {{ moment(date[0][0]).format("YYYY-MM-DD") }} 至 {{ moment(date[0][1]).format("YYYY-MM-DD") }}
  100. </div>
  101. <BaseChart :data="chartData[0]" type="line" :options="lineOptions" h="230px"></BaseChart>
  102. </div>
  103. </div>
  104. </el-col>
  105. <el-col :span="12">
  106. <div class="card card-bordered border-primary">
  107. <div class="card-header bg-light-primary min-h-50px">
  108. <div class="card-title"><h2 class="text-primary">监测时间:</h2></div>
  109. <div class="card-toolbar">
  110. <el-date-picker
  111. v-model="date[1]"
  112. type="date"
  113. range-separator="~"
  114. start-placeholder="开始时间"
  115. end-placeholder="结束时间"
  116. size="default"
  117. @change="
  118. () => {
  119. onOverDateChange(1)
  120. }
  121. "
  122. />
  123. </div>
  124. </div>
  125. <div class="card-body p-3">
  126. <div class="text-primary">
  127. <span class="fw-bolder">{{ titles[1] }}:</span>
  128. {{ moment(date[1]).format("YYYY-MM-DD") }}
  129. </div>
  130. <BaseChart :data="chartData[1]" type="line" :options="lineOptions" h="230px"></BaseChart>
  131. </div>
  132. </div>
  133. </el-col>
  134. </el-row>
  135. <el-row :gutter="20" class="mb-5">
  136. <el-col :span="12">
  137. <div class="card card-bordered border-primary">
  138. <div class="card-header bg-light-primary min-h-50px">
  139. <div class="card-title"><h2 class="text-primary">监测时间:</h2></div>
  140. <div class="card-toolbar">
  141. <el-date-picker
  142. v-model="date[2]"
  143. type="daterange"
  144. range-separator="~"
  145. start-placeholder="开始时间"
  146. end-placeholder="结束时间"
  147. size="default"
  148. @change="
  149. () => {
  150. onOverDateChange(2)
  151. }
  152. "
  153. />
  154. </div>
  155. </div>
  156. <div class="card-body p-3">
  157. <div class="text-primary">
  158. <span class="fw-bolder">{{ titles[2] }}:</span>
  159. {{ moment(date[2][0]).format("YYYY-MM-DD") }} 至 {{ moment(date[2][1]).format("YYYY-MM-DD") }}
  160. </div>
  161. <BaseChart :data="chartData[2]" type="line" :options="lineOptions" h="230px"></BaseChart>
  162. </div>
  163. </div>
  164. </el-col>
  165. <el-col :span="12">
  166. <div class="card card-bordered border-primary">
  167. <div class="card-header bg-light-primary min-h-50px">
  168. <div class="card-title"><h2 class="text-primary">监测时间:</h2></div>
  169. <div class="card-toolbar">
  170. <el-date-picker
  171. v-model="date[3]"
  172. type="daterange"
  173. range-separator="~"
  174. start-placeholder="开始时间"
  175. end-placeholder="结束时间"
  176. size="default"
  177. @change="
  178. () => {
  179. onOverDateChange(3)
  180. }
  181. "
  182. />
  183. </div>
  184. </div>
  185. <div class="card-body p-3">
  186. <div class="text-primary">
  187. <span class="fw-bolder">{{ titles[3] }}:</span>
  188. {{ moment(date[3][0]).format("YYYY-MM-DD") }} 至 {{ moment(date[3][1]).format("YYYY-MM-DD") }}
  189. </div>
  190. <BaseChart :data="chartData[3]" type="line" :options="lineOptions" h="230px"></BaseChart>
  191. </div>
  192. </div>
  193. </el-col>
  194. </el-row>
  195. </template>