diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CustomStateView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CustomStateView.java new file mode 100644 index 0000000..7ad9c37 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CustomStateView.java @@ -0,0 +1,79 @@ +package com.tenlionsoft.baselib.core.widget.views; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.TextView; + +import com.tenlionsoft.baselib.R; + +import androidx.annotation.Nullable; + +/** + * 作者: adam + * 日期: 2022/4/27 - 16:40 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class CustomStateView extends LinearLayout { + public static final int STATE_LOAD = 0x123; + public static final int STATE_EMPTY = 0x124; + public static final int STATE_ERROR = 0x125; + public static final int STATE_SUCCESS = 0x126; + private int mState = STATE_LOAD; + private ProgressBar mPbStateLoading; + private ImageView mIvStateDate; + private TextView mTvStateHint; + + public CustomStateView(Context context) { + super(context); + } + + public CustomStateView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + View view = LayoutInflater.from(context).inflate(R.layout.layout_state_view, this, true); + mPbStateLoading = view.findViewById(R.id.pb_state_loading); + mIvStateDate = view.findViewById(R.id.iv_state_data); + mTvStateHint = view.findViewById(R.id.tv_state_hint); + setState(STATE_LOAD); + } + + public CustomStateView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + } + + public void setState(int state) { + switch (state) { + case STATE_LOAD://加载中 + mIvStateDate.setVisibility(View.GONE); + mPbStateLoading.setVisibility(View.VISIBLE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("加载中..."); + break; + case STATE_EMPTY://没有数据 + mIvStateDate.setVisibility(View.VISIBLE); + mIvStateDate.setBackgroundResource(R.drawable.ic_empty_data); + mPbStateLoading.setVisibility(View.GONE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("暂无数据"); + break; + case STATE_ERROR: + mIvStateDate.setVisibility(View.VISIBLE); + mIvStateDate.setBackgroundResource(R.drawable.ic_load_error); + mPbStateLoading.setVisibility(View.GONE); + mTvStateHint.setVisibility(View.VISIBLE); + mTvStateHint.setText("加载失败"); + break; + case STATE_SUCCESS: + mIvStateDate.setVisibility(GONE); + mPbStateLoading.setVisibility(GONE); + mTvStateHint.setVisibility(GONE); + break; + } + } +} diff --git a/baselib/src/main/res/drawable-xhdpi/ic_arrow_down_black.png b/baselib/src/main/res/drawable-xhdpi/ic_arrow_down_black.png new file mode 100644 index 0000000..c40b089 Binary files /dev/null and b/baselib/src/main/res/drawable-xhdpi/ic_arrow_down_black.png differ diff --git a/baselib/src/main/res/drawable-xhdpi/ic_empty_data.png b/baselib/src/main/res/drawable-xhdpi/ic_empty_data.png old mode 100755 new mode 100644 index 222a118..9566834 Binary files a/baselib/src/main/res/drawable-xhdpi/ic_empty_data.png and b/baselib/src/main/res/drawable-xhdpi/ic_empty_data.png differ diff --git a/baselib/src/main/res/drawable-xhdpi/ic_read_num_hint.png b/baselib/src/main/res/drawable-xhdpi/ic_read_num_hint.png new file mode 100644 index 0000000..5dd47c8 Binary files /dev/null and b/baselib/src/main/res/drawable-xhdpi/ic_read_num_hint.png differ diff --git a/baselib/src/main/res/drawable-xhdpi/ic_schedule_hint_icon.png b/baselib/src/main/res/drawable-xhdpi/ic_schedule_hint_icon.png new file mode 100644 index 0000000..ba6487d Binary files /dev/null and b/baselib/src/main/res/drawable-xhdpi/ic_schedule_hint_icon.png differ diff --git a/baselib/src/main/res/drawable-xhdpi/ic_search_black_solid_icon.png b/baselib/src/main/res/drawable-xhdpi/ic_search_black_solid_icon.png new file mode 100644 index 0000000..886c537 Binary files /dev/null and b/baselib/src/main/res/drawable-xhdpi/ic_search_black_solid_icon.png differ diff --git a/baselib/src/main/res/layout/layout_state_view.xml b/baselib/src/main/res/layout/layout_state_view.xml new file mode 100644 index 0000000..5546d3c --- /dev/null +++ b/baselib/src/main/res/layout/layout_state_view.xml @@ -0,0 +1,35 @@ + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/notify/NoticeDetailActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/notify/NoticeDetailActivity.java index f76b189..d416d37 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/notify/NoticeDetailActivity.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/notify/NoticeDetailActivity.java @@ -4,6 +4,7 @@ import android.graphics.Color; import android.net.http.SslError; import android.os.Build; import android.text.TextUtils; +import android.view.View; import android.webkit.HttpAuthHandler; import android.webkit.JsResult; import android.webkit.SslErrorHandler; @@ -61,7 +62,12 @@ public class NoticeDetailActivity extends BaseActivity { RecyclerView mRlvFiles; @BindView(R2.id.nsw_web) NestedScrollWebView mNswWeb; + @BindView(R2.id.ll_num) + LinearLayout mLlNum; + @BindView(R2.id.tv_read_state) + TextView mTvReadState; private String mId; + private NoticeListBean.RowsBean mBean; @Override protected int setLayoutId() { @@ -118,8 +124,9 @@ public class NoticeDetailActivity extends BaseActivity { */ private void setDataToView(NoticeListBean.RowsBean bean) { refreshView(STATE_LOAD_SUCCESS); + mBean = bean; mTvTitle.setText(bean.getNoticeTitle()); - mTvTime.setText("发布时间:" + bean.getGmtCreate()); + mTvTime.setText("发布时间:" + bean.getNoticeCheckTime()); mTvNum.setText(bean.getNoticeReadCount() + ""); mTvType.setText(bean.getNoticeTypeName()); switch (bean.getNoticeLevel()) { @@ -137,7 +144,16 @@ public class NoticeDetailActivity extends BaseActivity { break; } - + //判断状态 1全部人员 2指定部门 3指定人员 + if (!"1".equals(bean.getNoticeRange())) { + if ("1".equals(bean.getNoticeReadStatus())) { + mTvReadState.setVisibility(View.VISIBLE); + } else { + mTvReadState.setVisibility(View.GONE); + } + } else { + mTvReadState.setVisibility(View.GONE); + } WebSettings settings = mNswWeb.getSettings(); settings.setCacheMode(WebSettings.LOAD_DEFAULT); settings.setAppCacheEnabled(true); @@ -202,6 +218,12 @@ public class NoticeDetailActivity extends BaseActivity { @Override public void onNext(@NonNull BaseSuccessBean baseSuccessBean) { LogUtils.e("通知公告已读==" + mId); + if (!"1".equals(mBean.getNoticeRange())) { + mTvReadState.setVisibility(View.VISIBLE); + } else { + mTvReadState.setVisibility(View.GONE); + } + } @Override diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/schedule/ScheduleActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/schedule/ScheduleActivity.java index 819cb83..da52da7 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/schedule/ScheduleActivity.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/schedule/ScheduleActivity.java @@ -122,6 +122,9 @@ public class ScheduleActivity extends BaseActivity implements * 初始化页面 */ private void initViews() { + setTouchDelegate(mIvAdd, 30); + setTouchDelegate(mIvSearch, 30); + setTouchDelegate(mIvBack, 30); mCurrentYear = mCalendarView.getCurYear(); mCurrentMonth = mCalendarView.getCurMonth(); mCurrentDay = mCalendarView.getCurDay(); diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ScheduleAdapter.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ScheduleAdapter.java index aaa30ba..f60d195 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ScheduleAdapter.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ScheduleAdapter.java @@ -6,6 +6,7 @@ import android.view.View; import android.view.ViewGroup; import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; +import com.tenlionsoft.baselib.utils.TimeUtils; import com.tenlionsoft.oamodule.R; import com.tenlionsoft.oamodule.beans.ScheduleDetailBean; import com.tenlionsoft.oamodule.holder.ScheduleHolder; @@ -31,7 +32,14 @@ public class ScheduleAdapter extends BaseRecyclerAdapter mFuncBeans; private FunctionTitleNumAdapter mAdapter; private ActivityResultLauncher mLauncher; + private NoticeShowAdapter mNoticeShowAdapter; + private List mNoticeListBeanRows; @Override protected int getContentViewId() { @@ -132,8 +133,8 @@ public class OaMainFragment extends BaseFragment { setStateView(STATE_SUCCESS); mSrlView.setEnableRefresh(false); mSrlView.setEnableLoadMore(false); - getNoticeList(); initContentView(); + doRefresh(); Glide.with(mActivity) .load(R.drawable.ic_main_title_bg) .apply(new RequestOptions() @@ -152,47 +153,6 @@ public class OaMainFragment extends BaseFragment { }); } - private void getNoticeList() { - RetrofitManager.getInstance() - .create(OAApi.class) - .getNoticeList("", "", "", "1", "15", UserLgUtils.getToken()) - .compose(RxTransformer.getTransformer()) - .subscribe(new Observer() { - @Override - public void onSubscribe(@NonNull Disposable d) { - - } - - @Override - public void onNext(@NonNull NoticeListBean noticeListBean) { - if (noticeListBean.getRows().size() > 0) { - mRlvNotice.setVisibility(View.VISIBLE); - mLlEmpty.setVisibility(View.GONE); - NoticeShowAdapter adapter = new NoticeShowAdapter(mActivity, noticeListBean.getRows()); - mRlvNotice.setLayoutManager(new LinearLayoutManager(mActivity)); - mRlvNotice.setAdapter(adapter); - adapter.addOnItemClickListener(rowsBean -> ARouter.getInstance() - .build(PathConfig.PATH_MODULE_OA_ACTIVITY_NOTICE_DETAIL) - .withString("id", rowsBean.getNoticeId()) - .navigation()); - } else { - mRlvNotice.setVisibility(View.GONE); - mLlEmpty.setVisibility(View.VISIBLE); - } - } - - @Override - public void onError(@NonNull Throwable e) { - mRlvNotice.setVisibility(View.GONE); - mLlEmpty.setVisibility(View.VISIBLE); - } - - @Override - public void onComplete() { - - } - }); - } /** * 初始化页面 @@ -205,8 +165,16 @@ public class OaMainFragment extends BaseFragment { mAdapter.addOnItemClickListener(this::choosePage); mSrlContent.setEnableLoadMore(false); mSrlContent.setOnRefreshListener(v -> doRefresh()); - mSrlContent.setEnableOverScrollDrag(true); + mNoticeListBeanRows = new ArrayList<>(); + mNoticeShowAdapter = new NoticeShowAdapter(mActivity, mNoticeListBeanRows); + mRlvNotice.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvNotice.setAdapter(mNoticeShowAdapter); + mNoticeShowAdapter.addOnItemClickListener(rowsBean -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_OA_ACTIVITY_NOTICE_DETAIL) + .withString("id", rowsBean.getNoticeId()) + .navigation()); + mTvNoticeMore.setOnClickListener(v -> ARouter.getInstance() .build(PathConfig.PATH_MODULE_OA_ACTIVITY_NOTICE) .navigation());//通知公告更多 @@ -214,11 +182,18 @@ public class OaMainFragment extends BaseFragment { Intent intent = new Intent(mActivity, CaptureActivity.class); mLauncher.launch(intent); }); - getMainMenuList(); + } private void doRefresh() { + mCsvNotice.setVisibility(View.VISIBLE); + mCsvFuncs.setVisibility(View.VISIBLE); + mCsvFuncs.setState(CustomStateView.STATE_LOAD); + mCsvNotice.setState(CustomStateView.STATE_LOAD); mFuncBeans.clear(); + mAdapter.setData(mFuncBeans); + mNoticeListBeanRows.clear(); + mNoticeShowAdapter.setData(mNoticeListBeanRows); //获取菜单 getMainMenuList(); //获取通知公告 @@ -245,16 +220,56 @@ public class OaMainFragment extends BaseFragment { if (docTypeBeans.size() > 0) { mFuncBeans = docTypeBeans; mAdapter.setData(mFuncBeans); - mLlMenuHint.setVisibility(View.GONE); + mCsvFuncs.setVisibility(View.GONE); } else { - mLlMenuHint.setVisibility(View.VISIBLE); + mCsvFuncs.setVisibility(View.VISIBLE); + mCsvFuncs.setState(CustomStateView.STATE_EMPTY); } } @Override public void onError(@NonNull Throwable e) { + mCsvFuncs.setState(CustomStateView.STATE_ERROR); ExceptionHandler.handleException(e); - mLlMenuHint.setVisibility(View.VISIBLE); + } + + @Override + public void onComplete() { + + } + }); + } + + private void getNoticeList() { + RetrofitManager.getInstance() + .create(OAApi.class) + .getNoticeList("", "", "", "1", "15", UserLgUtils.getToken()) + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull NoticeListBean noticeListBean) { + if (noticeListBean.getRows().size() > 0) { + mRlvNotice.setVisibility(View.VISIBLE); + mCsvNotice.setVisibility(View.GONE); + mNoticeListBeanRows = noticeListBean.getRows(); + mNoticeShowAdapter.setData(mNoticeListBeanRows); + + } else { + mRlvNotice.setVisibility(View.GONE); + mCsvNotice.setVisibility(View.VISIBLE); + mCsvNotice.setState(CustomStateView.STATE_EMPTY); + } + } + + @Override + public void onError(@NonNull Throwable e) { + mRlvNotice.setVisibility(View.GONE); + mCsvNotice.setState(CustomStateView.STATE_ERROR); } @Override diff --git a/oamodule/src/main/res/layout/activity_notice_detail.xml b/oamodule/src/main/res/layout/activity_notice_detail.xml index 6228bd3..d24f7db 100644 --- a/oamodule/src/main/res/layout/activity_notice_detail.xml +++ b/oamodule/src/main/res/layout/activity_notice_detail.xml @@ -31,7 +31,7 @@ android:textSize="@dimen/text_16" tools:text="通知公告通知公告通知公告通知公告通知公告通知公告通知公告通知公告" /> - - - + android:layout_toRightOf="@id/tv_time" + android:gravity="center" + android:orientation="horizontal"> + + + + + + + + + diff --git a/oamodule/src/main/res/layout/activity_schedule.xml b/oamodule/src/main/res/layout/activity_schedule.xml index 3cda5fe..2e11d53 100644 --- a/oamodule/src/main/res/layout/activity_schedule.xml +++ b/oamodule/src/main/res/layout/activity_schedule.xml @@ -19,8 +19,8 @@ + android:src="@drawable/ic_search_black_solid_icon" /> + android:layout_width="25dp" + android:layout_height="25dp" + android:scaleType="fitXY" + android:src="@drawable/ic_add_icon_solid" /> @@ -93,28 +94,58 @@ android:orientation="horizontal" android:padding="5dp"> - + android:orientation="horizontal" + android:padding="7dp"> - + + + + + + android:orientation="horizontal" + android:padding="7dp"> + + + + + + android:padding="2dp"> @@ -149,7 +182,9 @@ android:button="@null" android:gravity="center" android:paddingLeft="10dp" + android:paddingTop="5dp" android:paddingRight="10dp" + android:paddingBottom="5dp" android:text="年" android:textStyle="bold" /> diff --git a/oamodule/src/main/res/layout/fragment_oa_main.xml b/oamodule/src/main/res/layout/fragment_oa_main.xml index e358678..6aa6962 100644 --- a/oamodule/src/main/res/layout/fragment_oa_main.xml +++ b/oamodule/src/main/res/layout/fragment_oa_main.xml @@ -265,26 +265,11 @@ tools:listitem="@layout/item_main_func_title_num" tools:spanCount="4" /> - - - - - - + android:layout_centerInParent="true" /> - - - - - - + android:layout_centerInParent="true" /> diff --git a/oamodule/src/main/res/layout/item_notice.xml b/oamodule/src/main/res/layout/item_notice.xml index ab0b5c6..dbf08fd 100644 --- a/oamodule/src/main/res/layout/item_notice.xml +++ b/oamodule/src/main/res/layout/item_notice.xml @@ -40,13 +40,24 @@ android:textSize="@dimen/text_12" tools:text="2022-12-12 12:12:12" /> - + android:gravity="center" + android:orientation="horizontal"> + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/item_schedule.xml b/oamodule/src/main/res/layout/item_schedule.xml index 69485b7..6009b59 100644 --- a/oamodule/src/main/res/layout/item_schedule.xml +++ b/oamodule/src/main/res/layout/item_schedule.xml @@ -7,21 +7,32 @@ android:background="@drawable/shp_rectangle_white_5" android:orientation="vertical"> - + android:gravity="center_vertical" + android:orientation="horizontal" + android:padding="5dp"> + + + + + + android:background="@color/gray_bg" />