已办、未办、已阅、未阅、发起流程

This commit is contained in:
adam 2022-05-17 16:02:50 +08:00
parent 49ded60b72
commit 1b608db411
32 changed files with 2525 additions and 20 deletions

View File

@ -207,6 +207,11 @@ public class PathConfig {
public static final String PATH_MODULE_OA_ACTIVITY_FUNCTION_LIST = "/oamodule/activity/functionList";//功能列表
public static final String PATH_MODULE_OA_ACTIVITY_WEB = "/oamodule/activity/webPage";//webview页面
public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_DONE = "/oamodule/activity/mineDone";//我的已办
public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_TODO = "/oamodule/activity/mineUpcoming";//我的待办
public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_READ = "/oamodule/activity/mineRead";//我的经阅
public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_UNREAD = "/oamodule/activity/mineUnread";//我的待阅
public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_APPLY_FLOW = "/oamodule/activity/applyFlow";//发起流程
/*====================================================平板页面===============================================================*/
@ -271,4 +276,5 @@ public class PathConfig {
public static final String PATH_MODULE_PAD_OA_FRAGMENT_NEWS = "/oamodule/fragment/newsCenter";//新闻资讯
public static final String PATH_MODULE_PAD_OA_FRAGMENT_NEWS_DETAIL = "/oamodule/fragment/newsDetail";//新闻详情
}

View File

@ -7,9 +7,9 @@ package com.tenlionsoft.baselib.core.retrofit_net;
*/
public class BaseUrlApi {
public static final String IP = "http://192.168.0.120:8080/";/* 测试IP */
// public static final String IP = "http://10.25.242.183:80/";/* 测试IP */
// public static final String IP = "http://www.wlcbsyzl.cn/";/* 正式IP */
public static final String IP = "http://192.168.0.120:8080/";/* 测试IP */
// public static final String IP = "http://192.168.0.103:7008/";/* 测试IP */
// public static final String IP = "http://www.wlcbsyzl.cn/";/* 正式IP */
public static final String SYS_USERCENTER = "usercenter/";
public static final String SYS_POPULATION = "population/";/*人口系统*/
public static final String SYS_CASE = "case/";/*事件部件*/
@ -56,7 +56,7 @@ public class BaseUrlApi {
public static final String SMART_CONSULT_URL = "https://www.cispirit.com/IntelligentConsulting";
public static final String APP_VERSION_ID = "2939f6a7-ae98-4e64-8298-200f83523d1a";/*测试App下载码*/
// public static final String APP_VERSION_ID = "c16826e7-8cfb-4db1-8844-09d2be697bc7";/* 155 测试App下载码*/
// public static final String APP_VERSION_ID = "99e2beda-9cd7-48c2-a08a-c78f333d7beb";/* 155 测试App下载码*/
// public static final String APP_VERSION_ID = "912bf7eb-5c89-4dbf-8835-de2474a029a6";/*正式App下载码*/
/*======百度定位city-code=======*/

View File

@ -2,7 +2,9 @@ package com.tenlionsoft.baselib.utils;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Paint;
import android.os.Handler;
import android.widget.TextView;
import android.widget.Toast;
import com.tenlionsoft.baselib.core.widget.base.CustomDialog;
@ -85,4 +87,16 @@ public class UIUtil {
});
}
public static void setTextBold(TextView tv) {
try {
if (tv != null) {
Paint paint = tv.getPaint();
if (paint != null) paint.setFakeBoldText(true);
tv.invalidate();
}
} catch (Exception e) {
}
}
}

View File

@ -3,6 +3,11 @@
package="com.tenlionsoft.oamodule">
<application>
<activity android:name=".activity.oaflow.ApplyOaFlowActivity"></activity>
<activity android:name=".activity.oaflow.MineUnreadActivity" />
<activity android:name=".activity.oaflow.MineReadActivity" />
<activity android:name=".activity.oaflow.MineTodoActivity" />
<activity android:name=".activity.oaflow.MineDoneActivity" />
<activity
android:name=".activity.common.WebViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"

View File

@ -73,14 +73,9 @@ public class FunctionListActivity extends BaseActivity {
*/
private void choosePage(FuncBean funcBean) {
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_OA_ACTIVITY_WEB)
.withString("title", funcBean.getAppFunctionName())
.withString("url", "https://www.baidu.com")
.build(funcBean.getAppFunctionPath())
.withString("id", funcBean.getAppFunctionId())
.navigation();
// ARouter.getInstance()
// .build(funcBean.getAppFunctionPath())
// .withString("id", funcBean.getAppFunctionId())
// .navigation();
}
private void doRefresh() {

View File

@ -2,6 +2,7 @@ package com.tenlionsoft.oamodule.activity.common;
import android.net.http.SslError;
import android.text.TextUtils;
import android.webkit.JavascriptInterface;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.widget.FrameLayout;
@ -13,7 +14,6 @@ import com.just.agentweb.WebChromeClient;
import com.just.agentweb.WebViewClient;
import com.tenlionsoft.baselib.constant.PathConfig;
import com.tenlionsoft.baselib.core.widget.base.BaseActivity;
import com.tenlionsoft.baselib.utils.UserLgUtils;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.R2;
@ -49,11 +49,13 @@ public class WebViewActivity extends BaseActivity {
return;
}
refreshView(STATE_LOAD_SUCCESS);
// .additionalHttpHeader(BaseUrlApi.BASE_OA, "token", UserLgUtils.getToken())
mTvBaseTitle.setText(TextUtils.isEmpty(title) ? "页面" : title);
mWebView = AgentWeb.with(this)
.setAgentWebParent(mFlContent, new FrameLayout.LayoutParams(-1, -1))
.useDefaultIndicator(R.color.status_bar_blue)
.additionalHttpHeader("https://www.xzszwhy.cn", "token", UserLgUtils.getToken())
.addJavascriptInterface("android", new OnJsInterface())
.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
@ -64,14 +66,14 @@ public class WebViewActivity extends BaseActivity {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if (!TextUtils.isEmpty(title)) {
mTvBaseTitle.setText(title);
}
// if (!TextUtils.isEmpty(title)) {
// mTvBaseTitle.setText(title);
// }
}
})
.createAgentWeb()
.ready()
.go("https://www.xzszwhy.cn/publish/video/2022/1/e48729cd-3235-44e7-8d2d-3153a597633a.html");
.go(url);
}
@ -83,6 +85,29 @@ public class WebViewActivity extends BaseActivity {
super.onPause();
}
public class OnJsInterface {
@JavascriptInterface
public void invokeNative(String method) {
if ("back".equals(method)) {
setResult(RESULT_OK);
finish();
} else if ("webBack".equals(method)) {
if (!mWebView.back()) {
setResult(RESULT_OK);
finish();
}
} else if ("toast".equals(method)) {
ToastUtils.show("");
}
}
@JavascriptInterface
public void onError() {
}
}
@Override
public void onBackPressed() {

View File

@ -0,0 +1,218 @@
package com.tenlionsoft.oamodule.activity.oaflow;
import android.content.Intent;
import android.text.TextUtils;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.hjq.toast.ToastUtils;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.tenlionsoft.baselib.constant.PathConfig;
import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi;
import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager;
import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer;
import com.tenlionsoft.baselib.core.widget.base.BaseActivity;
import com.tenlionsoft.baselib.core.widget.views.CustomStateView;
import com.tenlionsoft.baselib.utils.ExceptionHandler;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.UserLgUtils;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.R2;
import com.tenlionsoft.oamodule.adapter.ApplyOaFlowAdapter;
import com.tenlionsoft.oamodule.beans.OaFlowApplyBean;
import com.tenlionsoft.oamodule.net.OAApi;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
/**
* 作者: Adam
* 日期: 2022年05月16日16:45:16
* 邮箱: itgaojian@163.com
* 描述: 发起OA流程
*/
@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_APPLY_FLOW)
public class ApplyOaFlowActivity extends BaseActivity {
@BindView(R2.id.et_base_search_cancel)
EditText mEtBaseSearchCancel;
@BindView(R2.id.tv_base_search_cancel)
TextView mTvBaseSearchCancel;
@BindView(R2.id.ll_base_search_cancel)
LinearLayout mLlBaseSearchCancel;
@BindView(R2.id.rlv_content)
RecyclerView mRlvContent;
@BindView(R2.id.srl_content)
SmartRefreshLayout mSrlContent;
@BindView(R2.id.csv_state)
CustomStateView mCsvState;
private List<OaFlowApplyBean.RowsBean> mDatas;
private ApplyOaFlowAdapter mAdapter;
private int mCurrentPage = 1;
private String mKeywords = "";
@Override
protected int setLayoutId() {
return R.layout.activity_apply_oa_flow;
}
@Override
public void initData() {
ButterKnife.bind(this);
mTvBaseTitle.setText("发起流程");
mSrlContent.setOnRefreshListener(v -> doRefresh());
mSrlContent.setOnLoadMoreListener(v -> doLoadMore());
refreshView(STATE_LOAD_SUCCESS);
mCsvState.setState(CustomStateView.STATE_LOAD);
mDatas = new ArrayList<>();
mAdapter = new ApplyOaFlowAdapter(mActivity, mDatas);
mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity));
mRlvContent.setAdapter(mAdapter);
mAdapter.addOnItemClickListener(b -> {
// {processDefinitionId} {formCode} {formVersion}
String url = String.format(mActivity.getResources()
.getString(R.string.apply_flow),
b.getProcessDefinitionId(),
b.getFormCode(),
b.getFormVersion() + "",
UserLgUtils.getToken());
String path = BaseUrlApi.BASE_OA + url;
LogUtils.e(path);
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_OA_ACTIVITY_WEB)
.withString("title", b.getName())
.withString("url", path)
.navigation(mActivity, 12);
});
doRefresh();
mEtBaseSearchCancel.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
hideSoftKeyboard();
mEtBaseSearchCancel.clearFocus();
mKeywords = v.getText().toString();
doRefresh();
return true;
} else {
return false;
}
});
mTvBaseSearchCancel.setOnClickListener(v -> {
mEtBaseSearchCancel.setText("");
mEtBaseSearchCancel.clearFocus();
mKeywords = "";
doRefresh();
});
}
private void doLoadMore() {
getOaFlowList(mCurrentPage);
}
private void doRefresh() {
mDatas.clear();
mAdapter.setData(mDatas);
getOaFlowList(1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (RESULT_OK == resultCode) {
if (requestCode == 12) {
doRefresh();
}
}
}
private void getOaFlowList(int currentPage) {
mCurrentPage = currentPage;
RetrofitManager.getInstance()
.create(OAApi.class)
.getOaFLowList(mKeywords, mCurrentPage + "")
.compose(RxTransformer.getTransformer())
.subscribe(new Observer<OaFlowApplyBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull OaFlowApplyBean listBean) {
if (listBean.getRows() != null && listBean.getRows().size() > 0) {
++mCurrentPage;
if (currentPage == 1) {
mDatas.clear();
mDatas.addAll(listBean.getRows());
} else {
mDatas.addAll(listBean.getRows());
}
mCsvState.setState(CustomStateView.STATE_SUCCESS);
mAdapter.notifyDataSetChanged();
mSrlContent.finishRefresh();
if (mDatas.size() >= listBean.getTotal()) {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(true);
} else {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(false);
}
} else {
mSrlContent.finishRefresh();
mSrlContent.finishLoadMore();
if (currentPage > 1) {
mSrlContent.setNoMoreData(true);
} else {
if (TextUtils.isEmpty(mKeywords)) {
//无数据
mCsvState.setState(CustomStateView.STATE_EMPTY);
} else {
mCsvState.setState(CustomStateView.STATE_EMPTY);
ToastUtils.show("未查询到相关内容");
}
}
}
}
@Override
public void onError(@NonNull Throwable e) {
mSrlContent.finishLoadMore();
mSrlContent.finishRefresh();
ExceptionHandler.handleException(e);
mCsvState.setState(CustomStateView.STATE_ERROR);
}
@Override
public void onComplete() {
}
});
}
@Override
protected void doSearchByTitle() {
}
@Override
protected void clearSearch() {
}
}

View File

@ -0,0 +1,37 @@
package com.tenlionsoft.oamodule.activity.oaflow;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.tenlionsoft.baselib.constant.PathConfig;
import com.tenlionsoft.baselib.core.widget.base.BaseActivity;
import com.tenlionsoft.oamodule.R;
/**
* 作者: Adam
* 日期: 2022年05月16日16:34:14
* 邮箱: itgaojian@163.com
* 描述: 我的已办
*/
@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_DONE)
public class MineDoneActivity extends BaseActivity {
@Override
protected int setLayoutId() {
return R.layout.activity_mine_done;
}
@Override
public void initData() {
}
@Override
protected void doSearchByTitle() {
}
@Override
protected void clearSearch() {
}
}

View File

@ -0,0 +1,339 @@
package com.tenlionsoft.oamodule.activity.oaflow;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.gyf.immersionbar.ImmersionBar;
import com.hjq.toast.ToastUtils;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.tenlionsoft.baselib.constant.PathConfig;
import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager;
import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer;
import com.tenlionsoft.baselib.core.widget.base.BaseActivity;
import com.tenlionsoft.baselib.core.widget.views.CustomStateView;
import com.tenlionsoft.baselib.utils.ExceptionHandler;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.R2;
import com.tenlionsoft.oamodule.adapter.MineReadAdapter;
import com.tenlionsoft.oamodule.beans.MineReadBean;
import com.tenlionsoft.oamodule.net.OAApi;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
/**
* 作者: Adam
* 日期: 2022年05月16日16:36:56
* 邮箱: itgaojian@163.com
* 描述: 我的待阅与已阅
*/
@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_READ)
public class MineReadActivity extends BaseActivity {
@BindView(R2.id.iv_back)
ImageView mIvBack;
@BindView(R2.id.rb_apply)
RadioButton mRbApply;
@BindView(R2.id.rb_mine)
RadioButton mRbMine;
@BindView(R2.id.rg_type)
RadioGroup mRgType;
@BindView(R2.id.rl_content_title)
RelativeLayout mRlContentTitle;
@BindView(R2.id.et_base_search_cancel)
EditText mEtBaseSearchCancel;
@BindView(R2.id.tv_base_search_cancel)
TextView mTvBaseSearchCancel;
@BindView(R2.id.ll_base_search_cancel)
LinearLayout mLlBaseSearchCancel;
@BindView(R2.id.rlv_content)
RecyclerView mRlvContent;
@BindView(R2.id.srl_content)
SmartRefreshLayout mSrlContent;
@BindView(R2.id.csv_state)
CustomStateView mCsvState;
private List<MineReadBean.RowsBean> mDatas;
private int mType = 1;//1我的待阅 2我的已阅
private MineReadAdapter mAdapter;
private int mCurrentPage = 1;
private String mKeywords = "";
@Override
protected int setLayoutId() {
return R.layout.activity_mine_read;
}
@Override
public void initData() {
ButterKnife.bind(this);
mRlTitleBar.setVisibility(View.GONE);
ImmersionBar.with(this)
.statusBarDarkFont(true)
.statusBarColor(R.color.gray_bg)
.titleBar(mRlContentTitle)
.init();
refreshView(STATE_LOAD_SUCCESS);
mCsvState.setState(CustomStateView.STATE_LOAD);
initViews();
}
/**
* 初始化页面
*/
private void initViews() {
mIvBack.setOnClickListener(v -> finish());
mDatas = new ArrayList<>();
mAdapter = new MineReadAdapter(mActivity, mDatas);
mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity));
mRlvContent.setAdapter(mAdapter);
mRgType.setOnCheckedChangeListener((group, checkedId) -> {
if (checkedId == R.id.rb_apply) {
//我发起的
mType = 1;
} else if (checkedId == R.id.rb_mine) {
//我接受的
mType = 2;
}
//重置搜索条件
resetCondition();
});
mSrlContent.setOnRefreshListener(v -> doRefresh());
mSrlContent.setOnLoadMoreListener(v -> doLoadMore());
mAdapter.addOnItemClickListener(o -> {
});
doRefresh();
mEtBaseSearchCancel.setOnEditorActionListener((v, actionId, event) -> {
LogUtils.e("搜索==" + actionId);
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
hideSoftKeyboard();
mEtBaseSearchCancel.clearFocus();
mKeywords = v.getText().toString();
doRefresh();
return true;
} else {
return false;
}
});
mTvBaseSearchCancel.setOnClickListener(v -> {
mEtBaseSearchCancel.setText("");
mEtBaseSearchCancel.clearFocus();
mKeywords = "";
doRefresh();
});
}
private void resetCondition() {
mEtBaseSearchCancel.setText("");
mDatas.clear();
mCsvState.setState(CustomStateView.STATE_LOAD);
mAdapter.setData(mDatas);
doRefresh();
}
/**
* 加载更多
*/
private void doLoadMore() {
if (mType == 1) {
getMineUnReadList(mCurrentPage);
} else {
getMineReadList(mCurrentPage);
}
}
/**
* 刷新
*/
private void doRefresh() {
mDatas.clear();
mAdapter.setData(mDatas);
if (mType == 1) {
getMineUnReadList(1);
} else {
getMineReadList(1);
}
}
private void getMineUnReadList(int currentPage) {
mCurrentPage = currentPage;
RetrofitManager.getInstance()
.create(OAApi.class)
.getMineUnReadList(mKeywords, mCurrentPage + "")
.compose(RxTransformer.getTransformer())
.subscribe(new Observer<MineReadBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull MineReadBean listBean) {
if (listBean.getRows() != null && listBean.getRows().size() > 0) {
++mCurrentPage;
if (currentPage == 1) {
mDatas.clear();
mDatas.addAll(listBean.getRows());
} else {
mDatas.addAll(listBean.getRows());
}
mCsvState.setState(CustomStateView.STATE_SUCCESS);
mAdapter.notifyDataSetChanged();
mSrlContent.finishRefresh();
if (mDatas.size() >= listBean.getTotal()) {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(true);
} else {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(false);
}
} else {
mSrlContent.finishRefresh();
mSrlContent.finishLoadMore();
if (currentPage > 1) {
mSrlContent.setNoMoreData(true);
} else {
if (TextUtils.isEmpty(mKeywords)) {
//无数据
mCsvState.setState(CustomStateView.STATE_EMPTY);
} else {
mCsvState.setState(CustomStateView.STATE_EMPTY);
ToastUtils.show("未查询到相关内容");
}
}
}
}
@Override
public void onError(@NonNull Throwable e) {
mSrlContent.finishLoadMore();
mSrlContent.finishRefresh();
ExceptionHandler.handleException(e);
mCsvState.setState(CustomStateView.STATE_ERROR);
}
@Override
public void onComplete() {
}
});
}
/**
* 获取被督办的列表
*/
private void getMineReadList(int currentPage) {
mCurrentPage = currentPage;
RetrofitManager.getInstance()
.create(OAApi.class)
.getMineReadList(mKeywords, mCurrentPage + "")
.compose(RxTransformer.getTransformer())
.subscribe(new Observer<MineReadBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull MineReadBean listBean) {
if (listBean.getRows() != null && listBean.getRows().size() > 0) {
++mCurrentPage;
if (currentPage == 1) {
mDatas.clear();
mDatas.addAll(listBean.getRows());
} else {
mDatas.addAll(listBean.getRows());
}
mCsvState.setState(CustomStateView.STATE_LOAD);
mAdapter.notifyDataSetChanged();
mSrlContent.finishRefresh();
if (mDatas.size() >= listBean.getTotal()) {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(true);
} else {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(false);
}
} else {
mSrlContent.finishRefresh();
mSrlContent.finishLoadMore();
if (currentPage > 1) {
mSrlContent.setNoMoreData(true);
} else {
if (TextUtils.isEmpty(mKeywords)) {
//无数据
mCsvState.setState(CustomStateView.STATE_EMPTY);
} else {
mCsvState.setState(CustomStateView.STATE_EMPTY);
ToastUtils.show("未查询到相关内容");
}
}
}
}
@Override
public void onError(@NonNull Throwable e) {
mSrlContent.finishLoadMore();
mSrlContent.finishRefresh();
ExceptionHandler.handleException(e);
mCsvState.setState(CustomStateView.STATE_ERROR);
}
@Override
public void onComplete() {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 12) {
doRefresh();
}
}
}
@Override
protected void doSearchByTitle() {
}
@Override
protected void clearSearch() {
}
}

View File

@ -0,0 +1,374 @@
package com.tenlionsoft.oamodule.activity.oaflow;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.gyf.immersionbar.ImmersionBar;
import com.hjq.toast.ToastUtils;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.tenlionsoft.baselib.constant.PathConfig;
import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi;
import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager;
import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer;
import com.tenlionsoft.baselib.core.widget.base.BaseActivity;
import com.tenlionsoft.baselib.core.widget.views.CustomStateView;
import com.tenlionsoft.baselib.utils.ExceptionHandler;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.UserLgUtils;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.R2;
import com.tenlionsoft.oamodule.adapter.MineTodoAdapter;
import com.tenlionsoft.oamodule.beans.MineDoneBean;
import com.tenlionsoft.oamodule.beans.MineTodoBean;
import com.tenlionsoft.oamodule.net.OAApi;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
/**
* 作者: Adam
* 日期: 2022年05月16日16:35:05
* 邮箱: itgaojian@163.com
* 描述: 我的待办
*/
@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_TODO)
public class MineTodoActivity extends BaseActivity {
@BindView(R2.id.iv_back)
ImageView mIvBack;
@BindView(R2.id.rb_apply)
RadioButton mRbApply;
@BindView(R2.id.rb_mine)
RadioButton mRbMine;
@BindView(R2.id.rg_type)
RadioGroup mRgType;
@BindView(R2.id.rl_content_title)
RelativeLayout mRlContentTitle;
@BindView(R2.id.et_base_search_cancel)
EditText mEtBaseSearchCancel;
@BindView(R2.id.tv_base_search_cancel)
TextView mTvBaseSearchCancel;
@BindView(R2.id.ll_base_search_cancel)
LinearLayout mLlBaseSearchCancel;
@BindView(R2.id.rlv_content)
RecyclerView mRlvContent;
@BindView(R2.id.srl_content)
SmartRefreshLayout mSrlContent;
@BindView(R2.id.csv_state)
CustomStateView mCsvState;
private List<Object> mDatas;
private int mType = 1;//1我的待办 2我的已办
private MineTodoAdapter mAdapter;
private int mCurrentPage = 1;
private String mKeywords = "";
@Override
protected int setLayoutId() {
return R.layout.activity_mine_ucoming;
}
@Override
public void initData() {
ButterKnife.bind(this);
mRlTitleBar.setVisibility(View.GONE);
ImmersionBar.with(this)
.statusBarDarkFont(true)
.statusBarColor(R.color.gray_bg)
.titleBar(mRlContentTitle)
.init();
refreshView(STATE_LOAD_SUCCESS);
mCsvState.setState(CustomStateView.STATE_LOAD);
initViews();
}
/**
* 初始化页面
*/
private void initViews() {
mIvBack.setOnClickListener(v -> finish());
mDatas = new ArrayList<>();
mAdapter = new MineTodoAdapter(mActivity, mDatas);
mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity));
mRlvContent.setAdapter(mAdapter);
mRgType.setOnCheckedChangeListener((group, checkedId) -> {
if (checkedId == R.id.rb_apply) {
//我待办
mType = 1;
} else if (checkedId == R.id.rb_mine) {
//我已办
mType = 2;
}
//重置搜索条件
resetCondition();
});
mSrlContent.setOnRefreshListener(v -> doRefresh());
mSrlContent.setOnLoadMoreListener(v -> doLoadMore());
mAdapter.addOnItemClickListener(o -> {
String path = "";
String title = "";
if (o instanceof MineTodoBean.RowsBean) {
//我的待办
// <!-- {taskId} {formCode} {formVersion} {isNeedClaim}-->
MineTodoBean.RowsBean b = (MineTodoBean.RowsBean) o;
String url = String.format(mActivity.getResources()
.getString(R.string.mine_todo),
b.getTaskId(),
b.getFormCode(),
b.getFormVersion() + "",
b.getIsNeedClaim() + "",
UserLgUtils.getToken(),
b.getReportUid());
path = BaseUrlApi.BASE_OA + url;
title = b.getTaskName();
} else if (o instanceof MineDoneBean.RowsBean) {
//我的已办
// <!-- {formCode} {formVersion} -->
MineDoneBean.RowsBean b = (MineDoneBean.RowsBean) o;
String url = String.format(mActivity.getResources()
.getString(R.string.mine_todo_detail),
b.getFormCode(),
b.getFormVersion() + "",
UserLgUtils.getToken(),
b.getReportUid());
path = BaseUrlApi.BASE_OA + url;
title = b.getTaskName();
}
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_OA_ACTIVITY_WEB)
.withString("title", title)
.withString("url", path)
.navigation(mActivity, 12);
});
doRefresh();
mEtBaseSearchCancel.setOnEditorActionListener((v, actionId, event) -> {
LogUtils.e("搜索==" + actionId);
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
hideSoftKeyboard();
mEtBaseSearchCancel.clearFocus();
mKeywords = v.getText().toString();
doRefresh();
return true;
} else {
return false;
}
});
mTvBaseSearchCancel.setOnClickListener(v -> {
mEtBaseSearchCancel.setText("");
mEtBaseSearchCancel.clearFocus();
mKeywords = "";
doRefresh();
});
}
private void resetCondition() {
mEtBaseSearchCancel.setText("");
mDatas.clear();
mCsvState.setState(CustomStateView.STATE_LOAD);
mAdapter.setData(mDatas);
doRefresh();
}
/**
* 加载更多
*/
private void doLoadMore() {
if (mType == 1) {
getMineTodoList(mCurrentPage);
} else {
getMineDoneList(mCurrentPage);
}
}
/**
* 刷新
*/
private void doRefresh() {
mDatas.clear();
mAdapter.setData(mDatas);
if (mType == 1) {
getMineTodoList(1);
} else {
getMineDoneList(1);
}
}
private void getMineTodoList(int currentPage) {
mCurrentPage = currentPage;
RetrofitManager.getInstance()
.create(OAApi.class)
.getMineTodoList(mKeywords, mCurrentPage + "")
.compose(RxTransformer.getTransformer())
.subscribe(new Observer<MineTodoBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull MineTodoBean listBean) {
if (listBean.getRows() != null && listBean.getRows().size() > 0) {
++mCurrentPage;
if (currentPage == 1) {
mDatas.clear();
mDatas.addAll(listBean.getRows());
} else {
mDatas.addAll(listBean.getRows());
}
mCsvState.setState(CustomStateView.STATE_SUCCESS);
mAdapter.notifyDataSetChanged();
mSrlContent.finishRefresh();
if (mDatas.size() >= listBean.getTotal()) {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(true);
} else {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(false);
}
} else {
mSrlContent.finishRefresh();
mSrlContent.finishLoadMore();
if (currentPage > 1) {
mSrlContent.setNoMoreData(true);
} else {
if (TextUtils.isEmpty(mKeywords)) {
//无数据
mCsvState.setState(CustomStateView.STATE_EMPTY);
} else {
mCsvState.setState(CustomStateView.STATE_EMPTY);
ToastUtils.show("未查询到相关内容");
}
}
}
}
@Override
public void onError(@NonNull Throwable e) {
mSrlContent.finishLoadMore();
mSrlContent.finishRefresh();
ExceptionHandler.handleException(e);
mCsvState.setState(CustomStateView.STATE_ERROR);
}
@Override
public void onComplete() {
}
});
}
/**
* 获取被督办的列表
*/
private void getMineDoneList(int currentPage) {
mCurrentPage = currentPage;
RetrofitManager.getInstance()
.create(OAApi.class)
.getMineDoneList(mKeywords, mCurrentPage + "")
.compose(RxTransformer.getTransformer())
.subscribe(new Observer<MineDoneBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull MineDoneBean listBean) {
if (listBean.getRows() != null && listBean.getRows().size() > 0) {
++mCurrentPage;
if (currentPage == 1) {
mDatas.clear();
mDatas.addAll(listBean.getRows());
} else {
mDatas.addAll(listBean.getRows());
}
mCsvState.setState(CustomStateView.STATE_SUCCESS);
mAdapter.notifyDataSetChanged();
mSrlContent.finishRefresh();
if (mDatas.size() >= listBean.getTotal()) {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(true);
} else {
mSrlContent.finishLoadMore();
mSrlContent.setNoMoreData(false);
}
} else {
mSrlContent.finishRefresh();
mSrlContent.finishLoadMore();
if (currentPage > 1) {
mSrlContent.setNoMoreData(true);
} else {
if (TextUtils.isEmpty(mKeywords)) {
//无数据
mCsvState.setState(CustomStateView.STATE_EMPTY);
} else {
mCsvState.setState(CustomStateView.STATE_EMPTY);
ToastUtils.show("未查询到相关内容");
}
}
}
}
@Override
public void onError(@NonNull Throwable e) {
mSrlContent.finishLoadMore();
mSrlContent.finishRefresh();
ExceptionHandler.handleException(e);
mCsvState.setState(CustomStateView.STATE_ERROR);
}
@Override
public void onComplete() {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 12) {
doRefresh();
}
}
}
@Override
protected void doSearchByTitle() {
}
@Override
protected void clearSearch() {
}
}

View File

@ -0,0 +1,34 @@
package com.tenlionsoft.oamodule.activity.oaflow;
import com.tenlionsoft.baselib.core.widget.base.BaseActivity;
import com.tenlionsoft.oamodule.R;
/**
* 作者: Adam
* 日期: 2022年05月16日16:38:32
* 邮箱: itgaojian@163.com
* 描述: 我的待阅
*/
public class MineUnreadActivity extends BaseActivity {
@Override
protected int setLayoutId() {
return R.layout.activity_mine_unread;
}
@Override
public void initData() {
}
@Override
protected void doSearchByTitle() {
}
@Override
protected void clearSearch() {
}
}

View File

@ -0,0 +1,38 @@
package com.tenlionsoft.oamodule.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.beans.OaFlowApplyBean;
import com.tenlionsoft.oamodule.holder.ApplyOaFlowHolder;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/16 - 16:53
* 邮箱: itgaojian@163.com
* 描述:
*/
public class ApplyOaFlowAdapter extends BaseRecyclerAdapter<OaFlowApplyBean.RowsBean, ApplyOaFlowHolder> {
public ApplyOaFlowAdapter(Context ctx, List<OaFlowApplyBean.RowsBean> list) {
super(ctx, list);
}
@Override
public ApplyOaFlowHolder createHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_apply_oa_flow, parent, false);
return new ApplyOaFlowHolder(itemView);
}
@Override
public void bindHolder(ApplyOaFlowHolder h, int i) {
OaFlowApplyBean.RowsBean b = mData.get(i);
h.mTvName.setText(b.getName());
}
}

View File

@ -0,0 +1,49 @@
package com.tenlionsoft.oamodule.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter;
import com.tenlionsoft.baselib.utils.UIUtil;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.beans.MineReadBean;
import com.tenlionsoft.oamodule.holder.MineReadHolder;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/16 - 17:20
* 邮箱: itgaojian@163.com
* 描述:
*/
public class MineReadAdapter extends BaseRecyclerAdapter<MineReadBean.RowsBean, MineReadHolder> {
public MineReadAdapter(Context ctx, List<MineReadBean.RowsBean> list) {
super(ctx, list);
}
@Override
public MineReadHolder createHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_mine_read, parent, false);
return new MineReadHolder(itemView);
}
@Override
public void bindHolder(MineReadHolder h, int i) {
MineReadBean.RowsBean b = mData.get(i);
h.mTvTitle.setText(b.getMainTitle());
h.mTvUser.setText(b.getCreatorName());
h.mTvTime.setText(b.getGmtCreate());
if (b.getIsRead() == 1) {
h.mTvTitle.setTextColor(Color.GRAY);
h.mTvTitle.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
} else {
h.mTvTitle.setTextColor(Color.BLACK);
UIUtil.setTextBold(h.mTvTitle);
}
}
}

View File

@ -0,0 +1,54 @@
package com.tenlionsoft.oamodule.adapter;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter;
import com.tenlionsoft.baselib.utils.UIUtil;
import com.tenlionsoft.oamodule.R;
import com.tenlionsoft.oamodule.beans.MineDoneBean;
import com.tenlionsoft.oamodule.beans.MineTodoBean;
import com.tenlionsoft.oamodule.holder.MineTodoHolder;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/17 - 10:04
* 邮箱: itgaojian@163.com
* 描述:
*/
public class MineTodoAdapter extends BaseRecyclerAdapter<Object, MineTodoHolder> {
public MineTodoAdapter(Context ctx, List<Object> list) {
super(ctx, list);
}
@Override
public MineTodoHolder createHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_todo, parent, false);
return new MineTodoHolder(itemView);
}
@Override
public void bindHolder(MineTodoHolder h, int i) {
Object o = mData.get(i);
if (o instanceof MineTodoBean.RowsBean) {
MineTodoBean.RowsBean b = (MineTodoBean.RowsBean) o;
h.mTvTime.setText(b.getProcessStartTime());
h.mTvTitle.setText(b.getMainTitle());
h.mTvTitle.setTextColor(Color.BLACK);
UIUtil.setTextBold(h.mTvTitle);
h.mTvName.setText(b.getTaskName());
} else if (o instanceof MineDoneBean.RowsBean) {
MineDoneBean.RowsBean b = (MineDoneBean.RowsBean) o;
h.mTvTitle.setTextColor(Color.GRAY);
h.mTvTime.setText(b.getProcessStartTime());
h.mTvTitle.setText(b.getMainTitle());
h.mTvName.setText(b.getTaskName());
}
}
}

View File

@ -0,0 +1,205 @@
package com.tenlionsoft.oamodule.beans;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/17 - 10:03
* 邮箱: itgaojian@163.com
* 描述:
*/
public class MineDoneBean {
private int page;
private int total;
private List<RowsBean> rows;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<RowsBean> getRows() {
return rows;
}
public void setRows(List<RowsBean> rows) {
this.rows = rows;
}
public static class RowsBean {
private String endTime;
private String formCode;
private String formKey;
private int formVersion;
private String mainTitle;
private String processEndTime;
private String processInstanceId;
private String processName;
private String processStartTime;
private String reportUid;
private String startTime;
private String startUserDepartmentIds;
private String startUserDepartmentNames;
private String startUserId;
private String startUserName;
private String taskDescription;
private String taskId;
private String taskName;
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getFormCode() {
return formCode;
}
public void setFormCode(String formCode) {
this.formCode = formCode;
}
public String getFormKey() {
return formKey;
}
public void setFormKey(String formKey) {
this.formKey = formKey;
}
public int getFormVersion() {
return formVersion;
}
public void setFormVersion(int formVersion) {
this.formVersion = formVersion;
}
public String getMainTitle() {
return mainTitle;
}
public void setMainTitle(String mainTitle) {
this.mainTitle = mainTitle;
}
public String getProcessEndTime() {
return processEndTime;
}
public void setProcessEndTime(String processEndTime) {
this.processEndTime = processEndTime;
}
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
}
public String getProcessName() {
return processName;
}
public void setProcessName(String processName) {
this.processName = processName;
}
public String getProcessStartTime() {
return processStartTime;
}
public void setProcessStartTime(String processStartTime) {
this.processStartTime = processStartTime;
}
public String getReportUid() {
return reportUid;
}
public void setReportUid(String reportUid) {
this.reportUid = reportUid;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getStartUserDepartmentIds() {
return startUserDepartmentIds;
}
public void setStartUserDepartmentIds(String startUserDepartmentIds) {
this.startUserDepartmentIds = startUserDepartmentIds;
}
public String getStartUserDepartmentNames() {
return startUserDepartmentNames;
}
public void setStartUserDepartmentNames(String startUserDepartmentNames) {
this.startUserDepartmentNames = startUserDepartmentNames;
}
public String getStartUserId() {
return startUserId;
}
public void setStartUserId(String startUserId) {
this.startUserId = startUserId;
}
public String getStartUserName() {
return startUserName;
}
public void setStartUserName(String startUserName) {
this.startUserName = startUserName;
}
public String getTaskDescription() {
return taskDescription;
}
public void setTaskDescription(String taskDescription) {
this.taskDescription = taskDescription;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
}
}

View File

@ -0,0 +1,161 @@
package com.tenlionsoft.oamodule.beans;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/16 - 17:09
* 邮箱: itgaojian@163.com
* 描述: 我的待阅与以阅
*/
public class MineReadBean {
private int page;
private int total;
private List<RowsBean> rows;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<RowsBean> getRows() {
return rows;
}
public void setRows(List<RowsBean> rows) {
this.rows = rows;
}
public static class RowsBean {
private String ccId;
private String creator;
private String creatorName;
private String formCode;
private int formVersion;
private String gmtCreate;
private String gmtModified;
private int isRead;
private String mainTitle;
private String processInstanceId;
private String reportUid;
private String userId;
private String userName;
public String getCcId() {
return ccId;
}
public void setCcId(String ccId) {
this.ccId = ccId;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public String getFormCode() {
return formCode;
}
public void setFormCode(String formCode) {
this.formCode = formCode;
}
public int getFormVersion() {
return formVersion;
}
public void setFormVersion(int formVersion) {
this.formVersion = formVersion;
}
public String getGmtCreate() {
return gmtCreate;
}
public void setGmtCreate(String gmtCreate) {
this.gmtCreate = gmtCreate;
}
public String getGmtModified() {
return gmtModified;
}
public void setGmtModified(String gmtModified) {
this.gmtModified = gmtModified;
}
public int getIsRead() {
return isRead;
}
public void setIsRead(int isRead) {
this.isRead = isRead;
}
public String getMainTitle() {
return mainTitle;
}
public void setMainTitle(String mainTitle) {
this.mainTitle = mainTitle;
}
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
}
public String getReportUid() {
return reportUid;
}
public void setReportUid(String reportUid) {
this.reportUid = reportUid;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
}

View File

@ -0,0 +1,223 @@
package com.tenlionsoft.oamodule.beans;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/17 - 10:01
* 邮箱: itgaojian@163.com
* 描述:
*/
public class MineTodoBean {
private int page;
private int total;
private List<RowsBean> rows;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<RowsBean> getRows() {
return rows;
}
public void setRows(List<RowsBean> rows) {
this.rows = rows;
}
public static class RowsBean {
private String createTime;
private String formCode;
private int formVersion;
private String getFormKey;
private int isNeedClaim;
private String mainTitle;
private String owner;
private String processDefinitionId;
private String processInstanceId;
private String processName;
private String processStartTime;
private String reportUid;
private String startUserDepartmentIds;
private String startUserDepartmentNames;
private String startUserId;
private String startUserName;
private String taskDefinitionKey;
private String taskDescription;
private String taskId;
private String taskName;
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getFormCode() {
return formCode;
}
public void setFormCode(String formCode) {
this.formCode = formCode;
}
public int getFormVersion() {
return formVersion;
}
public void setFormVersion(int formVersion) {
this.formVersion = formVersion;
}
public String getGetFormKey() {
return getFormKey;
}
public void setGetFormKey(String getFormKey) {
this.getFormKey = getFormKey;
}
public int getIsNeedClaim() {
return isNeedClaim;
}
public void setIsNeedClaim(int isNeedClaim) {
this.isNeedClaim = isNeedClaim;
}
public String getMainTitle() {
return mainTitle;
}
public void setMainTitle(String mainTitle) {
this.mainTitle = mainTitle;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getProcessDefinitionId() {
return processDefinitionId;
}
public void setProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
}
public String getProcessName() {
return processName;
}
public void setProcessName(String processName) {
this.processName = processName;
}
public String getProcessStartTime() {
return processStartTime;
}
public void setProcessStartTime(String processStartTime) {
this.processStartTime = processStartTime;
}
public String getReportUid() {
return reportUid;
}
public void setReportUid(String reportUid) {
this.reportUid = reportUid;
}
public String getStartUserDepartmentIds() {
return startUserDepartmentIds;
}
public void setStartUserDepartmentIds(String startUserDepartmentIds) {
this.startUserDepartmentIds = startUserDepartmentIds;
}
public String getStartUserDepartmentNames() {
return startUserDepartmentNames;
}
public void setStartUserDepartmentNames(String startUserDepartmentNames) {
this.startUserDepartmentNames = startUserDepartmentNames;
}
public String getStartUserId() {
return startUserId;
}
public void setStartUserId(String startUserId) {
this.startUserId = startUserId;
}
public String getStartUserName() {
return startUserName;
}
public void setStartUserName(String startUserName) {
this.startUserName = startUserName;
}
public String getTaskDefinitionKey() {
return taskDefinitionKey;
}
public void setTaskDefinitionKey(String taskDefinitionKey) {
this.taskDefinitionKey = taskDefinitionKey;
}
public String getTaskDescription() {
return taskDescription;
}
public void setTaskDescription(String taskDescription) {
this.taskDescription = taskDescription;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
}
}

View File

@ -0,0 +1,124 @@
package com.tenlionsoft.oamodule.beans;
import java.util.List;
/**
* 作者: adam
* 日期: 2022/5/16 - 16:42
* 邮箱: itgaojian@163.com
* 描述:
*/
public class OaFlowApplyBean {
private int page;
private int total;
private List<RowsBean> rows;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<RowsBean> getRows() {
return rows;
}
public void setRows(List<RowsBean> rows) {
this.rows = rows;
}
public static class RowsBean {
private String deploymentId;
private String description;
private String formCode;
private String formKey;
private int formVersion;
private String id;
private String name;
private String processDefinitionId;
private int version;
public String getDeploymentId() {
return deploymentId;
}
public void setDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getFormCode() {
return formCode;
}
public void setFormCode(String formCode) {
this.formCode = formCode;
}
public String getFormKey() {
return formKey;
}
public void setFormKey(String formKey) {
this.formKey = formKey;
}
public int getFormVersion() {
return formVersion;
}
public void setFormVersion(int formVersion) {
this.formVersion = formVersion;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProcessDefinitionId() {
return processDefinitionId;
}
public void setProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
}
}

View File

@ -182,7 +182,15 @@ public class OaMainFragment extends BaseFragment {
Intent intent = new Intent(mActivity, CaptureActivity.class);
mLauncher.launch(intent);
});
mRlTodo.setOnClickListener(v -> ARouter.getInstance()
.build(PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_TODO)
.navigation());//我的待办
mRlToRead.setOnClickListener(v -> ARouter.getInstance()
.build(PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_READ)
.navigation());//我的待阅
mRlSupervise.setOnClickListener(v -> ARouter.getInstance()
.build(PathConfig.PATH_MODULE_OA_ACTIVITY_SUPERVISE)
.navigation());//我的督办
}
private void doRefresh() {
@ -388,7 +396,7 @@ public class OaMainFragment extends BaseFragment {
}.getType());
if (depts != null && depts.size() > 0) {
// if (mTvDept != null) {
mTvDept.setText(depts.get(0).getDepartmentName());
mTvDept.setText(depts.get(0).getDepartmentName());
// }
}
}

View File

@ -0,0 +1,26 @@
package com.tenlionsoft.oamodule.holder;
import android.view.View;
import android.widget.TextView;
import com.tenlionsoft.baselib.core.widget.base.BaseViewHolder;
import com.tenlionsoft.oamodule.R2;
import org.jetbrains.annotations.NotNull;
import androidx.annotation.NonNull;
import butterknife.BindView;
/**
* 作者: adam
* 日期: 2022/5/16 - 16:51
* 邮箱: itgaojian@163.com
* 描述:
*/
public class ApplyOaFlowHolder extends BaseViewHolder {
@BindView(R2.id.tv_name)
public TextView mTvName;
public ApplyOaFlowHolder(@NonNull @NotNull View itemView) {
super(itemView);
}
}

View File

@ -0,0 +1,31 @@
package com.tenlionsoft.oamodule.holder;
import android.view.View;
import android.widget.TextView;
import com.tenlionsoft.baselib.core.widget.base.BaseViewHolder;
import com.tenlionsoft.oamodule.R2;
import org.jetbrains.annotations.NotNull;
import androidx.annotation.NonNull;
import butterknife.BindView;
/**
* 作者: adam
* 日期: 2022/5/16 - 17:15
* 邮箱: itgaojian@163.com
* 描述:
*/
public class MineReadHolder extends BaseViewHolder {
@BindView(R2.id.tv_title)
public TextView mTvTitle;
@BindView(R2.id.tv_user)
public TextView mTvUser;
@BindView(R2.id.tv_time)
public TextView mTvTime;
public MineReadHolder(@NonNull @NotNull View itemView) {
super(itemView);
}
}

View File

@ -0,0 +1,31 @@
package com.tenlionsoft.oamodule.holder;
import android.view.View;
import android.widget.TextView;
import com.tenlionsoft.baselib.core.widget.base.BaseViewHolder;
import com.tenlionsoft.oamodule.R2;
import org.jetbrains.annotations.NotNull;
import androidx.annotation.NonNull;
import butterknife.BindView;
/**
* 作者: adam
* 日期: 2022/5/17 - 10:00
* 邮箱: itgaojian@163.com
* 描述:
*/
public class MineTodoHolder extends BaseViewHolder {
@BindView(R2.id.tv_title)
public TextView mTvTitle;
@BindView(R2.id.tv_time)
public TextView mTvTime;
@BindView(R2.id.tv_name)
public TextView mTvName;
public MineTodoHolder(@NonNull @NotNull View itemView) {
super(itemView);
}
}

View File

@ -26,11 +26,15 @@ import com.tenlionsoft.oamodule.beans.MeetingQrBean;
import com.tenlionsoft.oamodule.beans.MeetingRecordListBean;
import com.tenlionsoft.oamodule.beans.MeetingRoomBean;
import com.tenlionsoft.oamodule.beans.MeetingRoomRecordBean;
import com.tenlionsoft.oamodule.beans.MineDoneBean;
import com.tenlionsoft.oamodule.beans.MineJoinMeetingListBean;
import com.tenlionsoft.oamodule.beans.MineReadBean;
import com.tenlionsoft.oamodule.beans.MineTodoBean;
import com.tenlionsoft.oamodule.beans.NewsDetailBean;
import com.tenlionsoft.oamodule.beans.NewsListBean;
import com.tenlionsoft.oamodule.beans.NewsTypeBean;
import com.tenlionsoft.oamodule.beans.NoticeListBean;
import com.tenlionsoft.oamodule.beans.OaFlowApplyBean;
import com.tenlionsoft.oamodule.beans.RoutineAcceptListBean;
import com.tenlionsoft.oamodule.beans.RoutineBean;
import com.tenlionsoft.oamodule.beans.RoutineListBean;
@ -799,4 +803,43 @@ public interface OAApi {
@Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"})
@GET("app/categoryrelease/list")
Observable<List<NewsTypeBean>> getNewsTypeList();
/*OA流程*/
/**
* 获取OA流程列表
*/
@Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"})
@GET("app/oa/listpage-procdef")
Observable<OaFlowApplyBean> getOaFLowList(@Query("keywords") String key, @Query("page") String page);
/**
* 我的待阅
*/
@Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"})
@GET("app/oa/listpage-unread-of-mine")
Observable<MineReadBean> getMineUnReadList(@Query("keywords") String key, @Query("page") String page);
/**
* 我的已阅
*/
@Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"})
@GET("app/oa/listpage-read-of-mine")
Observable<MineReadBean> getMineReadList(@Query("keywords") String key, @Query("page") String page);
/**
* 我的待办
*/
@Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"})
@GET("app/oa/listpage-task-of-mine")
Observable<MineTodoBean> getMineTodoList(@Query("keywords") String key, @Query("page") String page);
/**
* 我的已办
*/
@Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"})
@GET("app/oa/listpage-history-task-of-mine")
Observable<MineDoneBean> getMineDoneList(@Query("keywords") String key, @Query("page") String page);
}

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_bg"
android:orientation="vertical">
<include layout="@layout/layout_base_search_cancel" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/srl_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/white"
tools:listitem="@layout/item_routine" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<com.tenlionsoft.baselib.core.widget.views.CustomStateView
android:id="@+id/csv_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_bg"
android:orientation="vertical">
<include layout="@layout/layout_base_search_cancel" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/srl_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/white"
tools:listitem="@layout/item_routine" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<com.tenlionsoft.baselib.core.widget.views.CustomStateView
android:id="@+id/csv_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_bg"
android:orientation="vertical"
tools:context=".activity.meeting.MeetingCenterActivity">
<RelativeLayout
android:id="@+id/rl_content_title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<ImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:background="@drawable/ic_back_black"
android:clickable="true"
android:focusable="true"
android:maxLength="8"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:scaleType="fitXY"
android:textColor="@color/white"
android:textSize="13sp"
android:visibility="visible"
tools:text=""
tools:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerVertical="true">
<RadioGroup
android:id="@+id/rg_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_apply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/switch_custom_gray_white"
android:button="@null"
android:checked="true"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
android:paddingBottom="5dp"
android:text="我的待阅"
android:textStyle="bold" />
<RadioButton
android:id="@+id/rb_mine"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/switch_custom_gray_white"
android:button="@null"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
android:paddingBottom="5dp"
android:text="我的已阅"
android:textStyle="bold" />
</RadioGroup>
</RelativeLayout>
</RelativeLayout>
<include layout="@layout/layout_base_search_cancel" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/srl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<com.tenlionsoft.baselib.core.widget.views.CustomStateView
android:id="@+id/csv_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_bg"
android:orientation="vertical"
tools:context=".activity.meeting.MeetingCenterActivity">
<RelativeLayout
android:id="@+id/rl_content_title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<ImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:background="@drawable/ic_back_black"
android:clickable="true"
android:focusable="true"
android:maxLength="8"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:scaleType="fitXY"
android:textColor="@color/white"
android:textSize="13sp"
android:visibility="visible"
tools:text=""
tools:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerVertical="true">
<RadioGroup
android:id="@+id/rg_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_apply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/switch_custom_gray_white"
android:button="@null"
android:checked="true"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
android:paddingBottom="5dp"
android:text="我的待办"
android:textStyle="bold" />
<RadioButton
android:id="@+id/rb_mine"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/switch_custom_gray_white"
android:button="@null"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
android:paddingBottom="5dp"
android:text="我的已办"
android:textStyle="bold" />
</RadioGroup>
</RelativeLayout>
</RelativeLayout>
<include layout="@layout/layout_base_search_cancel" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/srl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<com.tenlionsoft.baselib.core.widget.views.CustomStateView
android:id="@+id/csv_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_bg"
android:orientation="vertical">
<include layout="@layout/layout_base_search_cancel" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/srl_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@color/white"
tools:listitem="@layout/item_routine" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<com.tenlionsoft.baselib.core.widget.views.CustomStateView
android:id="@+id/csv_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="7dp"
android:textColor="@color/black"
android:textSize="@dimen/text_14"
tools:text="签批测试流程" />
</LinearLayout>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textSize="@dimen/text_14"
tools:text="发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".6"
android:textSize="@dimen/text_12"
tools:text="发布时间" />
<TextView
android:id="@+id/tv_user"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".4"
android:gravity="right"
android:textSize="@dimen/text_12"
tools:text="发布人" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textSize="@dimen/text_14"
tools:text="发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容发布的内容" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".6"
android:textSize="@dimen/text_12"
tools:text="发布时间" />
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".4"
android:gravity="right"
android:textSize="@dimen/text_12"
tools:text="发布人" />
</LinearLayout>
</LinearLayout>

View File

@ -1 +1,8 @@
<resources></resources>
<resources>
<!-- {processDefinitionId} {formCode} {formVersion}-->
<string name="apply_flow">approute/oa-form-report/save/definition-id/%1$s/code/%2$s/version/%3$s?token=%4$s</string>
<!-- {taskId} {formCode} {formVersion} {isNeedClaim}-->
<string name="mine_todo">approute/oa-form-report/update/task-id/%1$s/code/%2$s/version/%3$s/is-need-claim/%4$s?token=%5$s&amp;uid=%6$s</string>
<!-- {formCode} {formVersion} -->
<string name="mine_todo_detail">approute/oa-form-report/show/code/%1$s/version/%2$s?token=%3$s&amp;uid=%4$s</string>
</resources>