|
@@ -1,9 +1,96 @@
|
|
|
package com.ys.bdtp.adm.mvvm.ui.screen.project
|
|
|
|
|
|
-import androidx.compose.runtime.Composable
|
|
|
+import android.net.ConnectivityManager
|
|
|
+import androidx.compose.foundation.ExperimentalFoundationApi
|
|
|
+import androidx.compose.foundation.background
|
|
|
+import androidx.compose.foundation.layout.*
|
|
|
+import androidx.compose.runtime.*
|
|
|
+import androidx.compose.ui.Modifier
|
|
|
+import androidx.compose.ui.tooling.preview.Preview
|
|
|
+import androidx.compose.ui.unit.dp
|
|
|
+import com.ys.bdtp.adm.app.isNet
|
|
|
+import com.ys.bdtp.adm.app.theme.underColor
|
|
|
+import com.ys.bdtp.adm.mvvm.model.FailureResponse
|
|
|
+import com.ys.bdtp.adm.mvvm.model.SuccessResponse
|
|
|
+import com.ys.bdtp.adm.mvvm.model.vo.request.Account
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.compose.Blank
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.compose.Div
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.compose.Head
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.compose.HeadRight
|
|
|
+import com.ys.bdtp.adm.mvvm.vm.project.ProjectViewModel
|
|
|
+import kotlinx.coroutines.launch
|
|
|
+import org.kodein.di.compose.rememberInstance
|
|
|
+import org.kodein.di.compose.rememberViewModel
|
|
|
|
|
|
|
|
|
+@OptIn(ExperimentalFoundationApi::class)
|
|
|
@Composable
|
|
|
fun Project() {
|
|
|
+ val vm by rememberViewModel<ProjectViewModel>()
|
|
|
+ val cm by rememberInstance<ConnectivityManager>()
|
|
|
|
|
|
+ var account by remember { mutableStateOf<Account?>(null) }
|
|
|
+ val scope = rememberCoroutineScope()
|
|
|
+
|
|
|
+ LaunchedEffect(Unit) {
|
|
|
+ // isNet 联网,进行网络通信,获取账号信息也判断 token是否能用
|
|
|
+ if (isNet(cm)) {
|
|
|
+ scope.launch {
|
|
|
+ when (val response = vm.getAccount()) {
|
|
|
+ is SuccessResponse -> {
|
|
|
+ val a = response.data
|
|
|
+ account = a
|
|
|
+ vm.setCurrentAccount(a)
|
|
|
+ }
|
|
|
+
|
|
|
+ is FailureResponse -> {
|
|
|
+ // TODO 根据消息 进行跳转
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Column(
|
|
|
+ modifier = Modifier.fillMaxSize()
|
|
|
+ ) {
|
|
|
+ Head(
|
|
|
+ left = {
|
|
|
+ ProjectHeadLeft()
|
|
|
+ },
|
|
|
+ right = {
|
|
|
+ HeadRight(
|
|
|
+ role = { "项目管家" },
|
|
|
+ click = {}
|
|
|
+ )
|
|
|
+ }
|
|
|
+ )
|
|
|
+ Div(Div.Row)
|
|
|
+ Column(
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxHeight()
|
|
|
+ .wrapContentWidth()
|
|
|
+ .background(underColor)
|
|
|
+ .padding(horizontal = 32.dp, vertical = 40.dp)
|
|
|
+ ) {
|
|
|
+ account?.let {
|
|
|
+ if (it.projects.isEmpty()) {
|
|
|
+ Blank()
|
|
|
+ } else {
|
|
|
+ ProjectContent(it.projects)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+@Preview(
|
|
|
+ widthDp = 1280,
|
|
|
+ heightDp = 800,
|
|
|
+ showBackground = true,
|
|
|
+ backgroundColor = 0xFFFFFFFF
|
|
|
+)
|
|
|
+@Composable
|
|
|
+fun PreviewProject() {
|
|
|
+ Project()
|
|
|
}
|