diff --git a/src/api/crm/project/index.ts b/src/api/crm/project/index.ts
index b2cbedfa6..4f9007fb3 100644
--- a/src/api/crm/project/index.ts
+++ b/src/api/crm/project/index.ts
@@ -20,6 +20,7 @@ export interface ProjectVO {
investmentAgreement: string // 合作投资协议
supplementaryMaterials: string // 其他补充材料文件路径
type: number // 类型
+ partners: []
projectStatus: number // 状态
estimatedPiles: number //枪数
}
diff --git a/src/api/crm/receivable/index.ts b/src/api/crm/receivable/index.ts
index 0fde1160b..72c1e118f 100644
--- a/src/api/crm/receivable/index.ts
+++ b/src/api/crm/receivable/index.ts
@@ -17,7 +17,6 @@ export interface ReceivableVO {
no: string
totalPrice: number
}
- isDeposit: boolean
auditStatus: number
processInstanceId: number
returnTime: Date
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index 48b460401..cf77c4305 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -207,6 +207,7 @@ export enum DICT_TYPE {
CRM_RECEIVABLE_RETURN_TYPE = 'crm_receivable_return_type', // CRM 付款的付款方式
CRM_RECEIVABLE_TRANSACTION_TYPE = 'crm_receivable_transaction_type', // CRM 付款的收支方向
CRM_RECEIVABLE_TYPE = 'crm_receivable_type', // CRM 付款类型
+ CRM_PAYMENT_TYPE = 'crm_payment_type', // CRM 收款类型
CRM_RECEIVABLE_PLAN_STATUS = 'crm_receivable_plan_status', // CRM 付款计划状态
CRM_CUSTOMER_INDUSTRY = 'crm_customer_industry', // CRM 客户所属行业
CRM_CUSTOMER_DEAL_STATUS = 'crm_customer_deal_status', // CRM 客户成交状态
@@ -222,6 +223,7 @@ export enum DICT_TYPE {
CRM_CONTRACT_STATUS = 'crm_contract_status', // CRM 合同状态
CRM_CONTRACT_ATTRIBUTE = 'crm_contract_attribute', // CRM 合同属性
CRM_PROJECT_TYPE = 'crm_project_type', // CRM 项目类型
+ CRM_PROJECT_POWER_SUPPLY_TYPE = 'crm_project_power_supply_type', // CRM 项目供电模式
// ========== ERP - 企业资源计划模块 ==========
ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态
diff --git a/src/views/crm/contract/ContractForm.vue b/src/views/crm/contract/ContractForm.vue
index f3ce7082f..8ecd8f864 100644
--- a/src/views/crm/contract/ContractForm.vue
+++ b/src/views/crm/contract/ContractForm.vue
@@ -150,7 +150,6 @@
-
diff --git a/src/views/crm/project/ProjectForm.vue b/src/views/crm/project/ProjectForm.vue
index 3ef1ee70a..023f6c5ad 100644
--- a/src/views/crm/project/ProjectForm.vue
+++ b/src/views/crm/project/ProjectForm.vue
@@ -61,8 +61,8 @@
- 关闭
- 开启
+ 开启
+ 关闭
@@ -141,24 +141,38 @@
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+ {{formData }}
+ 附件
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
确 定
@@ -256,35 +269,41 @@ const formData = ref({
deptId: undefined,
siteId: undefined,
totalInvestment: 0,
- partner: undefined,
- ratio: undefined,
- investment: 0,
- cooperationAgreement: undefined,
purchaseContractId: undefined,
+ cooperationAgreement:undefined,
epcContractId: undefined,
- buildPermit: '',
- ownershipProof: '',
- projectRecord: '',
- powerSupplyReply: '',
- investmentAgreement: '',
+ buildPermit: undefined,
+ ownershipProof: undefined,
+ projectRecord: undefined,
+ powerSupplyReply: undefined,
+ investmentAgreement: undefined,
supplementaryMaterials: [],
partners:[],
type: undefined,
- projectStatus: undefined
+ projectStatus: undefined,
+ powerSupplyType: undefined
})
-const formRules = reactive({
+const formRules = computed(() => ({
deptId: [{ required: true, message: '部门ID不能为空', trigger: 'blur' }],
siteId: [{ required: true, message: '场地ID不能为空', trigger: 'blur' }],
totalInvestment: [{ required: true, message: '项目总投资额不能为空', trigger: 'blur' }],
type: [{ required: true, message: '类型不能为空', trigger: 'change' }],
projectStatus: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
-})
+ powerSupplyType: [{ required: true, message: '供电类型不能为空', trigger: 'blur' }],
+ powerSupplyReply : formData.value.powerSupplyType === 2 ? [{ required: true, message: '供电答复单不能为空', trigger: 'blur' }] : [],
+ investmentAgreement: formData.value.type === 2 ?[{ required: true, message: '合作投资协议不能为空', trigger: 'blur' }] : [],
+ cooperationAgreement: [{ required: true, message: '场地合同不能为空', trigger: 'blur' }],
+ epcContractId: [{ required: true, message: 'EPC合同不能为空', trigger: 'blur' }],
+ purchaseContractId: [{ required: true, message: '设备合同不能为空', trigger: 'blur' }],
+}))
const formRef = ref() // 表单 Ref
const deptList = ref([])
const contractOptions = ref([]) // 合同列表
const siteOptions = ref([]) // 场地列表
const partnerFormRef = ref()
const estimatedPiles = ref(undefined)
+/** 子表的表单 */
+const subTabsName = ref('partner')
const gunCost = computed(() => {
if (!estimatedPiles.value || !formData.value.totalInvestment) return ''
if (Number(estimatedPiles.value) === 0) return ''
@@ -363,21 +382,19 @@ const resetForm = () => {
deptId: undefined,
siteId: undefined,
totalInvestment: 0,
- partner: undefined,
- ratio: undefined,
- investment: 0,
- cooperationAgreement: undefined,
purchaseContractId: undefined,
+ cooperationAgreement:undefined,
epcContractId: undefined,
- buildPermit: '',
- ownershipProof: '',
- projectRecord: '',
- powerSupplyReply: '',
- investmentAgreement: '',
+ buildPermit: undefined,
+ ownershipProof: undefined,
+ projectRecord: undefined,
+ powerSupplyReply: undefined,
+ investmentAgreement: undefined,
supplementaryMaterials: [],
partners:[],
type: undefined,
- projectStatus: undefined
+ projectStatus: undefined,
+ powerSupplyType: undefined
}
formRef.value?.resetFields()
}
diff --git a/src/views/crm/project/component/ProjectPartnetForm.vue b/src/views/crm/project/component/ProjectPartnetForm.vue
index c9b431176..d25dc9b1f 100644
--- a/src/views/crm/project/component/ProjectPartnetForm.vue
+++ b/src/views/crm/project/component/ProjectPartnetForm.vue
@@ -13,9 +13,9 @@
-
+
-
+
@@ -79,12 +80,12 @@ const userOptions = ref([])
const formData = ref([])
const formRules = reactive({
- partner: [
+ customerId: [
{ required: true, message: '项目合伙人不能为空', trigger: 'blur' },
{
validator: (_rule: any, value: string, callback: any) => {
// 检查合伙人是否重复
- const count = formData.value.filter(item => item.partner === value).length
+ const count = formData.value.filter(item => item.customerId === value).length
if (value && count > 1) {
callback(new Error('项目合伙人不能重复'))
} else {
@@ -107,9 +108,9 @@ onMounted(async () => {
const handleAdd = () => {
formData.value.push()
const row = {
- partner: '',
- ratio: '',
- investment: ''
+ customerId: undefined,
+ ratio: undefined,
+ investment: undefined
}
formData.value.push(row)
}
@@ -132,7 +133,9 @@ const validate = async () => {
const calcInvestment = (row) => {
const ratio = Number(row.ratio) || 0
const price = Number(props.price) || 0
- return ratio && price ? ((ratio * price) / 100).toFixed(2) : ''
+ const investment = Number( ((ratio * price) * 100).toFixed(2) ) || 0
+ row.investment = investment
+ return investment
}
const getMaxRatio = (index: number) => {
// 计算除当前行外,其他合伙人已占用的比例
@@ -140,11 +143,11 @@ const getMaxRatio = (index: number) => {
return Math.max(0, 100 - used)
}
watch(
- () => formData.value,
+ () => props.partners,
(val) => {
- emit('update:partners', val)
+ formData.value = val || []
},
- { deep: true }
+ { immediate: true }
)
defineExpose({ validate })
diff --git a/src/views/crm/project/index.vue b/src/views/crm/project/index.vue
index dbf3aafc9..3d366925c 100644
--- a/src/views/crm/project/index.vue
+++ b/src/views/crm/project/index.vue
@@ -76,6 +76,7 @@
+
@@ -88,8 +89,12 @@
-
-
+
+
+
+
+
+
diff --git a/src/views/crm/receivable/PaymentForm.vue b/src/views/crm/receivable/PaymentForm.vue
index cf800e0ed..5e7fb9496 100644
--- a/src/views/crm/receivable/PaymentForm.vue
+++ b/src/views/crm/receivable/PaymentForm.vue
@@ -26,8 +26,6 @@
-
-
-
-
+
+
-
-
-
-
-
-
-
@@ -162,7 +153,6 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
const formData = ref({} as ReceivableApi.ReceivableVO)
const formRules = reactive({
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
@@ -172,7 +162,6 @@ const formRules = reactive({
content: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
type: [{ required: true, message: '收支类型不能为空', trigger: 'change' }],
projectId: [{ required: true, message: '项目名称不能为空', trigger: 'change' }],
- isDeposit: [{ required: true, message: '请选择是否押金', trigger: 'change' }],
remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }]
})
const formRef = ref() // 表单 Ref
@@ -182,7 +171,7 @@ const contractList = ref([]) // 合同列表
const receivablePlanList = ref([]) // 收款计划列表
const projectList = ref([]) // 项目列表
const maxPayableAmount = ref(Infinity)
-const showProject = computed(() => formData.value.type === 1 || formData.value.type === 2)
+const showProject = computed(() => formData.value.type >= 11 && formData.value.type <= 14)
/** 打开弹窗 */
const open = async (
@@ -277,7 +266,6 @@ const submitForm = async () => {
const resetForm = () => {
formData.value = {} as ReceivableApi.ReceivableVO
formRef.value?.resetFields()
- formData.value.isDeposit = false // 默认不是押金
formData.value.transactionType = 0 // 默认收支方向为收入
}
@@ -330,7 +318,7 @@ const handleReceivablePlanChange = (planId: number) => {
watch(
() => formData.value.type,
(val) => {
- if (val === 1 || val === 2) {
+ if (val === 11 || val === 12 || val === 13 || val === 14) {
formRules.projectId = [{ required: true, message: '项目名称不能为空', trigger: 'change' }]
} else {
formRules.projectId = []
diff --git a/src/views/crm/receivable/ReceivableForm.vue b/src/views/crm/receivable/ReceivableForm.vue
index 113735b63..79d9b89a5 100644
--- a/src/views/crm/receivable/ReceivableForm.vue
+++ b/src/views/crm/receivable/ReceivableForm.vue
@@ -119,16 +119,11 @@
-
-
-
-
-
-
-
+
+
({} as ReceivableApi.ReceivableVO)
const formRules = reactive({
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
@@ -204,7 +198,6 @@ const formRules = reactive({
content: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
type: [{ required: true, message: '收支类型不能为空', trigger: 'change' }],
projectId: [{ required: true, message: '项目名称不能为空', trigger: 'change' }],
- isDeposit: [{ required: true, message: '请选择是否押金', trigger: 'change' }],
remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }]
})
const formRef = ref() // 表单 Ref
@@ -214,7 +207,7 @@ const contractList = ref([]) // 合同列表
const receivablePlanList = ref([]) // 付款计划列表
const projectList = ref([]) // 项目列表
const maxPayableAmount = ref(Infinity)
-const showProject = computed(() => formData.value.type === 1 || formData.value.type === 2)
+const showProject = computed(() => formData.value.type >= 1 && formData.value.type <= 7)
/** 打开弹窗 */
const open = async (
@@ -358,7 +351,7 @@ const handleReceivablePlanChange = (planId: number) => {
watch(
() => formData.value.type,
(val) => {
- if (val === 1 || val === 2) {
+ if (val === 1 || val === 2 || val === 3 || val === 4 || val === 5 || val === 6 || val === 7) {
formRules.projectId = [{ required: true, message: '项目名称不能为空', trigger: 'change' }]
} else {
formRules.projectId = []
diff --git a/src/views/crm/receivable/index.vue b/src/views/crm/receivable/index.vue
index 700db0cae..da329906d 100644
--- a/src/views/crm/receivable/index.vue
+++ b/src/views/crm/receivable/index.vue
@@ -52,6 +52,36 @@
/>
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
@@ -306,6 +322,7 @@ import { TabsPaneContext } from 'element-plus'
import { erpPriceInputFormatter } from '@/utils'
import { is } from 'bpmn-js/lib/util/ModelUtil'
import SummaryForm from './components/SummaryForm.vue'
+import PaymentForm from './PaymentForm.vue'
defineOptions({ name: 'Receivable' })
@@ -443,7 +460,7 @@ onMounted(async () => {
// 获得客户列表
customerList.value = await CustomerApi.getCustomerSimpleList()
// 加载部门列表
- deptList.value = await DeptApi.getSimpleDeptList()
+ deptList.value = await DeptApi.querySimpleDeptList(2)
})
watch(
diff --git a/src/views/crm/receivable/plan/index.vue b/src/views/crm/receivable/plan/index.vue
index 309057e8f..fb319e126 100644
--- a/src/views/crm/receivable/plan/index.vue
+++ b/src/views/crm/receivable/plan/index.vue
@@ -11,11 +11,13 @@
class="-mb-15px"
label-width="68px"
>
-
+
-
-
+
+ >
+
+
-
+
([]) // 客户列表
-
+const contractList = ref([])
/** 查询列表 */
const getList = async () => {
@@ -345,5 +357,7 @@ onMounted(async () => {
await getList()
// 获得客户列表
customerList.value = await CustomerApi.getCustomerSimpleList()
+ // 获得合同列表
+ contractList.value = await ContractApi.getContractSimpleAllList()
})