From 2f721bf817a2192e037633e6869860656c87920d Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 10 May 2022 15:52:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E6=9D=BF=E6=9B=B4=E5=A4=9A=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=81=E9=A6=96=E9=A1=B5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baselib/constant/PathConfig.java | 1 + .../activity/common/FunctionListActivity.java | 10 +- .../oamodule/adapter/FunctionSubAdapter.java | 8 +- .../pad/activitys/home/PadMainActivity.java | 9 + .../pad/fragments/PadOaMainFragment.java | 2 +- .../home/funcations/MoreMenuFragment.java | 204 ++++++++++++++++++ .../workreports/WorkReportAddFragment.java | 6 +- .../workreports/WorkReportDetailFragment.java | 4 +- .../home/workreports/WorkReportFragment.java | 4 +- .../src/main/res/layout/activity_pad_main.xml | 9 +- .../main/res/layout/fragment_more_menu.xml | 18 ++ 11 files changed, 261 insertions(+), 14 deletions(-) create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/funcations/MoreMenuFragment.java create mode 100644 oamodule/src/main/res/layout/fragment_more_menu.xml diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java index 28cb262..2f16e6f 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java @@ -240,4 +240,5 @@ public class PathConfig { public static final String PATH_MODULE_PAD_OA_FRAGMENT_WORK_REPORT_DETAIL = "/oamodule/fragment/workReportDetail";//工作报告详情 public static final String PATH_MODULE_PAD_OA_FRAGMENT_WORK_REPORT = "/oamodule/fragment/workReport";//工作报告 + public static final String PATH_MODULE_PAD_OA_FRAGMENT_MORE_FUNCTION = "/oamodule/fragment/functionList";//功能列表 } diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/common/FunctionListActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/common/FunctionListActivity.java index 395bee4..f38a0b0 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/common/FunctionListActivity.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/common/FunctionListActivity.java @@ -57,12 +57,20 @@ public class FunctionListActivity extends BaseActivity { mSrlContent.setEnableLoadMore(false); mId = getIntent().getStringExtra("id"); mDatas = new ArrayList(); - mAdapter = new FunctionSubAdapter(mActivity, mDatas); + mAdapter = new FunctionSubAdapter(mActivity, mDatas,4); mRlvFunction.setLayoutManager(new LinearLayoutManager(mActivity)); mRlvFunction.setAdapter(mAdapter); + mAdapter.addOnItemClickListener(this::choosePage); doRefresh(); } + /** + * 页面跳转 + */ + private void choosePage(FuncBean funcBean) { + + } + private void doRefresh() { mDatas.clear(); getMenuTypeList(); diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/FunctionSubAdapter.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/FunctionSubAdapter.java index 7adb09d..3b171c9 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/FunctionSubAdapter.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/FunctionSubAdapter.java @@ -23,9 +23,11 @@ import androidx.recyclerview.widget.GridLayoutManager; * 描述: */ public class FunctionSubAdapter extends BaseRecyclerAdapter { + private int mCount=4; - public FunctionSubAdapter(Context ctx, List list) { + public FunctionSubAdapter(Context ctx, List list,int count) { super(ctx, list); + this.mCount= count; } @Override @@ -40,8 +42,8 @@ public class FunctionSubAdapter extends BaseRecyclerAdapter 0) { - FunctionTitleNumAdapter adapter = new FunctionTitleNumAdapter(mContext, bean.getSubList(), 4, 5); - h.mRlvFuncs.setLayoutManager(new GridLayoutManager(mContext, 4)); + FunctionTitleNumAdapter adapter = new FunctionTitleNumAdapter(mContext, bean.getSubList(), mCount, 5); + h.mRlvFuncs.setLayoutManager(new GridLayoutManager(mContext, mCount)); h.mLlFuncHint.setVisibility(View.GONE); h.mRlvFuncs.setAdapter(adapter); if (mListener != null) { diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/activitys/home/PadMainActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/activitys/home/PadMainActivity.java index 81d3d9f..1073a7b 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/activitys/home/PadMainActivity.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/activitys/home/PadMainActivity.java @@ -9,6 +9,9 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.CircleCrop; +import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.hjq.toast.ToastUtils; @@ -207,6 +210,12 @@ public class PadMainActivity extends BaseActivity { if (isNavBarHasShown(this)) { checkNavigation(); } + Glide.with(mActivity) + .load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar()) + .apply(RequestOptions.bitmapTransform(new CircleCrop()) + .error(R.drawable.ic_user_default) + .placeholder(R.drawable.ic_user_default)) + .into(mIvUserIcon); } //适配虚拟按钮 diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/PadOaMainFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/PadOaMainFragment.java index ff21a53..10b9244 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/PadOaMainFragment.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/PadOaMainFragment.java @@ -173,7 +173,7 @@ public class PadOaMainFragment extends BaseFragment { private void choosePage(FuncBean funcBean) { String path = funcBean.getAppFunctionPath().replace("activity", "fragment"); //fragment栈管理 - BaseFragment fragment = FragmentUtils.getFragment(path); + BaseFragment fragment = FragmentUtils.getFragmentOne(path, "id", funcBean.getAppFunctionId()); if (fragment != null) { mPadMainActivity.addFragment(1, fragment); } diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/funcations/MoreMenuFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/funcations/MoreMenuFragment.java new file mode 100644 index 0000000..82ff9d3 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/funcations/MoreMenuFragment.java @@ -0,0 +1,204 @@ +package com.tenlionsoft.oamodule.pad.fragments.home.funcations; + +import android.content.Context; +import android.os.Bundle; +import android.view.View; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.beans.FuncBean; +import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; +import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; +import com.tenlionsoft.baselib.core.widget.base.BaseFragment; +import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.oamodule.R; +import com.tenlionsoft.oamodule.R2; +import com.tenlionsoft.oamodule.adapter.FunctionSubAdapter; +import com.tenlionsoft.oamodule.net.OAApi; +import com.tenlionsoft.oamodule.pad.activitys.home.PadMainActivity; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import butterknife.BindView; +import butterknife.ButterKnife; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +/** + * 作者: adam + * 日期: 2022/5/10 - 15:17 + * 邮箱: itgaojian@163.com + * 描述: 更多功能 + */ +@Route(path = PathConfig.PATH_MODULE_PAD_OA_FRAGMENT_MORE_FUNCTION) +public class MoreMenuFragment extends BaseFragment { + + @BindView(R2.id.rlv_function) + RecyclerView mRlvFunction; + private PadMainActivity mMainActivity; + private String mId; + private List mDatas; + private FunctionSubAdapter mAdapter; + + @Override + protected int getContentViewId() { + return R.layout.fragment_more_menu; + } + + @Override + protected void setDataToView(View dataView) { + ButterKnife.bind(this, dataView); + setTitleView(true); + mTvFragmentTitle.setText("更多功能"); + mIvFragmentBack.setOnClickListener(v -> mMainActivity.backFragment(1, this)); + Bundle bundle = getArguments(); + if (bundle != null) { + mId = bundle.getString("id"); + } + mDatas = new ArrayList(); + mAdapter = new FunctionSubAdapter(mActivity, mDatas, 6); + mRlvFunction.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvFunction.setAdapter(mAdapter); + mAdapter.addOnItemClickListener(this::choosePage); + refreshView(); + } + + /** + * 页面跳转 + */ + private void choosePage(FuncBean funcBean) { + + } + + /** + * 获取菜单类型 + */ + private void getMenuTypeList() { + RetrofitManager.getInstance() + .create(OAApi.class) + .getMenuTypeList(mId) + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) { + + } + + @Override + public void onNext(@io.reactivex.rxjava3.annotations.NonNull List funcBeans) { + mSrlView.finishRefresh(); + mSrlView.finishLoadMore(); + + if (funcBeans.size() > 0) { + setStateView(STATE_SUCCESS); + for (int i = 0; i < funcBeans.size(); i++) { + funcBeans.get(i).setSubList(new ArrayList<>()); + } + getMenuList(funcBeans); + } else { + setStateView(STATE_EMPTY); + } + } + + @Override + public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) { + mSrlView.finishLoadMore(); + mSrlView.finishRefresh(); + setStateView(STATE_ERROR); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + private int mCount = 0; + + /** + * 获取菜单 + */ + private void getMenuList(List funcBeans) { + List>> requests = new ArrayList<>(); + for (int i = 0; i < funcBeans.size(); i++) { + Observable> observable = createObservable(funcBeans.get(i).getAppFunctionId()); + if (observable == null) return; + requests.add(observable); + } + Observable>[] observables1 = requests.toArray(new Observable[requests.size()]); + Observable.mergeArrayDelayError(observables1) + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) { + + } + + @Override + public void onNext(@io.reactivex.rxjava3.annotations.NonNull List beans) { + ++mCount; + if (beans.size() > 0) { + for (int i = 0; i < funcBeans.size(); i++) { + if (beans.get(0).getAppFunctionParentId().equals(funcBeans.get(i).getAppFunctionId())) { + funcBeans.get(i).setSubList(beans); + break; + } + } + } + if (mCount == funcBeans.size()) { + mCount = 0; + mDatas = funcBeans; + mAdapter.setData(mDatas); + } + } + + @Override + public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) { + mCount = 0; + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + private Observable> createObservable(String id) { + return RetrofitManager.getInstance() + .create(OAApi.class) + .getMenuListByPid(id) + .compose(RxTransformer.getTransformer()); + } + + @Override + public void onAttach(@NonNull @NotNull Context context) { + super.onAttach(context); + mMainActivity = (PadMainActivity) getActivity(); + } + + @Override + protected void refreshView() { + setStateView(STATE_LOAD); + mDatas.clear(); + mAdapter.setData(mDatas); + getMenuTypeList(); + } + + @Override + protected void loadMoreData() { + mSrlView.finishLoadMore(); + mSrlView.setNoMoreData(true); + mSrlView.setEnableLoadMore(false); + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportAddFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportAddFragment.java index d8007d7..5ddb8d4 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportAddFragment.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportAddFragment.java @@ -97,7 +97,7 @@ public class WorkReportAddFragment extends BaseFragment { ButterKnife.bind(this, dataView); setTitleView(true); mTvFragmentTitle.setText("工作报告新增"); - mIvFragmentBack.setOnClickListener(v->mMainActivity.backFragment(1,this)); + mIvFragmentBack.setOnClickListener(v -> mMainActivity.backFragment(1, this)); setStateView(STATE_SUCCESS); mSrlView.setEnableLoadMore(false); mSrlView.setEnableRefresh(false); @@ -384,6 +384,8 @@ public class WorkReportAddFragment extends BaseFragment { @Override protected void loadMoreData() { - + mSrlView.finishLoadMore(); + mSrlView.setNoMoreData(true); + mSrlView.setEnableLoadMore(false); } } diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportDetailFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportDetailFragment.java index f9e30f8..7b315fa 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportDetailFragment.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportDetailFragment.java @@ -323,6 +323,8 @@ public class WorkReportDetailFragment extends BaseFragment { @Override protected void loadMoreData() { - + mSrlView.finishLoadMore(); + mSrlView.setNoMoreData(true); + mSrlView.setEnableLoadMore(false); } } diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportFragment.java index f8fbb50..17c922d 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportFragment.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/pad/fragments/home/workreports/WorkReportFragment.java @@ -215,6 +215,8 @@ public class WorkReportFragment extends BaseFragment { @Override protected void loadMoreData() { - + mSrlView.finishLoadMore(); + mSrlView.setNoMoreData(true); + mSrlView.setEnableLoadMore(false); } } diff --git a/oamodule/src/main/res/layout/activity_pad_main.xml b/oamodule/src/main/res/layout/activity_pad_main.xml index 97ec178..590e51e 100644 --- a/oamodule/src/main/res/layout/activity_pad_main.xml +++ b/oamodule/src/main/res/layout/activity_pad_main.xml @@ -8,7 +8,7 @@ tools:context=".pad.activitys.home.PadMainActivity"> - @@ -28,8 +27,8 @@ - + diff --git a/oamodule/src/main/res/layout/fragment_more_menu.xml b/oamodule/src/main/res/layout/fragment_more_menu.xml new file mode 100644 index 0000000..33fb5ee --- /dev/null +++ b/oamodule/src/main/res/layout/fragment_more_menu.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file