通知公告

This commit is contained in:
itgaojian163 2020-04-07 17:57:04 +08:00
parent 37041c7ce7
commit 9441797236
37 changed files with 1125 additions and 292 deletions

Binary file not shown.

View File

@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":3,"versionName":"1.0.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]

View File

@ -150,10 +150,8 @@ public class LoginActivity extends BaseActivity {
/** /**
* 登录 * 登录
* TODO 跳转测试页面
*/ */
private void login() { private void login() {
// startActivity(new Intent(this, MainActivity.class));
if (checkUserInputInfo()) { if (checkUserInputInfo()) {
String userName = mEtUserPhone.getText().toString().trim(); String userName = mEtUserPhone.getText().toString().trim();
String pwd = mEtUserPwd.getText().toString().trim(); String pwd = mEtUserPwd.getText().toString().trim();

View File

@ -93,7 +93,6 @@ public class MainActivity extends BaseActivity {
TextView mTvOnline; TextView mTvOnline;
private String[] permissions = new String[]{ private String[] permissions = new String[]{
PermissionConstants.STORAGE, PermissionConstants.STORAGE,
PermissionConstants.LOCATION,
PermissionConstants.PHONE, PermissionConstants.PHONE,
PermissionConstants.MICROPHONE, PermissionConstants.MICROPHONE,
}; };
@ -318,7 +317,6 @@ public class MainActivity extends BaseActivity {
startActivity(new Intent(MainActivity.this, UserActivity.class)); startActivity(new Intent(MainActivity.this, UserActivity.class));
break; break;
case R.id.tv_rule://签到规则 case R.id.tv_rule://签到规则
break; break;
} }
} }

View File

@ -138,6 +138,7 @@ public class EnterCompanyInfoActivity extends BaseActivity {
private String mSelArea5Id = "";// 社区 private String mSelArea5Id = "";// 社区
private String mTraitId = "";//风险特点ID private String mTraitId = "";//风险特点ID
private String mTraitPId = "";//风险特点父ID
private String companyName = "";//企业名称 private String companyName = "";//企业名称
private String regisAddress = "";//注册地址 private String regisAddress = "";//注册地址
private String detailAddress = "";//详细地址 private String detailAddress = "";//详细地址

View File

@ -215,6 +215,13 @@ public class CounterCheckOptionsActivity extends BaseActivity {
List<OptionsSubmitBean.HiddenDangerReportsBean> items = new ArrayList<>(); List<OptionsSubmitBean.HiddenDangerReportsBean> items = new ArrayList<>();
for (int i = 0; i < data.size(); i++) { for (int i = 0; i < data.size(); i++) {
Options o = data.get(i); Options o = data.get(i);
if (o.getIsMust() == 1) {
if (o.getState() == EmStateCheck.NORMAL) {
mMProgressDialog.dismiss();
ToastUtils.showShort("检查项中存在未检查的必查项目");
return;
}
}
OptionsSubmitBean.HiddenDangerReportsBean bean = new OptionsSubmitBean.HiddenDangerReportsBean(); OptionsSubmitBean.HiddenDangerReportsBean bean = new OptionsSubmitBean.HiddenDangerReportsBean();
bean.setCheckItemId(o.getId()); bean.setCheckItemId(o.getId());
String photoIds = ""; String photoIds = "";

View File

@ -97,7 +97,13 @@ public class CheckOptionsActivity extends BaseActivity {
mOptions = new ArrayList<>(); mOptions = new ArrayList<>();
mAdapter = new OptionsAdapter(this, mOptions); mAdapter = new OptionsAdapter(this, mOptions);
mRlvOptions.setAdapter(mAdapter); mRlvOptions.setAdapter(mAdapter);
mRlvOptions.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) {
@Override
public boolean canScrollVertically() {
return false;
}
};
mRlvOptions.setLayoutManager(linearLayoutManager);
mAdapter.addSelectPhotoListener((bean, options, i, type) -> { mAdapter.addSelectPhotoListener((bean, options, i, type) -> {
mCurrentOptions = options; mCurrentOptions = options;
if (type == 1) { if (type == 1) {
@ -179,6 +185,13 @@ public class CheckOptionsActivity extends BaseActivity {
List<OptionsSubmitBean.HiddenDangerReportsBean> items = new ArrayList<>(); List<OptionsSubmitBean.HiddenDangerReportsBean> items = new ArrayList<>();
for (int i = 0; i < data.size(); i++) { for (int i = 0; i < data.size(); i++) {
Options o = data.get(i); Options o = data.get(i);
if (o.getIsMust() == 1) {
if (o.getState() == EmStateCheck.NORMAL) {
mMProgressDialog.dismiss();
ToastUtils.showShort("检查项中存在未检查的必查项目");
return;
}
}
OptionsSubmitBean.HiddenDangerReportsBean bean = new OptionsSubmitBean.HiddenDangerReportsBean(); OptionsSubmitBean.HiddenDangerReportsBean bean = new OptionsSubmitBean.HiddenDangerReportsBean();
bean.setCheckItemId(o.getId()); bean.setCheckItemId(o.getId());
String photoIds = ""; String photoIds = "";
@ -319,6 +332,7 @@ public class CheckOptionsActivity extends BaseActivity {
o.setId(checkOptionsbeans.get(i).getCheckItemId()); o.setId(checkOptionsbeans.get(i).getCheckItemId());
o.setTitle(checkOptionsbeans.get(i).getSummaryJoinByCheckItemId()); o.setTitle(checkOptionsbeans.get(i).getSummaryJoinByCheckItemId());
o.setPhotos(mPhotos); o.setPhotos(mPhotos);
o.setIsMust(checkOptionsbeans.get(i).getType());
mOptions.add(o); mOptions.add(o);
} }
mAdapter.setData(mOptions); mAdapter.setData(mOptions);

View File

@ -2,6 +2,7 @@ package com.sucstepsoft.txrealtimelocation.activitys.issue;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
@ -29,6 +30,8 @@ public class HistoryDetialActivity extends BaseActivity {
private Unbinder mBind; private Unbinder mBind;
private List<HistoryMissionBean> mDatas = new ArrayList<>(); private List<HistoryMissionBean> mDatas = new ArrayList<>();
private MissionDetailAdapter mAdapter;
private Disposable mDis;
@Override @Override
protected int setLayoutId() { protected int setLayoutId() {
@ -40,9 +43,13 @@ public class HistoryDetialActivity extends BaseActivity {
public void initData() { public void initData() {
mBind = ButterKnife.bind(this); mBind = ButterKnife.bind(this);
mTvBaseTitle.setText("详情"); mTvBaseTitle.setText("详情");
refreshView(STATE_LOAD_LOADING);
String cId = getIntent().getStringExtra("cId"); String cId = getIntent().getStringExtra("cId");
getDetail(cId); getDetail(cId);
MissionDetailAdapter adapter = new MissionDetailAdapter(mActivity, mDatas); mAdapter = new MissionDetailAdapter(mActivity, mDatas);
mRlvDetail.setLayoutManager(new LinearLayoutManager(mActivity));
mRlvDetail.setAdapter(mAdapter);
} }
private void getDetail(String cid) { private void getDetail(String cid) {
@ -51,20 +58,26 @@ public class HistoryDetialActivity extends BaseActivity {
.getHistoryDetail(cid, UserLgUtils.getToken()) .getHistoryDetail(cid, UserLgUtils.getToken())
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<HistoryMissionBean>() { .subscribe(new Observer<List<HistoryMissionBean>>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
mDis = d;
} }
@Override @Override
public void onNext(HistoryMissionBean historyMissionBean) { public void onNext(List<HistoryMissionBean> beans) {
if (beans != null && beans.size() > 0) {
refreshView(STATE_LOAD_SUCCESS);
mDatas = beans;
mAdapter.setData(mDatas);
} else {
refreshView(STATE_LOAD_EMPTY);
}
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
refreshView(STATE_LOAD_ERROR);
} }
@Override @Override
@ -77,6 +90,9 @@ public class HistoryDetialActivity extends BaseActivity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
if (mDis != null && !mDis.isDisposed()) {
mDis.dispose();
}
mBind.unbind(); mBind.unbind();
} }
} }

View File

@ -17,6 +17,7 @@ public class Options {
private String title; private String title;
private EmStateCheck state = EmStateCheck.NORMAL;//检查状态 normal 未检查 check合格 uncheck不合格 private EmStateCheck state = EmStateCheck.NORMAL;//检查状态 normal 未检查 check合格 uncheck不合格
private int rectify = 4;//立即整改-4,限期整改-5 不配合-6 private int rectify = 4;//立即整改-4,限期整改-5 不配合-6
private int isMust = 1;//1 必查 2选查
//整改期限 //整改期限
// 当场整改 // 当场整改
// 当天整改 // 当天整改
@ -72,4 +73,12 @@ public class Options {
public void setState(EmStateCheck state) { public void setState(EmStateCheck state) {
this.state = state; this.state = state;
} }
public int getIsMust() {
return isMust;
}
public void setIsMust(int isMust) {
this.isMust = isMust;
}
} }

View File

@ -39,6 +39,11 @@ public class OptionsAdapter extends BaseRecyclerAdapter<Options, OptionsHolder>
@Override @Override
public void bindHolder(OptionsHolder oHolder, int i) { public void bindHolder(OptionsHolder oHolder, int i) {
if (mData.get(i).getIsMust() == 1) {
oHolder.mIvIsMust.setVisibility(View.VISIBLE);
} else {
oHolder.mIvIsMust.setVisibility(View.GONE);
}
oHolder.mScvOptions.setCheckState(mData.get(i).getState()); oHolder.mScvOptions.setCheckState(mData.get(i).getState());
oHolder.mScvOptions.setOnClickListener(v -> { oHolder.mScvOptions.setOnClickListener(v -> {
EmStateCheck state = oHolder.mScvOptions.getViewState(); EmStateCheck state = oHolder.mScvOptions.getViewState();

View File

@ -4,6 +4,7 @@ import android.support.annotation.NonNull;
import android.support.v7.widget.AppCompatSpinner; import android.support.v7.widget.AppCompatSpinner;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
@ -27,6 +28,7 @@ public class OptionsHolder extends RecyclerView.ViewHolder {
public RadioGroup mRg; public RadioGroup mRg;
public LinearLayout mLlSp; public LinearLayout mLlSp;
public RadioButton mRbNow; public RadioButton mRbNow;
public ImageView mIvIsMust;
public OptionsHolder(@NonNull View itemView) { public OptionsHolder(@NonNull View itemView) {
super(itemView); super(itemView);
@ -38,5 +40,6 @@ public class OptionsHolder extends RecyclerView.ViewHolder {
mRg = itemView.findViewById(R.id.rg_term); mRg = itemView.findViewById(R.id.rg_term);
mRbNow = itemView.findViewById(R.id.rb_now); mRbNow = itemView.findViewById(R.id.rb_now);
mLlSp = itemView.findViewById(R.id.ll_sp); mLlSp = itemView.findViewById(R.id.ll_sp);
mIvIsMust = itemView.findViewById(R.id.iv_must);
} }
} }

View File

@ -1,5 +1,7 @@
package com.sucstepsoft.txrealtimelocation.activitys.lawlib; package com.sucstepsoft.txrealtimelocation.activitys.lawlib;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
@ -7,30 +9,38 @@ import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.jcodecraeer.xrecyclerview.XRecyclerView;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.utils.ToastUtils;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.txrealtimelocation.R; import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.activitys.notice.NoticeDetailActivity;
import com.sucstepsoft.txrealtimelocation.adapters.NewNoticeAdapter;
import com.sucstepsoft.txrealtimelocation.beans.NoticeBean;
import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.Unbinder; import butterknife.Unbinder;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class LawLibActivity extends BaseActivity { public class LawLibActivity extends BaseActivity {
private List<NoticeBean.RowsBean> mDatas;
@BindView(R.id.et_law_name) private NewNoticeAdapter mAdapter;
EditText mEtLawName; private int mCurPage = 1;
@BindView(R.id.btn_search) private Disposable mDisposable;
Button mBtnSearch;
@BindView(R.id.pb_loading)
ProgressBar mPbLoading;
@BindView(R.id.iv_empty)
ImageView mIvEmpty;
@BindView(R.id.tv_error_hint)
TextView mTvErrorHint;
@BindView(R.id.xlv_com_lib) @BindView(R.id.xlv_com_lib)
XRecyclerView mXlvComLib; XRecyclerView mXlvComLib;
private Unbinder mBind; private Unbinder mBind;
private int mCurrentPage = 1;
@Override @Override
protected int setLayoutId() { protected int setLayoutId() {
@ -40,56 +50,129 @@ public class LawLibActivity extends BaseActivity {
@Override @Override
public void initData() { public void initData() {
mBind = ButterKnife.bind(this); mBind = ButterKnife.bind(this);
refreshView(STATE_LOAD_SUCCESS);
mTvBaseTitle.setText("法律法规"); mTvBaseTitle.setText("法律法规");
reStateView(STATE_LOAD_LOADING); refreshView(STATE_LOAD_LOADING);
getLawList(mCurrentPage); mDatas = new ArrayList<>();
mAdapter = new NewNoticeAdapter(mActivity, mDatas);
LinearLayoutManager layoutManager = new LinearLayoutManager(mActivity);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mXlvComLib.setLayoutManager(layoutManager);
mXlvComLib.setAdapter(mAdapter);
mAdapter.addOnItemClickListener(bean -> showIssueDetail(bean));
mXlvComLib.setNoMore(true);
mXlvComLib.setRefreshProgressStyle(ProgressStyle.BallGridBeat);
mXlvComLib.setLoadingMoreProgressStyle(ProgressStyle.Pacman);
mXlvComLib.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
refresh();
} }
private void getLawList(int currentPage) { @Override
public void onLoadMore() {
loadMore();
}
});
getNewsList(1);
} }
private void getLawListByName(int currentPage) {
/**
* 显示详情
*
* @param bean
*/
private void showIssueDetail(NoticeBean.RowsBean bean) {
Intent intent = new Intent();
intent.putExtra("id", bean.getArticleContentId());
intent.setClass(mActivity, NoticeDetailActivity.class);
startActivity(intent);
} }
private void reStateView(int state) { /**
switch (state) { * 待下派
case STATE_LOAD_LOADING: */
mTvErrorHint.setVisibility(View.VISIBLE); private void getNewsList(int page) {
mTvErrorHint.setText("数据加载中..."); mCurPage = page;
mIvEmpty.setVisibility(View.GONE); RetrofitManager.getInstance()
mXlvComLib.setVisibility(View.GONE); .create(LocationApiService.class)
mPbLoading.setVisibility(View.VISIBLE); .getNoticeListById(PathConfig.LAW_TYPE_ID, page + "", UserLgUtils.getToken())
break; .subscribeOn(Schedulers.io())
case STATE_LOAD_SUCCESS: .observeOn(AndroidSchedulers.mainThread())
mTvErrorHint.setVisibility(View.GONE); .subscribe(new Observer<NoticeBean>() {
mIvEmpty.setVisibility(View.GONE); @Override
mXlvComLib.setVisibility(View.VISIBLE); public void onSubscribe(Disposable d) {
mPbLoading.setVisibility(View.GONE); mDisposable = d;
break; }
case STATE_LOAD_ERROR:
mTvErrorHint.setVisibility(View.VISIBLE); @Override
mTvErrorHint.setText("数据加载失败,请稍后重试"); public void onNext(NoticeBean newsListBean) {
mIvEmpty.setVisibility(View.VISIBLE); if (newsListBean != null && newsListBean.getRows() != null && newsListBean.getRows().size() > 0) {
mXlvComLib.setVisibility(View.GONE); ++mCurPage;
mPbLoading.setVisibility(View.GONE); if (page == 1) {
break; mDatas.clear();
case STATE_LOAD_EMPTY: mDatas.addAll(newsListBean.getRows());
mTvErrorHint.setVisibility(View.VISIBLE); } else {
mTvErrorHint.setText("未找到相关内容"); mDatas.addAll(newsListBean.getRows());
mIvEmpty.setVisibility(View.VISIBLE); }
mXlvComLib.setVisibility(View.GONE); mAdapter.notifyDataSetChanged();
mPbLoading.setVisibility(View.GONE); mXlvComLib.refreshComplete();
break; if (mDatas.size() >= newsListBean.getTotal()) {
mXlvComLib.loadMoreComplete();
mXlvComLib.setNoMore(true);
} else {
mXlvComLib.loadMoreComplete();
mXlvComLib.setNoMore(false);
}
refreshView(STATE_LOAD_SUCCESS);
} else {
if (page > 1) {
mXlvComLib.loadMoreComplete();
mXlvComLib.setNoMore(true);
} else {
//无数据
mXlvComLib.refreshComplete();
mXlvComLib.setNoMore(true);
refreshView(STATE_LOAD_EMPTY);
}
} }
} }
@Override @Override
protected void onDestroy() { public void onError(Throwable e) {
super.onDestroy(); e.printStackTrace();
mBind.unbind(); if (mXlvComLib != null) {
mXlvComLib.refreshComplete();
mXlvComLib.loadMoreComplete();
}
refreshView(STATE_LOAD_ERROR);
// ToastUtils.showShort("数据加载失败,请稍后重试");
} }
@Override
public void onComplete() {
}
});
}
private void refresh() {
getNewsList(1);
}
private void loadMore() {
getNewsList(mCurPage);
}
@Override
protected void onDestroy() {
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
if (mBind != null) {
mBind.unbind();
}
super.onDestroy();
}
} }

View File

@ -399,15 +399,7 @@ public class UserActivity extends BaseActivity {
*/ */
private void doLoginApp(String name, String pwd, ProgressDialog dialog) { private void doLoginApp(String name, String pwd, ProgressDialog dialog) {
String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3); String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3);
TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String deviceId = getDeviceId();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ToastUtils.showShort("未授权");
return;
}
String deviceId = manager.getDeviceId();
if (TextUtils.isEmpty(deviceId)) {
deviceId = getDeviceId();
}
LoginUser info = new LoginUser(); LoginUser info = new LoginUser();
info.setAppVersion(AppUtils.getAppVersionCode()); info.setAppVersion(AppUtils.getAppVersionCode());
info.setAppId(PathConfig.APP_VERSION_ID); info.setAppId(PathConfig.APP_VERSION_ID);
@ -566,13 +558,11 @@ public class UserActivity extends BaseActivity {
* 退出登录 * 退出登录
*/ */
private void loginOut() { private void loginOut() {
Intent intent = new Intent(); // Intent intent = new Intent();
intent.setAction(PathConfig.ACTION_STOP_LOCATION); // intent.setAction(PathConfig.ACTION_STOP_LOCATION);
sendBroadcast(intent); // sendBroadcast(intent);
GlobalProvider.save(mActivity, "isUpload", "12");
GlobalProvider.save(mActivity, "token", "");
UserLgUtils.setPassword(""); UserLgUtils.setPassword("");
// exitLocationService(); UserLgUtils.setCheckRemember(false);
reStartApp(); reStartApp();
} }

View File

@ -179,15 +179,7 @@ public class UserInfoActivity extends BaseActivity {
*/ */
private void doLoginApp(String name, String pwd, ProgressDialog dialog) { private void doLoginApp(String name, String pwd, ProgressDialog dialog) {
String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3); String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3);
TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String deviceId = getDeviceId();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ToastUtils.showShort("未授权");
return;
}
String deviceId = manager.getDeviceId();
if (TextUtils.isEmpty(deviceId)) {
deviceId = getDeviceId();
}
LoginUser info = new LoginUser(); LoginUser info = new LoginUser();
info.setAppVersion(AppUtils.getAppVersionCode()); info.setAppVersion(AppUtils.getAppVersionCode());
info.setAppId(PathConfig.APP_VERSION_ID); info.setAppId(PathConfig.APP_VERSION_ID);

View File

@ -1,17 +1,31 @@
package com.sucstepsoft.txrealtimelocation.activitys.notice; package com.sucstepsoft.txrealtimelocation.activitys.notice;
import android.app.Activity;
import android.content.Intent;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils; import android.text.TextUtils;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.core.widget.xtablayout.XTabLayout; import com.sucstepsoft.cm_utils.core.widget.xtablayout.XTabLayout;
import com.sucstepsoft.cm_utils.utils.ToastUtils;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.txrealtimelocation.R; import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.adapters.NewNoticeAdapter;
import com.sucstepsoft.txrealtimelocation.adapters.NoticeAdapter;
import com.sucstepsoft.txrealtimelocation.beans.NewsListBean;
import com.sucstepsoft.txrealtimelocation.beans.NoticeBean;
import com.sucstepsoft.txrealtimelocation.fragments.mine.NewsFragment; import com.sucstepsoft.txrealtimelocation.fragments.mine.NewsFragment;
import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -19,20 +33,23 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.Unbinder; import butterknife.Unbinder;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/** /**
* createTime:2019-8-6 * createTime:2019-8-6
* 通知公告 * 通知公告
*/ */
public class NoticeActivity extends BaseActivity { public class NoticeActivity extends BaseActivity {
@BindView(R.id.xtl_tabs) @BindView(R.id.xlv_notice)
XTabLayout mTablayout; XRecyclerView mRlvNotices;
@BindView(R.id.vp_content) private List<NoticeBean.RowsBean> mDatas;
ViewPager mVpContent; private NewNoticeAdapter mAdapter;
private int mCurPage = 1;
private Unbinder mBind; private Unbinder mBind;
private String[] mTitles = new String[]{"通知公告", "全民宣传", "每日通报"}; private Disposable mDisposable;
private List<Fragment> mFragments = new ArrayList<>();
@Override @Override
protected int setLayoutId() { protected int setLayoutId() {
@ -43,62 +60,127 @@ public class NoticeActivity extends BaseActivity {
public void initData() { public void initData() {
mBind = ButterKnife.bind(this); mBind = ButterKnife.bind(this);
mTvBaseTitle.setText("通知公告"); mTvBaseTitle.setText("通知公告");
refreshView(STATE_LOAD_LOADING);
mDatas = new ArrayList<>();
mAdapter = new NewNoticeAdapter(mActivity, mDatas);
LinearLayoutManager layoutManager = new LinearLayoutManager(mActivity);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRlvNotices.setLayoutManager(layoutManager);
mRlvNotices.setAdapter(mAdapter);
mAdapter.addOnItemClickListener(bean -> showIssueDetail(bean));
mRlvNotices.setNoMore(true);
mRlvNotices.setRefreshProgressStyle(ProgressStyle.BallGridBeat);
mRlvNotices.setLoadingMoreProgressStyle(ProgressStyle.Pacman);
mRlvNotices.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
refresh();
}
@Override
public void onLoadMore() {
loadMore();
}
});
getNewsList(1);
}
/**
* 显示详情
*
* @param bean
*/
private void showIssueDetail(NoticeBean.RowsBean bean) {
Intent intent = new Intent();
intent.putExtra("id", bean.getArticleContentId());
intent.setClass(mActivity, NoticeDetailActivity.class);
startActivity(intent);
}
/**
* 待下派
*/
private void getNewsList(int page) {
mCurPage = page;
RetrofitManager.getInstance()
.create(LocationApiService.class)
.getNoticeListById(PathConfig.NOTICE_TYPE_ID, page + "", UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<NoticeBean>() {
@Override
public void onSubscribe(Disposable d) {
mDisposable = d;
}
@Override
public void onNext(NoticeBean newsListBean) {
if (newsListBean != null && newsListBean.getRows() != null && newsListBean.getRows().size() > 0) {
++mCurPage;
if (page == 1) {
mDatas.clear();
mDatas.addAll(newsListBean.getRows());
} else {
mDatas.addAll(newsListBean.getRows());
}
mAdapter.notifyDataSetChanged();
mRlvNotices.refreshComplete();
if (mDatas.size() >= newsListBean.getTotal()) {
mRlvNotices.loadMoreComplete();
mRlvNotices.setNoMore(true);
} else {
mRlvNotices.loadMoreComplete();
mRlvNotices.setNoMore(false);
}
refreshView(STATE_LOAD_SUCCESS); refreshView(STATE_LOAD_SUCCESS);
// 通知公告notice全民宣传propaganda每日通报daily } else {
String type = getIntent().getStringExtra("type"); if (page > 1) {
NewsFragment noticeFragment = new NewsFragment(); mRlvNotices.loadMoreComplete();
Bundle bundle = new Bundle(); mRlvNotices.setNoMore(true);
bundle.putString("type", "notice"); } else {
noticeFragment.setArguments(bundle); //无数据
NewsFragment publicFragment = new NewsFragment(); mRlvNotices.refreshComplete();
Bundle bundle1 = new Bundle(); mRlvNotices.setNoMore(true);
bundle1.putString("type", "propaganda"); refreshView(STATE_LOAD_EMPTY);
publicFragment.setArguments(bundle1); }
NewsFragment avisoFragment = new NewsFragment();
Bundle bundle2 = new Bundle();
bundle2.putString("type", "daily");
avisoFragment.setArguments(bundle2);
mFragments.add(noticeFragment);
mFragments.add(publicFragment);
mFragments.add(avisoFragment);
VpNoticeAdapter adapter = new VpNoticeAdapter(getSupportFragmentManager());
mVpContent.setAdapter(adapter);
mTablayout.setxTabDisplayNum(3);
mTablayout.setupWithViewPager(mVpContent);
if (!TextUtils.isEmpty(type)) {
mVpContent.setCurrentItem(2);
} }
} }
@Override
public void onError(Throwable e) {
e.printStackTrace();
if (mRlvNotices != null) {
mRlvNotices.refreshComplete();
mRlvNotices.loadMoreComplete();
}
refreshView(STATE_LOAD_ERROR);
ToastUtils.showShort("数据加载失败,请稍后重试");
}
@Override
public void onComplete() {
}
});
}
private void refresh() {
getNewsList(1);
}
private void loadMore() {
getNewsList(mCurPage);
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
if (mBind != null) { if (mBind != null) {
mBind.unbind(); mBind.unbind();
} }
super.onDestroy(); super.onDestroy();
} }
private class VpNoticeAdapter extends FragmentStatePagerAdapter {
public VpNoticeAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return mFragments.get(i);
}
@Override
public int getCount() {
return mFragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
}
} }

View File

@ -2,6 +2,8 @@ package com.sucstepsoft.txrealtimelocation.activitys.notice;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.Build; import android.os.Build;
import android.text.TextUtils;
import android.view.TextureView;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewParent; import android.view.ViewParent;
@ -13,16 +15,25 @@ import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.ZoomButtonsController; import android.widget.ZoomButtonsController;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.utils.ToastUtils; import com.sucstepsoft.cm_utils.utils.ToastUtils;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.txrealtimelocation.R; import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.beans.NewsListBean; import com.sucstepsoft.txrealtimelocation.beans.NewsListBean;
import com.sucstepsoft.txrealtimelocation.beans.NoticeBean;
import com.sucstepsoft.txrealtimelocation.beans.NoticeDetailBean;
import com.sucstepsoft.txrealtimelocation.net.LocationApiService;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.Unbinder; import butterknife.Unbinder;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/** /**
* 通知公告-详情 * 通知公告-详情
@ -50,23 +61,71 @@ public class NoticeDetailActivity extends BaseActivity {
public void initData() { public void initData() {
mBind = ButterKnife.bind(this); mBind = ButterKnife.bind(this);
mTvBaseTitle.setText("详情"); mTvBaseTitle.setText("详情");
refreshView(STATE_LOAD_SUCCESS); refreshView(STATE_LOAD_LOADING);
NewsListBean.RowsBean bean = (NewsListBean.RowsBean) getIntent().getSerializableExtra("bean"); String id = getIntent().getStringExtra("id");
if (bean != null) { if (!TextUtils.isEmpty(id)) {
setDataToView(bean); setDataToView(id);
} else { } else {
ToastUtils.showShort("数据有误"); ToastUtils.showShort("数据有误");
finish(); finish();
} }
} }
private void setDataToView(NewsListBean.RowsBean bean) { private void setDataToView(String id) {
mTvNoticeTitle.setText(bean.getNewsTitle()); getNoticeDetail(id);
mTvNoticeGator.setText(bean.getNewsAuthor()); }
mTvNoticeTime.setText(bean.getNewsTime());
content = bean.getNewsContent(); private void getNoticeDetail(String articleContentId) {
RetrofitManager.getInstance()
.create(LocationApiService.class)
.getNoticeDetailById(articleContentId, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<NoticeDetailBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(NoticeDetailBean noticeDetailBean) {
if (noticeDetailBean != null) {
refreshView(STATE_LOAD_SUCCESS);
mTvNoticeTitle.setText(noticeDetailBean.getTitle());
String source = "";
if (!TextUtils.isEmpty(noticeDetailBean.getAuthor())) {
source = noticeDetailBean.getAuthor();
}
if (!TextUtils.isEmpty(noticeDetailBean.getSource())) {
source = noticeDetailBean.getSource();
}
if (TextUtils.isEmpty(source)) {
mTvNoticeGator.setVisibility(View.GONE);
} else {
mTvNoticeGator.setVisibility(View.VISIBLE);
mTvNoticeGator.setText(source);
}
mTvNoticeTime.setText(noticeDetailBean.getPublishDate());
content = noticeDetailBean.getContent();
wvContent = new WebView(getApplicationContext()); wvContent = new WebView(getApplicationContext());
initWebView(); initWebView();
} else {
refreshView(STATE_LOAD_EMPTY);
}
}
@Override
public void onError(Throwable e) {
refreshView(STATE_LOAD_ERROR);
}
@Override
public void onComplete() {
}
});
} }
/** /**

View File

@ -40,6 +40,11 @@ public class CounterCheckOptionsAdapter extends BaseRecyclerAdapter<Options, Cou
@Override @Override
public void bindHolder(CounterCheckOptionHolder oHolder, int i) { public void bindHolder(CounterCheckOptionHolder oHolder, int i) {
if (mData.get(i).getIsMust() == 1) {
oHolder.mIvIsMust.setVisibility(View.VISIBLE);
} else {
oHolder.mIvIsMust.setVisibility(View.GONE);
}
oHolder.mScvOptions.setCheckState(mData.get(i).getState()); oHolder.mScvOptions.setCheckState(mData.get(i).getState());
oHolder.mScvOptions.setOnClickListener(v -> { oHolder.mScvOptions.setOnClickListener(v -> {
EmStateCheck state = oHolder.mScvOptions.getViewState(); EmStateCheck state = oHolder.mScvOptions.getViewState();

View File

@ -9,9 +9,7 @@ import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
import com.sucstepsoft.txrealtimelocation.R; import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.adapters.holders.HistroyHolder; import com.sucstepsoft.txrealtimelocation.adapters.holders.HistroyHolder;
import com.sucstepsoft.txrealtimelocation.beans.CounterCheckListBean; import com.sucstepsoft.txrealtimelocation.beans.CounterCheckListBean;
import com.sucstepsoft.txrealtimelocation.beans.HistoryMissionBean;
import java.lang.invoke.LambdaConversionException;
import java.util.List; import java.util.List;
/** /**
@ -47,5 +45,6 @@ public class HistoryMissionAdapter extends BaseRecyclerAdapter<CounterCheckListB
} else { } else {
holder.mTvState.setText("完成"); holder.mTvState.setText("完成");
} }
holder.mTvTime.setText("检查日期:" + bean.getGmtCreate());
} }
} }

View File

@ -1,12 +1,22 @@
package com.sucstepsoft.txrealtimelocation.adapters; package com.sucstepsoft.txrealtimelocation.adapters;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.GridLayoutManager;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
import com.sucstepsoft.txrealtimelocation.adapters.holders.HistroyHolder; import com.sucstepsoft.cm_utils.core.widget.base.BaseShowPhotoAdapter;
import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.activitys.common.PhotoActivity;
import com.sucstepsoft.txrealtimelocation.adapters.holders.MissionDetailHolder;
import com.sucstepsoft.txrealtimelocation.beans.HistoryMissionBean; import com.sucstepsoft.txrealtimelocation.beans.HistoryMissionBean;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -15,20 +25,70 @@ import java.util.List;
* 邮箱: itgaojian@163.com * 邮箱: itgaojian@163.com
* 描述: * 描述:
*/ */
public class MissionDetailAdapter extends BaseRecyclerAdapter<HistoryMissionBean, HistroyHolder> { public class MissionDetailAdapter extends BaseRecyclerAdapter<HistoryMissionBean, MissionDetailHolder> {
public MissionDetailAdapter(Context ctx, List<HistoryMissionBean> list) { public MissionDetailAdapter(Context ctx, List<HistoryMissionBean> list) {
super(ctx, list); super(ctx, list);
} }
@Override @Override
public HistroyHolder createHolder(ViewGroup parent, int viewType) { public MissionDetailHolder createHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_mission_detail, parent, false);
return null; return new MissionDetailHolder(itemView);
} }
@Override @Override
public void bindHolder(HistroyHolder holder, int i) { public void bindHolder(MissionDetailHolder holder, int i) {
holder.mTvName.setText(mData.get(i).getNameJoinByCheckItemId());
switch (mData.get(i).getCheckResult()) {
case 1:
holder.mTvCheckType.setText("检查合格");
holder.mTvDay.setVisibility(View.GONE);
break;
case 2:
holder.mTvCheckType.setText("立即整改");
holder.mTvDay.setVisibility(View.GONE);
break;
case 3:
holder.mTvCheckType.setText("限期整改");
holder.mTvDay.setVisibility(View.VISIBLE);
holder.mTvDay.setText(mData.get(i).getRectificationDays() + "");
break;
case 4:
holder.mTvCheckType.setText("企业不配合");
holder.mTvDay.setVisibility(View.GONE);
break;
case 0:
default:
holder.mTvCheckType.setText("未检查");
holder.mTvDay.setVisibility(View.GONE);
break;
}
if (!TextUtils.isEmpty(mData.get(i).getScenePhotos())) {
holder.mRlvPhotos.setVisibility(View.VISIBLE);
List<String> photos = new ArrayList<>();
String[] split = mData.get(i).getScenePhotos().split(",");
for (int j = 0; j < split.length; j++) {
if (!TextUtils.isEmpty(split[j])) {
photos.add(BaseUrlApi.BASE_IMG_URL + split[j]);
}
}
BaseShowPhotoAdapter adapter = new BaseShowPhotoAdapter(mContext, photos);
GridLayoutManager manager = new GridLayoutManager(mContext, 4) {
@Override
public boolean canScrollVertically() {
return false;
}
};
holder.mRlvPhotos.setLayoutManager(manager);
holder.mRlvPhotos.setAdapter(adapter);
adapter.addOnItemClickListener(url -> {
Intent intent = new Intent(mContext, PhotoActivity.class);
intent.putExtra("imgUrls", new ArrayList<>(adapter.getData()));
mContext.startActivity(intent);
});
} else {
holder.mRlvPhotos.setVisibility(View.GONE);
}
} }
} }

View File

@ -0,0 +1,39 @@
package com.sucstepsoft.txrealtimelocation.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
import com.sucstepsoft.txrealtimelocation.R;
import com.sucstepsoft.txrealtimelocation.adapters.holders.NoticeHolder;
import com.sucstepsoft.txrealtimelocation.beans.NewsListBean;
import com.sucstepsoft.txrealtimelocation.beans.NoticeBean;
import java.util.List;
/**
* 作者: Adam
* 日期: 2019/8/13 - 10:29
* 邮箱: itgaojian@163.com
* 描述:
*/
public class NewNoticeAdapter extends BaseRecyclerAdapter<NoticeBean.RowsBean, NoticeHolder> {
public NewNoticeAdapter(Context ctx, List<NoticeBean.RowsBean> list) {
super(ctx, list);
}
@Override
public NoticeHolder createHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_notice, parent, false);
return new NoticeHolder(itemView);
}
@Override
public void bindHolder(NoticeHolder noticeHolder, int i) {
noticeHolder.mTvTitle.setText(mData.get(i).getTitle());
noticeHolder.mTvTime.setText(mData.get(i).getPublishDate());
noticeHolder.mTvPub.setText(mData.get(i).getSummaryJoinByArticleCategoryId());
}
}

View File

@ -4,6 +4,7 @@ import android.support.annotation.NonNull;
import android.support.v7.widget.AppCompatSpinner; import android.support.v7.widget.AppCompatSpinner;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
@ -27,6 +28,8 @@ public class CounterCheckOptionHolder extends RecyclerView.ViewHolder {
public RadioGroup mRg; public RadioGroup mRg;
public LinearLayout mLlSp; public LinearLayout mLlSp;
public RadioButton mRbNow; public RadioButton mRbNow;
public ImageView mIvIsMust;
public CounterCheckOptionHolder(@NonNull View itemView) { public CounterCheckOptionHolder(@NonNull View itemView) {
super(itemView); super(itemView);
mTvTitle = itemView.findViewById(R.id.tv_title); mTvTitle = itemView.findViewById(R.id.tv_title);
@ -37,6 +40,7 @@ public class CounterCheckOptionHolder extends RecyclerView.ViewHolder {
mRg = itemView.findViewById(R.id.rg_term); mRg = itemView.findViewById(R.id.rg_term);
mRbNow = itemView.findViewById(R.id.rb_now); mRbNow = itemView.findViewById(R.id.rb_now);
mLlSp = itemView.findViewById(R.id.ll_sp); mLlSp = itemView.findViewById(R.id.ll_sp);
mIvIsMust = itemView.findViewById(R.id.iv_must);
} }
} }

View File

@ -19,6 +19,7 @@ public class HistroyHolder extends RecyclerView.ViewHolder {
public TextView mTvAddress; public TextView mTvAddress;
public TextView mTvState; public TextView mTvState;
public TextView mTvType; public TextView mTvType;
public TextView mTvTime;
public HistroyHolder(@NonNull View itemView) { public HistroyHolder(@NonNull View itemView) {
super(itemView); super(itemView);
@ -27,5 +28,6 @@ public class HistroyHolder extends RecyclerView.ViewHolder {
mTvAddress = itemView.findViewById(R.id.tv_address); mTvAddress = itemView.findViewById(R.id.tv_address);
mTvState = itemView.findViewById(R.id.tv_state); mTvState = itemView.findViewById(R.id.tv_state);
mTvType = itemView.findViewById(R.id.tv_type); mTvType = itemView.findViewById(R.id.tv_type);
mTvTime = itemView.findViewById(R.id.tv_time);
} }
} }

View File

@ -3,6 +3,9 @@ package com.sucstepsoft.txrealtimelocation.adapters.holders;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.View; import android.view.View;
import android.widget.TextView;
import com.sucstepsoft.txrealtimelocation.R;
/** /**
* 作者: adam * 作者: adam
@ -11,8 +14,17 @@ import android.view.View;
* 描述: * 描述:
*/ */
public class MissionDetailHolder extends RecyclerView.ViewHolder { public class MissionDetailHolder extends RecyclerView.ViewHolder {
public TextView mTvName;
public TextView mTvDay;
public TextView mTvCheckType;
public RecyclerView mRlvPhotos;
public MissionDetailHolder(@NonNull View itemView) { public MissionDetailHolder(@NonNull View itemView) {
super(itemView); super(itemView);
mTvName = itemView.findViewById(R.id.tv_options_name);
mTvDay = itemView.findViewById(R.id.tv_day);
mTvCheckType = itemView.findViewById(R.id.tv_options_check);
mRlvPhotos = itemView.findViewById(R.id.rlv_photos);
} }
} }

View File

@ -25,6 +25,15 @@ public class CheckOptionsbean {
private String nameJoinByCheckItemId; private String nameJoinByCheckItemId;
private String summaryJoinByCheckItemId; private String summaryJoinByCheckItemId;
private String typeJoinByCheckItemId; private String typeJoinByCheckItemId;
private int type;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getIndustryCheckItemId() { public String getIndustryCheckItemId() {
return industryCheckItemId; return industryCheckItemId;

View File

@ -39,6 +39,7 @@ public class CompanyEnterBean {
private String name;//企业名称 private String name;//企业名称
private String phone;//电话 private String phone;//电话
private String riskOperation;//风险 private String riskOperation;//风险
private String riskOperationPid;//风险父ID
private String type;//类型 private String type;//类型
private String workplace;// private String workplace;//

View File

@ -0,0 +1,193 @@
package com.sucstepsoft.txrealtimelocation.beans;
import java.io.Serializable;
import java.util.List;
/**
* 作者: adam
* 日期: 2020/4/7 - 10:43 AM
* 邮箱: itgaojian@163.com
* 描述:
*/
public class NoticeBean {
/**
* page : 1
* rows : [{"articleCategoryId":"string","articleContentId":"string","author":"string","content":"string","isPublish":0,"link":"string","publishDate":"string","sort":"string","source":"string","subTitle":"string","summary":"string","summaryJoinByArticleCategoryId":"string","title":"string","titleJoinByArticleCategoryId":"string"}]
* total : 20
*/
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 implements Serializable {
/**
* articleCategoryId : string
* articleContentId : string
* author : string
* content : string
* isPublish : 0
* link : string
* publishDate : string
* sort : string
* source : string
* subTitle : string
* summary : string
* summaryJoinByArticleCategoryId : string
* title : string
* titleJoinByArticleCategoryId : string
*/
private String articleCategoryId;
private String articleContentId;
private String author;
private String content;
private int isPublish;
private String link;
private String publishDate;
private String sort;
private String source;
private String subTitle;
private String summary;
private String summaryJoinByArticleCategoryId;
private String title;
private String titleJoinByArticleCategoryId;
public String getArticleCategoryId() {
return articleCategoryId;
}
public void setArticleCategoryId(String articleCategoryId) {
this.articleCategoryId = articleCategoryId;
}
public String getArticleContentId() {
return articleContentId;
}
public void setArticleContentId(String articleContentId) {
this.articleContentId = articleContentId;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getIsPublish() {
return isPublish;
}
public void setIsPublish(int isPublish) {
this.isPublish = isPublish;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getPublishDate() {
return publishDate;
}
public void setPublishDate(String publishDate) {
this.publishDate = publishDate;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getSubTitle() {
return subTitle;
}
public void setSubTitle(String subTitle) {
this.subTitle = subTitle;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getSummaryJoinByArticleCategoryId() {
return summaryJoinByArticleCategoryId;
}
public void setSummaryJoinByArticleCategoryId(String summaryJoinByArticleCategoryId) {
this.summaryJoinByArticleCategoryId = summaryJoinByArticleCategoryId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitleJoinByArticleCategoryId() {
return titleJoinByArticleCategoryId;
}
public void setTitleJoinByArticleCategoryId(String titleJoinByArticleCategoryId) {
this.titleJoinByArticleCategoryId = titleJoinByArticleCategoryId;
}
}
}

View File

@ -0,0 +1,154 @@
package com.sucstepsoft.txrealtimelocation.beans;
/**
* 作者: adam
* 日期: 2020/4/7 - 10:59 AM
* 邮箱: itgaojian@163.com
* 描述:
*/
public class NoticeDetailBean {
/**
* articleCategoryId : string
* articleContentId : string
* author : string
* content : string
* isPublish : 0
* link : string
* publishDate : string
* sort : string
* source : string
* subTitle : string
* summary : string
* summaryJoinByArticleCategoryId : string
* title : string
* titleJoinByArticleCategoryId : string
*/
private String articleCategoryId;
private String articleContentId;
private String author;
private String content;
private int isPublish;
private String link;
private String publishDate;
private String sort;
private String source;
private String subTitle;
private String summary;
private String summaryJoinByArticleCategoryId;
private String title;
private String titleJoinByArticleCategoryId;
public String getArticleCategoryId() {
return articleCategoryId;
}
public void setArticleCategoryId(String articleCategoryId) {
this.articleCategoryId = articleCategoryId;
}
public String getArticleContentId() {
return articleContentId;
}
public void setArticleContentId(String articleContentId) {
this.articleContentId = articleContentId;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getIsPublish() {
return isPublish;
}
public void setIsPublish(int isPublish) {
this.isPublish = isPublish;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getPublishDate() {
return publishDate;
}
public void setPublishDate(String publishDate) {
this.publishDate = publishDate;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getSubTitle() {
return subTitle;
}
public void setSubTitle(String subTitle) {
this.subTitle = subTitle;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getSummaryJoinByArticleCategoryId() {
return summaryJoinByArticleCategoryId;
}
public void setSummaryJoinByArticleCategoryId(String summaryJoinByArticleCategoryId) {
this.summaryJoinByArticleCategoryId = summaryJoinByArticleCategoryId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitleJoinByArticleCategoryId() {
return titleJoinByArticleCategoryId;
}
public void setTitleJoinByArticleCategoryId(String titleJoinByArticleCategoryId) {
this.titleJoinByArticleCategoryId = titleJoinByArticleCategoryId;
}
}

View File

@ -22,6 +22,8 @@ import com.sucstepsoft.txrealtimelocation.beans.LeaveListBean;
import com.sucstepsoft.txrealtimelocation.beans.MainNumBean; import com.sucstepsoft.txrealtimelocation.beans.MainNumBean;
import com.sucstepsoft.txrealtimelocation.beans.MineLocationBean; import com.sucstepsoft.txrealtimelocation.beans.MineLocationBean;
import com.sucstepsoft.txrealtimelocation.beans.NewsListBean; import com.sucstepsoft.txrealtimelocation.beans.NewsListBean;
import com.sucstepsoft.txrealtimelocation.beans.NoticeBean;
import com.sucstepsoft.txrealtimelocation.beans.NoticeDetailBean;
import com.sucstepsoft.txrealtimelocation.beans.PenLineBean; import com.sucstepsoft.txrealtimelocation.beans.PenLineBean;
import com.sucstepsoft.txrealtimelocation.beans.PersonBean; import com.sucstepsoft.txrealtimelocation.beans.PersonBean;
import com.sucstepsoft.txrealtimelocation.beans.SignDataBean; import com.sucstepsoft.txrealtimelocation.beans.SignDataBean;
@ -704,6 +706,20 @@ public interface LocationApiService {
//check/getcheckbyid/{checkId} //check/getcheckbyid/{checkId}
@Headers({"base_url_name:dict", "Content-Type: application/json", "Accept: application/json"}) @Headers({"base_url_name:dict", "Content-Type: application/json", "Accept: application/json"})
@GET("check/listcheckitembycheckid/{checkId}") @GET("check/listcheckitembycheckid/{checkId}")
Observable<HistoryMissionBean> getHistoryDetail(@Path("checkId") String checkId, @Header("token") String token); Observable<List<HistoryMissionBean>> getHistoryDetail(@Path("checkId") String checkId, @Header("token") String token);
//通知列表
@Headers({"base_url_name:dict", "Content-Type: application/json", "Accept: application/json"})
@GET("articlecontent/listpagearticlecontent")
Observable<NoticeBean> getNoticeListById(@Query("articleCategoryId") String typeId, @Query("page") String page, @Header("token") String token);
//根据名称搜索通知
@Headers({"base_url_name:dict", "Content-Type: application/json", "Accept: application/json"})
@GET("articlecontent/listpagearticlecontent")
Observable<NoticeBean> getNoticeListByKeyWords(@Query("articleCategoryId") String typeId, @Query("page") String page, @Query("keywords") String keyWords, @Header("token") String token);
//通知详情
@Headers({"base_url_name:dict", "Content-Type: application/json", "Accept: application/json"})
@GET("articlecontent/getarticlecontentbyid/{articleContentId}")
Observable<NoticeDetailBean> getNoticeDetailById(@Path("articleContentId") String id, @Header("token") String token);
} }

View File

@ -8,6 +8,16 @@
android:orientation="vertical" android:orientation="vertical"
tools:context=".activitys.issue.CheckOptionsActivity"> tools:context=".activitys.issue.CheckOptionsActivity">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView <android.support.v7.widget.CardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -56,10 +66,17 @@
</LinearLayout> </LinearLayout>
</android.support.v7.widget.CardView> </android.support.v7.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rlv_options" android:id="@+id/rlv_options"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:layoutManager="LinearLayoutManager" tools:layoutManager="LinearLayoutManager"
tools:listitem="@layout/item_options" /> tools:listitem="@layout/item_options" />
</LinearLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout> </LinearLayout>

View File

@ -4,88 +4,87 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white" android:background="@color/bg_gray"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <!-- <LinearLayout-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:orientation="horizontal" <!-- android:orientation="horizontal"-->
android:padding="10dp"> <!-- android:padding="10dp">-->
<EditText <!-- <EditText-->
android:id="@+id/et_law_name" <!-- android:id="@+id/et_law_name"-->
android:layout_width="0dp" <!-- android:layout_width="0dp"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:layout_weight="1" <!-- android:layout_weight="1"-->
android:background="@drawable/shp_rectangle_gray" <!-- android:background="@drawable/shp_rectangle_gray"-->
android:gravity="left" <!-- android:gravity="left"-->
android:hint="请输入法律法规名称" <!-- android:hint="请输入法律法规名称"-->
android:padding="5dp" <!-- android:padding="5dp"-->
android:textColor="@color/black" <!-- android:textColor="@color/black"-->
android:textSize="15sp" <!-- android:textSize="15sp"-->
tools:text="" /> <!-- tools:text="" />-->
<Button <!-- <Button-->
android:id="@+id/btn_search" <!-- android:id="@+id/btn_search"-->
android:layout_width="60dp" <!-- android:layout_width="60dp"-->
android:layout_height="30dp" <!-- android:layout_height="30dp"-->
android:layout_margin="0dp" <!-- android:layout_margin="0dp"-->
android:background="@drawable/sel_btn_submit" <!-- android:background="@drawable/sel_btn_submit"-->
android:padding="0dp" <!-- android:padding="0dp"-->
android:text="搜索" <!-- android:text="搜索"-->
android:textColor="@color/white" /> <!-- android:textColor="@color/white" />-->
</LinearLayout> <!-- </LinearLayout>-->
<View <!-- <View-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="1dp" <!-- android:layout_height="1dp"-->
android:layout_marginTop="5dp" <!-- android:layout_marginTop="5dp"-->
android:background="@color/gray_bg" /> <!-- android:background="@color/gray_bg" />-->
<RelativeLayout <!-- <RelativeLayout-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="match_parent" <!-- android:layout_height="match_parent"-->
android:layout_marginTop="5dp"> <!-- android:layout_marginTop="5dp">-->
<LinearLayout <!-- <LinearLayout-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:layout_centerInParent="true" <!-- android:layout_centerInParent="true"-->
android:gravity="center" <!-- android:gravity="center"-->
android:orientation="vertical"> <!-- android:orientation="vertical">-->
<ProgressBar <!-- <ProgressBar-->
android:id="@+id/pb_loading" <!-- android:id="@+id/pb_loading"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:indeterminateBehavior="repeat" <!-- android:indeterminateBehavior="repeat"-->
android:indeterminateDrawable="@drawable/anim_loading" /> <!-- android:indeterminateDrawable="@drawable/anim_loading" />-->
<ImageView <!-- <ImageView-->
android:id="@+id/iv_empty" <!-- android:id="@+id/iv_empty"-->
android:layout_width="100dp" <!-- android:layout_width="100dp"-->
android:layout_height="100dp" <!-- android:layout_height="100dp"-->
android:layout_centerInParent="true" <!-- android:layout_centerInParent="true"-->
android:background="@drawable/ic_empty_data" /> <!-- android:background="@drawable/ic_empty_data" />-->
<TextView <!-- <TextView-->
android:id="@+id/tv_error_hint" <!-- android:id="@+id/tv_error_hint"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:layout_marginTop="10dp" <!-- android:layout_marginTop="10dp"-->
android:clickable="true" <!-- android:clickable="true"-->
android:textColor="@color/black" <!-- android:textColor="@color/black"-->
tools:text="加载数据失败" /> <!-- tools:text="加载数据失败" />-->
</LinearLayout> <!-- </LinearLayout>-->
<com.jcodecraeer.xrecyclerview.XRecyclerView <com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xlv_com_lib" android:id="@+id/xlv_com_lib"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" /> android:layout_marginTop="10dp" />
</RelativeLayout>
</LinearLayout> </LinearLayout>

View File

@ -8,22 +8,27 @@
tools:background="@color/gray_bg" tools:background="@color/gray_bg"
tools:context=".activitys.notice.NoticeActivity"> tools:context=".activitys.notice.NoticeActivity">
<com.sucstepsoft.cm_utils.core.widget.xtablayout.XTabLayout <com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xtl_tabs" android:id="@+id/xlv_notice"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="wrap_content" />
android:background="@color/white"
app:xTabIndicatorColor="@color/text_blue1"
app:xTabIndicatorHeight="4dp"
app:xTabIndicatorWidth="15dp"
app:xTabMode="scrollable"
app:xTabSelectedTextColor="@color/text_blue1"
app:xTabSelectedTextSize="20sp"
app:xTabTextColor="#000"
app:xTabTextSize="15sp" />
<android.support.v4.view.ViewPager <!-- <com.sucstepsoft.cm_utils.core.widget.xtablayout.XTabLayout-->
android:id="@+id/vp_content" <!-- android:id="@+id/xtl_tabs"-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="match_parent" /> <!-- android:layout_height="50dp"-->
<!-- android:background="@color/white"-->
<!-- app:xTabIndicatorColor="@color/text_blue1"-->
<!-- app:xTabIndicatorHeight="4dp"-->
<!-- app:xTabIndicatorWidth="15dp"-->
<!-- app:xTabMode="scrollable"-->
<!-- app:xTabSelectedTextColor="@color/text_blue1"-->
<!-- app:xTabSelectedTextSize="20sp"-->
<!-- app:xTabTextColor="#000"-->
<!-- app:xTabTextSize="15sp" />-->
<!-- <android.support.v4.view.ViewPager-->
<!-- android:id="@+id/vp_content"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent" />-->
</LinearLayout> </LinearLayout>

View File

@ -17,15 +17,22 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="5dp"> android:padding="5dp">
<ImageView
android:id="@+id/iv_must"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_start_hint" />
<TextView <TextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="6" android:layout_weight="6"
android:padding="5dp"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="15sp" android:textSize="15sp"
tools:text="测试数据" /> tools:text="测试数据" />

View File

@ -54,6 +54,12 @@
tools:text="复查" /> tools:text="复查" />
</RelativeLayout> </RelativeLayout>
<TextView
android:id="@+id/tv_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="检查日期" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"

View File

@ -0,0 +1,39 @@
<?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:layout_margin="5dp"
android:background="@color/white"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/tv_options_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/black"
tools:text="检查项名称" />
<TextView
android:id="@+id/tv_options_check"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="是否存在隐患" />
<TextView
android:id="@+id/tv_day"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="整改天数" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rlv_photos"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_line_color" />
</LinearLayout>

View File

@ -17,15 +17,22 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="5dp"> android:padding="5dp">
<ImageView
android:id="@+id/iv_must"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_start_hint" />
<TextView <TextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="6" android:layout_weight="6"
android:padding="5dp"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="15sp" android:textSize="15sp"
tools:text="测试数据" /> tools:text="测试数据" />

View File

@ -59,8 +59,8 @@ ext {
gCompileSdkVersion = 28 gCompileSdkVersion = 28
gMinSdkVersion = 16 gMinSdkVersion = 16
gTargetSdkVersion = 28 gTargetSdkVersion = 28
gVersionCode = 1 gVersionCode = 3
gVersionName = '1.0.0' gVersionName = '1.0.2'
// gVersionCode=26 // gVersionCode=26
// gVersionName='1.3.0' // gVersionName='1.3.0'
//Router编译版本 //Router编译版本

View File

@ -37,11 +37,13 @@ public class PathConfig {
public static final String USER_TYPE_P = "e483f019-d971-49ac-b5fa-3314220da703"; public static final String USER_TYPE_P = "e483f019-d971-49ac-b5fa-3314220da703";
public static final String USER_TYPE_N = "bc405346-8714-4ded-89ac-9cc4d755f66a"; public static final String USER_TYPE_N = "bc405346-8714-4ded-89ac-9cc4d755f66a";
public static final String USER_TYPE_X = "25affe67-134c-4a32-ba41-64b0cfedc782"; public static final String USER_TYPE_X = "25affe67-134c-4a32-ba41-64b0cfedc782";
public static final String APP_VERSION_ID = "cc0ef7f0-de0e-4e29-8428-534ab9f2494d"; public static final String APP_VERSION_ID = "cc0ef7f0-de0e-4e29-8428-534ab9f2494d";//下载AppID
public static final String DIC_COMPANY_TYPE_ID = "612415f3-0ebb-4bc2-b713-e9fb1acc7f76";//企业类型 public static final String DIC_COMPANY_TYPE_ID = "612415f3-0ebb-4bc2-b713-e9fb1acc7f76";//企业类型
public static final String DIC_TRADE_ID = "b97630ab-45b7-45bc-a624-507d4df952ff";//管理行业 public static final String DIC_TRADE_ID = "b97630ab-45b7-45bc-a624-507d4df952ff";//管理行业
public static final String DIC_RISK_ID = "77128e8e-3e09-45b5-a48e-7a50d1b7cc32";//风险 public static final String DIC_RISK_ID = "77128e8e-3e09-45b5-a48e-7a50d1b7cc32";//风险
public static final String DIC_AREA_ID = "81583ade-5466-49aa-b7b6-c643c131ea34";//地区 public static final String DIC_AREA_ID = "81583ade-5466-49aa-b7b6-c643c131ea34";//地区
public static final String NOTICE_TYPE_ID = "94d1691f-65e6-4c82-8537-98c4a318b09e";//通知公告
public static final String LAW_TYPE_ID = "fcc6ebf0-5d0b-43f9-a89e-e3283941f25a";//政策法规
//包头坐标 109.926934,40.574501 //包头坐标 109.926934,40.574501