123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- //
- // RoomUIView.swift
- // fiveConstant
- //
- // Created by 李建 on 2023/1/29.
- //
- import SwiftUI
- struct RoomUIView: View {
-
- @State var showMenu: Bool = false
- @EnvironmentObject var progressState: ProgressState
- @StateObject var roomVm: MyRoomVM = MyRoomVM()
- var body: some View {
- ZStack {
- VStack {
- HStack {
- Spacer()
- Text("我的房间")
- .font(.title2).bold()
- Spacer()
- Image(systemName: "ellipsis")
- .font(.title2.bold())
- .onTapGesture {
- withAnimation {
- showMenu.toggle()
- }
- }
- }.padding(.bottom, 20)
-
- if !roomVm.showEmpety {
- RefreshableScrollView(refreshing:$roomVm.loading) {
- LazyVGrid(columns: Array(repeating: GridItem(.fixed(170)), count: 2), spacing: 20) {
- ForEach(roomVm.roomData, id: \.record_id) { list in
- NavigationLink(destination: {
- RoomControlView(roomInfo: list, controller: RoomController(roomId: list.record_id!, gatewayId: "YX20230203", controlNumber: list.control_number!))
- }, label: {
- RoomCard(roomData: list)
- })
- }
- }
-
- }
- } else {
- // 没有房间
- ZStack {
- Image("img_no_room")
- .resizable()
- .frame(width: 274, height: 280)
- Text("你还没有添加房间")
- .foregroundColor(.gray)
- .font(.subheadline)
- .offset(x:0, y:50)
- }.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
- }
-
- }
- if showMenu {
- DotMenuView(show: $showMenu).zIndex(99)
- }
- }.padding()
- .onTapGesture {
- withAnimation {
- showMenu = false
- }
- }
- }
- }
- struct DotMenuView: View {
- @Binding var show: Bool
- var body: some View {
- ZStack {
- RoundedRectangle(cornerRadius: 20)
- .fill(.white)
- VStack {
- NavigationLink(destination: {
- AddRoomUIView()
- }) {
- Label("添加房间", systemImage: "plus.app")
- }
- Divider().padding(.horizontal, 20)
- Button {
-
- } label: {
- Label("编辑房间", systemImage: "square.and.pencil")
- }
- }
- .foregroundColor(Color("SecondColor"))
- .padding()
- }
- .frame(width: 150, height: 100)
- .scaleEffect( show ? 1 : 0)
- .shadow(radius: 10)
- .offset(x: UIScreen.main.bounds.width / 2 - 80, y: -UIScreen.main.bounds.height / 3 + 40)
-
- }
- }
- class MyRoomVM: ObservableObject {
- init() {
- self.loadRoomData()
- }
- @Published var loading: Bool = false {
- didSet {
- if oldValue == false && loading {
- self.loadRoomData()
- }
- }
- }
- @Published var showEmpety: Bool = false
- @Published var roomData: [RoomInfo] = []
- func loadRoomData() {
- HttpRequest<[RoomInfo]>.loadData(target: UserApi.myRooms) { returnData in
- self.roomData = returnData
- self.loading = false
- if returnData.count == 0 {
- self.showEmpety = true
- }
- }
- }
- }
- struct RoomUIView_Previews: PreviewProvider {
- static var previews: some View {
- RoomUIView()
- }
- }
|