gs
2024-07-08 42ea59771a54d2591df0a6dd3936dda669be99ae
会议统计接入增加,删除,修改接口
20个文件已修改
1个文件已添加
1168 ■■■■■ 已修改文件
.idea/deploymentTargetDropDown.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_meeting_approve_detail.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_meeting_detail.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_meeting_sta_detail.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_meeting.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_meeting_sta.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_operate_delete.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/pop_operate_sta.xml 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/deploymentTargetDropDown.xml
@@ -2,62 +2,11 @@
<project version="4">
  <component name="deploymentTargetDropDown">
    <value>
      <entry key="AnnualHealthStatusActivity">
      <entry key="MeetingapproveActivity">
        <State />
      </entry>
      <entry key="BaseActivity">
        <State />
      </entry>
      <entry key="FamilyMemorabiliaActivity">
        <State />
      </entry>
      <entry key="MeetingActivity">
        <State>
          <targetSelectedWithDropDown>
            <Target>
              <type value="QUICK_BOOT_TARGET" />
              <deviceKey>
                <Key>
                  <type value="VIRTUAL_DEVICE_PATH" />
                  <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" />
                </Key>
              </deviceKey>
            </Target>
          </targetSelectedWithDropDown>
          <timeTargetWasSelectedWithDropDown value="2024-04-30T04:26:21.217761800Z" />
        </State>
      </entry>
      <entry key="TextActivity">
        <State>
          <targetSelectedWithDropDown>
            <Target>
              <type value="QUICK_BOOT_TARGET" />
              <deviceKey>
                <Key>
                  <type value="VIRTUAL_DEVICE_PATH" />
                  <value value="C:\Users\home\.android\avd\Pixel_7_Pro_API_30.avd" />
                </Key>
              </deviceKey>
            </Target>
          </targetSelectedWithDropDown>
          <timeTargetWasSelectedWithDropDown value="2024-04-01T07:28:32.980539900Z" />
        </State>
      </entry>
      <entry key="app">
        <State>
          <targetSelectedWithDropDown>
            <Target>
              <type value="QUICK_BOOT_TARGET" />
              <deviceKey>
                <Key>
                  <type value="VIRTUAL_DEVICE_PATH" />
                  <value value="D:\andro\.android\avd\Resizable_Experimental_API_34.avd" />
                </Key>
              </deviceKey>
            </Target>
          </targetSelectedWithDropDown>
          <timeTargetWasSelectedWithDropDown value="2024-07-01T07:42:38.368337600Z" />
        </State>
        <State />
      </entry>
    </value>
  </component>
app/src/main/java/com/application/zhangshi_app_android/bean/MeetingBean.java
@@ -150,22 +150,11 @@
        this.connPerson = connPerson;
    }
    public String getStatu() {
//        if(statu == "0"){
//            statu = "拒绝";
//        }else if (statu == "1"){
//            statu = "同意";
//        }else{
//            statu = "待审批";
//        }
        return statu;
    }
    public void setStatu(String statu) {
        this.statu = statu;
    }
//    public MeetingBean(Integer statu) {
//        this.statu = statu;
//    }
    public String getCreateTime() {
        return createTime;
    }
@@ -185,7 +174,19 @@
        private String connPerson;
        private String connPhone;
        private String statu;
        private String createTime;
    public String getStatu() {
        return statu;
    }
    public String setStatu(String statu) {
        this.statu = statu;
        return statu;
    }
    private String createTime;
        private String conn_Phone;
        private List<String> urlList;
app/src/main/java/com/application/zhangshi_app_android/bean/MeetingapproveBean.java
@@ -10,6 +10,7 @@
        private List<String> urlList;
        private String url;
    public long getId() {
        return id;
    }
@@ -18,13 +19,7 @@
        this.id = id;
    }
    public String getStatu() {
        return statu;
    }
    public void setStatu(String statu) {
        this.statu = statu;
    }
    public List<String> getUrlList() {
        return urlList;
app/src/main/java/com/application/zhangshi_app_android/data/DataRepository.java
@@ -143,6 +143,32 @@
        return mHttpDataSource.getMeetingSta(paramsMap);
    }
    /**
     * 增加家大事记
     */
    @Override
    public Observable<ResultData<String>> addMeetingSta(MeetingStaBean meetingStaBean) {
        return mHttpDataSource.addMeetingSta(meetingStaBean);
    }
    /**
     * 删除家大事记
     */
    @Override
    public Observable<ResultData<String>> deleteMeetingSta(String ids) {
        return mHttpDataSource.deleteMeetingSta(ids);
    }
    /**
     *更新家大事记
     */
    @Override
    public Observable<ResultData<String>> updateMeetingSta(MeetingStaBean meetingStaBean) {
        return mHttpDataSource.updateMeetingSta(meetingStaBean);
    }
    @Override
    public Observable<ResultData<PageResponseBean<MeetingBean>>> getMeeting(Map<String,Object> paramsMap) {
        return mHttpDataSource.getMeeting(paramsMap);
@@ -173,8 +199,8 @@
    @Override
    public Observable<ResultData<String>> approveMeeting(Integer id,Integer statu) {
        return mHttpDataSource.approveMeeting(id,statu);
    public Observable<ResultData<String>> approveMeeting(Integer statu) {
        return mHttpDataSource.approveMeeting(statu);
    }
app/src/main/java/com/application/zhangshi_app_android/data/source/HttpDataSource.java
@@ -93,7 +93,7 @@
    Observable<ResultData<String>> updateMeeting(MeetingBean meetingBean);
    Observable<ResultData<String>> approveMeeting(Integer id, Integer statu);
    Observable<ResultData<String>> approveMeeting(Integer statu);
    /**
     * 删除家大事记
@@ -484,6 +484,11 @@
     */
    Observable<ResultData<String>> addExaminationInfo(ExaminationInfoBean examinationInfoBean);
    Observable<ResultData<String>> updateMeetingSta(MeetingStaBean meetingStaBean);
    Observable<ResultData<String>> deleteMeetingSta(String ids);
    Observable<ResultData<String>> addMeetingSta(MeetingStaBean meetingStaBean);
}
app/src/main/java/com/application/zhangshi_app_android/data/source/http/ApiService.java
@@ -127,10 +127,30 @@
    Observable<ResultData<String>> updateMeeting(@Body MeetingBean meetingBean);
    @PUT("/zMeetingRatify")
    Observable<ResultData<String>> approveMeeting(@Body Integer id,Integer statu);
    Observable<ResultData<String>> approveMeeting(@Body Integer statu);
    @GET("/zMeetingStatistic/all")
    Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(@QueryMap Map<String,Object> paramsMap);
    /**
     * 增加家大事记
     */
    @POST("/zMeetingStatistic")
    Observable<ResultData<String>> addMeetingSta(@Body MeetingStaBean meetingStaBean);
    /**
     * 删除家大事记
     */
    @DELETE("/zMeetingStatistic/{ids}")
    Observable<ResultData<String>> deleteMeetingSta(@Path("ids") String ids);
    /**
     * 修改家大事记
     */
    @PUT("/zMeetingStatistic")
    Observable<ResultData<String>> updateMeetingSta(@Body MeetingStaBean meetingStaBean);
//直播申请
    @POST("/zLiveStreaming")
@@ -635,4 +655,5 @@
    @POST("/physcial")
    Observable<ResultData<String>> addExaminationInfo(@Body ExaminationInfoBean examinationInfoBean);
}
app/src/main/java/com/application/zhangshi_app_android/data/source/http/HttpDataSourceImpl.java
@@ -131,6 +131,29 @@
    public Observable<ResultData<PageResponseBean<MeetingStaBean>>> getMeetingSta(Map<String,Object> paramsMap) {
        return apiService.getMeetingSta(paramsMap);
    }
    public Observable<ResultData<String >> addMeetingSta(MeetingStaBean meetingStaBean){
        return apiService.addMeetingSta(meetingStaBean);
    }
    /**
     * 删除家大事记
     */
    @Override
    public Observable<ResultData<String>> deleteMeetingSta(String ids) {
        return apiService.deleteMeetingSta(ids);
    }
    /**
     * 修改家大事记
     */
    @Override
    public Observable<ResultData<String>> updateMeetingSta(MeetingStaBean meetingStaBean) {
        return apiService.updateMeetingSta(meetingStaBean);
    }
    /**
     * 获取家大事记
     */
@@ -165,8 +188,8 @@
    @Override
    public Observable<ResultData<String>> approveMeeting(Integer id, Integer statu) {
        return apiService.approveMeeting(id,statu);
    public Observable<ResultData<String>> approveMeeting(Integer statu) {
        return apiService.approveMeeting(statu);
    }
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivity.java
@@ -1,10 +1,15 @@
package com.application.zhangshi_app_android.ui.function;
import android.content.Intent;
import android.view.View;
import android.widget.PopupWindow;
import androidx.lifecycle.Observer;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.base.dialog.BaseDialog;
import com.android.app_base.base.dialog.UIDialog;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.utils.rxbus.RxBus;
import com.android.app_base.widget.LinearItemDecoration;
@@ -66,12 +71,10 @@
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
        //右上角操作弹窗
        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_sta,null));
        setOnClickListener(
//                mOperatePopupWindow.getContentView().findViewById(R.id.tv_add),
//                mOperatePopupWindow.getContentView().findViewById(R.id.tv_select),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_add),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_select),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top)
        );
//        //点击放大镜按钮显示出搜索框
@@ -102,14 +105,14 @@
//            binding.tvTitle.setText("搜索结果");
//            hideSoftKeyboard();
//        });
        //点击添加按钮跳转到创建家大事记页面
//        点击添加按钮跳转到创建家大事记页面
//        binding.fabAdd.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                AppManager.getAppManager().startActivity(new Intent(getSelfActivity(), MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
//            }
//        });
//
//        binding.etStartTime.addTextChangedListener(new TextWatcher() {
//            @Override
//            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -291,23 +294,23 @@
                });
                adapter.setCheckable(true);
            }
//            else if (integer == 2){
//                binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
//                binding.ivOperate.setOnClickListener(v -> {
//                    new UIDialog.Builder(this)
//                            .setTitle("您确定要删除选中的项目吗")
//                            .setContent("项目删除后将无法恢复")
//                            .setConfirm("确定")
//                            .setCancel("取消")
//                            .setListener(new UIDialog.OnListener() {
//                                @Override
//                                public void onConfirm(BaseDialog dialog) {
//                                    viewModel.deleteCheckList();
//                                }
//                            })
//                            .show();
//                });
//            }
            else if (integer == 2){
                binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white);
                binding.ivOperate.setOnClickListener(v -> {
                    new UIDialog.Builder(this)
                            .setTitle("您确定要删除选中的项目吗")
                            .setContent("项目删除后将无法恢复")
                            .setConfirm("确定")
                            .setCancel("取消")
                            .setListener(new UIDialog.OnListener() {
                                @Override
                                public void onConfirm(BaseDialog dialog) {
                                    viewModel.deleteCheckList();
                                }
                            })
                            .show();
                });
            }
        });
        viewModel.getFinishDeleteListLiveData().observe(this, beans -> {
            for (MeetingStaBean bean : beans) {
@@ -344,25 +347,28 @@
        binding.refreshLayout.finishLoadMore();
    }
//    @Override
//    public void onClick(View v) {
//        int id = v.getId();
//        if (id == R.id.tv_add){
//            AppManager.getAppManager().startActivity(new Intent(this, MeetingDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
//        }else if (id == R.id.tv_select){
//            viewModel.getOperateTypeLiveData().postValue(1);
//            mOperatePopupWindow.dismiss();
//        } else if (id == R.id.tv_from_new_to_old) {
    @Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.tv_add){
            AppManager.getAppManager().startActivity(new Intent(this, MeetingStaDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
        }else if (id == R.id.tv_select){
            viewModel.getOperateTypeLiveData().postValue(1);
            mOperatePopupWindow.dismiss();
        }
//        else if (id == R.id.tv_from_new_to_old) {
//            viewModel.changeOrder(true);
//            mOperatePopupWindow.dismiss();
//        } else if (id == R.id.tv_from_old_to_new) {
//        }
//        else if (id == R.id.tv_from_old_to_new) {
//            viewModel.changeOrder(false);
//            mOperatePopupWindow.dismiss();
//        } else if (id == R.id.tv_own_top) {
//            viewModel.ownTop();
//            mOperatePopupWindow.dismiss();
//        }
//    }
        else if (id == R.id.tv_own_top) {
            viewModel.ownTop();
            mOperatePopupWindow.dismiss();
        }
    }
    @Override
    protected void onDestroy() {
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaActivityViewModel.java
@@ -171,79 +171,79 @@
    /**
     * 删除家大事记
     */
//    public void deleteCheckList() {
//        List<MeetingBean> deleteList = getCheckListLiveData().getValue();
//        if (deleteList == null){
//            return;
//        }
//        StringBuffer sb = new StringBuffer();
//        deleteList.forEach(MeetingBean -> sb.append(MeetingBean.getId()).append(","));
//        sb.deleteCharAt(sb.length()-1);
//        model.deleteMeeting(sb.toString())
//                .compose(RxUtils.schedulersTransformer())
//                .subscribe(new Observer<ResultData<String>>() {
//                    @Override
//                    public void onSubscribe(Disposable d) {
//                        addSubscribe(d);
//                    }
//
//                    @Override
//                    public void onNext(ResultData<String> stringResultData) {
//                        if (stringResultData.getCode() == CODE_SUCCESS){
//                            messageLiveData.postValue("删除成功");
//                            finishDeleteListLiveData.postValue(checkListLiveData.getValue());
//                            getCheckListLiveData().postValue(new ArrayList<>());
//                        }else {
//                            messageLiveData.postValue(stringResultData.getMsg());
//                        }
//                    }
//
//                    @Override
//                    public void onError(Throwable e) {
//                        messageLiveData.postValue(e.getMessage());
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
//    }
    public void deleteCheckList() {
        List<MeetingStaBean> deleteList = getCheckListLiveData().getValue();
        if (deleteList == null){
            return;
        }
        StringBuffer sb = new StringBuffer();
        deleteList.forEach(MeetingStaBean -> sb.append(MeetingStaBean.getId()).append(","));
        sb.deleteCharAt(sb.length()-1);
        model.deleteMeetingSta(sb.toString())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<String> stringResultData) {
                        if (stringResultData.getCode() == CODE_SUCCESS){
                            messageLiveData.postValue("删除成功");
                            finishDeleteListLiveData.postValue(checkListLiveData.getValue());
                            getCheckListLiveData().postValue(new ArrayList<>());
                        }else {
                            messageLiveData.postValue(stringResultData.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    /**
     * 删除单个数据
     */
//    public void deleteItem(MeetingBean bean) {
//        model.deleteMeeting(String.valueOf(bean.getId()))
//                .compose(RxUtils.schedulersTransformer())
//                .subscribe(new Observer<ResultData<String>>() {
//                    @Override
//                    public void onSubscribe(Disposable d) {
//                        addSubscribe(d);
//                    }
//
//                    @Override
//                    public void onNext(ResultData<String> stringResultData) {
//                        if (stringResultData.getCode() == CODE_SUCCESS){
//                            List<MeetingStaBean> list = new ArrayList<>();
//                            list.add(bean);
//                            finishDeleteListLiveData.postValue(list);
//                            messageLiveData.postValue("删除成功");
//                        }else {
//                            messageLiveData.postValue(stringResultData.getMsg());
//                        }
//                    }
//
//                    @Override
//                    public void onError(Throwable e) {
//                        messageLiveData.postValue(e.getMessage());
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
//    }
    public void deleteItem(MeetingStaBean bean) {
        model.deleteMeetingSta(String.valueOf(bean.getId()))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<String> stringResultData) {
                        if (stringResultData.getCode() == CODE_SUCCESS){
                            List<MeetingStaBean> list = new ArrayList<>();
                            list.add(bean);
                            finishDeleteListLiveData.postValue(list);
                            messageLiveData.postValue("删除成功");
                        }else {
                            messageLiveData.postValue(stringResultData.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public MutableLiveData<List<MeetingStaBean>> getCheckListLiveData() {
        if (checkListLiveData==null){
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivity.java
@@ -1,24 +1,48 @@
package com.application.zhangshi_app_android.ui.function;
import android.app.Activity;
import android.content.ClipData;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.PopupWindow;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.lifecycle.MutableLiveData;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.app_base.base.BaseConfig;
import com.android.app_base.base.adapter.BaseRVAdapter;
import com.android.app_base.base.dialog.BaseDialog;
import com.android.app_base.base.dialog.WaitDialog;
import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.GetFilePathFromUri;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.utils.Utils;
import com.application.zhangshi_app_android.BR;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter;
import com.application.zhangshi_app_android.bean.MeetingStaBean;
import com.application.zhangshi_app_android.databinding.ActivityMeetingDetailBinding;
import com.application.zhangshi_app_android.databinding.ActivityMeetingStaDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import com.github.gzuliyujiang.wheelpicker.DatePicker;
import com.github.gzuliyujiang.wheelpicker.OptionPicker;
import com.github.gzuliyujiang.wheelpicker.TimePicker;
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener;
import com.github.gzuliyujiang.wheelpicker.contract.OnTimePickedListener;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
/**
@@ -60,112 +84,178 @@
    public void initView() {
        adapter = new ElectronicFileAddAdapter(this);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
//        binding.rvImage.setLayoutManager(gridLayoutManager);
//        binding.rvImage.setNestedScrollingEnabled(false);
//           adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() {
//        adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() {
//            @Override
//            public void onChildClick(RecyclerView recyclerView, View childView, int position) {
//                MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
//                if (bean !=null){
//                    List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
//                    urlList.remove(adapter.getItem(position));
//                    bean.setUrl(Utils.appendList2String(urlList,","));
//                }
//                adapter.removeItem(position);
//                viewModel.getBeanLiveData().setValue(bean);
//            }
//        });
//        binding.rvImage.setAdapter(adapter);
//        if (type == 1){
//            viewModel.getTypeLiveData().setValue(true);
//            binding.titleBar.setTitle("新增家大事记");
//            binding.ivOperate.setOnClickListener(v -> {
//                viewModel.add();
//            });
//        }else if (type == 0){
//            popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null));
//            popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    viewModel.getTypeLiveData().postValue(true);
//                    popupWindow.dismiss();
//                }
//            });
//            viewModel.getTypeLiveData().postValue(false);
//        }else if (type == 2){
//            viewModel.getTypeLiveData().postValue(true);
//            public void onItemClick(View v, int position) {
//
//            }
//
//            @Override
////            public void onAddClick() {
////                OptionPicker picker = getOptionPicker(Arrays.asList("图片视频","其他文件"));
////                picker.setTitle("选择文件类型");
////                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
////                    @Override
////                    public void onOptionPicked(int position, Object item) {
////                        if (item.equals("图片视频")) {
////                            UserManager.getInstance().selectImage(getSelfActivity(), 0,9, new OnResultCallbackListener<LocalMedia>() {
////                                @Override
////                                public void onResult(ArrayList<LocalMedia> result) {
////                                    if (result.size() == 0) return;
////                                    for (LocalMedia media : result) {
////                                        String path = media.getRealPath();
////                                        if (path!=null){
////                                            viewModel.addUploadFile(path);
////                                            MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
////                                            if (bean !=null){
////                                                List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
////                                                urlList.add(path);
////                                                bean.setUrl(Utils.appendList2String(urlList,","));
////                                            }
////                                            viewModel.getBeanLiveData().setValue(bean);
////                                        }
////                                    }
////                                }
////                                @Override
////                                public void onCancel() {
////
////                                }
////                            });
////                        }else {
////                            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
//////                            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
////                            intent.setType("*/*"); // 限制文件类型
////                            intent.addCategory(Intent.CATEGORY_OPENABLE); // 添加 CATEGORY_OPENABLE 分类,告诉系统要选择的内容可以被打开,这样系统会过滤掉不能被应用打开的文件,以提供更好的用户体验。
////                            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 允许多选
////                            activityResultLauncher.launch(intent);
////                        }
////                    }
////                });
////                picker.show();
////
////            }
//        });
        adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() {
            @Override
            public void onChildClick(RecyclerView recyclerView, View childView, int position) {
                MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
                if (bean !=null){
                    List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
                    urlList.remove(adapter.getItem(position));
                    bean.setUrl(Utils.appendList2String(urlList,","));
                }
                adapter.removeItem(position);
                viewModel.getBeanLiveData().setValue(bean);
            }
        });
//        binding.rvImage.setAdapter(adapter);
        if (type == 1){
            viewModel.getTypeLiveData().setValue(true);
            binding.titleBar.setTitle("新增家大事记");
            binding.ivOperate.setOnClickListener(v -> {
                viewModel.add();
            });
        }else if (type == 0){
            popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null));
            popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    viewModel.getTypeLiveData().postValue(true);
                    popupWindow.dismiss();
                }
            });
            viewModel.getTypeLiveData().postValue(false);
        }else if (type == 2){
            viewModel.getTypeLiveData().postValue(true);
        }
        // 显示日期选择器和时间选择器的方法
//        public void showDateTimePicker() {
//            DatePickerDialog pickerDialog = new DatePickerDialog(this, (view, year, monthOfYear, dayOfMonth) -> {
//                TimePickerDialog timePickerDialog = new TimePickerDialog(this, (view1, hourOfDay, minute) -> {
//                    String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, monthOfYear + 1, dayOfMonth);
//                    String time = String.format(Locale.CHINA, "%02d:%02d", hourOfDay, minute);
//                    String starttime = date + " " + time;
//                    binding.etStartTime.setText(starttime);
//                }, 0, 0, true);
//                timePickerDialog.setTitle("选择时间");
//                timePickerDialog.show();
//            }, Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
//            pickerDialog.setTitle("选择日期");
//            pickerDialog.show();
//        }
//        binding.etDate1.setOnClickListener(new View.OnClickListener() {
//        binding.etStartTime.setOnClickListener(new View.OnClickListener() {
//            private String datee;
//            private String timee;
//
//            @Override
//            public void onClick(View v) {
//                DatePicker picker = getDatePicker();
//                picker.setTitle("选择时间");
//                TimePicker picker2 = getTimePicker();
//                picker.setTitle("选择日期");
//                picker2.setTitle("选择时间");
//                picker.setOnDatePickedListener(new OnDatePickedListener() {
//                    @Override
//                    public void onDatePicked(int year, int month, int day) {
//                        String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day);
//                        binding.etDate1.setText(date);
//                        datee = date;
//
//                        // 在日期选择后显示时间选择器
//                        picker2.show();
//                    }
//                });
//                picker.show();
//                picker2.setOnTimePickedListener(new OnTimePickedListener() {
//                    @Override
//                    public void onTimePicked(int hour, int minute, int second) {
//                        String time = String.format(Locale.CHINA, "%d:%02d:%02d", hour, minute, second);
//                        timee = time;
//
//                        // 合并日期和时间并设置到编辑框
//                        String starttime = datee + " " + timee;
//                        binding.etStartTime.setText(starttime);
//                    }
//                });
//            }
//        });
//        binding.etDate2.setOnClickListener(new View.OnClickListener() {
//        binding.etEndTime.setOnClickListener(new View.OnClickListener() {
//            private String datee;
//            private String timee;
//
//            @Override
//            public void onClick(View v) {
//                DatePicker picker = getDatePicker();
//                picker.setTitle("选择时间");
//                TimePicker picker2 = getTimePicker();
//                picker.setTitle("选择日期");
//                picker2.setTitle("选择时间");
//                picker.setOnDatePickedListener(new OnDatePickedListener() {
//                    @Override
//                    public void onDatePicked(int year, int month, int day) {
//                        String date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, day);
//                        binding.etDate2.setText(date);
//                    }
//                });
//                picker.show();
//            }
//        });
//        binding.etTime1.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                TimePicker picker = getTimePicker();
//                picker.setTitle("选择时间");
//                picker.setOnTimePickedListener(new OnTimePickedListener() {
//                        datee = date;
//
//                        // 在日期选择后显示时间选择器
//                        picker2.show();
//                    }
//                });
//                picker.show();
//                picker2.setOnTimePickedListener(new OnTimePickedListener() {
//                    @Override
//                    public void onTimePicked(int hour, int minute, int second) {
//                        String time = String.format(Locale.CHINA, "%d:%02d:%02d", hour, minute, second);
//                        timee = time;
//
//                    public void onTimePicked(int hour, int Minute,int second) {
////                        second = '0';
//                        String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second);
//                        binding.etTime1.setText(date);
//                        // 合并日期和时间并设置到编辑框
//                        String endtime = datee + " " + timee;
//                        binding.etEndTime.setText(endtime);
//                    }
//                });
//                picker.show();
//            }
//        });
//        binding.etTime2.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                TimePicker picker = getTimePicker();
//                picker.setTitle("选择时间");
//                picker.setOnTimePickedListener(new OnTimePickedListener() {
//                    @Override
//                    public void onTimePicked(int hour, int Minute, int second) {
//                        String date = String.format(Locale.CHINA, "%d:%02d:%02d",hour,Minute,second );
//                        binding.etTime2.setText(date);
//                    }
//                });
//                picker.show();
//            }
//        });
@@ -173,51 +263,50 @@
//        activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
//            @Override
//            public void onActivityResult(ActivityResult result) {
//                if (result.getResultCode() == Activity.RESULT_OK) {
//                    if (result.getData() == null){
//                        return;
//                    }
//                    // 获取选中的多个文件的 URI
//                    ClipData clipData = result.getData().getClipData();
//                    if (clipData != null) {
//                        int itemCount = clipData.getItemCount();
//                        for (int i = 0; i < itemCount; i++) {
//                            Uri uri = clipData.getItemAt(i).getUri();
//                            // 使用选中的文件 URI 进行后续操作,比如读取文件内容等
//                            String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri);
//                            if (path!=null){
//                                viewModel.addUploadFile(path);
//                                MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
//                                if (bean !=null){
//                                    List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
//                                    urlList.add(path);
//                                    bean.setUrl(Utils.appendList2String(urlList,","));
//                                }
//                                viewModel.getBeanLiveData().setValue(bean);
//                            }
//                        }
//                    }else {
//                        // 获取选中的单个文件的 URI
//                        Uri selectedFileUri = result.getData().getData();
//                        String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri);
//                        if (path!=null){
//                            viewModel.addUploadFile(path);
//                            MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
//                            if (bean !=null){
//                                List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
//                                urlList.add(path);
//                                bean.setUrl(Utils.appendList2String(urlList,","));
//                            }
//                            viewModel.getBeanLiveData().setValue(bean);
//                        }
//                    }
//                }
//            }
//        });
        activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if (result.getResultCode() == Activity.RESULT_OK) {
                    if (result.getData() == null){
                        return;
                    }
                    // 获取选中的多个文件的 URI
                    ClipData clipData = result.getData().getClipData();
                    if (clipData != null) {
                        int itemCount = clipData.getItemCount();
                        for (int i = 0; i < itemCount; i++) {
                            Uri uri = clipData.getItemAt(i).getUri();
                            // 使用选中的文件 URI 进行后续操作,比如读取文件内容等
                            String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),uri);
                            if (path!=null){
                                viewModel.addUploadFile(path);
                                MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
                                if (bean !=null){
                                    List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
                                    urlList.add(path);
                                    bean.setUrl(Utils.appendList2String(urlList,","));
                                }
                                viewModel.getBeanLiveData().setValue(bean);
                            }
                        }
                    }else {
                        // 获取选中的单个文件的 URI
                        Uri selectedFileUri = result.getData().getData();
                        String path = GetFilePathFromUri.getFileAbsolutePath(getSelfActivity(),selectedFileUri);
                        if (path!=null){
                            viewModel.addUploadFile(path);
                            MeetingStaBean bean = viewModel.getBeanLiveData().getValue();
                            if (bean !=null){
                                List<String> urlList = Utils.splitString2List(bean.getUrl(),",");
                                urlList.add(path);
                                bean.setUrl(Utils.appendList2String(urlList,","));
                            }
                            viewModel.getBeanLiveData().setValue(bean);
                        }
                    }
                }
            }
        });
    }
@@ -236,25 +325,25 @@
                adapter.setData(urlList);
            }
        });
//        viewModel.getTypeLiveData().observe(this,operateType -> {
//            if (operateType){
//                if (type == 1) {
//                    binding.ivOperate.setOnClickListener(v -> {
//                        viewModel.add();
//                    });
//                }else {
//                    binding.ivOperate.setOnClickListener(v -> {
//                        viewModel.update();
//                    });
//                }
//                setIsEdited(true);
//            }else {
//                binding.ivOperate.setOnClickListener(v -> {
//                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
//                });
//                setIsEdited(false);
//            }
//        });
        viewModel.getTypeLiveData().observe(this,operateType -> {
            if (operateType){
                if (type == 1) {
                    binding.ivOperate.setOnClickListener(v -> {
                        viewModel.add();
                    });
                }else {
                    binding.ivOperate.setOnClickListener(v -> {
                        viewModel.update();
                    });
                }
                setIsEdited(true);
            }else {
                binding.ivOperate.setOnClickListener(v -> {
                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
                });
                setIsEdited(false);
            }
        });
    }
    public void setIsEdited(boolean isEdited){
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingStaDetailActivityViewModel.java
@@ -1,26 +1,43 @@
package com.application.zhangshi_app_android.ui.function;
import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.android.app_base.base.StateViewEnum;
import com.android.app_base.base.viewmodel.BaseViewModel;
import com.android.app_base.http.ResultData;
import com.android.app_base.manager.AppManager;
import com.android.app_base.utils.RxUtils;
import com.android.app_base.utils.rxbus.RxBus;
import com.application.zhangshi_app_android.bean.MeetingStaBean;
import com.application.zhangshi_app_android.bean.MeetingStaBean;
import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Ljj
 * @date 2023.04.21. 21:16
 * @desc
 */
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
public class MeetingStaDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<MeetingStaBean> beanLiveData;
    private MutableLiveData<List<MeetingStaBean>> meetingStaListLiveData;
    private MutableLiveData<Boolean> typeLiveData;//true 编辑状态 false 展示状态
    private final List<String> uploadFileList = new ArrayList<>();//需要上传的文件列表
    public MeetingStaDetailActivityViewModel(@NonNull Application application) {
        super(application);
    }
@@ -31,44 +48,125 @@
    }
    /**
     * 获取备忘录
     * 增加家大事记
     */
//    public void getMeetingSta() {
//        if (beanLiveData.getValue() == null) {
//            return;
//        }
//
//        model.getMeetingSta(getBeanLiveData().getValue().toMap())
//                .compose(RxUtils.schedulersTransformer())
//                .subscribe(new Observer<ResultData<List<MeetingStaBean>>>() {
//                    @Override
//                    public void onSubscribe(Disposable d) {
//                        addSubscribe(d);
//                    }
//
//                    @Override
//                    public void onNext(ResultData<List<MeetingStaBean>> data) {
//                        if (data.getCode() == CODE_SUCCESS){
//                            meetingStaListLiveData.postValue(data.getData());
//                        }else {
//                            messageLiveData.postValue(data.getMsg());
//                        }
//                    }
//
//                    @Override
//                    public void onError(Throwable e) {
//                        messageLiveData.postValue(e.getMessage());
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
//    }
    public void add() {
        model.addMeetingSta(beanLiveData.getValue())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<String> stringResultData) {
                        if (stringResultData.getCode() == CODE_SUCCESS) {
                            AppManager.getAppManager().finishCurrentActivity();
                            RxBus.getInstance().post(beanLiveData.getValue());
                            messageLiveData.postValue("添加成功");
                        } else {
                            messageLiveData.postValue(stringResultData.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    /**
     * 删除家大事记
     */
    public void delete() {
        model.deleteMeetingSta(String.valueOf(beanLiveData.getValue().getId()))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<String> stringResultData) {
                        if (stringResultData.getCode() == CODE_SUCCESS){
                            AppManager.getAppManager().finishCurrentActivity();
                            RxBus.getInstance().post(beanLiveData.getValue());
                            messageLiveData.postValue("删除成功");
                        }else {
                            messageLiveData.postValue(stringResultData.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    /**
     * 编辑家大事记
     */
    public void update() {
        model.updateMeetingSta(beanLiveData.getValue())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        addSubscribe(d);
                    }
                    @Override
                    public void onNext(ResultData<String> stringResultData) {
                        if (stringResultData.getCode() == CODE_SUCCESS){
                            AppManager.getAppManager().finishCurrentActivity();
                            RxBus.getInstance().post(beanLiveData.getValue());
                            messageLiveData.postValue("修改成功");
                        }else {
                            messageLiveData.postValue(stringResultData.getMsg());
                        }
                    }
                    @Override
                    public void onError(Throwable e) {
                        messageLiveData.postValue(e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public MutableLiveData<MeetingStaBean> getBeanLiveData() {
        if (beanLiveData == null) {
        if (beanLiveData == null){
            beanLiveData = new MutableLiveData<>();
        }
        if (beanLiveData.getValue() == null){
            beanLiveData.setValue(new MeetingStaBean());
        }
        return beanLiveData;
    }
@@ -77,14 +175,24 @@
        this.beanLiveData = beanLiveData;
    }
    public MutableLiveData<List<MeetingStaBean>> getMeetingStaListLiveData() {
        if (meetingStaListLiveData == null){
            meetingStaListLiveData = new MutableLiveData<>();
    public MutableLiveData<Boolean> getTypeLiveData() {
        if (typeLiveData == null){
            typeLiveData = new MutableLiveData<>();
        }
        return meetingStaListLiveData;
        return typeLiveData;
    }
    public void setMeetingStaListLiveData(MutableLiveData<List<MeetingStaBean>> meetingStaListLiveData) {
        this.meetingStaListLiveData = meetingStaListLiveData;
    public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) {
        this.typeLiveData = typeLiveData;
    }
    public List<String> getUploadFileList() {
        return uploadFileList;
    }
    public void addUploadFile(String url) {
        uploadFileList.add(url);
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveActivity.java
@@ -32,7 +32,7 @@
/**
 * @author Ljj
 * @date 2023.03.18. 10:00
 * @desc 家大事记 Activity
 * @desc 会议审批 Activity
 */
public class MeetingapproveActivity extends DLBaseActivity<ActivityMeetingApproveBinding,MeetingapproveActivityViewModel>{
@@ -80,8 +80,6 @@
        //右上角操作弹窗
        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_read,null));
        setOnClickListener(
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_add),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_select),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new),
                mOperatePopupWindow.getContentView().findViewById(R.id.tv_own_top)
@@ -114,7 +112,7 @@
            binding.tvTitle.setText("搜索结果");
            hideSoftKeyboard();
        });
        //点击添加按钮跳转到创建家大事记页面
        //点击添加按钮跳转到创建会议审批页面
        binding.fabAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -325,7 +323,7 @@
                adapter.removeItem(bean);
            }
        });
        //观察家大事记数据的变化,有变化包括添加、修改、删除都会发送消息,接收到消息后重新获取数据
        //观察会议审批数据的变化,有变化包括添加、修改、删除都会发送消息,接收到消息后重新获取数据
        RxBus.getInstance().toObservable(this, MeetingBean.class)
                .subscribe(bean -> {
                    viewModel.getMeeting();
@@ -358,12 +356,7 @@
    @Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.tv_add){
            AppManager.getAppManager().startActivity(new Intent(this, MeetingapproveDetailActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1));
        }else if (id == R.id.tv_select){
            viewModel.getOperateTypeLiveData().postValue(1);
            mOperatePopupWindow.dismiss();
        } else if (id == R.id.tv_from_new_to_old) {
        if (id == R.id.tv_from_new_to_old) {
            viewModel.changeOrder(true);
            mOperatePopupWindow.dismiss();
        } else if (id == R.id.tv_from_old_to_new) {
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivity.java
@@ -69,7 +69,7 @@
    @Override
    public void initParam() {
        type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0);
        if (type == 0 || type == 2){
        if (type == 0 ){
            MeetingBean bean = (MeetingBean) getIntent().getSerializableExtra("bean");
            if (bean !=null){
                viewModel.getBeanLiveData().setValue(bean);
@@ -151,6 +151,7 @@
        });
        binding.rvImage.setAdapter(adapter);
        popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_approve,null));
        if (type == 1){
            viewModel.getTypeLiveData().setValue(true);
            binding.titleBar.setTitle("新增家大事记");
@@ -158,7 +159,7 @@
                viewModel.add();
            });
        }else if (type == 0){
            popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_approve,null));
            popupWindow.getContentView().findViewById(R.id.tv_disagree).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
@@ -167,8 +168,10 @@
                  viewModel.getTypeLiveData().postValue(true);
                }
            });
            viewModel.getTypeLiveData().postValue(true);
            viewModel.getTypeLiveData().postValue(false);
        }
        else if (type == 2){
            popupWindow.getContentView().findViewById(R.id.tv_agreed).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
@@ -180,8 +183,6 @@
            });
            viewModel.getTypeLiveData().postValue(false);
        }else if (type == 2){
            viewModel.getTypeLiveData().postValue(true);
        }
@@ -366,17 +367,24 @@
        });
        viewModel.getTypeLiveData().observe(this,operateType -> {
            if (operateType){
                if (type == 1) {
//                if (type == 1) {
//                    binding.ivOperate.setOnClickListener(v -> {
//                        viewModel.add();
//                    });
//                }
                    if(type==0) {
                    binding.ivOperate.setOnClickListener(v -> {
                        viewModel.add();
                        viewModel.agree();
                    });
                }else {
                }else if(type==2) {
                    binding.ivOperate.setOnClickListener(v -> {
                        viewModel.update();
                        viewModel.disagree();
                    });
                }
                setIsEdited(true);
            }else {
                setIsEdited(false);
            }
            else {
                binding.ivOperate.setOnClickListener(v -> {
                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
                });
app/src/main/java/com/application/zhangshi_app_android/ui/function/MeetingapproveDetailActivityViewModel.java
@@ -5,6 +5,7 @@
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.android.app_base.base.StateViewEnum;
@@ -35,6 +36,7 @@
public class MeetingapproveDetailActivityViewModel extends BaseViewModel<DataRepository> {
    private MutableLiveData<MeetingBean> beanLiveData;
    private int numb = 1;
    private MutableLiveData<Boolean> typeLiveData;//true 编辑状态 false 展示状态
    private final List<String> uploadFileList = new ArrayList<>();//需要上传的文件列表
    public MeetingapproveDetailActivityViewModel(@NonNull Application application) {
@@ -166,7 +168,7 @@
     * 审批
     */
    public void agree() {
        model.approveMeeting(Integer.valueOf((int) beanLiveData.getValue().getId()),1)
        model.approveMeeting(Integer.valueOf(beanLiveData.getValue().setStatu("1")))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
@@ -200,7 +202,7 @@
    public void disagree() {
        model.approveMeeting(Integer.valueOf((int) beanLiveData.getValue().getId()),0)
        model.approveMeeting(Integer.valueOf(beanLiveData.getValue().setStatu("0")))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<String>>() {
                    @Override
app/src/main/res/layout/activity_meeting_approve_detail.xml
@@ -20,7 +20,7 @@
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:title="@{viewModel.beanLiveData.id==0?`会议申请详情`:viewModel.beanLiveData.title}"
            app:title="@{viewModel.beanLiveData.id==0?`会议审批详情`:viewModel.beanLiveData.title}"
            app:titleGravity="left"
            >
@@ -38,8 +38,7 @@
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}"
                    />
                    android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" />
            </FrameLayout>
        </com.android.app_base.widget.ExtendTitleBar>
app/src/main/res/layout/activity_meeting_detail.xml
@@ -4,6 +4,7 @@
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <import type="com.android.app_base.utils.StringStatus"/>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.ui.function.MeetingDetailActivityViewModel" />
@@ -309,7 +310,7 @@
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.statu}"
                    android:text="@={StringStatus.statusToText(viewModel.beanLiveData.statu)}"
                    android:enabled="@{viewModel.typeLiveData}"
                    android:clickable="false"
                    android:focusable="false"
app/src/main/res/layout/activity_meeting_sta_detail.xml
@@ -6,7 +6,7 @@
    <data>
        <variable
            name="viewModel"
            type="com.application.zhangshi_app_android.ui.function.MeetingDetailActivityViewModel" />
            type="com.application.zhangshi_app_android.ui.function.MeetingStaDetailActivityViewModel" />
    </data>
    <LinearLayout
@@ -67,13 +67,15 @@
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:hint="@{viewModel.typeLiveData?`请输入标题`:``}"
                    android:text="@={viewModel.beanLiveData.title}"
                    android:hint="@{viewModel.typeLiveData?`请输入家庭号`:``}"
                    android:text="@={viewModel.beanLiveData.familyId}"
                    android:enabled="@{viewModel.typeLiveData}"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="@dimen/dp_10"
@@ -89,8 +91,8 @@
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:hint="@{viewModel.typeLiveData?`请输入地点`:``}"
                    android:text="@={viewModel.beanLiveData.place}"
                    android:hint="@{viewModel.typeLiveData?`请输入使用时间`:``}"
                    android:text="@={viewModel.beanLiveData.useTime}"
                    android:enabled="@{viewModel.typeLiveData}"
                    />
                <TextView
@@ -109,8 +111,8 @@
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:hint="@{viewModel.typeLiveData?`请输入可容纳人数`:``}"
                    android:text="@={viewModel.beanLiveData.conPeople}"
                    android:hint="@{viewModel.typeLiveData?`请输入会议室名称`:``}"
                    android:text="@={viewModel.beanLiveData.conferenceRoom}"
                    android:enabled="@{viewModel.typeLiveData}"
                    />
                <TextView
@@ -125,11 +127,11 @@
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:hint="@{viewModel.typeLiveData ? `请输入参与人数` : ``}"
                    android:hint="@{viewModel.typeLiveData ? `请输入标题` : ``}"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.partPeople}"
                    android:text="@={viewModel.beanLiveData.title}"
                    android:enabled="@{viewModel.typeLiveData}"
                    />
                <TextView
@@ -163,11 +165,11 @@
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="text"
                    android:hint="@{viewModel.typeLiveData?`请输入申请部门或家庭`:``}"
                    android:hint="@{viewModel.typeLiveData?`请输入申请人`:``}"
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.applyApart}"
                    android:text="@={viewModel.beanLiveData.applyPerson}"
                    android:enabled="@{viewModel.typeLiveData}"
                    />
@@ -190,7 +192,7 @@
                    android:textColorHint="#6b000000"
                    android:textColor="#DE000000"
                    android:textSize="16sp"
                    android:text="@={viewModel.beanLiveData.statu}"
                    android:text="@={viewModel.beanLiveData.status}"
                    android:enabled="@{viewModel.typeLiveData}"
                    android:clickable="false"
                    android:focusable="false"
app/src/main/res/layout/item_meeting.xml
@@ -4,6 +4,7 @@
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <import type="com.android.app_base.utils.StringStatus"/>
        <variable
            name="bean"
            type="com.application.zhangshi_app_android.bean.MeetingBean" />
@@ -360,7 +361,7 @@
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@={bean.statu}"
                            android:text="@={StringStatus.statusToText(bean.statu)}"
                            android:textColor="@color/black"
                            android:textSize="12sp"
app/src/main/res/layout/item_meeting_sta.xml
@@ -199,12 +199,14 @@
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginBottom="6dp"
                        >
                        android:orientation="horizontal">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
@@ -213,6 +215,7 @@
                            android:textSize="12sp"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
@@ -222,8 +225,6 @@
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
app/src/main/res/layout/pop_operate_delete.xml
@@ -25,8 +25,7 @@
            android:text="编辑"
            android:textColor="#FF333333"
            android:textSize="12sp"
            app:drawableStartCompat="@drawable/ic_modify"
            />
            app:drawableStartCompat="@drawable/ic_modify" />
        <View
            android:layout_width="match_parent"
app/src/main/res/layout/pop_operate_sta.xml
New file
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
     app:cardBackgroundColor="?attr/popupWindowBackgroundColor"
    app:cardCornerRadius="10dp"
    app:cardElevation="0dp"
    >
    <LinearLayout
        android:layout_width="85dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        >
        <LinearLayout
            android:id="@+id/layout_add"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            >
            <TextView
                android:id="@+id/tv_add"
                android:layout_width="wrap_content"
                android:layout_height="32dp"
                android:gravity="center"
                android:text="新建"
                android:textColor="#FF333333"
                android:textSize="12sp"
                app:drawableStartCompat="@drawable/ic_operate_add"
                android:drawablePadding="5dp"
                />
            <View
                android:layout_width="match_parent"
                android:layout_height="0.3dp"
                android:background="#FF939393"
                />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/layout_select"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            >
            <TextView
                android:id="@+id/tv_select"
                android:layout_width="wrap_content"
                android:layout_height="32dp"
                android:text="选择"
                android:gravity="center"
                android:textColor="#FF333333"
                android:textSize="12sp"
                app:drawableStartCompat="@drawable/ic_operate_select"
                android:drawablePadding="5dp"
                />
            <View
                android:id="@+id/view_select_underline"
                android:layout_width="match_parent"
                android:layout_height="0.3dp"
                android:background="#FF939393"
                />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/layout_own_top"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            >
            <View
                android:layout_width="match_parent"
                android:layout_height="0.3dp"
                android:background="#FF939393"
                />
            <TextView
                android:id="@+id/tv_own_top"
                android:layout_width="wrap_content"
                android:layout_height="32dp"
                android:text="本家置顶"
                android:gravity="center"
                android:textColor="#FF333333"
                android:textSize="12sp"
                app:drawableStartCompat="@drawable/ic_operate_order"
                android:drawablePadding="3dp"
                />
        </LinearLayout>
    </LinearLayout>
</androidx.cardview.widget.CardView>