diff --git a/src/api/crm/receivable/plan/index.ts b/src/api/crm/receivable/plan/index.ts
index f11ca17c..ce379beb 100644
--- a/src/api/crm/receivable/plan/index.ts
+++ b/src/api/crm/receivable/plan/index.ts
@@ -4,7 +4,6 @@ export interface ReceivablePlanVO {
id: number
period: number
receivableId: number
- finishStatus: number
price: number
returnTime: Date
remindDays: number
@@ -43,10 +42,9 @@ export const getReceivablePlan = async (id: number) => {
}
// 查询回款计划下拉数据
-// TODO @芋艿:再看看这里
-export const getReceivablePlanListByContractId = async (customerId: number, contractId: number) => {
+export const getReceivablePlanSimpleList = async (customerId: number, contractId: number) => {
return await request.get({
- url: `/crm/receivable-plan/list-all-simple-by-customer?customerId=${customerId}&contractId=${contractId}`
+ url: `/crm/receivable-plan/simple-list?customerId=${customerId}&contractId=${contractId}`
})
}
diff --git a/src/views/crm/receivable/ReceivableForm.vue b/src/views/crm/receivable/ReceivableForm.vue
index 537173f9..67715b58 100644
--- a/src/views/crm/receivable/ReceivableForm.vue
+++ b/src/views/crm/receivable/ReceivableForm.vue
@@ -10,12 +10,37 @@
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
@@ -103,14 +127,11 @@
/>
+
+
-
+
@@ -129,20 +150,19 @@ import * as CustomerApi from '@/api/crm/customer'
import * as ContractApi from '@/api/crm/contract'
import { useUserStore } from '@/store/modules/user'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+import form from '@/components/Form/src/Form.vue'
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
-const userList = ref([]) // 用户列表
+const userOptions = ref([]) // 用户列表
const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const formType = ref('') // 表单的类型:create - 新增;update - 修改
const formData = ref({} as ReceivableApi.ReceivableVO)
const formRules = reactive({
- no: [{ required: true, message: '回款编号不能为空', trigger: 'blur' }],
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
contractId: [{ required: true, message: '合同不能为空', trigger: 'blur' }],
- auditStatus: [{ required: true, message: '审批状态不能为空', trigger: 'blur' }],
returnTime: [{ required: true, message: '回款日期不能为空', trigger: 'blur' }],
price: [{ required: true, message: '回款金额不能为空', trigger: 'blur' }]
})
@@ -150,8 +170,13 @@ const formRef = ref() // 表单 Ref
const customerList = ref([]) // 客户列表
const contractList = ref([]) // 合同列表
const receivablePlanList = ref([]) // 回款计划列表
+
/** 打开弹窗 */
-const open = async (type: string, id?: number, planData?: ReceivablePlanApi.ReceivablePlanVO) => {
+const open = async (
+ type: string,
+ id?: number,
+ receivablePlan?: ReceivablePlanApi.ReceivablePlanVO
+) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
@@ -166,7 +191,7 @@ const open = async (type: string, id?: number, planData?: ReceivablePlanApi.Rece
}
}
// 获得用户列表
- userList.value = await UserApi.getSimpleUserList()
+ userOptions.value = await UserApi.getSimpleUserList()
// 获得客户列表
customerList.value = await CustomerApi.getCustomerSimpleList()
// 默认新建时选中自己
@@ -174,10 +199,12 @@ const open = async (type: string, id?: number, planData?: ReceivablePlanApi.Rece
formData.value.ownerUserId = useUserStore().getUser.id
}
// 从回款计划创建回款
- if (planData) {
- formData.value.customerId = planData.customerId
- formData.value.contractId = planData.contractId
- formData.value.planId = planData.id
+ if (receivablePlan) {
+ formData.value.customerId = receivablePlan.customerId
+ formData.value.contractId = receivablePlan.contractId
+ formData.value.planId = receivablePlan.id
+ formData.value.price = receivablePlan.price
+ formData.value.returnType = receivablePlan.returnType
}
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@@ -214,53 +241,47 @@ const resetForm = () => {
formRef.value?.resetFields()
}
-const getContractList = async (customerId: number) => {
- contractList.value = await ContractApi.getContractSimpleList(customerId)
+/** 处理切换客户 */
+const handleCustomerChange = async (customerId: number) => {
+ // 重置合同编号
+ formData.value.contractId = undefined
+ // 获得合同列表
+ if (customerId) {
+ contractList.value = []
+ contractList.value = await ContractApi.getContractSimpleList(customerId)
+ }
}
-const getReceivablePlanList = async (contractId: number) => {
- receivablePlanList.value = await ReceivablePlanApi.getReceivablePlanListByContractId(
- formData.value.customerId,
- contractId
- )
+
+/** 处理切换合同 */
+const handleContractChange = async (contractId: number) => {
+ // 重置回款计划编号
+ formData.value.planId = undefined
+ if (contractId) {
+ // 获得回款计划列表
+ receivablePlanList.value = []
+ receivablePlanList.value = await ReceivablePlanApi.getReceivablePlanSimpleList(
+ formData.value.customerId,
+ contractId
+ )
+ // 设置金额
+ const contract = contractList.value.find((item) => item.id === contractId)
+ if (contract) {
+ // TODO @芋艿:后续可以改成未还款金额
+ formData.value.price = contract.totalPrice
+ }
+ }
}
-watch(
- () => formData.value.customerId,
- (newVal) => {
- if (!newVal) {
- return
- }
- getContractList(newVal)
- },
- {
- immediate: true
+
+/** 处理切换回款计划 */
+const handleReceivablePlanChange = (planId: number) => {
+ if (!planId) {
+ return
}
-)
-watch(
- () => formData.value.contractId,
- (newVal) => {
- if (!newVal) {
- return
- }
- getReceivablePlanList(newVal)
- },
- {
- immediate: true
+ const receivablePlan = receivablePlanList.value.find((item) => item.id === planId)
+ if (!receivablePlan) {
+ return
}
-)
-watch(
- () => formData.value.planId,
- (newVal) => {
- if (!newVal) {
- return
- }
- const receivablePlan = receivablePlanList.value.find((item) => item.id === newVal)
- if (!receivablePlan) {
- return
- }
- // 只有没有金额的时候才设置
- if (!formData.value.price || formData.value.price === 0) {
- formData.value.price = receivablePlan.price
- }
- }
-)
+ formData.value.price = receivablePlan.price
+ formData.value.returnType = receivablePlan.returnType
+}
diff --git a/src/views/crm/receivable/index.vue b/src/views/crm/receivable/index.vue
index a02847ba..0ec29bdb 100644
--- a/src/views/crm/receivable/index.vue
+++ b/src/views/crm/receivable/index.vue
@@ -195,7 +195,6 @@
-