Commit 30bb8b6a authored by 赵鹏翔's avatar 赵鹏翔

Merge branch 'dev' into 'develop'

Dev

See merge request !6
parents 0b38225b e425d871
......@@ -97,7 +97,7 @@ class BaseApplication : MultiDexApplication() {
LogFileUtils.writeLog(
ContextUtils.getContext(),
DateUtils.getDateStringByTimeStamp(System.currentTimeMillis())
.toString() + " " + message + "\n"
.toString() + " $message" + "\n"
)
}
if (BuildConfig.DEBUG) {
......@@ -107,6 +107,13 @@ class BaseApplication : MultiDexApplication() {
loggingInterceptor.level = MiyaHttpLoggingInterceptor.Level.BODY
} catch (ex: Exception) {
ex.printStackTrace()
if (!LogFileUtils.isProhibitWrite) {
LogFileUtils.writeLog(
ContextUtils.getContext(),
DateUtils.getDateStringByTimeStamp(System.currentTimeMillis())
.toString() + "异常: ${ex.message}" + "\n"
)
}
}
MiYaPayMobileApiClient.init(true, loggingInterceptor)
}
......
package com.miya.fastcashier.log;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
/**
* 作者:Leon
* 时间:2017/3/17 13:44
*/
public class EmptyRecyclerView extends RecyclerView {
private View mEmptyView;
public EmptyRecyclerView(Context context) {
super(context);
}
public EmptyRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public EmptyRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* 根据数据源判断是否显示空白view
*/
private void checkIfEmpty() {
if (mEmptyView != null || getAdapter() != null) {
mEmptyView.setVisibility(getAdapter().getItemCount() > 0 ? GONE : VISIBLE);
}
}
public void setmEmptyView(View mEmptyView) {
this.mEmptyView = mEmptyView;
checkIfEmpty();
}
@Override
public void setAdapter(Adapter adapter) {
Adapter adapterOld = getAdapter();
if (adapterOld != null) {
adapterOld.unregisterAdapterDataObserver(observer);
}
super.setAdapter(adapter);
if (adapter != null) {
adapter.registerAdapterDataObserver(observer);
}
}
AdapterDataObserver observer = new AdapterDataObserver() {
@Override
public void onChanged() {
super.onChanged();
checkIfEmpty();
}
};
}
package com.miya.fastcashier.log
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.recyclerview.widget.RecyclerView
/**
* 作者:Leon
* 时间:2017/3/17 13:44
*/
class EmptyRecyclerView : RecyclerView {
private var mEmptyView: View? = null
constructor(context: Context?) : super(context!!) {}
constructor(context: Context?, attrs: AttributeSet?) : super(
context!!, attrs
) {
}
constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(
context!!, attrs, defStyle
) {
}
/**
* 根据数据源判断是否显示空白view
*/
private fun checkIfEmpty() {
if (mEmptyView != null || adapter != null) {
mEmptyView!!.visibility =
if (adapter!!.itemCount > 0) GONE else VISIBLE
}
}
fun setmEmptyView(mEmptyView: View?) {
this.mEmptyView = mEmptyView
checkIfEmpty()
}
override fun setAdapter(adapter: Adapter<*>?) {
val adapterOld = getAdapter()
adapterOld?.unregisterAdapterDataObserver(observer)
super.setAdapter(adapter)
adapter?.registerAdapterDataObserver(observer)
}
var observer: AdapterDataObserver = object : AdapterDataObserver() {
override fun onChanged() {
super.onChanged()
checkIfEmpty()
}
}
}
\ No newline at end of file
......@@ -3,10 +3,7 @@ package com.miya.fastcashier.log
import android.app.Dialog
import android.content.Context
import com.miya.fastcashier.service.AccountService.getAccountInfo
import com.miya.fastcashier.utils.getVersion
import com.miya.fastcashier.net.ApiConfig.baseUrl
import com.miya.fastcashier.utils.getWifyName
import com.miya.fastcashier.utils.getNetIp
import com.miya.fastcashier.R
import com.miya.fastcashier.beans.SelfCashierAccountInfo
import com.miya.fastcashier.service.AccountService
......@@ -19,6 +16,8 @@ import android.view.Gravity
import android.view.View
import com.miya.fastcashier.BuildConfig
import com.miya.fastcashier.databinding.DialogSystemParameterBinding
import com.miya.fastcashier.utils.*
import java.util.*
class SystemParameterDialog(context: Context) : Dialog(context, R.style.CommonDialog) {
......@@ -46,7 +45,10 @@ class SystemParameterDialog(context: Context) : Dialog(context, R.style.CommonDi
setInfo(viewBinding.tvEquipment, "sunmi_v2pro")
setInfo(viewBinding.tvServerUrl, baseUrl)
setInfo(viewBinding.tvWifiName, getWifyName(context))
setInfo(viewBinding.tvNetIp, if (getNetIp(context) == null) "未知" else getNetIp(context))
setInfo(
viewBinding.tvLog,
"${getVersionCode(context)}_${DateUtils.format8(Date())}.txt"
)
setInfo(
viewBinding.tvPrintType,
if (PrinterManager.getInstance().printer == null) context.resources.getString(R.string.app_unkown) else PrinterManager.getInstance().printer.printerName
......
......@@ -13,70 +13,11 @@ import com.miya.print.PrinterManager
import com.miya.print.utils.Page58MmPrintUtils
import com.sdy.miya.moblie.component.pay.platform.bean.PayServiceResponse
import java.util.*
import kotlin.concurrent.schedule
object PrintService {
private var payServiceResponse: PayServiceResponse? = null;
/**
* 退款
*/
fun refundPrint(
selfCashierAccountInfo: SelfCashierAccountInfo,
payServiceResponse: PayServiceResponse
) {
val printer = PrinterManager.getInstance().printer
printer.beginPrint()
//检查打印机状态
printer.printerStatus
printer.set58mm()
refundPrintCashier(printer, payServiceResponse, selfCashierAccountInfo)
refundPrintCustomer(printer, payServiceResponse, selfCashierAccountInfo)
printer.feedPaper()
printer.endPrint()
}
/**
* 查询订单单项打印
*/
fun printSearchOrder(
selfCashierAccountInfo: SelfCashierAccountInfo,
payServiceResponse: PayServiceResponse,
isRefund: Boolean
) {
if (isRefund) {
refundPrint(selfCashierAccountInfo, payServiceResponse)
} else {
val printer = PrinterManager.getInstance().printer
printer.beginPrint()
//检查打印机状态
printer.printerStatus
printer.set58mm()
// if (BuildConfig.DEBUG) {
// printCashier(
// printer,
// payServiceResponse,
// selfCashierAccountInfo,
// OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo))
// } else {
printCashier(
printer,
payServiceResponse,
selfCashierAccountInfo,
OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)
)
printCustomer(
printer,
payServiceResponse,
selfCashierAccountInfo,
OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)
)
// }
printer.feedPaper()
printer.endPrint()
}
}
private var payServiceResponse: PayServiceResponse? = null
/**
* 打印上一单
......@@ -85,14 +26,14 @@ object PrintService {
if (payServiceResponse == null) {
throw java.lang.RuntimeException("暂无上一单信息")
} else {
AccountService.getAccountInfo()?.let { payInfoPrint(payServiceResponse!!, it) }
AccountService.getAccountInfo()?.let { payPrint(payServiceResponse!!, it) }
}
}
/**
* 扣款信息打印
* 收费打印
*/
fun payInfoPrint(
fun payPrint(
payServiceResponse: PayServiceResponse,
selfCashierAccountInfo: SelfCashierAccountInfo
) {
......@@ -108,138 +49,38 @@ object PrintService {
//检查打印机状态
printer.printerStatus
printer.set58mm()
// if (BuildConfig.DEBUG) {
// printCashier(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
// } else {
printCashier(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
printCustomer(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
// }
printer.feedPaper()
printer.endPrint()
}
/**
* 统计,给两个时间,
*/
fun printStatisticInfo(
viewOrderStatisticsInfo: ViewOrderStatisticsInfo,
selfCashierAccountInfo: SelfCashierAccountInfo,
isBalance: Boolean
) {
val printer = PrinterManager.getInstance().printer
printer.beginPrint()
//检查打印机状态
printer.printerStatus
printer.set58mm()
doPrintStatisticInfo(printer, viewOrderStatisticsInfo, selfCashierAccountInfo, isBalance)
handlePayPrint(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
printer.feedPaper()
printer.endPrint()
}
private fun doPrintStatisticInfo(
private fun handlePayPrint(
printer: IPrinter,
orderStatisticsInfo: ViewOrderStatisticsInfo,
accountInfo: SelfCashierAccountInfo,
isBalance: Boolean
payServiceResponse: PayServiceResponse,
selfCashierAccountInfo: SelfCashierAccountInfo,
serialNumber: String
) {
// if (BuildConfig.DEBUG) {
// printCashier(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
// } else {
printCashier(
printer,
payServiceResponse,
selfCashierAccountInfo,
serialNumber
)
if (accountInfo.shopInfo == null) {
throw RuntimeException("无商户配置数据")
}
val shopInfo = accountInfo.shopInfo
printer.printText(IPrinter.ALIGN_CENTER, 3, accountInfo.shopInfo?.storeName ?: "", true)
if (isBalance) {
printer.printText(IPrinter.ALIGN_CENTER, 3, "结算总计单", true)
} else {
printer.printText(IPrinter.ALIGN_CENTER, 3, "交易汇总表", true)
}
printer.setAlign(IPrinter.ALIGN_LEFT)
printer.printText("商户名称:converse")
printer.printText("商户编号:${shopInfo.saasid}")
printer.printText("终端编号:${shopInfo.posId}")
printer.printText("门店编号:${shopInfo.storeId}")
//统计时间
printer.printText(0, 0, "开始时间:" + orderStatisticsInfo.beginDate, true)
printer.printText(0, 0, "结束时间:" + orderStatisticsInfo.endDate, true)
val totalStatistics: ViewOrderStatisticsInfo.StatisticBean? =
orderStatisticsInfo.totalStatistic
if (totalStatistics != null) {
var tradeCount = totalStatistics.tradeCount + totalStatistics.refundCount
printer.printText(0, 0, Page58MmPrintUtils.printDivideLineString(), true)
printer.printText(
Page58MmPrintUtils.printTwoData(
"总交易笔数",
"" + tradeCount
)
)
var tradeTotalAmount = totalStatistics.tradeTotalAmount - totalStatistics.refundTotalAmount
printer.printText(
Page58MmPrintUtils.printTwoData(
"总交易金额",
"" + StringPriceFormat.transStringPriceToDecimalString(tradeTotalAmount.toString())
)
Timer().schedule(4000) {
printCustomer(
printer,
payServiceResponse,
selfCashierAccountInfo,
serialNumber
)
}
if (!isEmpty(orderStatisticsInfo.typeStatistic)) {
val typedStatisticList: List<ViewOrderStatisticsInfo.StatisticBean> =
orderStatisticsInfo.typeStatistic
var statisticBean: ViewOrderStatisticsInfo.StatisticBean
for (i in typedStatisticList.indices) {
if (typedStatisticList[i] == null) {
continue
}
statisticBean = typedStatisticList[i]
printer.printText(0, 0, Page58MmPrintUtils.printDivideLineString(), true)
printer.printText(
Page58MmPrintUtils.printTwoData(
"支付方式",
statisticBean.payType
)
)
printer.printText(
Page58MmPrintUtils.printTwoData(
"交易笔数",
"" + statisticBean.tradeCount
)
)
printer.printText(
Page58MmPrintUtils.printTwoData(
"交易金额",
"" + StringPriceFormat.transStringPriceToDecimalString(statisticBean.tradeTotalAmount.toString())
)
)
if (statisticBean.refundCount > 0) {
printer.printText(
Page58MmPrintUtils.printTwoData(
"退款笔数",
"" + statisticBean.refundCount
)
)
}
if (statisticBean.refundTotalAmount > 0) {
printer.printText(
Page58MmPrintUtils.printTwoData(
"退款金额",
"" + StringPriceFormat.transStringPriceToDecimalString(statisticBean.refundTotalAmount.toString())
)
)
}
}
}
printer.printText("\n\n")
// }
}
/**
* 打印收银员联
*/
......@@ -249,7 +90,6 @@ object PrintService {
selfCashierAccountInfo: SelfCashierAccountInfo,
serialNumber: String
) {
val shopInfo = selfCashierAccountInfo.shopInfo
printer.printText(IPrinter.ALIGN_CENTER, 3, shopInfo.storeName, true)
printer.setAlign(IPrinter.ALIGN_LEFT)
......@@ -380,6 +220,70 @@ object PrintService {
}
/**
* 查询订单单项打印
*/
fun printSearchOrder(
selfCashierAccountInfo: SelfCashierAccountInfo,
payServiceResponse: PayServiceResponse,
isRefund: Boolean
) {
if (isRefund) {
refundPrint(selfCashierAccountInfo, payServiceResponse)
} else {
val printer = PrinterManager.getInstance().printer
printer.beginPrint()
//检查打印机状态
printer.printerStatus
printer.set58mm()
handlePayPrint(
printer,
payServiceResponse,
selfCashierAccountInfo,
OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)
)
printer.feedPaper()
printer.endPrint()
}
}
/**
* 退款
*/
fun refundPrint(
selfCashierAccountInfo: SelfCashierAccountInfo,
payServiceResponse: PayServiceResponse
) {
val printer = PrinterManager.getInstance().printer
printer.beginPrint()
//检查打印机状态
printer.printerStatus
printer.set58mm()
handleRefundPrint(printer, payServiceResponse, selfCashierAccountInfo)
printer.feedPaper()
printer.endPrint()
}
fun handleRefundPrint(
printer: IPrinter,
payServiceResponse: PayServiceResponse,
selfCashierAccountInfo: SelfCashierAccountInfo
) {
refundPrintCashier(
printer,
payServiceResponse,
selfCashierAccountInfo
)
Timer().schedule(4000) {
refundPrintCustomer(
printer,
payServiceResponse,
selfCashierAccountInfo
)
}
}
/**
* 打印收银员联 - 退款
*/
......@@ -519,4 +423,126 @@ object PrintService {
}
printer.printText("\n\n")
}
/**
* 统计、结算打印,需要起止时间
*/
fun printStatisticInfo(
viewOrderStatisticsInfo: ViewOrderStatisticsInfo,
selfCashierAccountInfo: SelfCashierAccountInfo,
isBalance: Boolean
) {
val printer = PrinterManager.getInstance().printer
printer.beginPrint()
//检查打印机状态
printer.printerStatus
printer.set58mm()
doPrintStatisticInfo(printer, viewOrderStatisticsInfo, selfCashierAccountInfo, isBalance)
printer.feedPaper()
printer.endPrint()
}
private fun doPrintStatisticInfo(
printer: IPrinter,
orderStatisticsInfo: ViewOrderStatisticsInfo,
accountInfo: SelfCashierAccountInfo,
isBalance: Boolean
) {
if (accountInfo.shopInfo == null) {
throw RuntimeException("无商户配置数据")
}
val shopInfo = accountInfo.shopInfo
printer.printText(IPrinter.ALIGN_CENTER, 3, accountInfo.shopInfo?.storeName ?: "", true)
if (isBalance) {
printer.printText(IPrinter.ALIGN_CENTER, 3, "结算总计单", true)
} else {
printer.printText(IPrinter.ALIGN_CENTER, 3, "交易汇总表", true)
}
printer.setAlign(IPrinter.ALIGN_LEFT)
printer.printText("商户名称:converse")
printer.printText("商户编号:${shopInfo.saasid}")
printer.printText("终端编号:${shopInfo.posId}")
printer.printText("门店编号:${shopInfo.storeId}")
//统计时间
printer.printText(0, 0, "开始时间:" + orderStatisticsInfo.beginDate, true)
printer.printText(0, 0, "结束时间:" + orderStatisticsInfo.endDate, true)
val totalStatistics: ViewOrderStatisticsInfo.StatisticBean? =
orderStatisticsInfo.totalStatistic
if (totalStatistics != null) {
var tradeCount = totalStatistics.tradeCount + totalStatistics.refundCount
printer.printText(0, 0, Page58MmPrintUtils.printDivideLineString(), true)
printer.printText(
Page58MmPrintUtils.printTwoData(
"总交易笔数",
"" + tradeCount
)
)
var tradeTotalAmount =
totalStatistics.tradeTotalAmount - totalStatistics.refundTotalAmount
printer.printText(
Page58MmPrintUtils.printTwoData(
"总交易金额",
"" + StringPriceFormat.transStringPriceToDecimalString(tradeTotalAmount.toString())
)
)
}
if (!isEmpty(orderStatisticsInfo.typeStatistic)) {
val typedStatisticList: List<ViewOrderStatisticsInfo.StatisticBean> =
orderStatisticsInfo.typeStatistic
var statisticBean: ViewOrderStatisticsInfo.StatisticBean
for (i in typedStatisticList.indices) {
if (typedStatisticList[i] == null) {
continue
}
statisticBean = typedStatisticList[i]
printer.printText(0, 0, Page58MmPrintUtils.printDivideLineString(), true)
printer.printText(
Page58MmPrintUtils.printTwoData(
"支付方式",
statisticBean.payType
)
)
printer.printText(
Page58MmPrintUtils.printTwoData(
"交易笔数",
"" + statisticBean.tradeCount
)
)
printer.printText(
Page58MmPrintUtils.printTwoData(
"交易金额",
"" + StringPriceFormat.transStringPriceToDecimalString(statisticBean.tradeTotalAmount.toString())
)
)
if (statisticBean.refundCount > 0) {
printer.printText(
Page58MmPrintUtils.printTwoData(
"退款笔数",
"" + statisticBean.refundCount
)
)
}
if (statisticBean.refundTotalAmount > 0) {
printer.printText(
Page58MmPrintUtils.printTwoData(
"退款金额",
"" + StringPriceFormat.transStringPriceToDecimalString(statisticBean.refundTotalAmount.toString())
)
)
}
}
}
printer.printText("\n\n")
}
}
\ No newline at end of file
......@@ -2,20 +2,23 @@ package com.miya.fastcashier.ui
import android.content.Intent
import android.os.Bundle
import android.view.Gravity
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.ViewModelProvider
import com.miya.fastcashier.BaseApplication
import com.miya.fastcashier.R
import com.miya.fastcashier.databinding.ActivityMainBinding
import com.miya.fastcashier.service.AccountService
import com.miya.fastcashier.service.PrintService
import com.miya.fastcashier.ui.dialog.AuthorizePasswordInputDialog
import com.miya.fastcashier.ui.dialog.CommonDialog
import com.miya.fastcashier.utils.*
import com.miya.fastcashier.utils.manage.AccountPasswordManageKit
import com.miya.fastcashier.utils.manage.LocalKeyDataMKManageKit
import com.miya.fastcashier.utils.manage.OrderRecordManageKit
import com.miya.fastcashier.viewmodel.MainViewModel
import com.miya.print.utils.PrintLogger
import java.util.*
class MainActivity : BaseActivity() {
......@@ -24,6 +27,7 @@ class MainActivity : BaseActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var viewModel: MainViewModel
private var dateSelectHelper: DateSelectHelper? = null
private var confirmDialog: CommonDialog? = null
companion object {
@JvmStatic
......@@ -81,27 +85,7 @@ class MainActivity : BaseActivity() {
}
binding.llBalance.clickWithTrigger {
//上次记录的时间,或者当天0点
var timeMillis = LocalKeyDataMKManageKit.getBalanceDate()
if (timeMillis > 0L && timeMillis <= System.currentTimeMillis()) {
val currentDate = Date()
var daysAgoCurrent: Long = DateUtils.getDaysAgo(currentDate, 1)
if (timeMillis <= daysAgoCurrent) {
timeMillis = daysAgoCurrent
}
viewModel.orderStatistics(Date(timeMillis), currentDate, true)
} else {
val startDate = Calendar.getInstance()
startDate.set(
startDate.get(Calendar.YEAR),
startDate.get(Calendar.MONTH),
startDate.get(Calendar.DAY_OF_MONTH),
0,
0,
0
)
viewModel.orderStatistics(startDate.time, Date(), true)
}
showConfirmBalanceDialog()
}
initData()
......@@ -144,6 +128,53 @@ class MainActivity : BaseActivity() {
})
}
private fun showConfirmBalanceDialog(){
if (confirmDialog == null || !confirmDialog!!.isShowing) {
confirmDialog = CommonDialog(this)
confirmDialog!!.setCustomMessage(getString(R.string.app_text_confirm_balance))
.setNegativeStr(getString(R.string.cancel))
.setPositiveStr(getString(R.string.sure))
.setMessageGravity(Gravity.CENTER_HORIZONTAL)
.setOnClickListener(object : CommonDialog.OnDialogClickListener {
override fun onNegativeClick() {
confirmDialog!!.dismiss()
confirmDialog = null
}
override fun onPositiveClick() {
toBalance()
confirmDialog!!.dismiss()
confirmDialog = null
}
})
.show()
}
}
private fun toBalance(){
//上次记录的时间,或者当天0点
var timeMillis = LocalKeyDataMKManageKit.getBalanceDate()
if (timeMillis > 0L && timeMillis <= System.currentTimeMillis()) {
val currentDate = Date()
var daysAgoCurrent: Long = DateUtils.getDaysAgo(currentDate, 1)
if (timeMillis <= daysAgoCurrent) {
timeMillis = daysAgoCurrent
}
viewModel.orderStatistics(Date(timeMillis), currentDate, true)
} else {
val startDate = Calendar.getInstance()
startDate.set(
startDate.get(Calendar.YEAR),
startDate.get(Calendar.MONTH),
startDate.get(Calendar.DAY_OF_MONTH),
0,
0,
0
)
viewModel.orderStatistics(startDate.time, Date(), true)
}
}
override fun onDestroy() {
dateSelectHelper?.dismiss()
super.onDestroy()
......
......@@ -69,12 +69,6 @@ class SettingActivity : BaseActivity() {
// }
// }
if (countClick < 5) {
if (countClick >= 2 && countClick < 5) {
Toasty.info(
applicationContext,
getString(R.string.toast_click_again, 5 - countClick)
).show()
}
return
}
......
......@@ -103,6 +103,18 @@ fun getVersion(context: Context): String? {
return version
}
fun getVersionCode(context: Context): String? {
val packageManager = context.packageManager
val packageInfo: PackageInfo
var version = ""
try {
packageInfo = packageManager.getPackageInfo(context.packageName, 0)
version = "${packageInfo.versionCode}"
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
}
return version
}
/**
* 判断是否有网络连接
......
......@@ -18,7 +18,7 @@ class PrintViewModel : ViewModel() {
viewModelScope.launch(Dispatchers.IO){
try {
AccountService.getAccountInfo()?.let {
PrintService.payInfoPrint(payServiceResponse, it)
PrintService.payPrint(payServiceResponse, it)
}
printResultLiveData.postValue(Result.success(Any()))
}catch (e:Exception){
......
......@@ -277,18 +277,18 @@
app:layout_constraintTop_toTopOf="@id/tv_wifi_name_text" />
<TextView
android:id="@+id/tv_net_ip_text"
android:id="@+id/tv_log_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="网络IP"
android:text="日志名称"
android:textColor="@color/color_333333"
android:textSize="30sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_wifi_name_text" />
<TextView
android:id="@+id/tv_net_ip"
android:id="@+id/tv_log"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
......@@ -296,7 +296,7 @@
android:textColor="@color/color_333333"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_net_ip_text" />
app:layout_constraintTop_toTopOf="@id/tv_log_text" />
<TextView
android:id="@+id/tv_print_type_text"
......@@ -307,7 +307,7 @@
android:textColor="@color/color_333333"
android:textSize="30sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_net_ip_text" />
app:layout_constraintTop_toBottomOf="@id/tv_log_text" />
<TextView
android:id="@+id/tv_print_type"
......
......@@ -26,6 +26,7 @@
<string name="sure">确定</string>
<string name="search_order_prompt_text">还没有明细哦~</string>
<string name="app_text_login_out">是否确认退出账号</string>
<string name="app_text_confirm_balance">是否确认结算打印</string>
<string name="text_login_out_sure">确认退出</string>
<string name="app_login_out">退出登录</string>
<string name="text_refund_amount">退款金额¥%s,是否确认退款</string>
......
# 版本历史
## tag
####v2.1.5 :
-打印第二联做延时处理、结算打印添加二次确认
## tag
#### 优化版本:
-添加日志上传功能
......
ext {
VERSION_CODE = 25
VERSION_NAME = '2.1.4'
VERSION_CODE = 26
VERSION_NAME = '2.1.5'
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment