index.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <script setup name="prepare">
  2. import { ElMessage } from "element-plus";
  3. import { onMounted, ref, onActivated, reactive } from "vue";
  4. import request from "@/api/axios.js";
  5. import { baseURL, socketURL } from "@/api/axios.js";
  6. /**配置参数 */
  7. const treeHeight = ref(window.innerHeight - 260 + "px"); //tree高度
  8. const excelHeight = ref(window.innerHeight - 260 + "px"); //excel高度
  9. const tableHeight = ref(window.innerHeight - 260 + "px");
  10. /**created */
  11. const ChangZhan = ref([]);
  12. const value1 = ref();
  13. let val1 = ref();
  14. let value2 = ref();
  15. const BeginChange = (val) => {
  16. // console.log(`${val} items per page`)
  17. console.log(val);
  18. val1.value=val
  19. // console.log(val);
  20. }
  21. const EndChange = (val) => {
  22. // console.log(`${val} items per page`)
  23. console.log(val);
  24. value2.value=val
  25. }
  26. const tableData=ref()
  27. const nbsubmit = async () => {
  28. const res = await request.get(
  29. `/meterinfo/bottomMonth?windId=${value1.value}${lbval.value==='all'?'':'&meterType='+lbval.value}${fenval.value==='all'?'':'&meterClass='+fenval.value}${mingval.value==='all'?'':'&name='+mingval.value}&startTime=${new Date(val1.value).getTime()}&endTime=${ new Date(value2.value).getTime()}&page=${currentPage4.value}&perPage=${pageSize4.value}`,
  30. );
  31. console.log('66',res);
  32. res.data.bottom.forEach((ele)=>{
  33. ele.date=ele.date.slice(0, 7)
  34. ele.startCode=ele.startCode.toFixed(4)
  35. ele.endCode=ele.endCode.toFixed(4)
  36. ele.rdl=ele.rdl.toFixed(4)
  37. })
  38. tableData.value=res.data.bottom
  39. total.value=res.data.totalItems
  40. console.log('123',tableData.value);
  41. };
  42. const leibie = ref([]);
  43. const lbval = ref('all');
  44. const ChangZhanChange = async () => {
  45. console.log('123',value1.value);
  46. const res = await request.get(`/meter/getMeterTypeBottom?windId=${value1.value}`);
  47. console.log(res);
  48. leibie.value=res.data.type
  49. lbval.value='all'
  50. fenval.value='all'
  51. mingval.value='all'
  52. };
  53. const fenlei = ref([]);
  54. const fenval = ref('all');
  55. const ChangZhanChange1 = async () => {
  56. const res = await request.get(`/meter/getMeterTypeBottom?windId=${value1.value}&type=${lbval.value}`);
  57. console.log(res);
  58. fenlei.value=res.data.type
  59. fenval.value='all'
  60. mingval.value='all'
  61. };
  62. const mingcheng = ref([]);
  63. const mingval = ref('all');
  64. const ChangZhanChange2 = async () => {
  65. const res = await request.get(`/meter/getMeterTypeBottom?windId=${value1.value}&type=${lbval.value}&meterClass=${fenval.value}`);
  66. console.log('555',res);
  67. mingcheng.value=res.data.type
  68. mingval.value='all'
  69. };
  70. const total=ref()
  71. let currentPage4 = ref(1)
  72. let pageSize4 = ref(19)
  73. const handleSizeChange = (val) => {
  74. // console.log(`${val} items per page`)
  75. pageSize4.value=val
  76. nbsubmit()
  77. }
  78. const handleCurrentChange = (val) => {
  79. // console.log(`current page: ${val}`)
  80. currentPage4.value=val
  81. nbsubmit()
  82. }
  83. const Change1 = async () => {
  84. const res = await request.get(`/meter/infoall?stationId=${goodval.value}`);
  85. console.log(res);
  86. ChangZhan.value = res.data.fdc;
  87. fenval.value='all'
  88. mingval.value='all'
  89. };
  90. // 拿场站
  91. const good = ref([]);
  92. const goodval = ref();
  93. const nbhh = async () => {
  94. const res = await request.get("/meter/allStation");
  95. console.log(res);
  96. good.value = res.data
  97. // console.log('0',ChangZhan.good);
  98. // value1.value = ChangZhan.value[0].nemCode;
  99. };
  100. const getTime1=(val)=> {
  101. //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
  102. var date = new Date();
  103. var year = date.getFullYear(),
  104. month = date.getMonth() + 1,
  105. day = date.getDate();
  106. month >= 1 && month <= 9 ? (month = "0" + month) : "";
  107. day >= 0 && day <= 9 ? (day = "0" + day) : "";
  108. var begin = year + "-" + month ;
  109. var end = year + "-" + month ;
  110. if (val == 1) {
  111. return begin;
  112. } else if (val == 2) {
  113. return end;
  114. }
  115. }
  116. /**mounted */
  117. onMounted(() => {
  118. tableHeight.value = window.innerHeight - 260 + "px";
  119. excelHeight.value = window.innerHeight - 260 + "px";
  120. treeHeight.value = window.innerHeight - 260 + "px";
  121. window.addEventListener("resize", () => {
  122. tableHeight.value = window.innerHeight - 260 + "px";
  123. excelHeight.value = window.innerHeight - 260 + "px";
  124. treeHeight.value = window.innerHeight - 260 + "px";
  125. });
  126. nbhh();
  127. val1.value = getTime1(1);
  128. value2.value = getTime1(2);
  129. });
  130. </script>
  131. <template>
  132. <div class="bg-white py-[10px] px-[10px] relative">
  133. <div
  134. class="pl-[20px] flex items-center h-[80px] relative mb-[20px] shadow rounded-[6px] shadow-blue-500"
  135. >
  136. <el-form-item label="场站类型" class="!mb-0">
  137. <el-select
  138. v-model="goodval"
  139. class="w-[150px]"
  140. @change="Change1(goodval)"
  141. placeholder="请选择"
  142. popper-class="select"
  143. >
  144. <el-option
  145. v-for="item in good"
  146. :key="item.nemCode"
  147. :value="item.nemCode"
  148. :label="item.name"
  149. ></el-option>
  150. </el-select>
  151. </el-form-item>
  152. <el-form-item label="场站" class="!mb-0 ml-3">
  153. <el-select
  154. v-model="value1"
  155. class="w-[150px]"
  156. @change="ChangZhanChange(value1)"
  157. clearable
  158. placeholder="请选择"
  159. popper-class="select"
  160. >
  161. <el-option
  162. v-for="item in ChangZhan"
  163. :key="item.nemCode"
  164. :value="item.nemCode"
  165. :label="item.name"
  166. ></el-option>
  167. </el-select>
  168. </el-form-item>
  169. <el-form-item label="开始" class="!mb-0 ml-2">
  170. <el-date-picker
  171. v-model="val1"
  172. @change="BeginChange(val1)"
  173. type="month"
  174. value-format="YYYY-MM"
  175. placeholder="选择日期"
  176. >
  177. </el-date-picker>
  178. </el-form-item>
  179. <el-form-item label="结束" class="!mb-0">
  180. <el-date-picker
  181. v-model="value2"
  182. @change="EndChange(value2)"
  183. type="month"
  184. value-format="YYYY-MM"
  185. placeholder="选择日期"
  186. >
  187. </el-date-picker>
  188. </el-form-item>
  189. <el-form-item class="!mb-0 ml-3">
  190. <el-button type="primary" @click="nbsubmit">查询</el-button>
  191. </el-form-item>
  192. </div>
  193. <div
  194. class="relative shadow rounded-[6px] shadow-blue-500 px-[10px] pt-[20px] pb-[10px]"
  195. >
  196. <el-row :gutter="10">
  197. <el-col :span="4">
  198. <div>
  199. <el-form-item label="类型" class="!mb-0 ml-2">
  200. <el-select
  201. v-model="lbval"
  202. class="w-[150px]"
  203. @change="ChangZhanChange1(lbval)"
  204. placeholder="请选择"
  205. popper-class="select"
  206. >
  207. <el-option label="全部" value="all" />
  208. <el-option
  209. v-for="item in leibie"
  210. :key="item.index"
  211. :value="item.name"
  212. :label="item.name"
  213. ></el-option>
  214. </el-select>
  215. </el-form-item>
  216. <el-form-item label="分类" class="mt-5 ml-2">
  217. <el-select
  218. v-model="fenval"
  219. class="w-[150px]"
  220. @change="ChangZhanChange2(fenval)"
  221. placeholder="请选择"
  222. popper-class="select"
  223. >
  224. <el-option label="全部" value="all" />
  225. <el-option
  226. v-for="item in fenlei"
  227. :key="item.index"
  228. :value="item.name"
  229. :label="item.name"
  230. ></el-option>
  231. </el-select>
  232. </el-form-item>
  233. <el-form-item label="名称" class="mt-5 ml-2">
  234. <el-select
  235. v-model="mingval"
  236. class="w-[150px]"
  237. @change="ChangZhanChange3(mingval)"
  238. placeholder="请选择"
  239. popper-class="select"
  240. >
  241. <el-option label="全部" value="all" />
  242. <el-option
  243. v-for="item in mingcheng"
  244. :key="item.index"
  245. :value="item.name"
  246. :label="item.name"
  247. ></el-option>
  248. </el-select>
  249. </el-form-item>
  250. <!-- <el-form-item class="!mb-0 ml-5">
  251. <el-button type="primary" @click="nbsubmit">确认</el-button>
  252. </el-form-item> -->
  253. </div>
  254. </el-col>
  255. <el-col :span="20">
  256. <div>
  257. <el-scrollbar max-height="650px">
  258. <el-table
  259. :data="tableData"
  260. height="650"
  261. style="width: 100% ,height:650px"
  262. :border="true"
  263. >
  264. <el-table-column
  265. prop="date"
  266. label="时间"
  267. align="center"
  268. width="250"
  269. resizable
  270. />
  271. <el-table-column
  272. prop="name"
  273. label="类型"
  274. align="center"
  275. width="250"
  276. />
  277. <el-table-column
  278. prop="startCode"
  279. label="起码"
  280. align="right"
  281. width="200"
  282. resizable
  283. />
  284. <el-table-column
  285. prop="endCode"
  286. label="止码"
  287. align="right"
  288. width="200"
  289. />
  290. <el-table-column
  291. prop="rdl"
  292. label="月电量(万KW/h)"
  293. align="right"
  294. width="200"
  295. />
  296. </el-table>
  297. </el-scrollbar>
  298. </div>
  299. <div>
  300. <el-pagination
  301. v-model:current-page="currentPage4"
  302. v-model:page-size="pageSize4"
  303. :page-sizes="[19,30,50,100]"
  304. :small="small"
  305. :disabled="disabled"
  306. :background="background"
  307. layout="total, sizes, prev, pager, next, jumper"
  308. :total="total"
  309. @size-change="handleSizeChange"
  310. @current-change="handleCurrentChange"
  311. />
  312. </div>
  313. </el-col>
  314. </el-row>
  315. </div>
  316. </div>
  317. </template>