懒加载
parent
f99a823ca9
commit
bd50c3fc95
|
|
@ -372,10 +372,10 @@ const setList = (newProducts) => {
|
||||||
// 改版账期
|
// 改版账期
|
||||||
const changePayment = (val) => {
|
const changePayment = (val) => {
|
||||||
|
|
||||||
const currentDate = new Date(); // 获取当前日期
|
// const currentDate = new Date(); // 获取当前日期
|
||||||
const currentMonth = currentDate.getMonth() + 1; // 获取当前月份(注意月份是从0开始的,所以需要加1)
|
// const currentMonth = currentDate.getMonth() + 1; // 获取当前月份(注意月份是从0开始的,所以需要加1)
|
||||||
const daysInMonth = new Date(currentDate.getFullYear(), currentMonth, 0).getDate(); // 获取指定月份的天数
|
// const daysInMonth = new Date(currentDate.getFullYear(), currentMonth, 0).getDate(); // 获取指定月份的天数
|
||||||
formData.value.creditCalcCycle = (val > 2 ? parseInt(daysInMonth + Number(val)) : 0)
|
formData.value.creditCalcCycle = (val > 2 ? parseInt(30 + Number(val)) : 0)
|
||||||
formData.value.creditLimit = parseInt(formData.value.totalPrice / 365 * formData.value.creditCalcCycle)
|
formData.value.creditLimit = parseInt(formData.value.totalPrice / 365 * formData.value.creditCalcCycle)
|
||||||
}
|
}
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
|
|
|
||||||
|
|
@ -37,16 +37,23 @@
|
||||||
<el-select
|
<el-select
|
||||||
:disabled="formData.customerDefault"
|
:disabled="formData.customerDefault"
|
||||||
v-model="formData.customerId"
|
v-model="formData.customerId"
|
||||||
|
:loading="loading"
|
||||||
|
loading-text="数据加载中..."
|
||||||
filterable
|
filterable
|
||||||
placeholder="请选择客户"
|
clearable
|
||||||
class="w-1/1"
|
popper-class="event-select-poper"
|
||||||
>
|
v-el-select-loadmore="loadmore"
|
||||||
|
:placeholder="placeholder"
|
||||||
|
style="width: 100%"
|
||||||
|
:filter-method="filterOptions"
|
||||||
|
@change="handleEventsChange"
|
||||||
|
@visible-change="handleVisibleChange">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in customerList"
|
v-for="item in options"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id" />
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -59,7 +66,7 @@
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="电话" prop="telephone">
|
<el-form-item label="电话" prop="telephone">
|
||||||
<el-input v-model="formData.telephone" placeholder="请输入电话" />
|
<el-input v-model="formData.telephone" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入电话" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
|
@ -204,12 +211,26 @@ const formData = ref({
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
||||||
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
|
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
|
||||||
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }]
|
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }],
|
||||||
|
email: [{ required: false, message: '电子邮箱不能为空', trigger: 'blur' } ,
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})$/,
|
||||||
|
message: "请输入正确的电子邮箱",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
mobile: [{ required: false, message: '手机号不能为空', trigger: 'blur' } ,
|
||||||
|
{pattern: /^(1[3-9][0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/, message: '请输入正确手机号'}
|
||||||
|
],
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const customerList = ref<CustomerApi.CustomerVO[]>([]) // 客户列表
|
const customerList = ref<CustomerApi.CustomerVO[]>([]) // 客户列表
|
||||||
const contactList = ref<ContactApi.ContactVO[]>([]) // 联系人列表
|
const contactList = ref<ContactApi.ContactVO[]>([]) // 联系人列表
|
||||||
|
let pageNo = ref(1)
|
||||||
|
let pageSize = ref(10)
|
||||||
|
let total = 0
|
||||||
|
const options = ref([]);
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (type: string, id?: number, customerId?: number, businessId?: number) => {
|
const open = async (type: string, id?: number, customerId?: number, businessId?: number) => {
|
||||||
|
|
@ -226,6 +247,7 @@ const open = async (type: string, id?: number, customerId?: number, businessId?:
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// console.log('%csrc/views/crm/contact/ContactForm.vue:229 customerId', 'color: #007acc;', customerId);
|
||||||
if (customerId) {
|
if (customerId) {
|
||||||
formData.value.customerId = customerId
|
formData.value.customerId = customerId
|
||||||
formData.value.customerDefault = true // 默认客户的选择,不允许变
|
formData.value.customerDefault = true // 默认客户的选择,不允许变
|
||||||
|
|
@ -239,6 +261,7 @@ const open = async (type: string, id?: number, customerId?: number, businessId?:
|
||||||
contactList.value = await ContactApi.getSimpleContactList()
|
contactList.value = await ContactApi.getSimpleContactList()
|
||||||
// 获得客户列表
|
// 获得客户列表
|
||||||
customerList.value = await CustomerApi.getSelfCustomerSimpleList()
|
customerList.value = await CustomerApi.getSelfCustomerSimpleList()
|
||||||
|
options.value = customerList.value.slice(0, 10)
|
||||||
// 获得地区列表
|
// 获得地区列表
|
||||||
areaList.value = await AreaApi.getAreaTree()
|
areaList.value = await AreaApi.getAreaTree()
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
|
|
@ -301,4 +324,81 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const loading = ref(false);
|
||||||
|
const placeholder = ref('请选择');
|
||||||
|
const allFilterEvents = reactive([]);
|
||||||
|
const vElSelectLoadmore = {
|
||||||
|
beforeMount(el, binding) {
|
||||||
|
const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap');
|
||||||
|
const loadMores = function() {
|
||||||
|
const isBase = this.scrollHeight - this.scrollTop <= this.clientHeight + 20;
|
||||||
|
if (isBase) {
|
||||||
|
binding.value && binding.value();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
el.selectDomInfo = selectDom;
|
||||||
|
el.selectLoadMore = loadMores;
|
||||||
|
selectDom?.addEventListener('scroll', loadMores.bind(selectDom));
|
||||||
|
},
|
||||||
|
beforeUnmount(el) {
|
||||||
|
if (el.selectLoadMore) {
|
||||||
|
el.selectDomInfo.removeEventListener('scroll', el.selectLoadMore);
|
||||||
|
delete el.selectDomInfo;
|
||||||
|
delete el.selectLoadMore;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(() => allFilterEvents, () => {
|
||||||
|
let startIndex = pageNo.value * pageSize.value - pageSize.value;
|
||||||
|
let endIndex = pageNo.value * pageSize.value;
|
||||||
|
options.value = allFilterEvents.slice(startIndex, endIndex);
|
||||||
|
}, {
|
||||||
|
immediate: true,
|
||||||
|
deep: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const loadmore = () => {
|
||||||
|
if (customerList.value.length <= options.value.length) return;
|
||||||
|
pageNo.value++;
|
||||||
|
nextTick(() => {
|
||||||
|
loading.value = true;
|
||||||
|
let startIndex = pageNo.value * pageSize.value - pageSize.value;
|
||||||
|
let endIndex = pageNo.value * pageSize.value;
|
||||||
|
options.value = [
|
||||||
|
...options.value,
|
||||||
|
...customerList.value.slice(startIndex, endIndex)
|
||||||
|
];
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const filterOptions = (query = '') => {
|
||||||
|
pageNo.value = 1;
|
||||||
|
nextTick(() => {
|
||||||
|
if (query === '') {
|
||||||
|
allFilterEvents.splice(0, allFilterEvents.length, ...customerList.value);
|
||||||
|
} else {
|
||||||
|
allFilterEvents.splice(0, allFilterEvents.length, ...customerList.value.filter(item => item.name.includes(query)));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleVisibleChange = (visible) => {
|
||||||
|
if (!visible) {
|
||||||
|
pageNo.value = 1;
|
||||||
|
nextTick(() => {
|
||||||
|
allFilterEvents.splice(0, allFilterEvents.length, ...customerList.value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleEventsChange = (val) => {
|
||||||
|
console.log('Selected value:', val);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// onMounted(async() => {
|
||||||
|
// })
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ const handleQuery = () => {
|
||||||
/** 添加操作 */
|
/** 添加操作 */
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const openForm = () => {
|
const openForm = () => {
|
||||||
formRef.value.open('create', undefined, props.customerId, props.businessId)
|
formRef.value.open('create', undefined, props.bizId, props.businessId)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 打开联系人详情 */
|
/** 打开联系人详情 */
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ const resetQuery = () => {
|
||||||
/** 添加操作 */
|
/** 添加操作 */
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const openForm = () => {
|
const openForm = () => {
|
||||||
formRef.value.open('create')
|
formRef.value.open('create', '', Number(props.customerId))
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 关联联系人提交 */
|
/** 关联联系人提交 */
|
||||||
|
|
|
||||||
|
|
@ -266,13 +266,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="客户详情" prop="customerDetails">
|
|
||||||
<el-input v-model="formData.customerDetails" type="textarea" placeholder="请输入客户详情" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
分配
|
分配
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="customer.ownerUserId && permissionListRef?.validateOwnerUser"
|
v-if="customer.ownerUserId && permissionListRef?.validateOwnerUser && !customer.dealStatus"
|
||||||
@click="handlePutPool"
|
@click="handlePutPool"
|
||||||
>
|
>
|
||||||
放入公海
|
放入公海
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="拓展人" prop="expanderUserId">
|
<el-form-item label="拓展人" prop="expanderUserId">
|
||||||
<el-select v-model="formData.expanderUserId" placeholder="请选择拓展人">
|
<el-select v-model="formData.expanderUserId" placeholder="请选择拓展人">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -245,7 +245,7 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="方案报价人" prop="pricingUserId">
|
<el-form-item label="方案报价人" prop="pricingUserId">
|
||||||
<el-select v-model="formData.pricingUserId" disabled placeholder="请选择方案报价人">
|
<el-select v-model="formData.pricingUserId" disabled placeholder="请选择方案报价人">
|
||||||
|
|
@ -258,7 +258,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="报价签约人" prop="signUserId">
|
<el-form-item label="报价签约人" prop="signUserId">
|
||||||
<el-select v-model="formData.signUserId" placeholder="请选择报价签约人">
|
<el-select v-model="formData.signUserId" placeholder="请选择报价签约人">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -269,7 +269,7 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<!-- <el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="签约人联系电话" prop="signPhoneNumber">
|
<el-form-item label="签约人联系电话" prop="signPhoneNumber">
|
||||||
<el-input v-model="formData.signPhoneNumber" placeholder="请输入签约人联系电话" />
|
<el-input v-model="formData.signPhoneNumber" placeholder="请输入签约人联系电话" />
|
||||||
|
|
@ -323,12 +323,8 @@
|
||||||
</el-select> -->
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="授信额度" prop="creditLimit">
|
<el-col :span="8">
|
||||||
<el-input v-model="formData.creditLimit" placeholder="请输入授信额度" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
||||||
<el-select v-model="formData.invoiceTemplateId" :disabled="!formData.businessId" @change="changeTemplate" placeholder="请选择票据模板">
|
<el-select v-model="formData.invoiceTemplateId" :disabled="!formData.businessId" @change="changeTemplate" placeholder="请选择票据模板">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -340,12 +336,16 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第几次报价" prop="quotationTimes">
|
<el-form-item label="第几次报价" prop="quotationTimes">
|
||||||
<el-input v-model="formData.quotationTimes" placeholder="请输入报价次数" />
|
<el-input v-model="formData.quotationTimes" placeholder="请输入报价次数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="授信额度" prop="creditLimit">
|
||||||
|
<el-input v-model="formData.creditLimit" placeholder="请输入授信额度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in TaskOptions"
|
v-for="dict in TaskOptions"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
:label="dict.nickname"
|
:label="dict.userName"
|
||||||
:value="dict.id"
|
:value="dict.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in TaskOptions"
|
v-for="dict in TaskOptions"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
:label="dict.nickname"
|
:label="dict.userName"
|
||||||
:value="dict.id"
|
:value="dict.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue