Merge branch 'master' into wkz
commit
fcee2c4429
|
|
@ -44,7 +44,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="产品开具项目" fixed="right" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItems`" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItems`" :rules="formRules.productInvoiceItems" class="mb-0px!">
|
||||
<el-select v-model="row.productInvoiceItems" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS)"
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="服务费票据" prop="serviceFeeInvoice" fixed="right" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceFeeInvoice`" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.serviceFeeInvoice`" :rules="formRules.serviceFeeInvoice" class="mb-0px!">
|
||||
<el-select v-model="row.serviceFeeInvoice" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE)"
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="服务开具项目" prop="serviceFeeInvoiceItems" fixed="right" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceFeeInvoiceItems`" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.serviceFeeInvoiceItems`" :rules="formRules.serviceFeeInvoiceItems" class="mb-0px!">
|
||||
<el-select v-model="row.serviceFeeInvoiceItems" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS)"
|
||||
|
|
@ -112,7 +112,7 @@ const formLoading = ref(false) // 表单的加载中
|
|||
const formData = ref([])
|
||||
const formRules = reactive({
|
||||
productInvoice: [{ required: true, message: '产品票据不能为空', trigger: 'change' }],
|
||||
getIntDictOptions: [{ required: true, message: '产品开具项目不能为空', trigger: 'change' }],
|
||||
productInvoiceItems: [{ required: true, message: '产品开具项目不能为空', trigger: 'change' }],
|
||||
serviceFeeInvoice: [{ required: true, message: '服务费票据不能为空', trigger: 'change' }],
|
||||
serviceFeeInvoiceItems: [{ required: true, message: '服务开具项目不能为空', trigger: 'change' }]
|
||||
})
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商机名称" prop="name">
|
||||
<el-input v-model="formData.name" clearable placeholder="请输入商机名称" />
|
||||
<el-input v-model="formData.name" :disabled="type" clearable placeholder="请输入商机名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -35,7 +35,8 @@
|
|||
<el-select
|
||||
v-model="formData.requestorUserId"
|
||||
clearable
|
||||
:disabled="formType"
|
||||
|
||||
:disabled="formType || type"
|
||||
placeholder="请选择需求提交人"
|
||||
class="w-1/1"
|
||||
>
|
||||
|
|
@ -51,7 +52,7 @@
|
|||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
:disabled="formData.customerDefault"
|
||||
:disabled="formData.customerDefault || type"
|
||||
v-model="formData.customerId"
|
||||
clearable
|
||||
placeholder="请选择客户"
|
||||
|
|
@ -72,6 +73,7 @@
|
|||
<el-tree-select
|
||||
v-model="formData.deptId"
|
||||
:data="deptTree"
|
||||
:disabled="type"
|
||||
:props="defaultProps"
|
||||
filterable
|
||||
clearable
|
||||
|
|
@ -88,7 +90,7 @@
|
|||
placeholder="请选择商机状态组"
|
||||
clearable
|
||||
class="w-1/1"
|
||||
:disabled="formType"
|
||||
:disabled="formType || type"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in statusTypeList"
|
||||
|
|
@ -104,6 +106,7 @@
|
|||
<el-date-picker
|
||||
v-model="formData.dealTime"
|
||||
type="date"
|
||||
:disabled="type"
|
||||
value-format="x"
|
||||
placeholder="选择预计成交日期"
|
||||
class="!w-1/1"
|
||||
|
|
@ -112,7 +115,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="销售阶段" prop="saleStage">
|
||||
<el-select v-model="formData.saleStage" clearable placeholder="请选择销售阶段">
|
||||
<el-select v-model="formData.saleStage" :disabled="type" clearable placeholder="请选择销售阶段">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('sale_stage')"
|
||||
:key="dict.value"
|
||||
|
|
@ -125,7 +128,7 @@
|
|||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信方式" prop="creditMethod">
|
||||
<el-select v-model="formData.creditMethod" clearable placeholder="请选择授信方式">
|
||||
<el-select v-model="formData.creditMethod" :disabled="type" clearable placeholder="请选择授信方式">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_method')"
|
||||
:key="dict.value"
|
||||
|
|
@ -137,7 +140,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账期" prop="paymentTerm">
|
||||
<el-select v-model="formData.paymentTerm" @change="changePayment" clearable placeholder="请选择账期">
|
||||
<el-select v-model="formData.paymentTerm" :disabled="type" @change="changePayment" clearable placeholder="请选择账期">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.PAYMENT_TERM)"
|
||||
:key="dict.value"
|
||||
|
|
@ -167,7 +170,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="技术需求支持" prop="techSupport">
|
||||
<el-radio-group v-model="formData.techSupport">
|
||||
<el-radio-group v-model="formData.techSupport" :disabled="type">
|
||||
<el-radio
|
||||
v-for="dict in getStrDictOptions(DICT_TYPE.TECH_SUPPORT)"
|
||||
:key="dict.value"
|
||||
|
|
@ -180,7 +183,7 @@
|
|||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input type="textarea" v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
<el-input type="textarea" :disabled="type" v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -191,7 +194,7 @@
|
|||
<BusinessProductForm
|
||||
ref="productFormRef"
|
||||
:products="formData.products"
|
||||
:disabled="disabled"
|
||||
:disabled="type"
|
||||
@success="setList"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
|
|
@ -227,7 +230,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div style="text-align: right">
|
||||
<div style="text-align: right" v-if="!type">
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="goBack">取 消</el-button>
|
||||
</div>
|
||||
|
|
@ -246,7 +249,7 @@ import { useUserStore } from '@/store/modules/user';
|
|||
import { defaultProps, handleTree } from '@/utils/tree';
|
||||
import BusinessProductForm from './components/BusinessProductForm.vue';
|
||||
import { erpPriceMultiply, erpPriceInputFormatter } from '@/utils';
|
||||
import { number } from 'vue-types';
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
|
||||
const { proxy }: any = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
|
|
@ -298,7 +301,9 @@ const userOptions = ref<UserApi.UserVO[]>([]);
|
|||
const statusTypeList = ref([]);
|
||||
const customerList = ref([]);
|
||||
const deptTree = ref();
|
||||
|
||||
const props = defineProps({
|
||||
type: propTypes.number.def(undefined)
|
||||
})
|
||||
const subTabsName = ref('product');
|
||||
const productFormRef = ref();
|
||||
|
||||
|
|
@ -380,6 +385,7 @@ const submitForm = async () => {
|
|||
const valid = await formRef.value.validate();
|
||||
if (!valid) return;
|
||||
|
||||
|
||||
formLoading.value = true;
|
||||
try {
|
||||
const data = formData.value as unknown as BusinessApi.BusinessVO;
|
||||
|
|
@ -422,9 +428,8 @@ const resetForm = () => {
|
|||
const route = useRoute();
|
||||
onMounted(async () => {
|
||||
const customerId = route.query.customerId;
|
||||
console.log('%csrc/views/crm/business/BusinessForm.vue:425 formData.value', 'color: #007acc;', formData.value);
|
||||
formData.value.ownerUserId = customerId ? '' : useUserStore().getUser.id;
|
||||
formType.value = route.query.id;
|
||||
formType.value = route.query.id || route.params.id;
|
||||
if (formType.value) open(formType.value, customerId)
|
||||
customerList.value = await CustomerApi.getCustomerSimpleList();
|
||||
statusTypeList.value = await BusinessStatusApi.getBusinessStatusTypeSimpleList();
|
||||
|
|
|
|||
|
|
@ -18,8 +18,17 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品明细" align="center" prop="detailType" width="160">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="scope.row.detailType" />
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!">
|
||||
<el-select v-model="row.detailType" placeholder="请选择状态" >
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" min-width="80">
|
||||
|
|
@ -29,7 +38,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="线上价格(元)" fixed="right" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.onlinePrice`" :rules="formRules.onlinePrice" class="mb-0px!">
|
||||
<el-input-number
|
||||
v-model="row.onlinePrice"
|
||||
controls-position="right"
|
||||
|
|
@ -42,7 +51,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="线下价格(元)" fixed="right" min-width="140">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.offlinePrice`" class="mb-0px!">
|
||||
<el-form-item :prop="`${$index}.offlinePrice`" :rules="formRules.offlinePrice" class="mb-0px!">
|
||||
<el-input-number
|
||||
v-model="row.offlinePrice"
|
||||
controls-position="right"
|
||||
|
|
@ -60,7 +69,7 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60">
|
||||
<el-table-column align="center" fixed="right" label="操作" width="60" v-if="!disabled">
|
||||
<template #default="{ $index }">
|
||||
<el-button @click="handleDelete($index)" link>—</el-button>
|
||||
</template>
|
||||
|
|
@ -84,8 +93,11 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict';
|
|||
const formLoading = ref(false); // 表单的加载中
|
||||
const formData = ref([]); // 表单数据
|
||||
const formRules = reactive({
|
||||
detailType: [{ required: true, message: '产品明细不能为空', trigger: 'blur' }],
|
||||
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
|
||||
businessPrice: [{ required: true, message: '合同价格不能为空', trigger: 'blur' }]
|
||||
businessPrice: [{ required: true, message: '合同价格不能为空', trigger: 'blur' }],
|
||||
onlinePrice: [{ required: true, message: '线上价格(元)不能为空', trigger: 'blur' }],
|
||||
offlinePrice: [{ required: true, message: '线下价格(元)不能为空', trigger: 'blur' }]
|
||||
});
|
||||
const formRef = ref(null); // 表单 Ref
|
||||
const productList = ref<ProductApi.ProductVO[]>([]); // 产品列表
|
||||
|
|
|
|||
|
|
@ -1,55 +1,11 @@
|
|||
<template>
|
||||
<ContentWrap>
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item name="basicInfo">
|
||||
<template #title>
|
||||
<span class="text-base font-bold">基本信息</span>
|
||||
</template>
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions-item label="商机姓名">{{ business.name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户名称">{{ business.customerName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="商机金额(元)">
|
||||
{{ erpPriceInputFormatter(business.totalPrice) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="预计成交日期">
|
||||
{{ formatDate(business.dealTime) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="下次联系时间">
|
||||
{{ formatDate(business.contactNextTime) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="商机状态组">
|
||||
{{ business.statusTypeName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="商机阶段">{{ business.statusName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">{{ business.remark }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item name="systemInfo">
|
||||
<template #title>
|
||||
<span class="text-base font-bold">系统信息</span>
|
||||
</template>
|
||||
<el-descriptions :column="4">
|
||||
<el-descriptions-item label="负责人">{{ business.ownerUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="最后跟进时间">
|
||||
{{ formatDate(business.contactLastTime) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label=""> </el-descriptions-item>
|
||||
<el-descriptions-item label=""> </el-descriptions-item>
|
||||
<el-descriptions-item label="创建人">{{ business.creatorName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间">
|
||||
{{ formatDate(business.createTime) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="更新时间">
|
||||
{{ formatDate(business.updateTime) }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
<BusinessForm :type="1" />
|
||||
</ContentWrap>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import * as BusinessApi from '@/api/crm/business'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import BusinessForm from '../BusinessForm.vue'
|
||||
import { erpPriceInputFormatter } from '@/utils'
|
||||
|
||||
const { business } = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<BusinessDetailsHeader v-loading="loading" :business="business">
|
||||
<el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', business.id)">
|
||||
<!-- <el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', business.id)">
|
||||
编辑
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<el-button
|
||||
v-if="permissionListRef?.validateWrite"
|
||||
:disabled="business.endStatus"
|
||||
|
|
@ -31,12 +31,12 @@
|
|||
:customer-id="business.customerId"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="产品">
|
||||
<!-- <el-tab-pane label="产品">
|
||||
<BusinessProductList :business="business" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="合同" lazy>
|
||||
</el-tab-pane> -->
|
||||
<!-- <el-tab-pane label="合同" lazy>
|
||||
<ContractList :biz-id="business.id!" :biz-type="BizTypeEnum.CRM_BUSINESS" />
|
||||
</el-tab-pane>
|
||||
</el-tab-pane> -->
|
||||
<el-tab-pane label="操作日志">
|
||||
<OperateLogV2 :log-list="logList" />
|
||||
</el-tab-pane>
|
||||
|
|
|
|||
|
|
@ -52,15 +52,15 @@
|
|||
<el-tab-pane label="下属负责的" name="3" />
|
||||
</el-tabs>
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||
<el-table-column align="center" fixed="left" label="商机名称" prop="name" width="160">
|
||||
<el-table-column align="center" fixed="left" label="商机名称" prop="name" width="200">
|
||||
<template #default="scope">
|
||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||
{{ scope.row.name }}
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="left" label="客户名称" prop="customerName" width="120">
|
||||
<template #default="scope">
|
||||
<el-table-column align="center" label="客户名称" prop="customerName" width="220">
|
||||
<!-- <template #default="scope">
|
||||
<el-link
|
||||
:underline="false"
|
||||
type="primary"
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
>
|
||||
{{ scope.row.customerName }}
|
||||
</el-link>
|
||||
</template>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:formatter="erpPriceTableColumnFormatter"
|
||||
|
|
@ -118,14 +118,12 @@
|
|||
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
||||
<el-table-column
|
||||
align="center"
|
||||
fixed="right"
|
||||
label="商机状态组"
|
||||
prop="statusTypeName"
|
||||
width="140"
|
||||
/>
|
||||
<el-table-column
|
||||
align="center"
|
||||
fixed="right"
|
||||
label="商机阶段"
|
||||
prop="statusName"
|
||||
width="120"
|
||||
|
|
|
|||
|
|
@ -116,8 +116,8 @@
|
|||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="left" label="客户名称" prop="customerName" width="120">
|
||||
<template #default="scope">
|
||||
<el-table-column align="center" fixed="left" label="客户名称" prop="customerName" width="220">
|
||||
<!-- <template #default="scope">
|
||||
<el-link
|
||||
:underline="false"
|
||||
type="primary"
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
>
|
||||
{{ scope.row.customerName }}
|
||||
</el-link>
|
||||
</template>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="手机" prop="mobile" width="120" />
|
||||
<el-table-column align="center" label="电话" prop="telephone" width="130" />
|
||||
|
|
|
|||
|
|
@ -253,6 +253,7 @@ if(limitFormRef.value) {
|
|||
|
||||
if(contractExtensionFormRef.value) {
|
||||
const extensionValid = await contractExtensionFormRef.value.validate()
|
||||
console.log('%csrc/views/crm/contrxact/ContractChange.vue:247 123', 'color: #007acc;', extensionValid,123);
|
||||
if (!extensionValid) return
|
||||
|
||||
}
|
||||
|
|
@ -265,7 +266,6 @@ if(contractExtensionFormRef.value) {
|
|||
// if (!contractValid) return
|
||||
|
||||
|
||||
console.log('%csrc/views/crm/contract/ContractChange.vue:247 123', 'color: #007acc;', extensionValid,123);
|
||||
return
|
||||
|
||||
// 提交请求
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报价签约人" prop="signUserId">
|
||||
<el-select v-model="formData.signUserId" placeholder="请选择报价签约人" disabled >
|
||||
<el-select v-model="formData.signUserId" placeholder="报价签约人" disabled >
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -135,17 +135,17 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签约人联系电话" prop="signPhoneNumber">
|
||||
<el-input v-model="formData.signPhoneNumber" placeholder="请输入签约人联系电话" disabled />
|
||||
<el-input v-model="formData.signPhoneNumber" placeholder="签约人联系电话" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签约人Email" prop="signEmail">
|
||||
<el-input v-model="formData.signEmail" placeholder="请输入签约人Email" disabled />
|
||||
<el-input v-model="formData.signEmail" placeholder="签约人Email" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签约人微信" prop="signWechat">
|
||||
<el-input v-model="formData.signWechat" placeholder="请输入签约人微信" disabled />
|
||||
<el-input v-model="formData.signWechat" placeholder="签约人微信" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -153,7 +153,7 @@
|
|||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商机负责人" prop="ownerUserId">
|
||||
<el-select v-model="formData.ownerUserId" placeholder="请选择商机负责人" disabled>
|
||||
<el-select v-model="formData.ownerUserId" placeholder="商机负责人" disabled>
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="拓展人" prop="expanderUserId">
|
||||
<el-select v-model="formData.expanderUserId" placeholder="请选择拓展人" disabled>
|
||||
<el-select v-model="formData.expanderUserId" placeholder="拓展人" disabled>
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="方案报价人" prop="pricingUserId">
|
||||
<el-select v-model="formData.pricingUserId" placeholder="请选择方案报价人" disabled>
|
||||
<el-select v-model="formData.pricingUserId" placeholder="方案报价人" disabled>
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -216,7 +216,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信方式" prop="creditMethod" >
|
||||
<el-select v-model="formData.creditMethod" placeholder="请选择授信方式" disabled>
|
||||
<el-select v-model="formData.creditMethod" placeholder="授信方式" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_method')"
|
||||
:key="dict.value"
|
||||
|
|
@ -228,7 +228,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信计算周期" prop="creditCalcCycle" >
|
||||
<el-select v-model="formData.creditCalcCycle" placeholder="请选择授信计算周期" disabled>
|
||||
<el-select v-model="formData.creditCalcCycle" placeholder="授信计算周期" disabled>
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_calc_cycle')"
|
||||
:key="dict.value"
|
||||
|
|
@ -240,12 +240,12 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信额度" prop="creditLimit">
|
||||
<el-input v-model="formData.creditLimit" placeholder="请输入授信额度" disabled />
|
||||
<el-input v-model="formData.creditLimit" placeholder="授信额度" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作主体" prop="partnerCompanyId">
|
||||
<el-select v-model="formData.partnerCompanyId" placeholder="请选择合作主体" disabled >
|
||||
<el-select v-model="formData.partnerCompanyId" placeholder="合作主体" disabled >
|
||||
<el-option
|
||||
v-for="dict in orgList"
|
||||
:key="dict.id"
|
||||
|
|
@ -265,7 +265,7 @@
|
|||
disabled
|
||||
check-strictly
|
||||
node-key="id"
|
||||
placeholder="请选择归属部门"
|
||||
placeholder="归属部门"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -277,14 +277,14 @@
|
|||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同正文" prop="contractBody">
|
||||
<el-input v-model="formData.contractBody" placeholder="请输入合同正文" />
|
||||
<el-input v-model="formData.contractBody" type="textarea" rows="5" placeholder="请输入合同正文" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同补充协议" prop="contractAgreement">
|
||||
<el-input v-model="formData.contractAgreement" placeholder="请输入合同补充协议" />
|
||||
<el-input v-model="formData.contractAgreement" type="textarea" rows="5" placeholder="请输入合同补充协议" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -416,6 +416,7 @@ const formData = ref({
|
|||
const formRules = reactive({
|
||||
name: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }],
|
||||
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
|
||||
quotationId: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }],
|
||||
orderDate: [{ required: true, message: '下单日期不能为空', trigger: 'blur' }],
|
||||
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }]
|
||||
})
|
||||
|
|
@ -478,8 +479,30 @@ const submitForm = async () => {
|
|||
const valid = await formRef.value.validate()
|
||||
if (!valid) return
|
||||
// 提交请求
|
||||
if(contractAAuthorizedCompanyFormRef.value.getData().length) {
|
||||
const contractAAuthorizedCompanyValid = await contractAAuthorizedCompanyFormRef.value.validate()
|
||||
if (!contractAAuthorizedCompanyValid) return message.warning('请完善合同甲方关联单位')
|
||||
} else {
|
||||
return message.warning('请完善合同甲方关联单位')
|
||||
}
|
||||
|
||||
if(contractAAuthorizedPersonFormRef.value.getData().length) {
|
||||
const contractAAuthorizedPerson = await contractAAuthorizedPersonFormRef.value.validate()
|
||||
if (!contractAAuthorizedPerson) return message.warning('请完善合同甲方授权人信息')
|
||||
} else {
|
||||
return message.warning('请完善合同甲方授权人信息')
|
||||
}
|
||||
|
||||
if(contractBAuthorizedPersonFormRef.value.getData().length) {
|
||||
const contractBAuthorizedPersonPerson = await contractBAuthorizedPersonFormRef.value.validate()
|
||||
if (!contractBAuthorizedPersonPerson) return message.warning('请完善合同乙方授权人信息')
|
||||
} else {
|
||||
return message.warning('请完善合同乙方授权人信息')
|
||||
}
|
||||
|
||||
return
|
||||
formLoading.value = true
|
||||
productFormRef.value.validate()
|
||||
|
||||
try {
|
||||
const data = unref(formData.value) as unknown as ContractApi.ContractVO
|
||||
// 拼接子表的数据
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@ defineExpose({ validate })
|
|||
|
||||
/** 初始化 */
|
||||
onMounted(async () => {
|
||||
console.log('%csrc/views/crm/contract/components/ContractProductForm.vue:171 props.type', 'color: #007acc;', props.type);
|
||||
productList.value = await ProductApi.getProductSimpleList()
|
||||
})
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -283,12 +283,12 @@
|
|||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同正文" prop="contractBody">
|
||||
<el-input v-model="formData.contractBody" type="textarea" row="5" disabled placeholder="请输入合同正文" />
|
||||
<el-input v-model="formData.contractBody" type="textarea" rows="5" disabled placeholder="请输入合同正文" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同补充协议" prop="contractAgreement">
|
||||
<el-input v-model="formData.contractAgreement" type="textarea" row="5" disabled placeholder="请输入合同补充协议" />
|
||||
<el-input v-model="formData.contractAgreement" type="textarea" rows="5" disabled placeholder="请输入合同补充协议" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@
|
|||
<el-tab-pane label="下属负责的" name="3" />
|
||||
</el-tabs>
|
||||
<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="name" width="160">
|
||||
<template #default="scope">
|
||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row)">
|
||||
|
|
@ -87,8 +86,9 @@
|
|||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="合同编号" prop="no" width="180" />
|
||||
<el-table-column align="center" label="客户名称" prop="customerName" width="120">
|
||||
<template #default="scope">
|
||||
<!-- <template #default="scope">
|
||||
<el-link
|
||||
:underline="false"
|
||||
type="primary"
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
>
|
||||
{{ scope.row.customerName }}
|
||||
</el-link>
|
||||
</template>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="商机名称" prop="businessName" width="130">
|
||||
<template #default="scope">
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
width="180px"
|
||||
/>
|
||||
<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" label="合同状态" prop="auditStatus" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
>
|
||||
<template #default="{ item }">
|
||||
<div class="value">{{ item.name }}</div>
|
||||
<span class="link">{{ item.link }}</span>
|
||||
</template>
|
||||
</el-autocomplete>
|
||||
</el-form-item>
|
||||
|
|
@ -176,16 +175,16 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>-->
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="统一信用代码" prop="creditNo">
|
||||
<!-- <el-col :span="12"> -->
|
||||
<!-- <el-form-item label="统一信用代码" prop="creditNo">
|
||||
<el-input v-model="formData.creditNo" disabled placeholder="请输入详细地址" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
</el-col> -->
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="营业状态" prop="serviceStatus">
|
||||
<el-input v-model="formData.serviceStatus" disabled placeholder="营业状态" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="12">
|
||||
<el-form-item label="法人代表" prop="legalPersonName">
|
||||
<el-input v-model="formData.legalPersonName" disabled placeholder="法人代表" />
|
||||
|
|
@ -195,7 +194,7 @@
|
|||
<el-form-item label="注册资本" prop="registerCapital">
|
||||
<el-input v-model="formData.registerCapital" disabled placeholder="注册资本" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="网站" prop="">
|
||||
<el-input v-model="formData.website" placeholder="请输入网站" />
|
||||
|
|
@ -225,6 +224,18 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="12">
|
||||
<el-form-item label="注册日期" prop="contactNextTime">
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="formData.startDate"
|
||||
placeholder="选择下次联系时间"
|
||||
type="date"
|
||||
value-format="x"
|
||||
class="!w-1/1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="地址" prop="areaId">
|
||||
<el-cascader
|
||||
|
|
@ -291,6 +302,7 @@ const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
|||
const formData = ref({
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
startDate: undefined,
|
||||
contactNextTime: undefined,
|
||||
ownerUserId: 0,
|
||||
mobile: undefined,
|
||||
|
|
@ -397,12 +409,8 @@ const querySearchAsync = async (queryString: string, cb: (arg: any) => void) =>
|
|||
companyName: queryString
|
||||
})
|
||||
restaurants.value = data.list.map(v => {
|
||||
return {
|
||||
name: v.name,
|
||||
value: v.name,
|
||||
}
|
||||
return Object.assign(v, {value: v.name})
|
||||
})
|
||||
console.log('%csrc/views/crm/customer/CustomerForm.vue:400 restaurants.value', 'color: #007acc;', restaurants.value);
|
||||
const results = queryString
|
||||
? restaurants.value.filter(createFilter(queryString))
|
||||
: restaurants.value
|
||||
|
|
@ -421,13 +429,17 @@ const createFilter = (queryString: string) => {
|
|||
}
|
||||
|
||||
const handleSelect = (item: Record<string, any>) => {
|
||||
console.log(item)
|
||||
formData.value.legalPersonName = item.legalPersonName
|
||||
formData.value.registerCapital = item.regCapital
|
||||
formData.value.startDate = item.regDate
|
||||
}
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
regCapital: undefined,
|
||||
regDate: undefined,
|
||||
contactNextTime: undefined,
|
||||
ownerUserId: 0,
|
||||
mobile: undefined,
|
||||
|
|
|
|||
|
|
@ -173,19 +173,19 @@ const handleUnlock = async () => {
|
|||
await getCustomer()
|
||||
}
|
||||
|
||||
// /** 领取客户 */
|
||||
// const handleReceive = async () => {
|
||||
// await message.confirm(`确定领取客户【${customer.value.name}】 吗?`)
|
||||
// await CustomerApi.receiveCustomer([unref(customerId.value)])
|
||||
// message.success(`领取客户【${customer.value.name}】成功`)
|
||||
// await getCustomer()
|
||||
// }
|
||||
/** 领取客户 */
|
||||
const handleReceive = async () => {
|
||||
await message.confirm(`确定领取客户【${customer.value.name}】 吗?`)
|
||||
await CustomerApi.receiveCustomer([unref(customerId.value)])
|
||||
message.success(`领取客户【${customer.value.name}】成功`)
|
||||
await getCustomer()
|
||||
}
|
||||
|
||||
// /** 分配客户 */
|
||||
// const distributeForm = ref<InstanceType<typeof CustomerDistributeForm>>() // 分配客户表单 Ref
|
||||
// const handleDistributeForm = async () => {
|
||||
// distributeForm.value?.open(customerId.value)
|
||||
// }
|
||||
/** 分配客户 */
|
||||
const distributeForm = ref<InstanceType<typeof CustomerDistributeForm>>() // 分配客户表单 Ref
|
||||
const handleDistributeForm = async () => {
|
||||
distributeForm.value?.open(customerId.value)
|
||||
}
|
||||
|
||||
/** 客户放入公海 */
|
||||
const handlePutPool = async () => {
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@
|
|||
<el-table-column align="center" label="客户状态" prop="serviceStatus" width="120" />
|
||||
<!-- <el-table-column align="center" label="电话" prop="telephone" width="130" />
|
||||
<el-table-column align="center" label="邮箱" prop="email" width="180" /> -->
|
||||
<el-table-column align="center" label="客户级别" prop="level" width="135">
|
||||
<el-table-column align="center" label="客户级别" prop="level" width="145">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" />
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||
<el-table-column align="center" label="客户名称" fixed="left" prop="name" width="160">
|
||||
<el-table-column align="center" label="客户名称" fixed="left" prop="name" width="220">
|
||||
<template #default="scope">
|
||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||
{{ scope.row.name }}
|
||||
|
|
@ -112,9 +112,16 @@
|
|||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="手机" align="center" prop="mobile" width="120" />
|
||||
<el-table-column label="电话" align="center" prop="telephone" width="130" />
|
||||
<el-table-column label="邮箱" align="center" prop="email" width="180" />
|
||||
<el-table-column label="合作类型" align="center" prop="mobile" width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_COOPERATION_TYPE" :value="scope.row.cooperationType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合作地区" align="center" prop="telephone" width="130">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_COOPERATION_AREA" :value="scope.row.cooperationArea" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="客户级别" prop="level" width="135">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" />
|
||||
|
|
@ -125,6 +132,7 @@
|
|||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industryId" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="信用统一代码" prop="creditNo" width="180" />
|
||||
<el-table-column
|
||||
:formatter="dateFormatter"
|
||||
align="center"
|
||||
|
|
|
|||
|
|
@ -70,8 +70,8 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="公司类型" prop="companyType">
|
||||
<el-input v-model="formData.companyType" clearable />
|
||||
<el-form-item label="公司类型" prop="regType">
|
||||
<el-input v-model="formData.regType" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -85,75 +85,75 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="paidInCapital">
|
||||
<el-input v-model="formData.paidInCapital" clearable />
|
||||
<el-form-item label="实缴资金" prop="actualCapital">
|
||||
<el-input v-model="formData.actualCapital" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="参保人数" prop="insuredCount">
|
||||
<el-input v-model="formData.insuredCount" clearable />
|
||||
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
||||
<el-input v-model="formData.socialEmployeeNum" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="成立日期" prop="establishmentDate">
|
||||
<el-input v-model="formData.establishmentDate" clearable />
|
||||
<el-form-item label="成立日期" prop="startDate">
|
||||
<el-input v-model="formData.startDate" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="企业类型" prop="enterpriseType">
|
||||
<el-input v-model="formData.enterpriseType" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="营业状态" prop="businessStatus">
|
||||
<el-input v-model="formData.businessStatus" clearable />
|
||||
<el-form-item label="营业状态" prop="serviceStatus">
|
||||
<el-input v-model="formData.serviceStatus" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被告记录" prop="defendantRecord">
|
||||
<el-radio-group v-model="formData.defendantRecord">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经营异常" prop="businessAbnormal">
|
||||
<el-radio-group v-model="formData.businessAbnormal">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="经营异常" prop="abnormalService">
|
||||
<el-radio-group v-model="formData.abnormalService">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="股权出质" prop="equityPledge">
|
||||
<el-radio-group v-model="formData.equityPledge">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="失信记录" prop="dishonestRecord">
|
||||
<el-radio-group v-model="formData.dishonestRecord">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="失信记录" prop="dishonestyRecord">
|
||||
<el-radio-group v-model="formData.dishonestyRecord">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资记录" prop="financingRecord">
|
||||
<el-radio-group v-model="formData.financingRecord">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="融资记录" prop="financeRecord">
|
||||
<el-radio-group v-model="formData.financeRecord">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被执行记录" prop="enforcementRecord">
|
||||
<el-radio-group v-model="formData.enforcementRecord">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-form-item label="被执行记录" prop="judgmentRecord">
|
||||
<el-radio-group v-model="formData.judgmentRecord">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -174,28 +174,28 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户行" prop="bBankName">
|
||||
<el-input v-model="formData.bBankName" disabled />
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="银行账号" prop="bBankAccount">
|
||||
<el-input v-model="formData.bBankAccount" disabled />
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input v-model="formData.bankAccount" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="法人代表" prop="bLegalRepresentative">
|
||||
<el-input v-model="formData.bLegalRepresentative" disabled />
|
||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||
<el-input v-model="formData.legalRepresentative" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="营业执照号" prop="bBusinessLicenseNumber">
|
||||
<el-input v-model="formData.bBusinessLicenseNumber" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="营业执照" prop="bBusinessLicense">
|
||||
<el-input v-model="formData.bBusinessLicense" disabled />
|
||||
<el-form-item label="营业执照" prop="businessLicense">
|
||||
<el-input v-model="formData.businessLicense" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
|
@ -368,7 +368,7 @@
|
|||
<!-- 子表的表单 -->
|
||||
<el-tabs v-model="subTabsName">
|
||||
<el-tab-pane label="报价产品关联" name="quotationProduct">
|
||||
<QuotationProductForm ref="quotationProductFormRef" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
|
||||
<QuotationProductForm ref="quotationProductFormRef" :products="formData.products" :quotation-id="formData.id" :business-id="formData.businessId" :billTemplateId="formData.invoiceTemplateId" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<div style="text-align: right">
|
||||
|
|
@ -462,7 +462,19 @@ const formRules = reactive({
|
|||
no: [{ required: true, message: '报价单编号不能为空', trigger: 'blur' }],
|
||||
customerId: [{ required: true, message: '客户id不能为空', trigger: 'change' }],
|
||||
businessId: [{ required: true, message: '商机编号不能为空', trigger: 'change' }],
|
||||
invoiceTemplateId: [{ required: true, message: '票据模板Id不能为空', trigger: 'change' }]
|
||||
invoiceTemplateId: [{ required: true, message: '票据模板Id不能为空', trigger: 'change' }],
|
||||
actualCapital: [{ required: true, message: '实缴资金不能为空', trigger: 'blur' }],
|
||||
socialEmployeeNum: [{ required: true, message: '参保人数不能为空', trigger: 'blur' }],
|
||||
defendantRecord: [{ required: true, message: '被告记录不能为空', trigger: 'blur' }],
|
||||
abnormalService: [{ required: true, message: '经营异常不能为空', trigger: 'blur' }],
|
||||
equityPledge: [{ required: true, message: '股权出质不能为空', trigger: 'blur' }],
|
||||
dishonestyRecord: [{ required: true, message: '失信记录不能为空', trigger: 'blur' }],
|
||||
financeRecord: [{ required: true, message: '融资记录不能为空', trigger: 'blur' }],
|
||||
judgmentRecord: [{ required: true, message: '被执行记录不能为空', trigger: 'blur' }],
|
||||
paymentTerm: [{ required: true, message: '账期不能为空', trigger: 'change' }],
|
||||
partnerCompanyId: [{ required: true, message: '合作主体不能为空', trigger: 'change' }],
|
||||
creditMethod: [{ required: true, message: '授信方式不能为空', trigger: 'change' }],
|
||||
creditCalcCycle: [{ required: true, message: '授信计算周期不能为空', trigger: 'change' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -499,6 +511,10 @@ const onCustomerChange = async (customerId: string) => {
|
|||
try {
|
||||
formLoading.value = true;
|
||||
const customerRes = await CustomerApi.getCustomer(customerId);
|
||||
formData.value.actualCapital = customerRes.actualCapital
|
||||
formData.value.socialEmployeeNum = customerRes.socialEmployeeNum
|
||||
formData.value.startDate = customerRes.startDate
|
||||
formData.value.actualCapital = customerRes.actualCapital
|
||||
formData.value.cooperationType = customerRes.cooperationType;
|
||||
formData.value.companyType = customerRes.companyType;
|
||||
formData.value.listingStatus = customerRes.listingStatus;
|
||||
|
|
@ -526,12 +542,12 @@ const onPartnerChange = async (id: string) => {
|
|||
try {
|
||||
formLoading.value = true;
|
||||
const res = await ContractApi.getOrgInfo(id);
|
||||
formData.value.bBankName = res.bankName;
|
||||
formData.value.bBankAccount = res.bankAccount;
|
||||
formData.value.bLegalRepresentative = res.legalRepresentative;
|
||||
formData.value.bBusinessLicenseNumber = res.businessLicenseNumber;
|
||||
formData.value.bBusinessLicense = res.businessLicense;
|
||||
formData.value.partnerCompanyId = res.partnerCompanyId;
|
||||
formData.value.bankName = res.bankName;
|
||||
formData.value.bankAccount = res.bankAccount;
|
||||
formData.value.legalRepresentative = res.legalRepresentative;
|
||||
formData.value.businessLicenseNumber = res.businessLicenseNumber;
|
||||
formData.value.businessLicense = res.businessLicense;
|
||||
// formData.value.partnerCompanyId = res.partnerCompanyId;
|
||||
} catch (err) {
|
||||
} finally {
|
||||
formLoading.value = false;
|
||||
|
|
@ -539,7 +555,6 @@ const onPartnerChange = async (id: string) => {
|
|||
}
|
||||
|
||||
const changeNum = (val) => {
|
||||
console.log('%csrc/views/crm/quotation/QuotationForm.vue:534 val + formData.value.creditAmount || 0', 'color: #007acc;', Number(val) + (formData.value.creditAmount || 0));
|
||||
formData.value.creditLimit = (Number(val) + (formData.value.creditAmount || 0)).toFixed(2)
|
||||
}
|
||||
/** 打开弹窗 */
|
||||
|
|
|
|||
|
|
@ -94,10 +94,10 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品开具项目" min-width="150">
|
||||
<el-table-column label="产品开具项目" min-width="160">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItems`" :rules="formRules.productInvoiceItems" class="mb-0px!">
|
||||
<el-select v-model="row.productInvoiceItems" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-form-item :prop="`${$index}.productInvoiceItem`" :rules="formRules.productInvoiceItem" class="mb-0px!">
|
||||
<el-select v-model="row.productInvoiceItem" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS)"
|
||||
:key="dict.value"
|
||||
|
|
@ -110,8 +110,8 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="服务费票据" min-width="150">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceFeeInvoice`" :rules="formRules.serviceFeeInvoice" class="mb-0px!">
|
||||
<el-select v-model="row.serviceFeeInvoice" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-form-item :prop="`${$index}.serviceInvoice`" :rules="formRules.serviceInvoice" class="mb-0px!">
|
||||
<el-select v-model="row.serviceInvoice" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE)"
|
||||
:key="dict.value"
|
||||
|
|
@ -122,10 +122,10 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务开具项目" min-width="150">
|
||||
<el-table-column label="服务开具项目" min-width="160">
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.serviceFeeInvoiceItems`" :rules="formRules.serviceFeeInvoiceItems" class="mb-0px!">
|
||||
<el-select v-model="row.serviceFeeInvoiceItems" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-form-item :prop="`${$index}.serviceInvoiceItem`" :rules="formRules.serviceInvoiceItem" class="mb-0px!">
|
||||
<el-select v-model="row.serviceInvoiceItem" placeholder="请选择状态" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS)"
|
||||
:key="dict.value"
|
||||
|
|
@ -156,7 +156,8 @@ import * as BusinessApi from '@/api/crm/business'
|
|||
const props = defineProps<{
|
||||
quotationId: undefined, // 报价编号(主表的关联字段)
|
||||
businessId: undefined,
|
||||
billTemplateId: undefined
|
||||
billTemplateId: undefined,
|
||||
products: undefined
|
||||
}>()
|
||||
const formLoading = ref(false) // 表单的加载中
|
||||
const formData = ref([])
|
||||
|
|
@ -169,7 +170,11 @@ const formRules = reactive({
|
|||
productUnit: [{ required: true, message: '产品单位不能为空', trigger: 'blur' }],
|
||||
onlinePrice: [{ required: true, message: '线上价格不能为空', trigger: 'blur' }],
|
||||
offlinePrice: [{ required: true, message: '线下价格不能为空', trigger: 'blur' }],
|
||||
totalPrice: [{ required: true, message: '总计价格不能为空', trigger: 'blur' }]
|
||||
totalPrice: [{ required: true, message: '总计价格不能为空', trigger: 'blur' }],
|
||||
productInvoiceItem: [{ required: true, message: '产品开具项目不能为空', trigger: 'blur' }],
|
||||
serviceInvoice: [{ required: true, message: '服务费票据不能为空', trigger: 'blur' }],
|
||||
serviceInvoiceItem: [{ required: true, message: '服务开具项目不能为空', trigger: 'blur' }],
|
||||
productInvoice: [{ required: true, message: '产品票据不能为空', trigger: 'blur' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -185,6 +190,7 @@ watch(
|
|||
}
|
||||
try {
|
||||
formLoading.value = true
|
||||
console.log('%csrc/views/crm/quotation/components/QuotationProductForm.vue:214 1111', 'color: #007acc;', 2222);
|
||||
// if(val.quotationId) {
|
||||
// formData.value = await QuotationApi.getQuotationProductListByQuotationId(val.quotationId)
|
||||
// } else if(val.businessId) {
|
||||
|
|
@ -195,7 +201,7 @@ watch(
|
|||
formLoading.value = false
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
// { immediate: true }
|
||||
)
|
||||
|
||||
watch(
|
||||
|
|
@ -207,6 +213,7 @@ watch(
|
|||
}
|
||||
try {
|
||||
formLoading.value = true
|
||||
console.log('%csrc/views/crm/quotation/components/QuotationProductForm.vue:214 1111', 'color: #007acc;', 1111);
|
||||
// if(val.quotationId) {
|
||||
// formData.value = await QuotationApi.getQuotationProductListByQuotationId(val.quotationId)
|
||||
// } else if(val.businessId) {
|
||||
|
|
@ -219,9 +226,9 @@ watch(
|
|||
let foundItem = formData.value.find(item => item.productId == data.productId);
|
||||
if (foundItem) {
|
||||
foundItem.productInvoice = data.productInvoice
|
||||
foundItem.productInvoiceItems = data.productInvoiceItems
|
||||
foundItem.serviceFeeInvoice = data.serviceFeeInvoice
|
||||
foundItem.serviceFeeInvoiceItems = data.serviceFeeInvoiceItems
|
||||
foundItem.productInvoiceItem = data.productInvoiceItems
|
||||
foundItem.serviceInvoice = data.serviceFeeInvoice
|
||||
foundItem.serviceInvoiceItem = data.serviceFeeInvoiceItems
|
||||
}
|
||||
}
|
||||
// formData.value = business
|
||||
|
|
@ -230,7 +237,7 @@ watch(
|
|||
formLoading.value = false
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
// { immediate: true }
|
||||
)
|
||||
// 监听合同产品变化,计算合同产品总价
|
||||
watch(
|
||||
|
|
@ -250,6 +257,20 @@ watch(
|
|||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
watch(
|
||||
() => props.products,
|
||||
(val) => {
|
||||
if (!val || val.length === 0) {
|
||||
return;
|
||||
}
|
||||
nextTick(() => {
|
||||
formData.value = val
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
|
||||
);
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
const row = {
|
||||
|
|
@ -262,8 +283,8 @@ const handleAdd = () => {
|
|||
offlinePrice: undefined,
|
||||
totalPrice: undefined,
|
||||
productInvoice: undefined,
|
||||
productInvoiceItems: undefined,
|
||||
serviceFeeInvoice: undefined,
|
||||
productInvoiceItem: undefined,
|
||||
serviceInvoice: undefined,
|
||||
serviceFeeInvoiceItems: undefined
|
||||
}
|
||||
row.quotationId = props.quotationId
|
||||
|
|
|
|||
|
|
@ -85,16 +85,16 @@
|
|||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="报价单编号" align="center" prop="no" />
|
||||
<el-table-column label="客户名称" align="center" prop="customerId">
|
||||
<el-table-column label="报价单编号" align="center" prop="no" width="200" />
|
||||
<el-table-column label="客户名称" align="center" prop="customerId" width="220">
|
||||
<template #default="scope">
|
||||
<el-link
|
||||
<!-- <el-link
|
||||
:underline="false"
|
||||
type="primary"
|
||||
@click="openCustomerDetail(scope.row.customerId)"
|
||||
>
|
||||
> -->
|
||||
{{ scope.row.customerName }}
|
||||
</el-link>
|
||||
<!-- </el-link> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商机负责人" align="center" prop="ownerUserId">
|
||||
|
|
|
|||
Loading…
Reference in New Issue