编辑排程状态

This commit is contained in:
fengjignqi
2026-05-27 15:47:23 +08:00
parent 20aaf98235
commit f7bee61a56
14 changed files with 360 additions and 32 deletions

View File

@@ -59,6 +59,11 @@ public class StatisticFragment extends BaseFragment<WaterCountFragmentLayoutBind
} }
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
}
@Override @Override
public void getPlanDetailInfo(WaterPlanWeekEntity entity) { public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
@@ -68,4 +73,14 @@ public class StatisticFragment extends BaseFragment<WaterCountFragmentLayoutBind
public void getPlanBindDeviceList(WaterDeviceEntity bean) { public void getPlanBindDeviceList(WaterDeviceEntity bean) {
} }
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override
public void deletePlanSuccess(BaseBean bean) {
}
} }

View File

@@ -93,6 +93,15 @@ public interface Request {
@POST("app/v1/addScheduleDevice") @POST("app/v1/addScheduleDevice")
Observable<BaseBean> planBindDevice(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody); Observable<BaseBean> planBindDevice(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//更新排程状态
@PUT("app/v1/editScheduleStatus")
Observable<BaseBean<WaterPlanWeekEntity>> updateScheduleStatus(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//解绑信息
@DELETE("app/v1/deleteschedule/{ids}")
Observable<BaseBean> deletePlanById(@HeaderMap Map<String,String> headMap, @Path("ids") String id);
//解绑信息 //解绑信息
@DELETE("app/v1/deleteDevice/{ids}") @DELETE("app/v1/deleteDevice/{ids}")
Observable<BaseBean> unBindDevice(@HeaderMap Map<String,String> headMap, @Path("ids") String id); Observable<BaseBean> unBindDevice(@HeaderMap Map<String,String> headMap, @Path("ids") String id);

View File

@@ -207,6 +207,11 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
} }
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
}
@Override @Override
public void getPlanDetailInfo(WaterPlanWeekEntity entity) { public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
@@ -217,5 +222,15 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
} }
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override
public void deletePlanSuccess(BaseBean bean) {
}
} }

View File

@@ -77,6 +77,7 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
selDevice += id + ","; selDevice += id + ",";
} }
selDevice = selDevice.substring(0,selDevice.length()-1); selDevice = selDevice.substring(0,selDevice.length()-1);
//提交绑定
mPresenter.planBindWithDevices(mPlanEntity,selDevice); mPresenter.planBindWithDevices(mPlanEntity,selDevice);
break; break;
} }
@@ -116,6 +117,16 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
} }
} }
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override
public void deletePlanSuccess(BaseBean bean) {
}
// private void syncSelectedDevices() { // private void syncSelectedDevices() {
// Set<Integer> selectedPositions = mAdapter.getSelectedPositions(); // Set<Integer> selectedPositions = mAdapter.getSelectedPositions();
// List<WaterPlanWeekEntity.DeviceEntity> selected = new ArrayList<>(); // List<WaterPlanWeekEntity.DeviceEntity> selected = new ArrayList<>();
@@ -164,6 +175,11 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
} }
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
}
@Override @Override
public void getPlanDetailInfo(WaterPlanWeekEntity entity) { public void getPlanDetailInfo(WaterPlanWeekEntity entity) {

View File

@@ -1,15 +1,18 @@
package com.ckkj.water.plan; package com.ckkj.water.plan;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.view.View; import android.view.View;
import com.ckkj.water.R; import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity; import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.WaterPlanDetailLayoutBinding; import com.ckkj.water.databinding.WaterPlanDetailLayoutBinding;
import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean; import com.ckkj.water.network.BaseBean;
//import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter; //import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter;
//import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter; //import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter;
import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter;
import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter; import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import com.ckkj.water.plan.mvp.WaterPlanContract; import com.ckkj.water.plan.mvp.WaterPlanContract;
@@ -32,6 +35,7 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
//查询到的排程详情 //查询到的排程详情
private WaterPlanWeekEntity mDetailEntity; private WaterPlanWeekEntity mDetailEntity;
private PlanDetailTimeAdapter mAdapter; private PlanDetailTimeAdapter mAdapter;
private PlanDetailDeviceAdapter deviceAdapter;
private List<WaterPlanWeekEntity.DetailsBean> mList = new ArrayList<>(); private List<WaterPlanWeekEntity.DetailsBean> mList = new ArrayList<>();
@Override @Override
@@ -59,14 +63,16 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
initListener(); initListener();
mAdapter = new PlanDetailTimeAdapter(R.layout.plan_detail_time_item,mList); mAdapter = new PlanDetailTimeAdapter(R.layout.plan_detail_time_item,mList);
viewBinding.rvPlanTime.setAdapter(mAdapter); viewBinding.rvPlanTime.setAdapter(mAdapter);
// PlanDetailDeviceAdapter deviceAdapter = new PlanDetailDeviceAdapter(R.layout.plan_detail_bind_device_item,entity.getDeviceList()); List<WaterDeviceEntity> deviceList = new ArrayList<>();
// viewBinding.rvBindDevices.setAdapter(deviceAdapter); deviceAdapter = new PlanDetailDeviceAdapter(R.layout.plan_detail_bind_device_item,deviceList);
viewBinding.rvBindDevices.setAdapter(deviceAdapter);
} }
private void initListener() { private void initListener() {
setClick(viewBinding.includedTitle.imgBack); setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.btnEdit); setClick(viewBinding.btnEdit);
setClick(viewBinding.btnDelete); setClick(viewBinding.btnDelete);
setClick(viewBinding.switchButton);
} }
private void setClick(View view) { private void setClick(View view) {
@@ -79,7 +85,7 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
finish(); finish();
break; break;
case R.id.btn_edit: case R.id.btn_edit://编辑
if(mDetailEntity != null){ if(mDetailEntity != null){
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putSerializable("plan_entity", mDetailEntity); bundle.putSerializable("plan_entity", mDetailEntity);
@@ -88,7 +94,45 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
} }
break; break;
case R.id.btn_delete://删除
showDialogtext(null, false, false, true,
getString(R.string.tip_text), getString(R.string.delete_plan_tip),
getString(R.string.cancel_text), getString(R.string.confirm_text), new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
mPresenter.deletePlan(mDetailEntity);
}
});
break;
case R.id.switch_button://切换状态
// 先恢复 Switch 到原始状态,避免点击时立即改变
viewBinding.switchButton.setChecked(mDetailEntity.getStatus().equals("1"));
if(mDetailEntity.getStatus().equals("1")){
showDialogtext(null, false, false, true,
getString(R.string.tip_text), getString(R.string.close_plan_dialog_tip),
getString(R.string.cancel_text), getString(R.string.confirm_text), new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
// 取消操作,恢复 Switch 状态
viewBinding.switchButton.setChecked(true);
}
@Override
public void onConfirmClick() {
// 确认关闭任务,调用接口后再更新 Switch
showLoadingDialog();
mPresenter.updatePlanStatus(mDetailEntity, "0");
}
});
}else{
// 开启任务,调用接口后再更新 Switch
mPresenter.updatePlanStatus(mDetailEntity, "1");
}
break;
} }
} }
@@ -113,9 +157,48 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
list.add(bean); list.add(bean);
} }
} }
//日期显示
if(mAdapter != null){ if(mAdapter != null){
mAdapter.setNewData(list); mAdapter.setNewData(list);
} }
//设备显示
if(deviceAdapter != null){
deviceAdapter.setNewData(entity.getDeviceIds());
}
}
/**
* 删除排程成功
* @param bean
*/
@Override
public void deletePlanSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showShort(mContext,getString(R.string.delete_plan_success));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
},500);
}
/**
* 更新排程状态成功
*
* @param bean
* @param status
*/
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
hideDialogLoading();
mDetailEntity.setStatus(status);
if(status.equals("1")){
showCenterTipDialog(R.mipmap.icon_dialog_success,"任务已开启");
viewBinding.switchButton.setChecked(true);
}else{
viewBinding.switchButton.setChecked(false);
}
} }
@Override @Override
@@ -123,6 +206,13 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
} }
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override @Override
public WaterPlanPresenter createPresenter() { public WaterPlanPresenter createPresenter() {

View File

@@ -357,6 +357,11 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
mRemoteConfigEntity = entity; mRemoteConfigEntity = entity;
} }
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
}
@Override @Override
public void getPlanDetailInfo(WaterPlanWeekEntity entity) { public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
@@ -367,6 +372,16 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
} }
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override
public void deletePlanSuccess(BaseBean bean) {
}
@Override @Override
public WaterPlanPresenter createPresenter() { public WaterPlanPresenter createPresenter() {

View File

@@ -165,6 +165,11 @@ public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, Wa
} }
@Override
public void updatePlanStatusSuccess(BaseBean bean, String status) {
}
@Override @Override
public void getPlanDetailInfo(WaterPlanWeekEntity entity) { public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
@@ -174,4 +179,14 @@ public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, Wa
public void getPlanBindDeviceList(WaterDeviceEntity bean) { public void getPlanBindDeviceList(WaterDeviceEntity bean) {
} }
@Override
public void planBindDeviceSuccess(BaseBean bean) {
}
@Override
public void deletePlanSuccess(BaseBean bean) {
}
} }

View File

@@ -1,23 +1,24 @@
//package com.ckkj.water.plan.adapter; package com.ckkj.water.plan.adapter;
//
//import androidx.annotation.Nullable; import androidx.annotation.Nullable;
//
//import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
//import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
//import com.ckkj.water.R; import com.ckkj.water.R;
//import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.index.entity.WaterDeviceEntity;
// import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
//import java.util.List;
// import java.util.List;
//public class PlanDetailDeviceAdapter extends BaseQuickAdapter<WaterPlanWeekEntity.DeviceEntity, BaseViewHolder> {
// public class PlanDetailDeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, BaseViewHolder> {
// public PlanDetailDeviceAdapter(int layoutResId, @Nullable List<WaterPlanWeekEntity.DeviceEntity> data) {
// super(layoutResId, data); public PlanDetailDeviceAdapter(int layoutResId, @Nullable List<WaterDeviceEntity> data) {
// } super(layoutResId, data);
// }
// @Override
// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) { @Override
// helper.setText(R.id.tv_device_name,item.getDeviceName()); protected void convert(BaseViewHolder helper, WaterDeviceEntity item) {
// helper.setText(R.id.tv_device_serial,item.getDeviceCode()); helper.setText(R.id.tv_device_name,item.getDeviceName());
// } helper.setText(R.id.tv_device_serial,item.getDeviceSn());
//} }
}

View File

@@ -18,7 +18,7 @@ public class PlanDetailTimeAdapter extends BaseQuickAdapter<WaterPlanWeekEntity.
@Override @Override
protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) { protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) {
helper.setText(R.id.tv_week, ZYTimeUtils.getWeekName(item.getWeekday())); helper.setText(R.id.tv_week, ZYTimeUtils.getWeekName(item.getWeekday() - 1));
helper.setText(R.id.tv_start_time,ZYTimeUtils.formatHHmm(item.getStartTime())); helper.setText(R.id.tv_start_time,ZYTimeUtils.formatHHmm(item.getStartTime()));
helper.setText(R.id.tv_duration,item.getDurationMin() + "min"); helper.setText(R.id.tv_duration,item.getDurationMin() + "min");
} }

View File

@@ -1,5 +1,7 @@
package com.ckkj.water.plan.entity; package com.ckkj.water.plan.entity;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
@@ -23,7 +25,7 @@ public class WaterPlanWeekEntity implements Serializable {
private String id; private String id;
private String userId; private String userId;
private String name; private String name;
private Object deviceIds; private List<WaterDeviceEntity> deviceIds;
private String status = "1"; private String status = "1";
private List<DetailsBean> details; private List<DetailsBean> details;

View File

@@ -2,6 +2,7 @@ package com.ckkj.water.plan.mvp;
import com.ckkj.water.base.IView; import com.ckkj.water.base.IView;
import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import org.json.JSONObject; import org.json.JSONObject;
@@ -21,12 +22,16 @@ public class WaterPlanContract {
void saveConfig(JSONObject json,CallBack callBack); void saveConfig(JSONObject json,CallBack callBack);
//更新排程 //更新排程
void updateConfig(JSONObject json,CallBack callBack); void updateConfig(JSONObject json,CallBack callBack);
//更新排程状态
void updatePlanStatus(JSONObject json, CallBack callBack);
//查询排程可绑定的设备列表 //查询排程可绑定的设备列表
void getPlanBindDeviceList(Map<String, String> map,CallBack callBack); void getPlanBindDeviceList(Map<String, String> map,CallBack callBack);
//查询排程详情 //查询排程详情
void getPlanDetailInfo(Map<String, String> map,CallBack callBack); void getPlanDetailInfo(Map<String, String> map,CallBack callBack);
//排程绑定设备 //排程绑定设备
void planBindDevice(JSONObject json,CallBack callBack); void planBindDevice(JSONObject json,CallBack callBack);
//删除排程
void deletePlan(String id,CallBack callBack);
} }
public interface WaterPlanView extends IView { public interface WaterPlanView extends IView {
@@ -36,9 +41,15 @@ public class WaterPlanContract {
void saveConfigSuccess(WaterPlanWeekEntity entity); void saveConfigSuccess(WaterPlanWeekEntity entity);
//排程更新成功 //排程更新成功
void updateConfigSuccess(WaterPlanWeekEntity entity); void updateConfigSuccess(WaterPlanWeekEntity entity);
//更新排程状态成功
void updatePlanStatusSuccess(BaseBean bean, String status);
//获取排程详情 //获取排程详情
void getPlanDetailInfo(WaterPlanWeekEntity entity); void getPlanDetailInfo(WaterPlanWeekEntity entity);
//查询到可绑定设备列表 //查询到可绑定设备列表
void getPlanBindDeviceList(WaterDeviceEntity bean); void getPlanBindDeviceList(WaterDeviceEntity bean);
//排程绑定设备成功
void planBindDeviceSuccess(BaseBean bean);
//删除排程成功
void deletePlanSuccess(BaseBean bean);
} }
} }

View File

@@ -132,6 +132,41 @@ public class WaterPlanImpl implements WaterPlanContract.DataModel{
} }
} }
/**
* 更新排程状态
* @param callBack
*/
@Override
public void updatePlanStatus(JSONObject json, WaterPlanContract.CallBack callBack) {
NetWorkManager.getRequest().updateScheduleStatus(NetWorkManager.getToken(),NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean<WaterPlanWeekEntity>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean<WaterPlanWeekEntity> bean) {
if (bean.getCode() == 200) {
callBack.success(bean.getData(), 0);
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
}
/** /**
* 查询可绑定排程的设备列表 * 查询可绑定排程的设备列表
* @param map * @param map
@@ -231,4 +266,44 @@ public class WaterPlanImpl implements WaterPlanContract.DataModel{
e.printStackTrace(); e.printStackTrace();
} }
} }
/**
* 删除排程
* @param id
* @param callBack
*/
@Override
public void deletePlan(String id, WaterPlanContract.CallBack callBack) {
try {
NetWorkManager.getRequest().deletePlanById(NetWorkManager.getToken(), id)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
if (bean.getCode() == 200) {
callBack.success(bean,0);
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
} }

View File

@@ -2,6 +2,7 @@ package com.ckkj.water.plan.mvp;
import com.ckkj.water.base.BasePresenter; import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import org.json.JSONArray; import org.json.JSONArray;
@@ -188,12 +189,18 @@ public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPla
try { try {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("scheduleId", entity.getId()); json.put("scheduleId", entity.getId());
json.put("deviceIds", deviceIds); // 将逗号分隔的字符串转换为 JSONArray (数字类型)
impl.planBindDevice(json, new WaterPlanContract.CallBack<WaterPlanWeekEntity>() { JSONArray deviceIdArray = new JSONArray();
String[] idArray = deviceIds.split(",");
for (String id : idArray) {
deviceIdArray.put(id);
}
json.put("deviceIds", deviceIdArray);
impl.planBindDevice(json, new WaterPlanContract.CallBack<BaseBean>() {
@Override @Override
public void success(WaterPlanWeekEntity msg, int total) { public void success(BaseBean bean, int total) {
if(WaterPlanPresenter.this.getView() != null){ if(WaterPlanPresenter.this.getView() != null){
WaterPlanPresenter.this.getView().planBindDeviceSuccess(bean);
} }
} }
@@ -208,4 +215,58 @@ public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPla
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
/**
* 更新排程状态
* @param entity 排程实体
* @param status 状态 0-关闭 1-开启
*/
public void updatePlanStatus(WaterPlanWeekEntity entity, String status) {
try {
JSONObject json = new JSONObject();
json.put("id", entity.getId());
json.put("status", status);
impl.updatePlanStatus(json, new WaterPlanContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean, int total) {
if (WaterPlanPresenter.this.getView() != null) {
WaterPlanPresenter.this.getView().updatePlanStatusSuccess(bean,status);
}
}
@Override
public void fail(String msg) {
if (WaterPlanPresenter.this.getView() != null) {
WaterPlanPresenter.this.getView().showError(msg);
}
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
/**
* 删除排程
* @param mDetailEntity
*/
public void deletePlan(WaterPlanWeekEntity mDetailEntity) {
impl.deletePlan(mDetailEntity.getId(), new WaterPlanContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean, int total) {
if(WaterPlanPresenter.this.getView() != null){
if(WaterPlanPresenter.this.getView() != null){
WaterPlanPresenter.this.getView().deletePlanSuccess(bean);
}
}
}
@Override
public void fail(String msg) {
if(WaterPlanPresenter.this.getView() != null){
WaterPlanPresenter.this.getView().showError( msg);
}
}
});
}
} }

View File

@@ -97,6 +97,9 @@
<string name="plan_name_text_empty_hint">排程名称不能为空</string> <string name="plan_name_text_empty_hint">排程名称不能为空</string>
<string name="plan_week_empty_hint">请选择排程日期</string> <string name="plan_week_empty_hint">请选择排程日期</string>
<string name="select_the_device_to_link">请选择要关联的设备</string> <string name="select_the_device_to_link">请选择要关联的设备</string>
<string name="delete_plan_tip">确定要删除该排程任务?</string>
<string name="delete_plan_success">删除成功</string>
<string name="close_plan_dialog_tip">确定关闭该排程任务?</string>
<string name="plan_period">浇水周期</string> <string name="plan_period">浇水周期</string>
<string name="plan_time">浇水时长</string> <string name="plan_time">浇水时长</string>
<string name="plan_start_time">开始时间</string> <string name="plan_start_time">开始时间</string>