请假类型 假条

This commit is contained in:
itgaojian 2023-06-16 14:10:00 +08:00
parent 1f50369fbc
commit b67589ca54
16 changed files with 489 additions and 59 deletions

3
.idea/misc.xml Executable file → Normal file
View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeSettings">
<configurations>
@ -15,7 +14,7 @@
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@ -40,4 +40,12 @@
1.境外人员 字段变更
2.去除案件检查时相片必填选项
```
```
## 2023-6-16
```
> 1.4.6
1.请假 类型跟换数据字典 添加上传假条
```

View File

@ -10,8 +10,8 @@
{
"type": "SINGLE",
"filters": [],
"versionCode": 45,
"versionName": "1.4.5",
"versionCode": 46,
"versionName": "1.4.6",
"outputFile": "app-release.apk"
}
]

View File

@ -2,14 +2,12 @@ package com.sucstepsoft.realtimelocation.activitys.census.normal;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
@ -21,9 +19,6 @@ import com.sucstepsoft.cm_utils.utils.UIUtil;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.realtimelocation.R;
import com.sucstepsoft.realtimelocation.adapters.CensusPersonAdapter;
import com.sucstepsoft.realtimelocation.adapters.LeaveHistoryAdapter;
import com.sucstepsoft.realtimelocation.adapters.PersonAdapter;
import com.sucstepsoft.realtimelocation.beans.LeaveListBean;
import com.sucstepsoft.realtimelocation.beans.SuccessBean;
import com.sucstepsoft.realtimelocation.beans.person.CensusPersonBean;
import com.sucstepsoft.realtimelocation.net.LocationApiService;

View File

@ -2,9 +2,18 @@ package com.sucstepsoft.realtimelocation.activitys.mine;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.content.FileProvider;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
@ -14,19 +23,29 @@ import android.widget.TextView;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.google.gson.Gson;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.constant.TimeConstants;
import com.sucstepsoft.cm_utils.core.beans.AddPhotoBean;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.AddPhotoAdapter;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.core.widget.views.ButtomDialogView;
import com.sucstepsoft.cm_utils.utils.ProiderUtil;
import com.sucstepsoft.cm_utils.utils.TimeUtils;
import com.sucstepsoft.cm_utils.utils.ToastUtils;
import com.sucstepsoft.cm_utils.utils.UIUtil;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.realtimelocation.R;
import com.sucstepsoft.realtimelocation.activitys.common.PhotoActivity;
import com.sucstepsoft.realtimelocation.beans.BaseUserBean;
import com.sucstepsoft.realtimelocation.beans.LeavePostBean;
import com.sucstepsoft.realtimelocation.beans.SuccessBean;
import com.sucstepsoft.realtimelocation.beans.TypeListBean;
import com.sucstepsoft.realtimelocation.net.LocationApiService;
import com.sucstepsoft.realtimelocation.utils.ExceptionHandler;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
@ -36,10 +55,14 @@ import butterknife.ButterKnife;
import butterknife.Unbinder;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
public class LeaveActivity extends BaseActivity {
@ -74,8 +97,11 @@ public class LeaveActivity extends BaseActivity {
EditText mEtLeCause;
@BindView(R.id.btn_submit)
Button mBtnSubmit;
@BindView(R.id.tv_proof)
TextView mTvProof;
@BindView(R.id.rlv_photo)
RecyclerView mRlvPhoto;
private Unbinder mBind;
private String mType = "";
private String mStartTime = "";
private float mStart = 0;
private String amOrPm = "am";
@ -83,6 +109,14 @@ public class LeaveActivity extends BaseActivity {
private String mEndTime = "";
private float mCount = 0.0f;
private int startTimeAmOrPm = 0;
private List<AddPhotoBean> mPhotos = new ArrayList<>();
private AddPhotoBean mCurrentBean;
private String mPicPath;
private AddPhotoAdapter mPhotoAdapter;
private String mPhotoIds = "";//相片Id
private List<TypeListBean> mTypeList;
private OptionsPickerView<TypeListBean> mTypePicker;
private TypeListBean mSelType;
@Override
protected int setLayoutId() {
@ -102,10 +136,35 @@ public class LeaveActivity extends BaseActivity {
mTvLeEndTitle.setText(Html.fromHtml(getResources().getString(R.string.leave_end)));
mTvLeCountTitle.setText(Html.fromHtml(getResources().getString(R.string.leave_count)));
mTvLeCause.setText(Html.fromHtml(getResources().getString(R.string.leave_cause)));
mTvProof.setText(Html.fromHtml(getResources().getString(R.string.leave_proof)));
mRlLeType.setOnClickListener(v -> choosePage(1));
mRlLeStart.setOnClickListener(v -> choosePage(2));
mRlLeEnd.setOnClickListener(v -> choosePage(3));
mBtnSubmit.setOnClickListener(v -> doSubmit());
mPhotos.add(new AddPhotoBean());
mPhotoAdapter = new AddPhotoAdapter(LeaveActivity.this, mPhotos);
mRlvPhoto.setLayoutManager(new GridLayoutManager(mActivity, 4));
mRlvPhoto.setAdapter(mPhotoAdapter);
//删除上传的相片
mPhotoAdapter.addOnDeleteListener(((bean, i) -> {
mPhotoAdapter.removeItem(bean);
mPhotoIds = mPhotoIds.replace(bean.getId() + ",", "");
}));
mPhotoAdapter.addOnItemClickListener(bean -> {
if (TextUtils.isEmpty(bean.getPath())) {
//空数据
showSelectPhoto(bean);
} else {
//预览
ArrayList<String> list = new ArrayList<>();
list.add(bean.getPath());
Intent intent = new Intent();
intent.putExtra(PhotoActivity.TAG_IMGURL, list);
intent.setClass(LeaveActivity.this, PhotoActivity.class);
startActivity(intent);
}
});
setEditTextInhibitInputSpeChat(mEtLeCause);
}
@ -116,10 +175,24 @@ public class LeaveActivity extends BaseActivity {
String cause = mEtLeCause.getText().toString().trim();
LeavePostBean body = new LeavePostBean();
body.setLeaveSummary(cause);
body.setLeaveType(mType);
body.setLeaveType(mSelType.getDictId());
body.setLeaveTypeName(mSelType.getDictName());
body.setLeaveTimeLong(mCount + "");
body.setLeaveTime(mStartTime);
body.setLeaveTimeApm(amOrPm);
if (mPhotoAdapter.getData().size() >= 2) {
String ids = "";
for (int i = 0; i < mPhotoAdapter.getData().size(); i++) {
if (!TextUtils.isEmpty(mPhotoAdapter.getData().get(i).getId())) {
ids += mPhotoAdapter.getData().get(i).getId() + ",";
}
}
if (ids.endsWith(",")) {
ids = ids.substring(0, ids.length() - 1);
}
body.setLeaveImg(ids);
}
Gson gson = new Gson();
String obj = gson.toJson(body);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj);
@ -158,8 +231,179 @@ public class LeaveActivity extends BaseActivity {
}
}
/**
* 显示选择图片
*
* @param bean
*/
private void showSelectPhoto(AddPhotoBean bean) {
hideSoftKeyboard();
ButtomDialogView buttomDialogView = new ButtomDialogView.DialogBuilder(mActivity)
.setIsBackCancelable(true)
.setIscancelable(true)
.setShowLocation(Gravity.BOTTOM)
.setIsShowFile(false)
.build();
buttomDialogView.addOnChoseListener(new ButtomDialogView.OnChoseListener() {
@Override
public void choseFile() {
}
@Override
public void choseAlbum() {
mCurrentBean = bean;
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, BaseUrlApi.PHOTO_REQUEST);
buttomDialogView.dismiss();
}
@Override
public void choseShoot() {
mCurrentBean = bean;
String pathStr = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + PathConfig.CATCH_PATH;
mPicPath = pathStr + System.currentTimeMillis() + ".jpg";
File file = new File(mPicPath);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 下面这句指定调用相机拍照后的照片存储的路径
Uri uri;
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
uri = Uri.fromFile(file);
} else {
uri = FileProvider.getUriForFile(mActivity, ProiderUtil.getFileProviderName(mActivity), file);
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, BaseUrlApi.CAMERA_REQUEST);
}
@Override
public void loginOut() {
}
@Override
public void changePwd() {
}
});
buttomDialogView.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case BaseUrlApi.CAMERA_REQUEST://相机
uploadImg(mPicPath, 1);
break;
case BaseUrlApi.PHOTO_REQUEST://相册
try {
if (data == null) return;
Uri uri = data.getData();
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(uri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String srcPath = cursor.getString(column_index);
uploadImg(srcPath, 2);
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* 上传文件
*
* @param picPath
*/
private void uploadImg(String picPath, int src) {
File file = new File(picPath);
if (!file.exists()) {
showToast("图片路径错误.");
return;
}
ProgressDialog progressDialog = UIUtil.initDialog(mActivity, "正在上传...");
progressDialog.show();
String pathStr = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + PathConfig.CATCH_PATH;
Luban.with(mActivity)
.load(picPath)
.ignoreBy(100)
.setTargetDir(pathStr)
.filter(path -> !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")))
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestFile);
RetrofitManager.getInstance()
.create(LocationApiService.class)
.uploadImage(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseUserBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseUserBean baseUserBean) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.showShort("上传成功");
mPhotoIds += (baseUserBean.getData() + ",");
mCurrentBean.setId(baseUserBean.getData());
mCurrentBean.setPath(picPath);
if (mPhotos.size() < 4) {
mPhotos.add(new AddPhotoBean());
}
mPhotoAdapter.notifyDataSetChanged();
mCurrentBean = null;
}
@Override
public void onError(Throwable e) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.showShort("上传失败,请稍后重试.");
if (file.exists()) {
file.delete();
}
}
@Override
public void onComplete() {
}
});
}
@Override
public void onError(Throwable e) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.showShort("图片上传失败,请稍后重试");
}
})
.launch();
}
private boolean checkParams() {
if (TextUtils.isEmpty(mType)) {
if (mSelType == null) {
ToastUtils.showShort("请选择请假类型");
return false;
}
@ -176,6 +420,10 @@ public class LeaveActivity extends BaseActivity {
ToastUtils.showShort("请输入请假事由");
return false;
}
if (mPhotos.size() <= 1) {
ToastUtils.showShort("请上传假条");
return false;
}
return true;
}
@ -193,6 +441,52 @@ public class LeaveActivity extends BaseActivity {
}
}
/**
* 字典
*/
private void getDicListByType(String pId, int i) {
ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中...");
dialog.show();
RetrofitManager.getInstance()
.create(LocationApiService.class)
.getDictListAll(pId, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<TypeListBean>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(@NonNull List<TypeListBean> typeListBeans) {
dialog.dismiss();
if (typeListBeans.size() > 0) {
switch (i) {
case 3://请假类型
mTypeList = typeListBeans;
showTypePicker();
break;
}
} else {
ToastUtils.showShort("暂无数据");
}
}
@Override
public void onError(@NonNull Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onComplete() {
}
});
}
private void showEndPicker() {
if (TextUtils.isEmpty(mStartTime)) {
ToastUtils.showShort("请选择开始时间");
@ -348,29 +642,28 @@ public class LeaveActivity extends BaseActivity {
}
/**
* 请假类型
*/
private void showTypePicker() {
List<String> types = new ArrayList<>();
types.add("有病");
types.add("有事");
OptionsPickerView<String> mTypePicker = new OptionsPickerBuilder(LeaveActivity.this, (options1, options2, options3, v) -> {
mType = types.get(options1);
String s = types.get(options1);
switch (s) {
case "有病":
mType = "ill";
break;
case "有事":
mType = "busy";
break;
hideSoftKeyboard();
if (mTypeList != null && mTypeList.size() > 0) {
if (mTypePicker == null) {
mTypePicker = new OptionsPickerBuilder(mActivity, (o1, o2, o3, v) -> {
mSelType = mTypeList.get(o1);
mTvLeTypeContent.setText(mSelType.getDictName());
})
.setTitleText("请选择请假类型")
.setCancelColor(Color.parseColor("#1189FF"))
.setSubmitColor(Color.parseColor("#1189FF"))
.setTitleColor(Color.parseColor("#1189FF"))
.build();
mTypePicker.setPicker(mTypeList);
}
mTvLeTypeContent.setText(s);
}).setTitleText("请选择请假类型")
.setCancelColor(Color.parseColor("#1189FF"))
.setSubmitColor(Color.parseColor("#1189FF"))
.setTitleColor(Color.parseColor("#1189FF"))
.build();
mTypePicker.setPicker(types);
mTypePicker.show();
mTypePicker.show();
} else {
getDicListByType(PathConfig.DIC_LEAVE, 3);
}
}
@Override

View File

@ -1,7 +1,9 @@
package com.sucstepsoft.realtimelocation.activitys.mine;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.content.Intent;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
@ -10,23 +12,26 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.alibaba.android.arouter.exception.HandlerException;
import com.google.gson.Gson;
import com.sucstepsoft.cm_utils.core.network.response.GsonResponseHandler;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
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.BaseShowPhotoAdapter;
import com.sucstepsoft.cm_utils.utils.ToastUtils;
import com.sucstepsoft.cm_utils.utils.UIUtil;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.realtimelocation.R;
import com.sucstepsoft.realtimelocation.activitys.common.PhotoActivity;
import com.sucstepsoft.realtimelocation.beans.LeaveCheckBean;
import com.sucstepsoft.realtimelocation.beans.LeaveDetailBean;
import com.sucstepsoft.realtimelocation.beans.LeaveListBean;
import com.sucstepsoft.realtimelocation.beans.LeavePostBean;
import com.sucstepsoft.realtimelocation.beans.SuccessBean;
import com.sucstepsoft.realtimelocation.net.LocationApiService;
import com.sucstepsoft.realtimelocation.utils.ExceptionHandler;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
@ -82,6 +87,10 @@ public class LeaveDetailActivity extends BaseActivity {
TextView mTvNeiron;
@BindView(R.id.tv_le_qingren)
TextView mTvQingRen;
@BindView(R.id.rlv_photo)
RecyclerView mRlvPhoto;
@BindView(R.id.tv_hint)
TextView mTvHint;
private Unbinder mBind;
private String mType;
private LeaveDetailBean mDetailBean;
@ -219,14 +228,34 @@ public class LeaveDetailActivity extends BaseActivity {
break;
}
if (!TextUtils.isEmpty(leaveDetailBean.getLeaveType())) {
switch (leaveDetailBean.getLeaveType()) {
case "ill":
mTvLeTypeContent.setText("有病");
break;
case "busy":
mTvLeTypeContent.setText("有事");
break;
mTvLeTypeContent.setText(leaveDetailBean.getLeaveTypeName());
}
if (TextUtils.isEmpty(mDetailBean.getLeaveImg())) {
mRlvPhoto.setVisibility(View.GONE);
mTvHint.setVisibility(View.VISIBLE);
} else {
mTvHint.setVisibility(View.GONE);
mRlvPhoto.setVisibility(View.VISIBLE);
List<String> photos = new ArrayList<>();
String[] split = mDetailBean.getLeaveImg().split(",");
for (int i = 0; i < split.length; i++) {
if (!TextUtils.isEmpty(split[i])) {
photos.add(BaseUrlApi.BASE_IMG_URL + split[i]);
}
}
BaseShowPhotoAdapter adapter = new BaseShowPhotoAdapter(mActivity, photos);
mRlvPhoto.setLayoutManager(new GridLayoutManager(mActivity, 4) {
@Override
public boolean canScrollVertically() {
return false;
}
});//禁止滑动
mRlvPhoto.setAdapter(adapter);
adapter.addOnItemClickListener(url -> {
Intent intent = new Intent(LeaveDetailActivity.this, PhotoActivity.class);
intent.putExtra("imgUrls", new ArrayList<>(adapter.getData()));
startActivity(intent);
});
}
} else {
refreshView(STATE_LOAD_EMPTY);

View File

@ -48,14 +48,7 @@ public class LeaveHistoryAdapter extends BaseRecyclerAdapter<LeaveListBean.RowsB
holder.mTvCount.setText(rowsBean.getLeaveTimeLong() + "");
holder.mTvPerson.setText(rowsBean.getLeaveUserName());
if (!TextUtils.isEmpty(rowsBean.getLeaveType())) {
switch (rowsBean.getLeaveType()) {
case "ill"://有病
holder.mTvType.setText("有病");
break;
case "busy":
holder.mTvType.setText("有事");
break;
}
holder.mTvType.setText(rowsBean.getLeaveTypeName());
}
holder.mTvTime.setText(rowsBean.getLeaveTime());
switch (rowsBean.getLeaveState()) {

View File

@ -27,9 +27,27 @@ public class LeaveDetailBean {
private String leaveTime;
private String leaveTimeLong;
private String leaveType;
private String leaveTypeName;
private String leaveTimeApm;
private String leaveRefuseSummary;
private String leaveUserName;
private String leaveImg;
public String getLeaveTypeName() {
return leaveTypeName;
}
public void setLeaveTypeName(String leaveTypeName) {
this.leaveTypeName = leaveTypeName;
}
public String getLeaveImg() {
return leaveImg;
}
public void setLeaveImg(String leaveImg) {
this.leaveImg = leaveImg;
}
public String getLeaveUserName() {
return leaveUserName;

View File

@ -60,6 +60,7 @@ public class LeaveListBean {
private String leaveId;
private String leaveTime;
private String leaveType;
private String leaveTypeName;
private String leaveSummary;
private String leaveTimeLong;
private int leaveState;
@ -67,6 +68,15 @@ public class LeaveListBean {
private String approverName;
private String leaveUserName;
public String getLeaveTypeName() {
return leaveTypeName;
}
public void setLeaveTypeName(String leaveTypeName) {
this.leaveTypeName = leaveTypeName;
}
public String getLeaveUserName() {
return leaveUserName;
}

View File

@ -19,7 +19,25 @@ public class LeavePostBean {
private String leaveTime;
private String leaveTimeLong;
private String leaveType;
private String leaveTypeName;
private String leaveTimeApm;
private String leaveImg;
public String getLeaveTypeName() {
return leaveTypeName;
}
public void setLeaveTypeName(String leaveTypeName) {
this.leaveTypeName = leaveTypeName;
}
public String getLeaveImg() {
return leaveImg;
}
public void setLeaveImg(String leaveImg) {
this.leaveImg = leaveImg;
}
public String getLeaveTimeApm() {
return leaveTimeApm;

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -176,6 +175,33 @@
android:padding="5dp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/tv_proof"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:text="假条"
android:textColor="@color/black"
android:textSize="16sp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rlv_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:id="@+id/btn_submit"
android:layout_width="match_parent"

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -197,6 +196,46 @@
android:padding="5dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/white"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/tv_proof"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:text="假条"
android:textColor="@color/black"
android:textSize="16sp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="60dp">
<android.support.v7.widget.RecyclerView
android:id="@+id/rlv_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:visibility="gone" />
<TextView
android:id="@+id/tv_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="未上传假条" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_neirong"
android:layout_width="match_parent"

View File

@ -22,6 +22,7 @@
<string name="leave_end"><Data><![CDATA[<font size="16">结束时间</font><font color="#e60012" size="10"> * </font>]]></Data></string>
<string name="leave_count"><Data><![CDATA[<font size="16">请假时长</font><font color="#e60012" size="10"> * </font>]]></Data></string>
<string name="leave_cause"><Data><![CDATA[<font size="16">请假事由</font><font color="#e60012" size="10"> * </font>]]></Data></string>
<string name="leave_proof"><Data><![CDATA[<font size="16">假条</font><font color="#e60012" size="10"> * </font>]]></Data></string>
<string name="issue_appoint">下派人:%1$s</string>

View File

@ -61,8 +61,8 @@ ext {
gTargetSdkVersion = 28
// gVersionCode = 3
// gVersionName = '1.0.3'
gVersionCode=45
gVersionName='1.4.5'
gVersionCode=46
gVersionName='1.4.6'
//Router编译版本
gRouterApiVersion = '1.4.1'
gRouterCompileVersion = '1.2.2'

View File

@ -75,6 +75,7 @@ public class PathConfig {
public static final String DIC_FOUR = "6f5fc00e-dfe2-4c7a-bb7b-114d54ad6fb8";//四史
public static final String DIC_THREE = "34aefb4b-5918-4de7-a6b8-8e361f76c557";//三涉
public static final String DIC_GROUP = "b30da878-2576-4e70-8a39-4eeee5ad9983";//小组组成
public static final String DIC_LEAVE="f29299aa-0651-4346-845a-2f8bf8987778";//请假类型
public static final String DEFAULT_AREA_CODE = "0";//地区
public static final String APP_VERSION_ID = "402e60d8-8270-4bb9-8850-83d30a39a53f";/* 包头版本一 */

View File

@ -10,7 +10,7 @@ import com.sucstepsoft.cm_utils.constant.PathConfig;
public class BaseUrlApi {
public static final String IP = "http://219.147.99.164:8082/usercenter/"; /*正式统一用户*/
// public static final String IP = "http://192.168.0.15:7021/usercenter/"; /*测试统一用户*/
// public static final String IP = "http://192.168.0.15:7021/usercenter/"; /*测试统一用户*/
// public static final String IP = "http://175.24.42.217:7000/usercenter/"; /*测试统一用户*/
public static final String BASE_URL = IP;
public static final String APP_VERSION = BASE_URL + "appCmVersionManagement/getAppVersion";
@ -24,7 +24,7 @@ public class BaseUrlApi {
public static final String BASE_IP = BASE_IP_P + "servicecity/";/*网格系统*/
// public static final String BASE_IP = "http://192.168.0.109:8083/servicecity/";/*测试网格系统*/
public static final String BASE_POPULATION_IP = BASE_IP_P + "population/";/*人口系统*/
// public static final String BASE_POPULATION_IP = BASE_IP_P + ":7002/population/";/*人口系统*/
// public static final String BASE_POPULATION_IP = "http://192.168.0.15:7023/population/";/*人口系统*/
public static final String BASE_IMG_URL = BASE_IP + "route/file/downloadfile/true/";
public static final String SOCKET_IP = BASE_IP_P + "social/appws";/*SocketIP*/