完善访客预约布局

0515
panqihua 5 years ago
parent 991bc1f6a7
commit 819b010f4c
  1. 6
      app/src/main/java/com/community/pocket/data/main/visitor/VisitorRequest.java
  2. 28
      app/src/main/java/com/community/pocket/data/model/Visitor.java
  3. 7
      app/src/main/java/com/community/pocket/data/model/VisitorStatus.java
  4. 4
      app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainViewModel.java
  5. 4
      app/src/main/java/com/community/pocket/ui/main/ui/garbage/sorting/GarbageSortingViewModel.java
  6. 4
      app/src/main/java/com/community/pocket/ui/main/ui/garbage/waste/GarbageWasteViewModel.java
  7. 17
      app/src/main/java/com/community/pocket/ui/main/ui/share/MyAutoCompleteTextView.java
  8. 4
      app/src/main/java/com/community/pocket/ui/main/ui/share/SearchViewModel.java
  9. 46
      app/src/main/java/com/community/pocket/ui/main/ui/visitor/VisitorMyVisitor.java
  10. 29
      app/src/main/java/com/community/pocket/ui/main/ui/visitor/appointment/VisitorAppointmentFragment.java
  11. 14
      app/src/main/java/com/community/pocket/ui/main/ui/visitor/appointment/VisitorViewModel.java
  12. 3
      app/src/main/java/com/community/pocket/util/Param.java
  13. 2
      app/src/main/res/layout/main/layout/activity_main_menu.xml
  14. 67
      app/src/main/res/layout/main/layout/visitor/layout/visitor_appointment_fragment.xml
  15. 48
      app/src/main/res/layout/main/layout/visitor/layout/visitor_info.xml
  16. 11
      app/src/main/res/values-en-rUS/strings.xml
  17. 19
      app/src/main/res/values-zh-rCN/strings.xml
  18. 11
      app/src/main/res/values/strings.xml

@ -30,7 +30,7 @@ public class VisitorRequest {
//访客预约
@HttpRequest("/visitor/visitor")
public void appointment(MutableLiveData<VisitorResponse> liveData, String appointment, String chooseDate, String chooseTime, String notes) {
public void appointment(MutableLiveData<VisitorResponse> liveData, String appointment, String chooseDate, String chooseTime, String notes, boolean checked) {
HttpUtil.getRequest(HttpUtil.Method.POST,
new SimpleHttpParse<VisitorResponse>(liveData).getInterface(VisitorResponse.class),
new FormBody.Builder()
@ -38,6 +38,7 @@ public class VisitorRequest {
.add("chooseDate", chooseDate)
.add("chooseTime", chooseTime)
.add("notes", notes)
.add("isOutPeople", String.valueOf(checked))
.add("token", LocalToken.getToken())
.add("username", LocalToken.getUsername())
.build());
@ -45,11 +46,12 @@ public class VisitorRequest {
//获取预约人
@HttpRequest("/visitor/people")
public void searchPeople(MutableLiveData<VisitorPeopleResponse> liveData, String name) {
public void searchPeople(MutableLiveData<VisitorPeopleResponse> liveData, String name, Boolean isOutPeople) {
HttpUtil.getRequest(HttpUtil.Method.GET,
new SimpleHttpParse<VisitorPeopleResponse>(liveData).getInterface(VisitorPeopleResponse.class),
new FormBody.Builder()
.add("name", name)
.add("outPeople", String.valueOf(isOutPeople))
.add("username", LocalToken.getUsername())
.build());
}

@ -4,10 +4,16 @@ package com.community.pocket.data.model;
* 访客信息
*/
public abstract class Visitor {
private long time;
//预约时间
private Long time;
//预约目的
private String notes;
//审核状态
private VisitorStatus status;
//审核管理员
private String managerName;
public void setTime(long time) {
public void setTime(Long time) {
this.time = time;
}
@ -15,7 +21,7 @@ public abstract class Visitor {
this.notes = notes;
}
public long getTime() {
public Long getTime() {
return time;
}
@ -24,4 +30,20 @@ public abstract class Visitor {
}
public abstract String getName();
public VisitorStatus getStatus() {
return status;
}
public void setStatus(VisitorStatus status) {
this.status = status;
}
public String getManagerName() {
return managerName;
}
public void setManagerName(String managerName) {
this.managerName = managerName;
}
}

@ -0,0 +1,7 @@
package com.community.pocket.data.model;
public enum VisitorStatus {
uncheck,
ok,
fail
}

@ -1,5 +1,7 @@
package com.community.pocket.ui.main.ui.forum.post;
import android.os.Bundle;
import androidx.lifecycle.MutableLiveData;
import com.community.pocket.R;
@ -61,7 +63,7 @@ public class ForumPostComplainViewModel extends ForumPostViewModel implements Se
}
@Override
public void search(String content) {
public void search(String content, Bundle data) {
searchPeople(content);
}
}

@ -1,5 +1,7 @@
package com.community.pocket.ui.main.ui.garbage.sorting;
import android.os.Bundle;
import androidx.lifecycle.MutableLiveData;
import com.community.pocket.data.main.garbage.GarbageSortingRequest;
@ -24,7 +26,7 @@ public class GarbageSortingViewModel extends BaseViewModel<GarbageSortingRequest
}
@Override
public void search(String content) {
public void search(String content, Bundle data) {
getRequest().search(garbageSortingResponse, content);
}
}

@ -1,5 +1,7 @@
package com.community.pocket.ui.main.ui.garbage.waste;
import android.os.Bundle;
import androidx.lifecycle.MutableLiveData;
import com.community.pocket.data.main.garbage.GarbageWasteRequest;
@ -34,7 +36,7 @@ public class GarbageWasteViewModel extends BaseViewModel<GarbageWasteRequest> im
//检索废品请求状态
@Override
public void search(String content) {
public void search(String content, Bundle data) {
getRequest().search(searchList, content);
}
}

@ -1,6 +1,7 @@
package com.community.pocket.ui.main.ui.share;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@ -32,7 +33,7 @@ public class MyAutoCompleteTextView {
//延时搜索的handler
private Handler searchHandler = new Handler(Looper.getMainLooper()) {
public void handleMessage(@NotNull Message msg) {
dealSearchHint();
dealSearchHint(msg.getData());
}
};
@ -40,13 +41,13 @@ public class MyAutoCompleteTextView {
/**
* 根据用户输入的字符去调用接口查询
*/
private void dealSearchHint() {
private void dealSearchHint(Bundle data) {
String searchContent = view.getText().toString();
if (searchContent.isEmpty()) {
return;
}
// appointmentViewModel.searchPeople(searchContent);
searchViewModel.search(searchContent);
searchViewModel.search(searchContent, data);
}
@SuppressLint("SoonBlockedPrivateApi")
@ -76,4 +77,14 @@ public class MyAutoCompleteTextView {
searchHandler.sendEmptyMessageDelayed(1, 600);
view.setTag(time);
}
public void searchHandler(Message message) {
long time = System.currentTimeMillis();
//输入的字符间隔时间 小于700毫秒 移除以前的handler 延时600毫秒执行
if (view.getTag() != null && time - (Long) view.getTag() < 700) {
searchHandler.removeMessages(1);
}
searchHandler.sendMessageDelayed(message, 600);
view.setTag(time);
}
}

@ -1,9 +1,11 @@
package com.community.pocket.ui.main.ui.share;
import android.os.Bundle;
/**
* 搜索框请求数据源
*/
public interface SearchViewModel {
//请求方法
void search(String content);
void search(String content, Bundle data);
}

@ -9,6 +9,7 @@ import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.gridlayout.widget.GridLayout;
@ -58,8 +59,10 @@ public abstract class VisitorMyVisitor extends BaseFragment {
createTextView(DateFormat.format(getString(R.string.dateformat), visitor.getTime()));
createTextView(visitor.getNotes().length() <= maxLength ? visitor.getNotes() : visitor.getNotes().substring(0, maxLength));
switch (visitor.getStatus()) {
case ok:
Button button = new Button(getContext());
button.setText(getString(R.string.show_notes));
button.setText(R.string.show_notes);
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);
button.setLayoutParams(layoutParams);
@ -67,41 +70,66 @@ public abstract class VisitorMyVisitor extends BaseFragment {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(View v) {
createAlertNotes(visitor.getNotes());
createAlertNotes(visitor);
}
});
gridLayout.addView(button);
break;
case uncheck:
createTextView(R.string.visitor_uncheck);
break;
case fail:
createTextView(R.string.visitor_check_fail);
break;
}
}
}
/**
* 创建单元格
*/
private void createTextView(CharSequence text) {
TextView textView = new TextView(getContext());
textView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
textView.setText(text);
createTextView(textView);
}
private void createTextView(@StringRes int resId) {
TextView textView = new TextView(getContext());
textView.setText(resId);
createTextView(textView);
}
private void createTextView(TextView textView) {
textView.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
textView.setBackground(getResources().getDrawable(R.drawable.border));
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);
textView.setLayoutParams(layoutParams);
gridLayout.addView(textView);
}
/**
* 创建显示备注信息弹窗
*/
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void createAlertNotes(String text) {
private void createAlertNotes(Visitor visitor) {
View view = View.inflate(getContext(), R.layout.visitor_info, null);
TextView textView = view.findViewById(R.id.content);
textView.setText(text);
textView.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
TextView name = view.findViewById(R.id.name);
name.setText(getString(R.string.visitor_show_name, visitor.getName()));
TextView time = view.findViewById(R.id.time);
time.setText(getString(R.string.visitor_show_time, DateFormat.format(getString(R.string.dateformat), visitor.getTime())));
TextView notes = view.findViewById(R.id.notes);
notes.setText(getString(R.string.visitor_show_notes, visitor.getNotes()));
TextView admin = view.findViewById(R.id.admin);
admin.setText(getString(R.string.visitor_show_admin, visitor.getManagerName()));
Button button = view.findViewById(R.id.close);
AlertDialog.Builder alert = new AlertDialog.Builder(Objects.requireNonNull(getContext()));
final AlertDialog alertDialog = alert.setTitle(R.string.notes).setView(view).create();
final AlertDialog alertDialog = alert.setTitle(R.string.visitor_traffic_permit).setView(view).create();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

@ -2,6 +2,7 @@ package com.community.pocket.ui.main.ui.visitor.appointment;
import android.os.Build;
import android.os.Bundle;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.format.DateFormat;
@ -10,6 +11,7 @@ import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
@ -26,8 +28,8 @@ import com.community.pocket.ui.BaseFragment;
import com.community.pocket.ui.listener.MyTextChange;
import com.community.pocket.ui.main.ui.share.MyAutoCompleteTextView;
import com.community.pocket.ui.main.ui.share.Response;
import com.community.pocket.ui.main.ui.share.ShowWordCount;
import com.community.pocket.ui.main.ui.visitor.VisitorFragment;
import com.community.pocket.util.Param;
import com.community.pocket.util.PropertiesUtil;
import org.xutils.view.annotation.ContentView;
@ -78,13 +80,14 @@ public class VisitorAppointmentFragment extends BaseFragment {
//预约时间数据
private ArrayAdapter<String> timeAdpter;
//是否外来人口预约
@ViewInject(R.id.is_outpeople)
private RadioButton radioButton;
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ShowWordCount showWordCount = new ShowWordCount(new int[]{R.id.show_word_top, R.id.show_word_bottom}, R.id.notes, view);
showWordCount.showCount();
appointmentViewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(VisitorViewModel.class);
@ -168,7 +171,11 @@ public class VisitorAppointmentFragment extends BaseFragment {
}
appointment.setTag(R.string.visitor_tag, s.toString());
myAutoCompleteTextView.searchHandler();
Message message = new Message();
Bundle bundle = new Bundle();
bundle.putBoolean(Param.isOutPeople.name(), radioButton.isChecked());
message.setData(bundle);
myAutoCompleteTextView.searchHandler(message);
}
});
@ -186,6 +193,16 @@ public class VisitorAppointmentFragment extends BaseFragment {
initTip();
}
//
// //是否外来人口
// @Event(value = R.id.button_group,type = RadioGroup.OnCheckedChangeListener.class)
// private void checkOutPeople(RadioGroup group, @IdRes int checkedId){
// if(R.id.is_outpeople==checkedId){
//
// }else{
//
// }
// }
/**
* 搜索框
@ -219,7 +236,7 @@ public class VisitorAppointmentFragment extends BaseFragment {
*/
@Event(value = R.id.submit)
private void submit(View view) {
appointmentViewModel.appointment(appointment.getText().toString(), chooseDate.getText().toString(), chooseTime.getSelectedItem().toString(), notes.getText().toString());
appointmentViewModel.appointment(appointment.getText().toString(), chooseDate.getText().toString(), chooseTime.getSelectedItem().toString(), notes.getText().toString(), radioButton.isChecked());
}
//初始化日期提示

@ -1,5 +1,6 @@
package com.community.pocket.ui.main.ui.visitor.appointment;
import android.os.Bundle;
import android.text.Editable;
import androidx.lifecycle.MutableLiveData;
@ -8,6 +9,7 @@ import com.community.pocket.R;
import com.community.pocket.data.main.visitor.VisitorRequest;
import com.community.pocket.ui.main.ui.share.BaseViewModel;
import com.community.pocket.ui.main.ui.share.SearchViewModel;
import com.community.pocket.util.Param;
import com.community.pocket.util.ValidUtil;
/**
@ -38,13 +40,13 @@ public class VisitorViewModel extends BaseViewModel<VisitorRequest> implements S
}
//访客预约
void appointment(String appointment, String chooseDate, String chooseTime, String notes) {
getRequest().appointment(visitorResponse, appointment, chooseDate, chooseTime, notes);
void appointment(String appointment, String chooseDate, String chooseTime, String notes, boolean checked) {
getRequest().appointment(visitorResponse, appointment, chooseDate, chooseTime, notes, checked);
}
//检索预约人
private void searchPeople(String name) {
getRequest().searchPeople(searchPeopleReq, name);
private void searchPeople(String name, Boolean isOutPeople) {
getRequest().searchPeople(searchPeopleReq, name, isOutPeople);
}
//校验访客预约表单
@ -63,8 +65,8 @@ public class VisitorViewModel extends BaseViewModel<VisitorRequest> implements S
}
@Override
public void search(String content) {
searchPeople(content);
public void search(String content, Bundle data) {
searchPeople(content, data.getBoolean(Param.isOutPeople.name()));
}
@Override

@ -6,5 +6,6 @@ package com.community.pocket.util;
public enum Param {
username,
email,
forumId
forumId,
isOutPeople
}

@ -35,6 +35,8 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
android:textAlignment="gravity"
app:itemTextColor="@color/colorAccent"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"

@ -30,7 +30,7 @@
android:hint="@string/prompt_appointment"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@id/button_group_layout" />
<TextView
android:id="@+id/tip"
@ -81,38 +81,59 @@
</LinearLayout>
<TextView
android:id="@+id/show_word_top"
<EditText
android:id="@+id/notes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:hint="@string/prompt_input_notes"
android:importantForAutofill="no"
android:inputType="text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/choose_time_layout" />
<EditText
android:id="@+id/notes"
android:layout_width="0dp"
android:layout_height="@dimen/size_200"
android:background="@drawable/border"
android:ems="15"
android:gravity="start|top"
android:hint="@string/prompt_input_notes"
android:importantForAutofill="no"
android:inputType="textMultiLine"
android:maxLength="@integer/post_content"
android:maxLines="@integer/post_content_maxLines"
app:layout_constraintEnd_toEndOf="parent"
<LinearLayout
android:id="@+id/button_group_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/show_word_top" />
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/show_word_bottom"
android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/visitor_is_people"
android:textSize="18sp" />
<RadioGroup
android:id="@+id/button_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/notes" />
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/is_outpeople"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/size_8"
android:checked="true"
android:text="@string/visitor_is_outpeole" />
<RadioButton
android:id="@+id/not_outpeolle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/visitor_not_outpeole" />
</RadioGroup>
</LinearLayout>
<Button
android:id="@+id/submit"
@ -123,7 +144,7 @@
android:text="@string/submit_appointment"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/show_word_bottom" />
app:layout_constraintTop_toBottomOf="@id/notes" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

@ -1,29 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<TextView
android:id="@+id/content"
android:layout_width="0dp"
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="start|top"
android:importantForAutofill="no"
android:singleLine="false"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="center"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/name" />
<TextView
android:id="@+id/notes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/time" />
<TextView
android:id="@+id/admin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="LabelFor" />
app:layout_constraintTop_toBottomOf="@id/notes" />
<Button
android:id="@+id/close"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/action_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/content" />
app:layout_constraintTop_toBottomOf="@id/admin" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -183,4 +183,15 @@
<string name="garbage_category_4">wet garbage</string>
<string name="garbage_category_8">dry refuse</string>
<string name="garbage_category_16">Bulky Waste</string>
<string name="visitor_uncheck">uncheck</string>
<string name="visitor_is_outpeole">YES</string>
<string name="visitor_not_outpeole">NO</string>
<string name="visitor_show_name">name:%1s</string>
<string name="visitor_show_time">time:%1s</string>
<string name="visitor_show_notes">notes:%1s</string>
<string name="visitor_show_admin">admin:%1s</string>
<string name="visitor_show">traffic permit</string>
<string name="visitor_is_people">is out people</string>
<string name="visitor_check_fail">check fail</string>
<string name="visitor_traffic_permit">traffic permit</string>
</resources>

@ -72,12 +72,12 @@
<string name="post_reply">回复 :%1d</string>
<string name="prompt_appointment">请搜索预约住户</string>
<string name="prompt_choose_time">请预约上门时间</string>
<string name="prompt_input_notes">请输入备注信息</string>
<string name="prompt_input_notes">请输入拜访目的</string>
<string name="submit_appointment">" 提交预约"</string>
<string name="show_notes">显示所有备注</string>
<string name="show_notes">查看通行证</string>
<string name="hide_notes">隐藏部分备注</string>
<string name="appointment_time">预约时间</string>
<string name="notes">备注</string>
<string name="notes">拜访目的</string>
<string name="visitor_name">访客人</string>
<string name="visitor_time">访客时间</string>
<string name="action">操作</string>
@ -108,7 +108,7 @@
<string name="visitor_appointment_ok">访客预约成功</string>
<string name="visitor_appointment_fail">访客预约失败</string>
<string name="invalid_time">预约时间不合法</string>
<string name="invalid_notes">备注信息不合法</string>
<string name="invalid_notes">拜访目的不合法</string>
<string name="choose_time_error">请先选择预约人</string>
<string name="visitor_appointment_people_ok">预约人检索成功</string>
<string name="visitor_appointment_people_fail">预约人检索失败</string>
@ -183,4 +183,15 @@
<string name="garbage_category_4">湿垃圾</string>
<string name="garbage_category_8">干垃圾</string>
<string name="garbage_category_16">大件垃圾</string>
<string name="visitor_uncheck">未审核</string>
<string name="visitor_is_outpeole"></string>
<string name="visitor_not_outpeole"></string>
<string name="visitor_show_name">预约人:%1s</string>
<string name="visitor_show_time">预约时间:%1s</string>
<string name="visitor_show_notes">拜访目的:%1s</string>
<string name="visitor_show_admin">审核管理员:%1s</string>
<string name="visitor_show">通行证</string>
<string name="visitor_is_people">是否外来人口预约</string>
<string name="visitor_check_fail">审核不通过</string>
<string name="visitor_traffic_permit">通行证</string>
</resources>

@ -184,6 +184,17 @@
<string name="garbage_category_4">wet garbage</string>
<string name="garbage_category_8">dry refuse</string>
<string name="garbage_category_16">Bulky Waste</string>
<string name="visitor_uncheck">uncheck</string>
<string name="visitor_is_outpeole">YES</string>
<string name="visitor_not_outpeole">NO</string>
<string name="visitor_show_name">name:%1s</string>
<string name="visitor_show_time">time:%1s</string>
<string name="visitor_show_notes">notes:%1s</string>
<string name="visitor_show_admin">admin:%1s</string>
<string name="visitor_show">traffic permit</string>
<string name="visitor_is_people">is out people</string>
<string name="visitor_check_fail">check fail</string>
<string name="visitor_traffic_permit">traffic permit</string>
<!-- Strings used for fragments for navigation -->
<!-- Strings used for fragments for navigation -->

Loading…
Cancel
Save