Przeglądaj źródła

储能智慧云

master
dong 1 rok temu
rodzic
commit
2dbc0fc112

+ 1
- 1
.env.development Wyświetl plik

17
 
17
 
18
 # 开发环境接口地址
18
 # 开发环境接口地址
19
 # 开发环境跨域代理,支持配置多个 http://192.168.8.198:8888
19
 # 开发环境跨域代理,支持配置多个 http://192.168.8.198:8888
20
-# VITE_PROXY = [["/api","http://192.168.8.160:8888"]]
20
+# VITE_PROXY = [["/api","http://192.168.8.172:8888"]]
21
 # VITE_PROXY = [["/api","http://zlink.bjdexn.cn:8888"]]
21
 # VITE_PROXY = [["/api","http://zlink.bjdexn.cn:8888"]]
22
 
22
 
23
 VITE_PROXY = [["/api","https://esos-iot.bjdexn.cn"]]
23
 VITE_PROXY = [["/api","https://esos-iot.bjdexn.cn"]]

+ 1
- 0
src/api/interface/index.ts Wyświetl plik

148
   // 设备监控 tap标签
148
   // 设备监控 tap标签
149
   export interface deviceList {
149
   export interface deviceList {
150
     deviceClass: number;
150
     deviceClass: number;
151
+    deviceType: number;
151
     deviceClassName: string;
152
     deviceClassName: string;
152
     devices: deviceLists[];
153
     devices: deviceLists[];
153
   }
154
   }

+ 1
- 1
src/views/Alarm/index.vue Wyświetl plik

17
       <el-select
17
       <el-select
18
         v-model="emsDeviceId"
18
         v-model="emsDeviceId"
19
         collapse-tags
19
         collapse-tags
20
-        placeholder="选择电站"
20
+        placeholder="选择设备编号"
21
         popper-class="custom-header"
21
         popper-class="custom-header"
22
         :max-collapse-tags="1"
22
         :max-collapse-tags="1"
23
         style="width: 240px"
23
         style="width: 240px"

+ 3
- 3
src/views/home/index.vue Wyświetl plik

102
                 <div id="income" v-show="tabpropslabel == '收益统计'"></div>
102
                 <div id="income" v-show="tabpropslabel == '收益统计'"></div>
103
               </div>
103
               </div>
104
             </el-tabs>
104
             </el-tabs>
105
-
106
             <div class="grid_divright">
105
             <div class="grid_divright">
107
               <div :class="recentlytype == 7 ? 'grid_divright_1' : 'grid_divright_2'" @click="recently(7)">近7日</div>
106
               <div :class="recentlytype == 7 ? 'grid_divright_1' : 'grid_divright_2'" @click="recently(7)">近7日</div>
108
               <div :class="recentlytype == 31 ? 'grid_divright_1' : 'grid_divright_2'" @click="recently(31)">近31日</div>
107
               <div :class="recentlytype == 31 ? 'grid_divright_1' : 'grid_divright_2'" @click="recently(31)">近31日</div>
184
 import type { TabsPaneContext } from "element-plus";
183
 import type { TabsPaneContext } from "element-plus";
185
 import * as echarts from "echarts";
184
 import * as echarts from "echarts";
186
 import Pagination from "@/components/ProTable/components/Pagination.vue";
185
 import Pagination from "@/components/ProTable/components/Pagination.vue";
187
-//
186
+
188
 import {
187
 import {
189
   gethomesite,
188
   gethomesite,
190
   multiStationday,
189
   multiStationday,
604
   } else {
603
   } else {
605
     onlineStatus.value = "";
604
     onlineStatus.value = "";
606
     modelinput.value = "";
605
     modelinput.value = "";
607
-    pageable.value.ps = 1;
606
+    pageable.value.pn = 1;
607
+    pageable.value.ps = 10;
608
     postmultiStationpagebaseInfo();
608
     postmultiStationpagebaseInfo();
609
   }
609
   }
610
 };
610
 };

+ 149
- 78
src/views/monitor/index.vue Wyświetl plik

17
       <el-select
17
       <el-select
18
         v-model="emsDeviceId"
18
         v-model="emsDeviceId"
19
         collapse-tags
19
         collapse-tags
20
-        placeholder="选择电站"
20
+        placeholder="选择编号"
21
         popper-class="custom-header"
21
         popper-class="custom-header"
22
         :max-collapse-tags="1"
22
         :max-collapse-tags="1"
23
         style="width: 240px"
23
         style="width: 240px"
28
       </el-select>
28
       </el-select>
29
     </div>
29
     </div>
30
     <!-- <div>
30
     <!-- <div>
31
-
31
+    
32
   </div> -->
32
   </div> -->
33
     <div class="equipment">
33
     <div class="equipment">
34
       <el-card>
34
       <el-card>
35
-        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
35
+        <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handletabs">
36
           <el-tab-pane v-for="(item, index) in deviceList" :key="index" :label="item.deviceClassName" :name="index">
36
           <el-tab-pane v-for="(item, index) in deviceList" :key="index" :label="item.deviceClassName" :name="index">
37
             <div class="demo_div">
37
             <div class="demo_div">
38
               <div v-for="(items, indexs) in item.devices" :key="indexs">
38
               <div v-for="(items, indexs) in item.devices" :key="indexs">
44
           </el-tab-pane>
44
           </el-tab-pane>
45
         </el-tabs>
45
         </el-tabs>
46
 
46
 
47
-        <div class="equipmentdiv" v-if="activeName == 0">
47
+        <div class="equipmentdiv" v-if="deviceType == 1">
48
           <div class="equipmenttime">末次数据时间:{{ pcslist.ts }}</div>
48
           <div class="equipmenttime">末次数据时间:{{ pcslist.ts }}</div>
49
           <div style="height: 33px"></div>
49
           <div style="height: 33px"></div>
50
           <div>设备状态</div>
50
           <div>设备状态</div>
114
                 <div class="equipment2">控制模式</div>
114
                 <div class="equipment2">控制模式</div>
115
               </div>
115
               </div>
116
             </el-card> -->
116
             </el-card> -->
117
-            <el-card>
117
+            <!-- <el-card>
118
               <div class="equipmentdevice1">
118
               <div class="equipmentdevice1">
119
                 <div class="equipmentname" v-if="pcslist.emsCommStatus == 'GOOD'">
119
                 <div class="equipmentname" v-if="pcslist.emsCommStatus == 'GOOD'">
120
                   <div class="equipmentborder"></div>
120
                   <div class="equipmentborder"></div>
126
                 </div>
126
                 </div>
127
                 <div class="equipment2">与EMS通信</div>
127
                 <div class="equipment2">与EMS通信</div>
128
               </div>
128
               </div>
129
-            </el-card>
129
+            </el-card> -->
130
           </div>
130
           </div>
131
           <div class="equipmentdata">设备数据</div>
131
           <div class="equipmentdata">设备数据</div>
132
-          <!-- 1 -->
132
+          <!--  -->
133
           <div class="equipmentdata_equipment">
133
           <div class="equipmentdata_equipment">
134
             <div class="equipmentdata_div">
134
             <div class="equipmentdata_div">
135
               <div class="equipment_title">当日充电量</div>
135
               <div class="equipment_title">当日充电量</div>
140
               <div>{{ pcslist.todayAcDischargeKwh ?? "-" }} kWh</div>
140
               <div>{{ pcslist.todayAcDischargeKwh ?? "-" }} kWh</div>
141
             </div>
141
             </div>
142
             <div class="equipmentdata_div">
142
             <div class="equipmentdata_div">
143
+              <div class="equipment_title">累计充电量</div>
144
+              <div>{{ (pcslist.totalAcChargeKwh * 1).toFixed(2) ?? "-" }} kWh</div>
145
+            </div>
146
+            <div class="equipmentdata_div4">
147
+              <div class="equipment_title">累计放电量</div>
148
+              <!-- <div>{{ pcslist.totalAcActivePower ?? "-" }} kW</div> -->
149
+              <div>{{ pcslist.totalAcDischargeKwh ?? "-" }} kWh</div>
150
+            </div>
151
+          </div>
152
+          <!-- 1 -->
153
+          <div class="equipmentdata_equipment">
154
+            <!-- <div class="equipmentdata_div">
155
+              <div class="equipment_title">当日充电量</div>
156
+              <div>{{ pcslist.todayAcChargeKwh ?? "-" }} kWh</div>
157
+            </div>
158
+            <div class="equipmentdata_div">
159
+              <div class="equipment_title">当日放电量</div>
160
+              <div>{{ pcslist.todayAcDischargeKwh ?? "-" }} kWh</div>
161
+            </div> -->
162
+            <div class="equipmentdata_div">
143
               <div class="equipment_title">交流频率</div>
163
               <div class="equipment_title">交流频率</div>
144
               <div>{{ (pcslist.acFrequency * 1).toFixed(2) ?? "-" }} Hz</div>
164
               <div>{{ (pcslist.acFrequency * 1).toFixed(2) ?? "-" }} Hz</div>
145
             </div>
165
             </div>
146
             <div class="equipmentdata_div4">
166
             <div class="equipmentdata_div4">
147
               <div class="equipment_title">总交流有功功率</div>
167
               <div class="equipment_title">总交流有功功率</div>
148
               <div>{{ pcslist.totalAcActivePower ?? "-" }} kW</div>
168
               <div>{{ pcslist.totalAcActivePower ?? "-" }} kW</div>
169
+              <!-- <div>{{ pcslist.totalAcPowerFactor ?? "-" }} kW</div> -->
170
+            </div>
171
+            <div class="equipmentdata_div">
172
+              <div class="equipment_title">总交流无功功率</div>
173
+              <div>{{ pcslist.totalAcReactivePower ?? "-" }} kW</div>
174
+            </div>
175
+            <div class="equipmentdata_div">
176
+              <div class="equipment_title">总交流视在功率</div>
177
+              <div>{{ pcslist.totalAcApparentPower ?? "-" }} kW</div>
149
             </div>
178
             </div>
150
           </div>
179
           </div>
151
           <!-- 2 -->
180
           <!-- 2 -->
152
           <div class="equipmentdata_equipment">
181
           <div class="equipmentdata_equipment">
153
-            <div class="equipmentdata_div">
182
+            <!-- <div class="equipmentdata_div">
154
               <div class="equipment_title">总交流无功功率</div>
183
               <div class="equipment_title">总交流无功功率</div>
155
-              <div>{{ pcslist.totalAcReactivePower ?? "-" }} kvar</div>
184
+              <div>{{ pcslist.totalAcReactivePower ?? "-" }} kW</div>
156
             </div>
185
             </div>
157
             <div class="equipmentdata_div">
186
             <div class="equipmentdata_div">
158
               <div class="equipment_title">总交流视在功率</div>
187
               <div class="equipment_title">总交流视在功率</div>
159
-              <div>{{ pcslist.totalAcApparentPower ?? "-" }} kVA</div>
160
-            </div>
188
+              <div>{{ pcslist.totalAcApparentPower ?? "-" }} kW</div>
189
+            </div> -->
161
             <div class="equipmentdata_div">
190
             <div class="equipmentdata_div">
162
               <!-- <div class="equipment_title">总交流功率因数</div> -->
191
               <!-- <div class="equipment_title">总交流功率因数</div> -->
163
               <div class="equipment_title">交流电流</div>
192
               <div class="equipment_title">交流电流</div>
164
-              <!-- <div>{{ pcslist.totalAcPowerFactor ?? "-" }}</div> -->
193
+              <!-- <div>{{ pcslist.aphaseActivePower ?? "-" }}A</div> -->
165
               <div>{{ (pcslist.acAbCurrent * 1).toFixed(2) ?? "-" }}A</div>
194
               <div>{{ (pcslist.acAbCurrent * 1).toFixed(2) ?? "-" }}A</div>
166
             </div>
195
             </div>
167
             <div class="equipmentdata_div4">
196
             <div class="equipmentdata_div4">
168
               <div class="equipment_title">A相有功功率</div>
197
               <div class="equipment_title">A相有功功率</div>
169
               <div>{{ pcslist.aphaseActivePower ?? "-" }} kW</div>
198
               <div>{{ pcslist.aphaseActivePower ?? "-" }} kW</div>
170
             </div>
199
             </div>
171
-          </div>
172
-          <!-- 3  -->
173
-          <div class="equipmentdata_equipment">
174
             <div class="equipmentdata_div">
200
             <div class="equipmentdata_div">
175
               <div class="equipment_title">B相有功功率</div>
201
               <div class="equipment_title">B相有功功率</div>
176
               <div>{{ pcslist.bphaseActivePower ?? "-" }} kW</div>
202
               <div>{{ pcslist.bphaseActivePower ?? "-" }} kW</div>
179
               <div class="equipment_title">C相有功功率</div>
205
               <div class="equipment_title">C相有功功率</div>
180
               <div>{{ pcslist.cphaseActivePower ?? "-" }} kW</div>
206
               <div>{{ pcslist.cphaseActivePower ?? "-" }} kW</div>
181
             </div>
207
             </div>
208
+          </div>
209
+          <!-- 3  -->
210
+          <div class="equipmentdata_equipment">
182
             <div class="equipmentdata_div">
211
             <div class="equipmentdata_div">
183
               <div class="equipment_title">A相无功功率</div>
212
               <div class="equipment_title">A相无功功率</div>
184
-              <div>{{ pcslist.aphaseReactivePower ?? "-" }} kvar</div>
213
+              <div>{{ pcslist.aphaseReactivePower ?? "-" }} kW</div>
185
             </div>
214
             </div>
186
             <div class="equipmentdata_div4">
215
             <div class="equipmentdata_div4">
187
               <div class="equipment_title">B相无功功率</div>
216
               <div class="equipment_title">B相无功功率</div>
188
-              <div>{{ pcslist.bphaseReactivePower ?? "-" }} kvar</div>
217
+              <div>{{ pcslist.bphaseReactivePower ?? "-" }} kW</div>
189
             </div>
218
             </div>
190
-          </div>
191
-          <!-- 4  -->
192
-          <div class="equipmentdata_equipment">
193
             <div class="equipmentdata_div">
219
             <div class="equipmentdata_div">
194
               <div class="equipment_title">C相无功功率</div>
220
               <div class="equipment_title">C相无功功率</div>
195
-              <div>{{ pcslist.cphaseReactivePower ?? "-" }} kvar</div>
221
+              <div>{{ pcslist.cphaseReactivePower ?? "-" }} kW</div>
196
             </div>
222
             </div>
197
             <div class="equipmentdata_div">
223
             <div class="equipmentdata_div">
198
               <div class="equipment_title">A相视在功率</div>
224
               <div class="equipment_title">A相视在功率</div>
199
               <div>{{ pcslist.aphaseApparentPower ?? "-" }} kVA</div>
225
               <div>{{ pcslist.aphaseApparentPower ?? "-" }} kVA</div>
200
             </div>
226
             </div>
227
+          </div>
228
+          <!-- 4  -->
229
+          <div class="equipmentdata_equipment">
201
             <div class="equipmentdata_div">
230
             <div class="equipmentdata_div">
202
               <div class="equipment_title">B相视在功率</div>
231
               <div class="equipment_title">B相视在功率</div>
203
               <div>{{ pcslist.bphaseApparentPower ?? "-" }} kVA</div>
232
               <div>{{ pcslist.bphaseApparentPower ?? "-" }} kVA</div>
206
               <div class="equipment_title">C相视在功率</div>
235
               <div class="equipment_title">C相视在功率</div>
207
               <div>{{ pcslist.cphaseApparentPower ?? "-" }} kVA</div>
236
               <div>{{ pcslist.cphaseApparentPower ?? "-" }} kVA</div>
208
             </div>
237
             </div>
209
-          </div>
210
-          <!-- 5  -->
211
-          <div class="equipmentdata_equipment">
212
             <div class="equipmentdata_div">
238
             <div class="equipmentdata_div">
213
-              <!-- <div class="equipment_title">AB电压</div>
214
-              <div>{{ pcslist.acAbVolt ?? "-" }} V</div> -->
215
-              <div class="equipment_title">AB离网电压</div>
216
-              <div>{{ (pcslist.abOffGridVolt * 1).toFixed(2) ?? "-" }} V</div>
239
+              <div class="equipment_title">AB电压</div>
240
+              <div>{{ (pcslist.acAbVolt * 1).toFixed(2) ?? "-" }} V</div>
241
+              <!-- <div class="equipment_title">AB离网电压</div> -->
242
+              <!-- <div>{{ (pcslist.abOffGridVolt * 1).toFixed(2) ?? "-" }} V</div> -->
217
             </div>
243
             </div>
218
             <div class="equipmentdata_div">
244
             <div class="equipmentdata_div">
219
               <div class="equipment_title">BC电压</div>
245
               <div class="equipment_title">BC电压</div>
220
               <div>{{ (pcslist.acBcVolt * 1).toFixed(2) ?? "-" }} V</div>
246
               <div>{{ (pcslist.acBcVolt * 1).toFixed(2) ?? "-" }} V</div>
221
             </div>
247
             </div>
248
+          </div>
249
+          <!-- 5  -->
250
+          <div class="equipmentdata_equipment">
222
             <div class="equipmentdata_div">
251
             <div class="equipmentdata_div">
223
               <div class="equipment_title">CA电压</div>
252
               <div class="equipment_title">CA电压</div>
224
               <div>{{ (pcslist.acCaVolt * 1).toFixed(2) ?? "-" }} V</div>
253
               <div>{{ (pcslist.acCaVolt * 1).toFixed(2) ?? "-" }} V</div>
225
             </div>
254
             </div>
226
             <div class="equipmentdata_div4">
255
             <div class="equipmentdata_div4">
227
               <div class="equipment_title">AB电流</div>
256
               <div class="equipment_title">AB电流</div>
228
-              <div>{{ (pcslist.acAbVolt * 1).toFixed(2) ?? "-" }} A</div>
257
+              <div>{{ (pcslist.acAbCurrent * 1).toFixed(2) ?? "-" }} A</div>
229
             </div>
258
             </div>
230
-          </div>
231
-          <!-- 6 -->
232
-          <div class="equipmentdata_equipment">
233
             <div class="equipmentdata_div">
259
             <div class="equipmentdata_div">
234
               <div class="equipment_title">BC电流</div>
260
               <div class="equipment_title">BC电流</div>
235
               <div>{{ (pcslist.acBcCurrent * 1).toFixed(2) ?? "-" }} A</div>
261
               <div>{{ (pcslist.acBcCurrent * 1).toFixed(2) ?? "-" }} A</div>
238
               <div class="equipment_title">CA电流</div>
264
               <div class="equipment_title">CA电流</div>
239
               <div>{{ (pcslist.acCaCurrent * 1).toFixed(2) ?? "-" }} A</div>
265
               <div>{{ (pcslist.acCaCurrent * 1).toFixed(2) ?? "-" }} A</div>
240
             </div>
266
             </div>
267
+          </div>
268
+          <!-- 6 -->
269
+          <div class="equipmentdata_equipment">
241
             <div class="equipmentdata_div">
270
             <div class="equipmentdata_div">
242
               <div class="equipment_title">A相电压</div>
271
               <div class="equipment_title">A相电压</div>
243
               <div>{{ (pcslist.acAphaseVolt * 1).toFixed(2) ?? "-" }} V</div>
272
               <div>{{ (pcslist.acAphaseVolt * 1).toFixed(2) ?? "-" }} V</div>
246
               <div class="equipment_title">B相电压</div>
275
               <div class="equipment_title">B相电压</div>
247
               <div>{{ (pcslist.acBphaseVolt * 1).toFixed(2) ?? "-" }} V</div>
276
               <div>{{ (pcslist.acBphaseVolt * 1).toFixed(2) ?? "-" }} V</div>
248
             </div>
277
             </div>
249
-          </div>
250
-          <!-- 7 -->
251
-          <div class="equipmentdata_equipment">
252
             <div class="equipmentdata_div">
278
             <div class="equipmentdata_div">
253
               <div class="equipment_title">C相电压</div>
279
               <div class="equipment_title">C相电压</div>
254
               <div>{{ (pcslist.acCphaseVolt * 1).toFixed(2) ?? "-" }} V</div>
280
               <div>{{ (pcslist.acCphaseVolt * 1).toFixed(2) ?? "-" }} V</div>
256
             <div class="equipmentdata_div">
282
             <div class="equipmentdata_div">
257
               <div class="equipment_title">A相电流</div>
283
               <div class="equipment_title">A相电流</div>
258
               <div>{{ (pcslist.acAphaseCurrent * 1).toFixed(2) ?? "-" }} A</div>
284
               <div>{{ (pcslist.acAphaseCurrent * 1).toFixed(2) ?? "-" }} A</div>
285
+              <!-- <div>{{ (pcslist.acAbCurrent * 1).toFixed(2) ?? "-" }} A</div> -->
259
             </div>
286
             </div>
287
+          </div>
288
+          <!-- 7 -->
289
+          <div class="equipmentdata_equipment">
260
             <div class="equipmentdata_div">
290
             <div class="equipmentdata_div">
261
               <div class="equipment_title">B相电流</div>
291
               <div class="equipment_title">B相电流</div>
262
               <div>{{ (pcslist.acBphaseCurrent * 1).toFixed(2) ?? "-" }} A</div>
292
               <div>{{ (pcslist.acBphaseCurrent * 1).toFixed(2) ?? "-" }} A</div>
265
               <div class="equipment_title">C相电流</div>
295
               <div class="equipment_title">C相电流</div>
266
               <div>{{ (pcslist.acCphaseCurrent * 1).toFixed(2) ?? "-" }} A</div>
296
               <div>{{ (pcslist.acCphaseCurrent * 1).toFixed(2) ?? "-" }} A</div>
267
             </div>
297
             </div>
268
-          </div>
269
-          <!-- 8 -->
270
-          <div class="equipmentdata_equipment">
271
             <div class="equipmentdata_div">
298
             <div class="equipmentdata_div">
272
               <div class="equipment_title">PCS模块温度</div>
299
               <div class="equipment_title">PCS模块温度</div>
273
               <div>{{ pcslist.moduleTempr ?? "-" }} ℃</div>
300
               <div>{{ pcslist.moduleTempr ?? "-" }} ℃</div>
276
               <div class="equipment_title">PCS环境温度</div>
303
               <div class="equipment_title">PCS环境温度</div>
277
               <div>{{ pcslist.envTempr ?? "-" }} ℃</div>
304
               <div>{{ pcslist.envTempr ?? "-" }} ℃</div>
278
             </div>
305
             </div>
306
+          </div>
307
+          <!-- 8 -->
308
+          <div class="equipmentdata_equipment">
279
             <div class="equipmentdata_div">
309
             <div class="equipmentdata_div">
280
               <div class="equipment_title">PCS散热器温度</div>
310
               <div class="equipment_title">PCS散热器温度</div>
281
               <div>{{ pcslist.radiatorTemp ?? "-" }} ℃</div>
311
               <div>{{ pcslist.radiatorTemp ?? "-" }} ℃</div>
284
               <div class="equipment_title">A1模块温度</div>
314
               <div class="equipment_title">A1模块温度</div>
285
               <div>{{ pcslist.aphaseIgbtMaxTempr ?? "-" }} ℃</div>
315
               <div>{{ pcslist.aphaseIgbtMaxTempr ?? "-" }} ℃</div>
286
             </div>
316
             </div>
287
-          </div>
288
-          <!-- 9 -->
289
-          <div class="equipmentdata_equipment">
290
             <div class="equipmentdata_div">
317
             <div class="equipmentdata_div">
291
               <div class="equipment_title">B1模块温度</div>
318
               <div class="equipment_title">B1模块温度</div>
292
               <div>{{ pcslist.bphaseIgbtMaxTempr ?? "-" }} ℃</div>
319
               <div>{{ pcslist.bphaseIgbtMaxTempr ?? "-" }} ℃</div>
295
               <div class="equipment_title">C1模块温度</div>
322
               <div class="equipment_title">C1模块温度</div>
296
               <div>{{ pcslist.cphaseIgbtMaxTempr ?? "-" }} ℃</div>
323
               <div>{{ pcslist.cphaseIgbtMaxTempr ?? "-" }} ℃</div>
297
             </div>
324
             </div>
325
+          </div>
326
+          <!-- 9 -->
327
+          <div class="equipmentdata_equipment">
298
             <div class="equipmentdata_div">
328
             <div class="equipmentdata_div">
299
               <div class="equipment_title">A2模块温度</div>
329
               <div class="equipment_title">A2模块温度</div>
300
               <div>{{ pcslist.aphaseIgbtMinTempr ?? "-" }} ℃</div>
330
               <div>{{ pcslist.aphaseIgbtMinTempr ?? "-" }} ℃</div>
303
               <div class="equipment_title">B2模块温度</div>
333
               <div class="equipment_title">B2模块温度</div>
304
               <div>{{ pcslist.bphaseIgbtMinTempr ?? "-" }} ℃</div>
334
               <div>{{ pcslist.bphaseIgbtMinTempr ?? "-" }} ℃</div>
305
             </div>
335
             </div>
306
-          </div>
307
-          <!-- 10 -->
308
-          <div class="equipmentdata_equipment">
309
             <div class="equipmentdata_div">
336
             <div class="equipmentdata_div">
310
               <div class="equipment_title">C2模块温度</div>
337
               <div class="equipment_title">C2模块温度</div>
311
               <div>{{ pcslist.cphaseIgbtMaxTempr ?? "-" }} ℃</div>
338
               <div>{{ pcslist.cphaseIgbtMaxTempr ?? "-" }} ℃</div>
314
               <div class="equipment_title">进风口温度</div>
341
               <div class="equipment_title">进风口温度</div>
315
               <div>{{ pcslist.airInletTemp ?? "-" }} ℃</div>
342
               <div>{{ pcslist.airInletTemp ?? "-" }} ℃</div>
316
             </div>
343
             </div>
344
+          </div>
345
+          <!-- 10 -->
346
+          <div class="equipmentdata_equipment">
317
             <div class="equipmentdata_div">
347
             <div class="equipmentdata_div">
318
               <div class="equipment_title">出风口温度</div>
348
               <div class="equipment_title">出风口温度</div>
319
               <div>{{ pcslist.airOutletTemp ?? "-" }} ℃</div>
349
               <div>{{ pcslist.airOutletTemp ?? "-" }} ℃</div>
339
             <el-table-column prop="dcCurrent" label="直流电压(A)" align="center" />
369
             <el-table-column prop="dcCurrent" label="直流电压(A)" align="center" />
340
           </el-table>
370
           </el-table>
341
         </div>
371
         </div>
342
-        <div class="equipmentdiv" v-if="activeName == 1">
372
+        <div class="equipmentdiv" v-if="deviceType == 2">
343
           <div class="equipmenttime">末次数据时间:{{ datalist.ts }}</div>
373
           <div class="equipmenttime">末次数据时间:{{ datalist.ts }}</div>
344
           <div style="height: 33px"></div>
374
           <div style="height: 33px"></div>
345
           <div>设备状态</div>
375
           <div>设备状态</div>
346
           <div class="equipmentdevice">
376
           <div class="equipmentdevice">
347
-            <el-card>
377
+            <!-- <el-card>
348
               <div class="equipmentdevice1">
378
               <div class="equipmentdevice1">
349
                 <div class="equipmentname" v-if="datalist.emsCommStatus == 1">
379
                 <div class="equipmentname" v-if="datalist.emsCommStatus == 1">
350
                   <div class="equipmentborder"></div>
380
                   <div class="equipmentborder"></div>
356
                 </div>
386
                 </div>
357
                 <div class="equipment2">运行状态</div>
387
                 <div class="equipment2">运行状态</div>
358
               </div>
388
               </div>
359
-            </el-card>
389
+            </el-card> -->
360
             <!-- <el-card>
390
             <!-- <el-card>
361
               <div class="equipmentdevice1">
391
               <div class="equipmentdevice1">
362
-                <div class="equipmentname" v-if="pcslist.faultStatus == 0">
392
+                <div class="equipmentname" v-if="pcslist.emsCommStatus == 0">
393
+                  <div class="equipmentborder"></div>
394
+                  <div class="equipment1">正常</div>
395
+                </div>
396
+                <div class="equipmentname" v-else>
397
+                  <div class="equipmentborderif"></div>
398
+                  <div class="equipment1red">故障</div>
399
+                </div>
400
+                <div class="equipment2">工作状态</div>
401
+              </div>
402
+            </el-card> -->
403
+            <el-card>
404
+              <div class="equipmentdevice1">
405
+                <div class="equipmentname" v-if="pcslist.emsCommStatus == 0">
363
                   <div class="equipmentborder"></div>
406
                   <div class="equipmentborder"></div>
364
                   <div class="equipment1">正常</div>
407
                   <div class="equipment1">正常</div>
365
                 </div>
408
                 </div>
366
                 <div class="equipmentname" v-else>
409
                 <div class="equipmentname" v-else>
367
                   <div class="equipmentborderif"></div>
410
                   <div class="equipmentborderif"></div>
368
-                  <div class="equipment1">故障</div>
411
+                  <div class="equipment1red">故障</div>
369
                 </div>
412
                 </div>
370
                 <div class="equipment2">故障状态</div>
413
                 <div class="equipment2">故障状态</div>
371
               </div>
414
               </div>
372
             </el-card>
415
             </el-card>
373
-            <el-card>
416
+            <!-- <el-card>
374
               <div class="equipmentdevice1">
417
               <div class="equipmentdevice1">
375
                 <div class="equipmentname" v-if="pcslist.emsCommStatus == 'GOOD'">
418
                 <div class="equipmentname" v-if="pcslist.emsCommStatus == 'GOOD'">
376
                   <div class="equipmentborder"></div>
419
                   <div class="equipmentborder"></div>
378
                 </div>
421
                 </div>
379
                 <div class="equipmentname" v-else>
422
                 <div class="equipmentname" v-else>
380
                   <div class="equipmentborderif"></div>
423
                   <div class="equipmentborderif"></div>
381
-                  <div class="equipment1">失败</div>
424
+                  <div class="equipment1red">失败</div>
382
                 </div>
425
                 </div>
383
                 <div class="equipment2">与EMS通信</div>
426
                 <div class="equipment2">与EMS通信</div>
384
               </div>
427
               </div>
393
             </div>
436
             </div>
394
             <div class="equipmentdata_div">
437
             <div class="equipmentdata_div">
395
               <div class="equipment_title">无功功率</div>
438
               <div class="equipment_title">无功功率</div>
396
-              <div>{{ datalist.totalReactivePower ?? "-" }} kvar</div>
439
+              <div>{{ datalist.totalReactivePower ?? "-" }} kW</div>
397
             </div>
440
             </div>
398
             <div class="equipmentdata_div">
441
             <div class="equipmentdata_div">
399
               <div class="equipment_title">视在功率</div>
442
               <div class="equipment_title">视在功率</div>
400
-              <div>{{ datalist.totalApparentPower ?? "-" }} kVA</div>
443
+              <div>{{ datalist.aphaseApparentPower ?? "-" }} kW</div>
401
             </div>
444
             </div>
402
             <div class="equipmentdata_div4">
445
             <div class="equipmentdata_div4">
403
               <div class="equipment_title">功率因数</div>
446
               <div class="equipment_title">功率因数</div>
404
-              <div>{{ datalist.totalPowerFactor ?? "-" }}</div>
447
+              <div>{{ datalist.totalAcPowerFactor ?? "-" }}</div>
405
             </div>
448
             </div>
406
           </div>
449
           </div>
407
           <div class="equipmentdata_equipment">
450
           <div class="equipmentdata_equipment">
442
 
485
 
443
           <!--  -->
486
           <!--  -->
444
         </div>
487
         </div>
445
-        <div class="equipmentdiv" v-if="activeName == 2">
488
+        <div class="equipmentdiv" v-if="deviceType == 3">
446
           <div class="equipmenttime">末次数据时间:{{ BMSlist.ts }}</div>
489
           <div class="equipmenttime">末次数据时间:{{ BMSlist.ts }}</div>
447
           <div style="height: 33px"></div>
490
           <div style="height: 33px"></div>
448
           <div>设备状态</div>
491
           <div>设备状态</div>
449
           <div class="equipmentdevice">
492
           <div class="equipmentdevice">
450
             <el-card>
493
             <el-card>
451
               <div class="equipmentdevice1">
494
               <div class="equipmentdevice1">
495
+                <div class="equipmentname" v-if="BMSlist.workStatus == 0">
496
+                  <div class="equipmentborder"></div>
497
+                  <div class="equipment1">空闲</div>
498
+                </div>
452
                 <div class="equipmentname" v-if="BMSlist.workStatus == 1">
499
                 <div class="equipmentname" v-if="BMSlist.workStatus == 1">
453
                   <div class="equipmentborder"></div>
500
                   <div class="equipmentborder"></div>
454
-                  <div class="equipment1">正常</div>
501
+                  <div class="equipment1">充电</div>
455
                 </div>
502
                 </div>
456
-                <div class="equipmentname" v-else>
503
+                <div class="equipmentname" v-if="BMSlist.workStatus == 2">
504
+                  <div class="equipmentborder"></div>
505
+                  <div class="equipment1">放电</div>
506
+                </div>
507
+                <div class="equipmentname" v-if="BMSlist.workStatus == 3">
508
+                  <div class="equipmentborder"></div>
509
+                  <div class="equipment1">充满</div>
510
+                </div>
511
+                <div class="equipmentname" v-if="BMSlist.workStatus == 4">
512
+                  <div class="equipmentborder"></div>
513
+                  <div class="equipment1">放空</div>
514
+                </div>
515
+                <div class="equipmentname" v-if="BMSlist.workStatus == 5">
457
                   <div class="equipmentborderif"></div>
516
                   <div class="equipmentborderif"></div>
458
-                  <div class="equipment1red">停止</div>
517
+                  <div class="equipment1red">故障</div>
459
                 </div>
518
                 </div>
460
                 <div class="equipment2">充放电状态</div>
519
                 <div class="equipment2">充放电状态</div>
461
               </div>
520
               </div>
486
                 <div class="equipment2">与PCS通信</div>
545
                 <div class="equipment2">与PCS通信</div>
487
               </div>
546
               </div>
488
             </el-card> -->
547
             </el-card> -->
489
-            <el-card>
548
+            <!-- <el-card>
490
               <div class="equipmentdevice1">
549
               <div class="equipmentdevice1">
491
                 <div class="equipmentname" v-if="BMSlist.emsCommStatus == 'GOOD'">
550
                 <div class="equipmentname" v-if="BMSlist.emsCommStatus == 'GOOD'">
492
                   <div class="equipmentborder"></div>
551
                   <div class="equipmentborder"></div>
498
                 </div>
557
                 </div>
499
                 <div class="equipment2">与EMS通信</div>
558
                 <div class="equipment2">与EMS通信</div>
500
               </div>
559
               </div>
501
-            </el-card>
560
+            </el-card> -->
502
           </div>
561
           </div>
503
 
562
 
504
           <div class="equipmentdata">设备数据</div>
563
           <div class="equipmentdata">设备数据</div>
587
           </div>
646
           </div>
588
           <!--  -->
647
           <!--  -->
589
         </div>
648
         </div>
590
-        <div class="equipmentdiv" v-if="activeName == 3">
649
+        <div class="equipmentdiv" v-if="deviceType == 4">
591
           <div class="equipmenttime">末次数据时间:{{ Conditionerdata.ts }}</div>
650
           <div class="equipmenttime">末次数据时间:{{ Conditionerdata.ts }}</div>
592
           <div style="height: 33px"></div>
651
           <div style="height: 33px"></div>
593
           <div>设备状态</div>
652
           <div>设备状态</div>
602
                   <div class="equipmentborderif"></div>
661
                   <div class="equipmentborderif"></div>
603
                   <div class="equipment1red">停止</div>
662
                   <div class="equipment1red">停止</div>
604
                 </div>
663
                 </div>
605
-                <div class="equipment2">工作状态</div>
664
+                <div class="equipment2">运行状态</div>
606
               </div>
665
               </div>
607
             </el-card>
666
             </el-card>
608
             <!-- <el-card>
667
             <!-- <el-card>
683
                 <div class="equipment2">排氢状态</div>
742
                 <div class="equipment2">排氢状态</div>
684
               </div>
743
               </div>
685
             </el-card> -->
744
             </el-card> -->
686
-            <el-card>
745
+            <!-- <el-card>
687
               <div class="equipmentdevice1">
746
               <div class="equipmentdevice1">
688
                 <div class="equipmentname" v-if="Conditionerdata.emsCommStatus == 1">
747
                 <div class="equipmentname" v-if="Conditionerdata.emsCommStatus == 1">
689
                   <div class="equipmentborder"></div>
748
                   <div class="equipmentborder"></div>
695
                 </div>
754
                 </div>
696
                 <div class="equipment2">与EMS通信</div>
755
                 <div class="equipment2">与EMS通信</div>
697
               </div>
756
               </div>
698
-            </el-card>
757
+            </el-card> -->
699
             <!-- <el-card>
758
             <!-- <el-card>
700
               <div class="equipmentdevice1">
759
               <div class="equipmentdevice1">
701
                 <div class="equipmentname" v-if="Conditionerdata.sysStatus == 1">
760
                 <div class="equipmentname" v-if="Conditionerdata.sysStatus == 1">
713
               <div class="equipmentdevice1">
772
               <div class="equipmentdevice1">
714
                 <div class="equipmentname" v-if="Conditionerdata.alarmStatus == 1">
773
                 <div class="equipmentname" v-if="Conditionerdata.alarmStatus == 1">
715
                   <div class="equipmentborder"></div>
774
                   <div class="equipmentborder"></div>
716
-                  <div class="equipment1">-</div>
775
+                  <div class="equipment1">正常</div>
717
                 </div>
776
                 </div>
718
                 <div class="equipmentname" v-else>
777
                 <div class="equipmentname" v-else>
719
                   <div class="equipmentborderif"></div>
778
                   <div class="equipmentborderif"></div>
720
-                  <div class="equipment1">-</div>
779
+                  <div class="equipment1red">故障</div>
721
                 </div>
780
                 </div>
722
                 <div class="equipment2">故障状态</div>
781
                 <div class="equipment2">故障状态</div>
723
               </div>
782
               </div>
888
   } else {
947
   } else {
889
     emsDeviceId.value = data[0].id;
948
     emsDeviceId.value = data[0].id;
890
   }
949
   }
891
-  console.log(emsDeviceId.value);
950
+  for (let index = 0; index < data.length; index++) {
951
+    if (data[index].emsDeviceId.length > 20) {
952
+      data[index].emsDeviceId = data[index].emsDeviceId.substring(7);
953
+    }
954
+  }
892
 
955
 
893
   emsDevice.value = data;
956
   emsDevice.value = data;
894
   getstationrealtime();
957
   getstationrealtime();
958
+};
959
+const deviceList: Ref<Station.deviceList[]> = ref([]);
960
+const deviceType = ref(1);
961
+
962
+const getstationrealtime = async () => {
963
+  const { data } = await poststationdeviceList({ emsId: emsDeviceId.value }, Singlevalue.value);
964
+  if (data.length == 0) return;
965
+  deviceList.value = data;
966
+  deviceType.value = data[0].deviceType;
895
   handleClick();
967
   handleClick();
896
   // 清除定时器的示例
968
   // 清除定时器的示例
897
   clearInterval(intervalID.value);
969
   clearInterval(intervalID.value);
899
     handleClick();
971
     handleClick();
900
   }, 10000);
972
   }, 10000);
901
 };
973
 };
902
-const deviceList: Ref<Station.deviceList[]> = ref([]);
903
-
904
-const getstationrealtime = async () => {
905
-  const { data } = await poststationdeviceList({ emsId: emsDeviceId.value }, Singlevalue.value);
906
-  deviceList.value = data.reverse();
907
-};
908
 const activeName = ref(0);
974
 const activeName = ref(0);
975
+const handletabs = (e: any) => {
976
+  activeName.value = e;
977
+  handleClick();
978
+};
909
 const handleClick = async () => {
979
 const handleClick = async () => {
980
+  deviceType.value = deviceList.value[activeName.value].deviceType;
910
   // clearInterval(intervalID.value);
981
   // clearInterval(intervalID.value);
911
-  if (activeName.value == 0) {
982
+  if (deviceList.value[activeName.value].deviceType == 1) {
912
     getpcsdata();
983
     getpcsdata();
913
-  } else if (activeName.value == 1) {
984
+  } else if (deviceList.value[activeName.value].deviceType == 2) {
914
     // devicesClickid.value
985
     // devicesClickid.value
915
     devicesClickid.value = deviceList.value[activeName.value].devices[0].id;
986
     devicesClickid.value = deviceList.value[activeName.value].devices[0].id;
916
     Electricitymeter();
987
     Electricitymeter();
917
-  } else if (activeName.value == 2) {
988
+  } else if (deviceList.value[activeName.value].deviceType == 3) {
918
     BMSfieldCodeid.value = deviceList.value[activeName.value].devices[0].id;
989
     BMSfieldCodeid.value = deviceList.value[activeName.value].devices[0].id;
919
 
990
 
920
     getBMSfieldCode();
991
     getBMSfieldCode();
921
     getBMSbatteryStackInfo();
992
     getBMSbatteryStackInfo();
922
-  } else if (activeName.value == 3) {
993
+  } else if (deviceList.value[activeName.value].deviceType == 4) {
923
     airConditionerInfoid.value = deviceList.value[activeName.value].devices[0].id;
994
     airConditionerInfoid.value = deviceList.value[activeName.value].devices[0].id;
924
     getgetairConditionerInfo();
995
     getgetairConditionerInfo();
925
   }
996
   }
926
 };
997
 };
998
+//
927
 const devicesClickindex = ref(0);
999
 const devicesClickindex = ref(0);
928
 const devicesClickid = ref("1");
1000
 const devicesClickid = ref("1");
929
 const devicesClick = async (val: number, id: string) => {
1001
 const devicesClick = async (val: number, id: string) => {
942
   pcslist.value = data;
1014
   pcslist.value = data;
943
 };
1015
 };
944
 // 电表
1016
 // 电表
945
-
946
 const Electricitymeterlist = ref();
1017
 const Electricitymeterlist = ref();
947
 const datalist = ref();
1018
 const datalist = ref();
948
 const Electricitymeter = async () => {
1019
 const Electricitymeter = async () => {

+ 1
- 3
src/views/overview/index.vue Wyświetl plik

326
     </el-dialog>
326
     </el-dialog>
327
   </div>
327
   </div>
328
 </template>
328
 </template>
329
-<!-- 收益统计 
330
-                        
331
-充放电统计 -->
329
+<!--    -->
332
 <script setup lang="ts">
330
 <script setup lang="ts">
333
 import { onMounted, Ref, ref } from "vue";
331
 import { onMounted, Ref, ref } from "vue";
334
 import type { TabsPaneContext } from "element-plus";
332
 import type { TabsPaneContext } from "element-plus";

+ 16
- 3
src/views/powerStation/addition.vue Wyświetl plik

18
                 />
18
                 />
19
               </el-form-item>
19
               </el-form-item>
20
               <el-form-item label="绑定设备" prop="emsId" :rules="[{ required: true, message: '请选择绑定设备' }]">
20
               <el-form-item label="绑定设备" prop="emsId" :rules="[{ required: true, message: '请选择绑定设备' }]">
21
-                <el-select v-model="numberValidateForm.emsId" placeholder="请选择绑定设备" size="large" style="width: 300px">
21
+                <el-select
22
+                  multiple
23
+                  v-model="selectemsId"
24
+                  placeholder="请选择绑定设备"
25
+                  size="large"
26
+                  style="width: 300px"
27
+                  @change="onselect"
28
+                >
22
                   <el-option v-for="item in equipmentdata" :key="item.eid" :label="item.emsDeviceId" :value="item.eid" />
29
                   <el-option v-for="item in equipmentdata" :key="item.eid" :label="item.emsDeviceId" :value="item.eid" />
23
                 </el-select>
30
                 </el-select>
24
               </el-form-item>
31
               </el-form-item>
87
             <div class="elform">
94
             <div class="elform">
88
               <el-form-item label="装机功率" prop="installedPower" :rules="[{ required: true, message: '请输入装机功率' }]">
95
               <el-form-item label="装机功率" prop="installedPower" :rules="[{ required: true, message: '请输入装机功率' }]">
89
                 <el-input
96
                 <el-input
90
-                  v-model.number="numberValidateForm.installedPower"
97
+                  v-model="numberValidateForm.installedPower"
91
                   style="width: 300px"
98
                   style="width: 300px"
92
                   size="large"
99
                   size="large"
93
                   type="text"
100
                   type="text"
231
 };
238
 };
232
 
239
 
233
 const submitForm = (formEl: FormInstance | undefined) => {
240
 const submitForm = (formEl: FormInstance | undefined) => {
241
+  console.log(numberValidateForm.emsId);
242
+
234
   if (!formEl) return;
243
   if (!formEl) return;
235
   formEl.validate(async valid => {
244
   formEl.validate(async valid => {
236
     if (valid) {
245
     if (valid) {
237
       if (route.query.type == "电站新增") {
246
       if (route.query.type == "电站新增") {
247
+        // numberValidateForm.emsId;
238
         const { data } = await insertpowerURL(numberValidateForm);
248
         const { data } = await insertpowerURL(numberValidateForm);
239
         console.log(data);
249
         console.log(data);
240
       } else {
250
       } else {
248
     }
258
     }
249
   });
259
   });
250
 };
260
 };
251
-
261
+const selectemsId = ref([]);
262
+const onselect = () => {
263
+  numberValidateForm.emsId = selectemsId.value.join();
264
+};
252
 const resetForm = (formEl: FormInstance | undefined) => {
265
 const resetForm = (formEl: FormInstance | undefined) => {
253
   if (!formEl) return;
266
   if (!formEl) return;
254
   formEl.resetFields();
267
   formEl.resetFields();

+ 18
- 12
src/views/powerStation/index.vue Wyświetl plik

4
       电站管理
4
       电站管理
5
       <div class="title_time">{{ currentDate }}</div>
5
       <div class="title_time">{{ currentDate }}</div>
6
     </div>
6
     </div>
7
-
7
+    <!--  -->
8
     <el-card>
8
     <el-card>
9
       <div class="selectsite">
9
       <div class="selectsite">
10
-        <el-button type="primary" size="large" color="#0052d9" @click="newaddition">新增</el-button>
10
+        <el-button v-if="BUTTONS.powerStationadd" type="primary" size="large" color="#0052d9" @click="newaddition">
11
+          新增
12
+        </el-button>
11
         <div class="selectsite_right">
13
         <div class="selectsite_right">
12
           <div class="tabpane_1">电站状态:</div>
14
           <div class="tabpane_1">电站状态:</div>
13
           <el-select v-model="Singlevalue" placeholder="Select" size="large" style="width: 240px" @change="postemsDevice">
15
           <el-select v-model="Singlevalue" placeholder="Select" size="large" style="width: 240px" @change="postemsDevice">
39
         <el-table-column label="操作">
41
         <el-table-column label="操作">
40
           <template #default="scope">
42
           <template #default="scope">
41
             <el-button @click="details(scope.row)">查看</el-button>
43
             <el-button @click="details(scope.row)">查看</el-button>
42
-            <el-button type="primary" color="#0052d9" @click="newition(scope.row)">编辑</el-button>
44
+            <!-- <el-button type="primary" color="#0052d9" @click="newition(scope.row)">编辑</el-button> -->
43
           </template>
45
           </template>
44
         </el-table-column>
46
         </el-table-column>
45
       </el-table>
47
       </el-table>
124
 import { stationmanage } from "@/api/home/Multisite";
126
 import { stationmanage } from "@/api/home/Multisite";
125
 import Pagination from "@/components/ProTable/components/Pagination.vue";
127
 import Pagination from "@/components/ProTable/components/Pagination.vue";
126
 import { useRouter } from "vue-router";
128
 import { useRouter } from "vue-router";
129
+import { useAuthButtons } from "@/hooks/useAuthButtons";
130
+const { BUTTONS } = useAuthButtons();
131
+console.log(BUTTONS);
132
+
127
 const router = useRouter();
133
 const router = useRouter();
128
 
134
 
129
 const currentDate = ref();
135
 const currentDate = ref();
214
   });
220
   });
215
 };
221
 };
216
 // 编辑
222
 // 编辑
217
-const newition = (row: any) => {
218
-  router.push({
219
-    path: "/powerStation/addition",
220
-    query: {
221
-      type: "电站编辑", // 传递的参数
222
-      id: row.id
223
-    }
224
-  });
225
-};
223
+// const newition = (row: any) => {
224
+//   router.push({
225
+//     path: "/powerStation/addition",
226
+//     query: {
227
+//       type: "电站编辑", // 传递的参数
228
+//       id: row.id
229
+//     }
230
+//   });
231
+// };
226
 onMounted(() => {
232
 onMounted(() => {
227
   const current = localStorage.getItem("currentDate");
233
   const current = localStorage.getItem("currentDate");
228
   if (current) {
234
   if (current) {

+ 1
- 1
src/views/system/index.vue Wyświetl plik

17
       <el-select
17
       <el-select
18
         v-model="emsDeviceId"
18
         v-model="emsDeviceId"
19
         collapse-tags
19
         collapse-tags
20
-        placeholder="选择电站"
20
+        placeholder="选择设备编号"
21
         popper-class="custom-header"
21
         popper-class="custom-header"
22
         :max-collapse-tags="1"
22
         :max-collapse-tags="1"
23
         style="width: 240px"
23
         style="width: 240px"

Ładowanie…
Anuluj
Zapisz