crm 收款
parent
c9d68e6a1c
commit
584d6978ae
2
.env.dev
2
.env.dev
|
|
@ -4,7 +4,7 @@ NODE_ENV=production
|
||||||
VITE_DEV=true
|
VITE_DEV=true
|
||||||
|
|
||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://192.168.6.136:48080'
|
VITE_BASE_URL='http://192.168.6.122:48080'
|
||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
|
||||||
VITE_UPLOAD_TYPE=client
|
VITE_UPLOAD_TYPE=client
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i": "pnpm install",
|
"i": "pnpm install",
|
||||||
"dev": "vite --mode env.local",
|
"dev": "vite --mode env.local",
|
||||||
|
"test": "vite --mode env.test",
|
||||||
"dev-server": "vite --mode dev",
|
"dev-server": "vite --mode dev",
|
||||||
"ts:check": "vue-tsc --noEmit",
|
"ts:check": "vue-tsc --noEmit",
|
||||||
"build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
|
"build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
|
||||||
|
|
|
||||||
|
|
@ -49,17 +49,6 @@
|
||||||
</el-link>
|
</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="商机名称" prop="businessName" width="130">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-link
|
|
||||||
:underline="false"
|
|
||||||
type="primary"
|
|
||||||
@click="openBusinessDetail(scope.row.businessId)"
|
|
||||||
>
|
|
||||||
{{ scope.row.businessName }}
|
|
||||||
</el-link>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="合同金额(元)"
|
label="合同金额(元)"
|
||||||
|
|
@ -103,14 +92,14 @@
|
||||||
<el-table-column align="center" label="备注" prop="remark" width="200" />
|
<el-table-column align="center" label="备注" prop="remark" width="200" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="已回款金额(元)"
|
label="已付款金额(元)"
|
||||||
prop="totalReceivablePrice"
|
prop="totalReceivablePrice"
|
||||||
width="140"
|
width="140"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="未回款金额(元)"
|
label="未付款金额(元)"
|
||||||
prop="totalReceivablePrice"
|
prop="totalReceivablePrice"
|
||||||
width="140"
|
width="140"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<!-- 待审核回款 -->
|
<!-- 待审核付款 -->
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<div class="pb-5 text-xl"> 待审核回款 </div>
|
<div class="pb-5 text-xl"> 待审核付款 </div>
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
<el-form
|
<el-form
|
||||||
class="-mb-15px"
|
class="-mb-15px"
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column align="center" fixed="left" label="回款编号" prop="no" width="180">
|
<el-table-column align="center" fixed="left" label="付款编号" prop="no" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||||
{{ scope.row.no }}
|
{{ scope.row.no }}
|
||||||
|
|
@ -62,18 +62,18 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
align="center"
|
align="center"
|
||||||
label="回款日期"
|
label="付款日期"
|
||||||
prop="returnTime"
|
prop="returnTime"
|
||||||
width="150px"
|
width="150px"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="回款金额(元)"
|
label="付款金额(元)"
|
||||||
prop="price"
|
prop="price"
|
||||||
width="140"
|
width="140"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="回款方式" prop="returnType" width="130px">
|
<el-table-column align="center" label="付款方式" prop="returnType" width="130px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="创建人" prop="creatorName" width="120" />
|
<el-table-column align="center" label="创建人" prop="creatorName" width="120" />
|
||||||
<el-table-column align="center" fixed="right" label="回款状态" prop="auditStatus" width="120">
|
<el-table-column align="center" fixed="right" label="付款状态" prop="auditStatus" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -173,7 +173,7 @@ const handleProcessDetail = (row: ReceivableApi.ReceivableVO) => {
|
||||||
push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
|
push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 打开回款详情 */
|
/** 打开付款详情 */
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
const openDetail = (id: number) => {
|
const openDetail = (id: number) => {
|
||||||
push({ name: 'CrmReceivableDetail', params: { id } })
|
push({ name: 'CrmReceivableDetail', params: { id } })
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<!-- 待回款提醒 -->
|
<!-- 待付款提醒 -->
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<div class="pb-5 text-xl">待回款提醒</div>
|
<div class="pb-5 text-xl">待付款提醒</div>
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
<el-form
|
<el-form
|
||||||
ref="queryFormRef"
|
ref="queryFormRef"
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="计划回款金额(元)"
|
label="计划付款金额(元)"
|
||||||
prop="price"
|
prop="price"
|
||||||
width="160"
|
width="160"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
|
|
@ -59,7 +59,7 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
align="center"
|
align="center"
|
||||||
label="计划回款日期"
|
label="计划付款日期"
|
||||||
prop="returnTime"
|
prop="returnTime"
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
width="180px"
|
width="180px"
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="回款方式" prop="returnType" width="130px">
|
<el-table-column align="center" label="付款方式" prop="returnType" width="130px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
<el-table-column label="负责人" prop="ownerUserName" width="120" />
|
<el-table-column label="负责人" prop="ownerUserName" width="120" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="实际回款金额(元)"
|
label="实际付款金额(元)"
|
||||||
prop="receivable.price"
|
prop="receivable.price"
|
||||||
width="160"
|
width="160"
|
||||||
>
|
>
|
||||||
|
|
@ -93,14 +93,14 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="实际回款日期"
|
label="实际付款日期"
|
||||||
prop="receivable.returnTime"
|
prop="receivable.returnTime"
|
||||||
width="180px"
|
width="180px"
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="实际回款金额(元)"
|
label="实际付款金额(元)"
|
||||||
prop="receivable.price"
|
prop="receivable.price"
|
||||||
width="160"
|
width="160"
|
||||||
>
|
>
|
||||||
|
|
@ -135,7 +135,7 @@
|
||||||
@click="openReceivableForm(scope.row)"
|
@click="openReceivableForm(scope.row)"
|
||||||
:disabled="scope.row.receivableId"
|
:disabled="scope.row.receivableId"
|
||||||
>
|
>
|
||||||
创建回款
|
创建付款
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -191,7 +191,7 @@ const handleQuery = () => {
|
||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 创建回款操作 */
|
/** 创建付款操作 */
|
||||||
const receivableFormRef = ref()
|
const receivableFormRef = ref()
|
||||||
const openReceivableForm = (row: ReceivablePlanApi.ReceivablePlanVO) => {
|
const openReceivableForm = (row: ReceivablePlanApi.ReceivablePlanVO) => {
|
||||||
receivableFormRef.value.open('create', undefined, row)
|
receivableFormRef.value.open('create', undefined, row)
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,26 @@
|
||||||
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column align="center" fixed="right" label="操作" width="200">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
v-hasPermi="['crm:contract:update']"
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
@click="openForm('update', scope.row.id)"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-hasPermi="['crm:contract:delete']"
|
||||||
|
link
|
||||||
|
type="danger"
|
||||||
|
@click="handleDelete(scope.row.id)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<Pagination
|
<Pagination
|
||||||
|
|
@ -107,8 +127,9 @@ const handleQuery = () => {
|
||||||
|
|
||||||
/** 添加 */
|
/** 添加 */
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const openForm = () => {
|
// 编辑
|
||||||
formRef.value.open('create')
|
const openForm = (type = 'create', id?: number) => {
|
||||||
|
formRef.value.open(type, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 打开合同详情 */
|
/** 打开合同详情 */
|
||||||
|
|
@ -117,6 +138,16 @@ const openDetail = (id: number) => {
|
||||||
push({ name: 'CrmContractDetail', params: { id } })
|
push({ name: 'CrmContractDetail', params: { id } })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 删除 */
|
||||||
|
const handleDelete = async (id: number) => {
|
||||||
|
try {
|
||||||
|
await ElMessageBox.confirm('确定要删除该合同吗?', '提示', { type: 'warning' })
|
||||||
|
await ContractApi.deleteContract(id)
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
getList()
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
/** 监听打开的 bizId + bizType,从而加载最新的列表 */
|
/** 监听打开的 bizId + bizType,从而加载最新的列表 */
|
||||||
watch(
|
watch(
|
||||||
() => [props.bizId, props.bizType],
|
() => [props.bizId, props.bizType],
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<el-descriptions-item label="下单时间">
|
<el-descriptions-item label="下单时间">
|
||||||
{{ formatDate(contract.orderDate) }}
|
{{ formatDate(contract.orderDate) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="回款金额(元)">
|
<el-descriptions-item label="付款金额(元)">
|
||||||
{{ erpPriceInputFormatter(contract.totalReceivablePrice) }}
|
{{ erpPriceInputFormatter(contract.totalReceivablePrice) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="负责人">
|
<el-descriptions-item label="负责人">
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
<el-tab-pane label="产品">
|
<el-tab-pane label="产品">
|
||||||
<ContractProductList :contract="contract" />
|
<ContractProductList :contract="contract" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="回款">
|
<el-tab-pane label="付款">
|
||||||
<ReceivablePlanList
|
<ReceivablePlanList
|
||||||
:contract-id="contract.id!"
|
:contract-id="contract.id!"
|
||||||
:customer-id="contract.customerId"
|
:customer-id="contract.customerId"
|
||||||
|
|
@ -106,8 +106,8 @@ const getOperateLog = async (contractId: number) => {
|
||||||
logList.value = data.list
|
logList.value = data.list
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 从回款计划创建回款 */
|
/** 从付款计划创建付款 */
|
||||||
const receivableListRef = ref<InstanceType<typeof ReceivableList>>() // 回款列表 Ref
|
const receivableListRef = ref<InstanceType<typeof ReceivableList>>() // 付款列表 Ref
|
||||||
const createReceivable = (planData: any) => {
|
const createReceivable = (planData: any) => {
|
||||||
receivableListRef.value?.createReceivable(planData)
|
receivableListRef.value?.createReceivable(planData)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -155,14 +155,14 @@
|
||||||
<el-table-column align="center" label="备注" prop="remark" width="200" />
|
<el-table-column align="center" label="备注" prop="remark" width="200" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="已回款金额(元)"
|
label="已付款金额(元)"
|
||||||
prop="totalReceivablePrice"
|
prop="totalReceivablePrice"
|
||||||
width="140"
|
width="140"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="未回款金额(元)"
|
label="未付款金额(元)"
|
||||||
prop="totalReceivablePrice"
|
prop="totalReceivablePrice"
|
||||||
width="140"
|
width="140"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="回款编号" prop="no">
|
<el-form-item label="付款编号" prop="no">
|
||||||
<el-input v-model="formData.no" disabled placeholder="保存时自动生成" />
|
<el-input v-model="formData.no" disabled placeholder="保存时自动生成" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -73,12 +73,12 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="回款期数" prop="planId">
|
<el-form-item label="付款期数" prop="planId">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.planId"
|
v-model="formData.planId"
|
||||||
:disabled="formType !== 'create' || !formData.contractId"
|
:disabled="formType !== 'create' || !formData.contractId"
|
||||||
class="!w-1/1"
|
class="!w-1/1"
|
||||||
placeholder="请选择回款期数"
|
placeholder="请选择付款期数"
|
||||||
@change="handleReceivablePlanChange"
|
@change="handleReceivablePlanChange"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -92,8 +92,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="回款方式" prop="returnType">
|
<el-form-item label="付款方式" prop="returnType">
|
||||||
<el-select v-model="formData.returnType" class="w-1/1" placeholder="请选择回款方式">
|
<el-select v-model="formData.returnType" class="w-1/1" placeholder="请选择付款方式">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -106,22 +106,22 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="回款金额" prop="price">
|
<el-form-item label="付款金额" prop="price">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="formData.price"
|
v-model="formData.price"
|
||||||
:min="0.01"
|
:min="0.01"
|
||||||
:precision="2"
|
:precision="2"
|
||||||
class="!w-100%"
|
class="!w-100%"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
placeholder="请输入回款金额"
|
placeholder="请输入付款金额"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="回款日期" prop="returnTime">
|
<el-form-item label="付款日期" prop="returnTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.returnTime"
|
v-model="formData.returnTime"
|
||||||
placeholder="选择回款日期"
|
placeholder="选择付款日期"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="x"
|
value-format="x"
|
||||||
class="!w-100%"
|
class="!w-100%"
|
||||||
|
|
@ -164,13 +164,13 @@ const formData = ref<ReceivableApi.ReceivableVO>({} as ReceivableApi.ReceivableV
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
|
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
|
||||||
contractId: [{ required: true, message: '合同不能为空', trigger: 'blur' }],
|
contractId: [{ required: true, message: '合同不能为空', trigger: 'blur' }],
|
||||||
returnTime: [{ required: true, message: '回款日期不能为空', trigger: 'blur' }],
|
returnTime: [{ required: true, message: '付款日期不能为空', trigger: 'blur' }],
|
||||||
price: [{ required: true, message: '回款金额不能为空', trigger: 'blur' }]
|
price: [{ required: true, message: '付款金额不能为空', trigger: 'blur' }]
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
const customerList = ref<CustomerApi.CustomerVO[]>([]) // 客户列表
|
const customerList = ref<CustomerApi.CustomerVO[]>([]) // 客户列表
|
||||||
const contractList = ref<ContractApi.ContractVO[]>([]) // 合同列表
|
const contractList = ref<ContractApi.ContractVO[]>([]) // 合同列表
|
||||||
const receivablePlanList = ref<ReceivablePlanApi.ReceivablePlanVO[]>([]) // 回款计划列表
|
const receivablePlanList = ref<ReceivablePlanApi.ReceivablePlanVO[]>([]) // 付款计划列表
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (
|
const open = async (
|
||||||
|
|
@ -202,7 +202,7 @@ const open = async (
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
formData.value.ownerUserId = useUserStore().getUser.id
|
formData.value.ownerUserId = useUserStore().getUser.id
|
||||||
}
|
}
|
||||||
// 从回款计划创建回款
|
// 从付款计划创建付款
|
||||||
if (receivablePlan) {
|
if (receivablePlan) {
|
||||||
formData.value.customerId = receivablePlan.customerId
|
formData.value.customerId = receivablePlan.customerId
|
||||||
await handleCustomerChange(receivablePlan.customerId)
|
await handleCustomerChange(receivablePlan.customerId)
|
||||||
|
|
@ -262,10 +262,10 @@ const handleCustomerChange = async (customerId: number) => {
|
||||||
|
|
||||||
/** 处理切换合同 */
|
/** 处理切换合同 */
|
||||||
const handleContractChange = async (contractId: number) => {
|
const handleContractChange = async (contractId: number) => {
|
||||||
// 重置回款计划编号
|
// 重置付款计划编号
|
||||||
formData.value.planId = undefined
|
formData.value.planId = undefined
|
||||||
if (contractId) {
|
if (contractId) {
|
||||||
// 获得回款计划列表
|
// 获得付款计划列表
|
||||||
receivablePlanList.value = []
|
receivablePlanList.value = []
|
||||||
receivablePlanList.value = await ReceivablePlanApi.getReceivablePlanSimpleList(
|
receivablePlanList.value = await ReceivablePlanApi.getReceivablePlanSimpleList(
|
||||||
formData.value.customerId!,
|
formData.value.customerId!,
|
||||||
|
|
@ -279,7 +279,7 @@ const handleContractChange = async (contractId: number) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 处理切换回款计划 */
|
/** 处理切换付款计划 */
|
||||||
const handleReceivablePlanChange = (planId: number) => {
|
const handleReceivablePlanChange = (planId: number) => {
|
||||||
if (!planId) {
|
if (!planId) {
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -3,31 +3,31 @@
|
||||||
<el-row justify="end">
|
<el-row justify="end">
|
||||||
<el-button @click="openForm('create')">
|
<el-button @click="openForm('create')">
|
||||||
<Icon class="mr-5px" icon="icon-park:income-one" />
|
<Icon class="mr-5px" icon="icon-park:income-one" />
|
||||||
创建回款
|
创建付款
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap class="mt-10px">
|
<ContentWrap class="mt-10px">
|
||||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||||
<el-table-column align="center" label="回款编号" prop="no" />
|
<el-table-column align="center" label="付款编号" prop="no" />
|
||||||
<el-table-column align="center" label="客户" prop="customerName" />
|
<el-table-column align="center" label="客户" prop="customerName" />
|
||||||
<el-table-column align="center" label="合同" prop="contract.no" />
|
<el-table-column align="center" label="合同" prop="contract.no" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
align="center"
|
align="center"
|
||||||
label="回款日期"
|
label="付款日期"
|
||||||
prop="returnTime"
|
prop="returnTime"
|
||||||
width="150px"
|
width="150px"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="回款方式" prop="returnType" width="130px">
|
<el-table-column align="center" label="付款方式" prop="returnType" width="130px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="回款金额(元)"
|
label="付款金额(元)"
|
||||||
prop="price"
|
prop="price"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
/>
|
/>
|
||||||
|
|
@ -142,7 +142,7 @@ const handleDelete = async (id: number) => {
|
||||||
} catch {}
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 从回款计划创建回款 */
|
/** 从付款计划创建付款 */
|
||||||
const createReceivable = (planData: any) => {
|
const createReceivable = (planData: any) => {
|
||||||
const data = planData as unknown as ReceivablePlanApi.ReceivablePlanVO
|
const data = planData as unknown as ReceivablePlanApi.ReceivablePlanVO
|
||||||
formRef.value.open('create', undefined, data)
|
formRef.value.open('create', undefined, data)
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,12 @@
|
||||||
class="-mb-15px"
|
class="-mb-15px"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="回款编号" prop="no">
|
<el-form-item label="付款编号" prop="no">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.no"
|
v-model="queryParams.no"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入回款编号"
|
placeholder="请输入付款编号"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -75,7 +75,7 @@
|
||||||
<el-tab-pane label="下属负责的" name="3" />
|
<el-tab-pane label="下属负责的" name="3" />
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||||
<el-table-column align="center" fixed="left" label="回款编号" prop="no" width="180">
|
<el-table-column align="center" fixed="left" label="付款编号" prop="no" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||||
{{ scope.row.no }}
|
{{ scope.row.no }}
|
||||||
|
|
@ -107,18 +107,18 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
align="center"
|
align="center"
|
||||||
label="回款日期"
|
label="付款日期"
|
||||||
prop="returnTime"
|
prop="returnTime"
|
||||||
width="150px"
|
width="150px"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="回款金额(元)"
|
label="付款金额(元)"
|
||||||
prop="price"
|
prop="price"
|
||||||
width="140"
|
width="140"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="回款方式" prop="returnType" width="130px">
|
<el-table-column align="center" label="付款方式" prop="returnType" width="130px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -148,7 +148,7 @@
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="创建人" prop="creatorName" width="120" />
|
<el-table-column align="center" label="创建人" prop="creatorName" width="120" />
|
||||||
<el-table-column align="center" fixed="right" label="回款状态" prop="auditStatus" width="120">
|
<el-table-column align="center" fixed="right" label="付款状态" prop="auditStatus" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -284,7 +284,7 @@ const handleDelete = async (id: number) => {
|
||||||
|
|
||||||
/** 提交审核 **/
|
/** 提交审核 **/
|
||||||
const handleSubmit = async (row: ReceivableApi.ReceivableVO) => {
|
const handleSubmit = async (row: ReceivableApi.ReceivableVO) => {
|
||||||
await message.confirm(`您确定提交编号为【${row.no}】的回款审核吗?`)
|
await message.confirm(`您确定提交编号为【${row.no}】的付款审核吗?`)
|
||||||
await ReceivableApi.submitReceivable(row.id)
|
await ReceivableApi.submitReceivable(row.id)
|
||||||
message.success('提交审核成功!')
|
message.success('提交审核成功!')
|
||||||
await getList()
|
await getList()
|
||||||
|
|
@ -295,7 +295,7 @@ const handleProcessDetail = (row: ReceivableApi.ReceivableVO) => {
|
||||||
push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
|
push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 打开回款详情 */
|
/** 打开付款详情 */
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
const openDetail = (id: number) => {
|
const openDetail = (id: number) => {
|
||||||
push({ name: 'CrmReceivableDetail', params: { id } })
|
push({ name: 'CrmReceivableDetail', params: { id } })
|
||||||
|
|
@ -319,7 +319,7 @@ const handleExport = async () => {
|
||||||
// 发起导出
|
// 发起导出
|
||||||
exportLoading.value = true
|
exportLoading.value = true
|
||||||
const data = await ReceivableApi.exportReceivable(queryParams)
|
const data = await ReceivableApi.exportReceivable(queryParams)
|
||||||
download.excel(data, '回款.xls')
|
download.excel(data, '付款.xls')
|
||||||
} catch {
|
} catch {
|
||||||
} finally {
|
} finally {
|
||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
|
|
|
||||||
|
|
@ -71,22 +71,22 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="计划回款金额" prop="price">
|
<el-form-item label="计划付款金额" prop="price">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="formData.price"
|
v-model="formData.price"
|
||||||
:min="0.01"
|
:min="0.01"
|
||||||
:precision="2"
|
:precision="2"
|
||||||
class="!w-100%"
|
class="!w-100%"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
placeholder="请输入计划回款金额"
|
placeholder="请输入计划付款金额"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="计划回款日期" prop="returnTime">
|
<el-form-item label="计划付款日期" prop="returnTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.returnTime"
|
v-model="formData.returnTime"
|
||||||
placeholder="选择计划回款日期"
|
placeholder="选择计划付款日期"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="x"
|
value-format="x"
|
||||||
class="!w-100%"
|
class="!w-100%"
|
||||||
|
|
@ -106,8 +106,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="回款方式" prop="returnType">
|
<el-form-item label="付款方式" prop="returnType">
|
||||||
<el-select v-model="formData.returnType" class="w-1/1" placeholder="请选择回款方式">
|
<el-select v-model="formData.returnType" class="w-1/1" placeholder="请选择付款方式">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -148,8 +148,8 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const formData = ref<ReceivablePlanApi.ReceivablePlanVO>({} as ReceivablePlanApi.ReceivablePlanVO)
|
const formData = ref<ReceivablePlanApi.ReceivablePlanVO>({} as ReceivablePlanApi.ReceivablePlanVO)
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
price: [{ required: true, message: '计划回款金额不能为空', trigger: 'blur' }],
|
price: [{ required: true, message: '计划付款金额不能为空', trigger: 'blur' }],
|
||||||
returnTime: [{ required: true, message: '计划回款日期不能为空', trigger: 'blur' }],
|
returnTime: [{ required: true, message: '计划付款日期不能为空', trigger: 'blur' }],
|
||||||
customerId: [{ required: true, message: '客户编号不能为空', trigger: 'blur' }],
|
customerId: [{ required: true, message: '客户编号不能为空', trigger: 'blur' }],
|
||||||
contractId: [{ required: true, message: '合同编号不能为空', trigger: 'blur' }],
|
contractId: [{ required: true, message: '合同编号不能为空', trigger: 'blur' }],
|
||||||
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }]
|
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<el-row justify="end">
|
<el-row justify="end">
|
||||||
<el-button @click="openForm('create', undefined)">
|
<el-button @click="openForm('create', undefined)">
|
||||||
<Icon class="mr-5px" icon="icon-park:income" />
|
<Icon class="mr-5px" icon="icon-park:income" />
|
||||||
创建回款计划
|
创建付款计划
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
<el-table-column align="center" label="期数" prop="period" />
|
<el-table-column align="center" label="期数" prop="period" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="计划回款(元)"
|
label="计划付款(元)"
|
||||||
prop="price"
|
prop="price"
|
||||||
width="120"
|
width="120"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
align="center"
|
align="center"
|
||||||
label="计划回款日期"
|
label="计划付款日期"
|
||||||
prop="returnTime"
|
prop="returnTime"
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
@click="createReceivable(scope.row)"
|
@click="createReceivable(scope.row)"
|
||||||
:disabled="scope.row.receivableId"
|
:disabled="scope.row.receivableId"
|
||||||
>
|
>
|
||||||
创建回款
|
创建付款
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['crm:receivable-plan:update']"
|
v-hasPermi="['crm:receivable-plan:update']"
|
||||||
|
|
@ -137,7 +137,7 @@ const openForm = (type: string, id?: number) => {
|
||||||
formRef.value.open(type, id, props.customerId, props.contractId)
|
formRef.value.open(type, id, props.customerId, props.contractId)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 创建回款 */
|
/** 创建付款 */
|
||||||
const emits = defineEmits<{
|
const emits = defineEmits<{
|
||||||
(e: 'createReceivable', v: ReceivablePlanApi.ReceivablePlanVO)
|
(e: 'createReceivable', v: ReceivablePlanApi.ReceivablePlanVO)
|
||||||
}>()
|
}>()
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,13 @@
|
||||||
{{ receivablePlan.customerName }}
|
{{ receivablePlan.customerName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="合同编号">{{ receivablePlan.contractNo }}</el-descriptions-item>
|
<el-descriptions-item label="合同编号">{{ receivablePlan.contractNo }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="计划回款金额">
|
<el-descriptions-item label="计划付款金额">
|
||||||
{{ erpPriceInputFormatter(receivablePlan.price) }}
|
{{ erpPriceInputFormatter(receivablePlan.price) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="计划回款日期">
|
<el-descriptions-item label="计划付款日期">
|
||||||
{{ formatDate(receivablePlan.returnTime) }}
|
{{ formatDate(receivablePlan.returnTime) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="实际回款金额">
|
<el-descriptions-item label="实际付款金额">
|
||||||
<el-text v-if="receivablePlan.receivable">
|
<el-text v-if="receivablePlan.receivable">
|
||||||
{{ erpPriceInputFormatter(receivablePlan.receivable.price) }}
|
{{ erpPriceInputFormatter(receivablePlan.receivable.price) }}
|
||||||
</el-text>
|
</el-text>
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,13 @@
|
||||||
<el-descriptions-item label="合同编号">
|
<el-descriptions-item label="合同编号">
|
||||||
{{ receivablePlan.contractNo }}
|
{{ receivablePlan.contractNo }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="计划回款金额">
|
<el-descriptions-item label="计划付款金额">
|
||||||
{{ erpPriceInputFormatter(receivablePlan.price) }}
|
{{ erpPriceInputFormatter(receivablePlan.price) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="计划回款日期">
|
<el-descriptions-item label="计划付款日期">
|
||||||
{{ formatDate(receivablePlan.returnTime, 'YYYY-MM-DD') }}
|
{{ formatDate(receivablePlan.returnTime, 'YYYY-MM-DD') }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="计划回款方式">
|
<el-descriptions-item label="计划付款方式">
|
||||||
<dict-tag
|
<dict-tag
|
||||||
:type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE"
|
:type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE"
|
||||||
:value="receivablePlan.returnType"
|
:value="receivablePlan.returnType"
|
||||||
|
|
@ -29,19 +29,19 @@
|
||||||
{{ receivablePlan.remindDays }}
|
{{ receivablePlan.remindDays }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="备注">{{ receivablePlan.remark }}</el-descriptions-item>
|
<el-descriptions-item label="备注">{{ receivablePlan.remark }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="实际回款金额">
|
<el-descriptions-item label="实际付款金额">
|
||||||
<el-text v-if="receivablePlan.receivable">
|
<el-text v-if="receivablePlan.receivable">
|
||||||
{{ erpPriceInputFormatter(receivablePlan.receivable.price) }}
|
{{ erpPriceInputFormatter(receivablePlan.receivable.price) }}
|
||||||
</el-text>
|
</el-text>
|
||||||
<el-text v-else>{{ erpPriceInputFormatter(0) }}</el-text>
|
<el-text v-else>{{ erpPriceInputFormatter(0) }}</el-text>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="未回款金额">
|
<el-descriptions-item label="未付款金额">
|
||||||
<el-text v-if="receivablePlan.receivable">
|
<el-text v-if="receivablePlan.receivable">
|
||||||
{{ erpPriceInputFormatter(receivablePlan.price - receivablePlan.receivable.price) }}
|
{{ erpPriceInputFormatter(receivablePlan.price - receivablePlan.receivable.price) }}
|
||||||
</el-text>
|
</el-text>
|
||||||
<el-text v-else>{{ erpPriceInputFormatter(receivablePlan.price) }}</el-text>
|
<el-text v-else>{{ erpPriceInputFormatter(receivablePlan.price) }}</el-text>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="实际回款日期">
|
<el-descriptions-item label="实际付款日期">
|
||||||
{{ formatDate(receivablePlan.receivable?.returnTime, 'YYYY-MM-DD') }}
|
{{ formatDate(receivablePlan.receivable?.returnTime, 'YYYY-MM-DD') }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,11 @@ defineOptions({ name: 'CrmReceivablePlanDetail' })
|
||||||
|
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
|
||||||
const receivablePlanId = ref(0) // 回款计划编号
|
const receivablePlanId = ref(0) // 付款计划编号
|
||||||
const loading = ref(true) // 加载中
|
const loading = ref(true) // 加载中
|
||||||
const receivablePlan = ref<ReceivablePlanApi.ReceivablePlanVO>(
|
const receivablePlan = ref<ReceivablePlanApi.ReceivablePlanVO>(
|
||||||
{} as ReceivablePlanApi.ReceivablePlanVO
|
{} as ReceivablePlanApi.ReceivablePlanVO
|
||||||
) // 回款计划详情
|
) // 付款计划详情
|
||||||
const permissionListRef = ref<InstanceType<typeof PermissionList>>() // 团队成员列表 Ref
|
const permissionListRef = ref<InstanceType<typeof PermissionList>>() // 团队成员列表 Ref
|
||||||
|
|
||||||
/** 获取详情 */
|
/** 获取详情 */
|
||||||
|
|
@ -93,7 +93,7 @@ const close = () => {
|
||||||
const { params } = useRoute()
|
const { params } = useRoute()
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
if (!params.id) {
|
if (!params.id) {
|
||||||
message.warning('参数错误,回款计划不能为空!')
|
message.warning('参数错误,付款计划不能为空!')
|
||||||
close()
|
close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="计划回款金额(元)"
|
label="计划付款金额(元)"
|
||||||
prop="price"
|
prop="price"
|
||||||
width="160"
|
width="160"
|
||||||
:formatter="erpPriceTableColumnFormatter"
|
:formatter="erpPriceTableColumnFormatter"
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
align="center"
|
align="center"
|
||||||
label="计划回款日期"
|
label="计划付款日期"
|
||||||
prop="returnTime"
|
prop="returnTime"
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
|
|
@ -115,7 +115,7 @@
|
||||||
width="180px"
|
width="180px"
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="回款方式" prop="returnType" width="130px">
|
<el-table-column align="center" label="付款方式" prop="returnType" width="130px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
<dict-tag :type="DICT_TYPE.CRM_RECEIVABLE_RETURN_TYPE" :value="scope.row.returnType" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -124,7 +124,7 @@
|
||||||
<el-table-column label="负责人" prop="ownerUserName" width="120" />
|
<el-table-column label="负责人" prop="ownerUserName" width="120" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="实际回款金额(元)"
|
label="实际付款金额(元)"
|
||||||
prop="receivable.price"
|
prop="receivable.price"
|
||||||
width="160"
|
width="160"
|
||||||
>
|
>
|
||||||
|
|
@ -137,14 +137,14 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="实际回款日期"
|
label="实际付款日期"
|
||||||
prop="receivable.returnTime"
|
prop="receivable.returnTime"
|
||||||
width="180px"
|
width="180px"
|
||||||
:formatter="dateFormatter2"
|
:formatter="dateFormatter2"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="实际回款金额(元)"
|
label="实际付款金额(元)"
|
||||||
prop="receivable.price"
|
prop="receivable.price"
|
||||||
width="160"
|
width="160"
|
||||||
>
|
>
|
||||||
|
|
@ -179,7 +179,7 @@
|
||||||
@click="openReceivableForm(scope.row)"
|
@click="openReceivableForm(scope.row)"
|
||||||
:disabled="scope.row.receivableId"
|
:disabled="scope.row.receivableId"
|
||||||
>
|
>
|
||||||
创建回款
|
创建付款
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['crm:receivable-plan:update']"
|
v-hasPermi="['crm:receivable-plan:update']"
|
||||||
|
|
@ -281,7 +281,7 @@ const openForm = (type: string, id?: number) => {
|
||||||
formRef.value.open(type, id)
|
formRef.value.open(type, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 创建回款操作 */
|
/** 创建付款操作 */
|
||||||
const receivableFormRef = ref()
|
const receivableFormRef = ref()
|
||||||
const openReceivableForm = (row: ReceivablePlanApi.ReceivablePlanVO) => {
|
const openReceivableForm = (row: ReceivablePlanApi.ReceivablePlanVO) => {
|
||||||
receivableFormRef.value.open('create', undefined, row)
|
receivableFormRef.value.open('create', undefined, row)
|
||||||
|
|
@ -308,7 +308,7 @@ const handleExport = async () => {
|
||||||
// 发起导出
|
// 发起导出
|
||||||
exportLoading.value = true
|
exportLoading.value = true
|
||||||
const data = await ReceivablePlanApi.exportReceivablePlan(queryParams)
|
const data = await ReceivablePlanApi.exportReceivablePlan(queryParams)
|
||||||
download.excel(data, '回款计划.xls')
|
download.excel(data, '付款计划.xls')
|
||||||
} catch {
|
} catch {
|
||||||
} finally {
|
} finally {
|
||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue