diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt index 5096b88..a18a2f4 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt @@ -13,11 +13,13 @@ import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.ContractDetailActivity import com.casic.xz.meterage.vm.ContractInvoiceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -187,20 +189,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt index 5096b88..a18a2f4 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt @@ -13,11 +13,13 @@ import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.ContractDetailActivity import com.casic.xz.meterage.vm.ContractInvoiceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -187,20 +189,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt index 99b5871..6281e2b 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ContractDetailModel import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val contractList = MutableLiveData() + val contractDetail = MutableLiveData() fun getContractList( customerId: String, @@ -63,4 +65,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getContractDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getContractDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + contractDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt index 5096b88..a18a2f4 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt @@ -13,11 +13,13 @@ import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.ContractDetailActivity import com.casic.xz.meterage.vm.ContractInvoiceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -187,20 +189,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt index 99b5871..6281e2b 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ContractDetailModel import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val contractList = MutableLiveData() + val contractDetail = MutableLiveData() fun getContractList( customerId: String, @@ -63,4 +65,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getContractDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getContractDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + contractDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contract_detail.xml b/app/src/main/res/layout/activity_contract_detail.xml new file mode 100644 index 0000000..0a8b8f8 --- /dev/null +++ b/app/src/main/res/layout/activity_contract_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt index 5096b88..a18a2f4 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt @@ -13,11 +13,13 @@ import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.ContractDetailActivity import com.casic.xz.meterage.vm.ContractInvoiceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -187,20 +189,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt index 99b5871..6281e2b 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ContractDetailModel import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val contractList = MutableLiveData() + val contractDetail = MutableLiveData() fun getContractList( customerId: String, @@ -63,4 +65,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getContractDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getContractDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + contractDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contract_detail.xml b/app/src/main/res/layout/activity_contract_detail.xml new file mode 100644 index 0000000..0a8b8f8 --- /dev/null +++ b/app/src/main/res/layout/activity_contract_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_contract_basic_information.xml b/app/src/main/res/layout/fragment_contract_basic_information.xml new file mode 100644 index 0000000..b4e9d26 --- /dev/null +++ b/app/src/main/res/layout/fragment_contract_basic_information.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt index 5096b88..a18a2f4 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt @@ -13,11 +13,13 @@ import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.ContractDetailActivity import com.casic.xz.meterage.vm.ContractInvoiceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -187,20 +189,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt index 99b5871..6281e2b 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ContractDetailModel import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val contractList = MutableLiveData() + val contractDetail = MutableLiveData() fun getContractList( customerId: String, @@ -63,4 +65,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getContractDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getContractDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + contractDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contract_detail.xml b/app/src/main/res/layout/activity_contract_detail.xml new file mode 100644 index 0000000..0a8b8f8 --- /dev/null +++ b/app/src/main/res/layout/activity_contract_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_contract_basic_information.xml b/app/src/main/res/layout/fragment_contract_basic_information.xml new file mode 100644 index 0000000..b4e9d26 --- /dev/null +++ b/app/src/main/res/layout/fragment_contract_basic_information.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_contract_collection.xml b/app/src/main/res/layout/fragment_contract_collection.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_contract_collection.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78d7828..2e98ec0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,6 +72,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt new file mode 100644 index 0000000..c9ce08a --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/BasicInformationFragment.kt @@ -0,0 +1,79 @@ +package com.casic.xz.meterage.fragment.contract + +import android.graphics.Color +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.formatToYearMonthDay +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.ContractInvoiceViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_contract_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var constructViewModel: ContractInvoiceViewModel + + override fun initData() { + constructViewModel = ViewModelProvider(this)[ContractInvoiceViewModel::class.java] + constructViewModel.getContractDetail(id) + constructViewModel.contractDetail.observe(this) { + if (it.code == 200) { + val data = it.data!! + + contractCodeView.text = data.agreementNo + contractNameView.text = data.agreementName + contractTypeView.text = data.agreementTypeName + creatorView.text = data.createUserName + deptNameView.text = data.deptName + estimateDateView.text = data.estimateSignDate + contractAmountView.text = + "¥ ${data.agreementAmount.toBigDecimal() / 100.toBigDecimal()}" + contractSourceView.text = data.agreementSourceName + contractStartView.text = data.agreementStartDate.formatToYearMonthDay() + contractEndView.text = data.agreementEndDate.formatToYearMonthDay() + firstPartView.text = data.firstParty + firstPersonView.text = data.director + contractContentView.text = data.agreementImportantContent + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(Color.BLUE) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_basic_information + + override fun observeRequestState() { + constructViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt new file mode 100644 index 0000000..435ec86 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/CollectionFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class CollectionFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_collection + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt new file mode 100644 index 0000000..068e0b9 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/contract/EntrustBriefFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.contract + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class EntrustBriefFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_contract_entrust_brief + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java new file mode 100644 index 0000000..9d56f09 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/ContractDetailModel.java @@ -0,0 +1,592 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class ContractDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String agreementAmount; + private String agreementEndDate; + private String agreementImportantContent; + private String agreementKind; + private String agreementKindName; + private String agreementName; + private String agreementNo; + private String agreementSource; + private String agreementSourceName; + private String agreementStartDate; + private String agreementType; + private String agreementTypeName; + private String approvalStatus; + private String createTime; + private String createUser; + private String createUserName; + private String customerId; + private String deptId; + private String deptName; + private String director; + private String estimateSignDate; + private String firstParty; + private String id; + private String isDel; + private String minioFileName; + private String orderIdList; + private List orderList; + private List paymentList; + private String processId; + private String remark; + private String secondParty; + private String status; + private String statusName; + private String updateTime; + + public String getAgreementAmount() { + return agreementAmount; + } + + public void setAgreementAmount(String agreementAmount) { + this.agreementAmount = agreementAmount; + } + + public String getAgreementEndDate() { + return agreementEndDate; + } + + public void setAgreementEndDate(String agreementEndDate) { + this.agreementEndDate = agreementEndDate; + } + + public String getAgreementImportantContent() { + return agreementImportantContent; + } + + public void setAgreementImportantContent(String agreementImportantContent) { + this.agreementImportantContent = agreementImportantContent; + } + + public String getAgreementKind() { + return agreementKind; + } + + public void setAgreementKind(String agreementKind) { + this.agreementKind = agreementKind; + } + + public String getAgreementKindName() { + return agreementKindName; + } + + public void setAgreementKindName(String agreementKindName) { + this.agreementKindName = agreementKindName; + } + + public String getAgreementName() { + return agreementName; + } + + public void setAgreementName(String agreementName) { + this.agreementName = agreementName; + } + + public String getAgreementNo() { + return agreementNo; + } + + public void setAgreementNo(String agreementNo) { + this.agreementNo = agreementNo; + } + + public String getAgreementSource() { + return agreementSource; + } + + public void setAgreementSource(String agreementSource) { + this.agreementSource = agreementSource; + } + + public String getAgreementSourceName() { + return agreementSourceName; + } + + public void setAgreementSourceName(String agreementSourceName) { + this.agreementSourceName = agreementSourceName; + } + + public String getAgreementStartDate() { + return agreementStartDate; + } + + public void setAgreementStartDate(String agreementStartDate) { + this.agreementStartDate = agreementStartDate; + } + + public String getAgreementType() { + return agreementType; + } + + public void setAgreementType(String agreementType) { + this.agreementType = agreementType; + } + + public String getAgreementTypeName() { + return agreementTypeName; + } + + public void setAgreementTypeName(String agreementTypeName) { + this.agreementTypeName = agreementTypeName; + } + + public String getApprovalStatus() { + return approvalStatus; + } + + public void setApprovalStatus(String approvalStatus) { + this.approvalStatus = approvalStatus; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public String getEstimateSignDate() { + return estimateSignDate; + } + + public void setEstimateSignDate(String estimateSignDate) { + this.estimateSignDate = estimateSignDate; + } + + public String getFirstParty() { + return firstParty; + } + + public void setFirstParty(String firstParty) { + this.firstParty = firstParty; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderIdList() { + return orderIdList; + } + + public void setOrderIdList(String orderIdList) { + this.orderIdList = orderIdList; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + public List getPaymentList() { + return paymentList; + } + + public void setPaymentList(List paymentList) { + this.paymentList = paymentList; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSecondParty() { + return secondParty; + } + + public void setSecondParty(String secondParty) { + this.secondParty = secondParty; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class OrderListModel { + private String createTime; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private String deliverer; + private String delivererTel; + private String id; + private String isUrgent; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String sampleCount; + private String status; + private String statusName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getSampleCount() { + return sampleCount; + } + + public void setSampleCount(String sampleCount) { + this.sampleCount = sampleCount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatusName() { + return statusName; + } + + public void setStatusName(String statusName) { + this.statusName = statusName; + } + } + + public static class PaymentListModel { + private String actualPaymentAmount; + private String actualPaymentDate; + private String agreementId; + private String createTime; + private String estimatePaymentAmount; + private String estimatePaymentDate; + private String id; + private String paymentNum; + private String updateTime; + + public String getActualPaymentAmount() { + return actualPaymentAmount; + } + + public void setActualPaymentAmount(String actualPaymentAmount) { + this.actualPaymentAmount = actualPaymentAmount; + } + + public String getActualPaymentDate() { + return actualPaymentDate; + } + + public void setActualPaymentDate(String actualPaymentDate) { + this.actualPaymentDate = actualPaymentDate; + } + + public String getAgreementId() { + return agreementId; + } + + public void setAgreementId(String agreementId) { + this.agreementId = agreementId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getEstimatePaymentAmount() { + return estimatePaymentAmount; + } + + public void setEstimatePaymentAmount(String estimatePaymentAmount) { + this.estimatePaymentAmount = estimatePaymentAmount; + } + + public String getEstimatePaymentDate() { + return estimatePaymentDate; + } + + public void setEstimatePaymentDate(String estimatePaymentDate) { + this.estimatePaymentDate = estimatePaymentDate; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPaymentNum() { + return paymentNum; + } + + public void setPaymentNum(String paymentNum) { + this.paymentNum = paymentNum; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index bc4d694..d104cea 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -457,4 +457,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取合同详情 + */ + @POST("/finance/agreement/detail") + suspend fun getContractDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index 1aaabee..759a2a5 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -1010,7 +1010,7 @@ } /** - * 合同列表 + * 获取合同列表 */ suspend fun getContractList( customerId: String, @@ -1051,4 +1051,16 @@ AuthenticationHelper.token!!, requestBody, limitMap, offsetMap ) } + + /** + * 获取合同详情 + */ + suspend fun getContractDetail(id: String): String { + val param = JsonObject() + param.addProperty("id", id) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getContractDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt new file mode 100644 index 0000000..cd6ca61 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractDetailActivity.kt @@ -0,0 +1,52 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.contract.BasicInformationFragment +import com.casic.xz.meterage.fragment.contract.CollectionFragment +import com.casic.xz.meterage.fragment.contract.EntrustBriefFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_contract_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class ContractDetailActivity : ApplicationBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_contract_detail + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "发票合同" + } + + override fun initData() { + val contractId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(contractId)) + fragmentPages.add(EntrustBriefFragment()) + fragmentPages.add(CollectionFragment()) + + val equipmentPageTitles = arrayOf("基础信息", "委托单信息", "收款信息") + + contractViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, equipmentPageTitles + ) + contractViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(contractViewPager) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt index 96148a3..a60e2a9 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/ContractInvoiceActivity.kt @@ -169,20 +169,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt index 5096b88..a18a2f4 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchContractResultActivity.kt @@ -13,11 +13,13 @@ import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.AppMemoryCache import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.ContractDetailActivity import com.casic.xz.meterage.vm.ContractInvoiceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -187,20 +189,16 @@ R.id.contractStateView, R.color.gray.convertColor(context) ) } + + viewHolder.setOnClickListener(R.id.showDetailButton) { + navigatePageTo(item.id) + } } } contractRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) contractRecyclerView.adapter = contractAdapter - contractAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: ContractListModel.DataModel.RowsModel - ) { -// navigatePageTo(t.id) - } - }) } } } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt index 99b5871..6281e2b 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/ContractInvoiceViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.ContractDetailModel import com.casic.xz.meterage.model.ContractListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val contractList = MutableLiveData() + val contractDetail = MutableLiveData() fun getContractList( customerId: String, @@ -63,4 +65,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getContractDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getContractDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + contractDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contract_detail.xml b/app/src/main/res/layout/activity_contract_detail.xml new file mode 100644 index 0000000..0a8b8f8 --- /dev/null +++ b/app/src/main/res/layout/activity_contract_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_contract_basic_information.xml b/app/src/main/res/layout/fragment_contract_basic_information.xml new file mode 100644 index 0000000..b4e9d26 --- /dev/null +++ b/app/src/main/res/layout/fragment_contract_basic_information.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_contract_collection.xml b/app/src/main/res/layout/fragment_contract_collection.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_contract_collection.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_contract_entrust_brief.xml b/app/src/main/res/layout/fragment_contract_entrust_brief.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_contract_entrust_brief.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file