Compare commits
4 Commits
036f2a61bf
...
a6a98eb2b6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6a98eb2b6 | ||
|
|
d37b721c28 | ||
|
|
ca7572c542 | ||
|
|
c10a0be121 |
@@ -1,12 +1,5 @@
|
||||
import request from "@/utils/request"
|
||||
|
||||
export function getPersonalPlanList(params) {
|
||||
return request.post({
|
||||
url: '/getPersonalPlanList',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
export function getUserInfo(data) {
|
||||
return request.get({
|
||||
url: '/crm/app/user/getUserInfo',
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, reactive, ref } from "vue";
|
||||
import { onMounted, reactive, ref, defineExpose} from "vue";
|
||||
|
||||
const props = defineProps({
|
||||
// 是否显示全部清空按钮
|
||||
@@ -175,6 +175,17 @@ const handleChange = (index, item) => {
|
||||
// 触发回调函数
|
||||
emit("change", changevalue, realValue);
|
||||
};
|
||||
|
||||
// 失去焦点时关闭选项列表
|
||||
const handleBlur = () => {
|
||||
active.value = false;
|
||||
};
|
||||
|
||||
// 定义组件实例暴露的方法
|
||||
defineExpose({
|
||||
handleBlur
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -168,8 +168,8 @@
|
||||
<uni-forms-item label="爱好" name="hobby" class="uni-forms-item is-direction-top is-top">
|
||||
<!-- 索引:hobbyIndex 范围:hobbyList 响应:handleHobbyChange-->
|
||||
<uni-easyinput v-model="formData.hobby" placeholder="请输入爱好" :disabled="!editable"/>
|
||||
<multipleSelect :multiple="true" :value="hobbyIndex" downInner :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
<multipleSelect ref="hobbySelectRef" :multiple="true" downInner :value="hobbyIds" :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
|
||||
></multipleSelect><!--placeholder="请选择爱好标签"-->
|
||||
</uni-forms-item>
|
||||
@@ -467,20 +467,29 @@ let handleThinkLevelChange = (e) => {
|
||||
// 系统推荐等级
|
||||
let recommendLevel = ref("");
|
||||
let getRecommendLevel = async () => {
|
||||
if (formData.value.cusEstate && formData.value.functionalRequirements) {
|
||||
if (formData.value.cusEstate) {
|
||||
let {cusEstate, functionalRequirements} = formData.value;
|
||||
let param = {cusEstate, functionalRequirements};
|
||||
if (formData.value.salesmanThinkLevel) {
|
||||
param.personnelLevel = formData.value.salesmanThinkLevel;
|
||||
}
|
||||
let res = await getCustomerLevel(param).catch(err => {
|
||||
let res = await getCustomerLevel(param)
|
||||
/*.catch(err => {
|
||||
console.error(err, "客户的系统推荐等级获取失败")
|
||||
})
|
||||
if (!res.systemRecommendationLevel) {
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
console.log(formData.value.systemThinkLevel + "???")
|
||||
})*/
|
||||
try{
|
||||
if(res.data.systemRecommendationLevel){
|
||||
formData.value.systemThinkLevel = res.data.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐";
|
||||
}
|
||||
}catch(e){
|
||||
if (res.systemRecommendationLevel) {
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
}
|
||||
}
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
} else {
|
||||
recommendLevel.value = "无公司等级信息,无法推荐等级";
|
||||
}
|
||||
@@ -509,8 +518,7 @@ let handleUserTypeChange = (e) => {
|
||||
|
||||
// 选择日期
|
||||
function handleTenureTimeChange(e) {
|
||||
let {value} = e.detail;
|
||||
formData.value.tenureTime = value;
|
||||
formData.value.tenureTime = e;
|
||||
}
|
||||
|
||||
// 需求层次索引
|
||||
@@ -533,16 +541,16 @@ let handleDevelopChange = e => {
|
||||
|
||||
// 选择生日
|
||||
function handleBirthdayChange(e) {
|
||||
let{value} = e.detail
|
||||
formData.value.birthday = value;
|
||||
formData.value.birthday = e;
|
||||
}
|
||||
|
||||
// 爱好标签索引
|
||||
let hobbyIndex = reactive([]);
|
||||
let hobbyIds = ref([]);
|
||||
let hobbies = ref([]);
|
||||
// 选择爱好标签
|
||||
const handleHobbyChange = (item, value) => {
|
||||
// console.log("爱好", item, value);
|
||||
hobbyIndex = value;
|
||||
const handleHobbyChange = (items, ids) => {
|
||||
hobbyIds.value = [];
|
||||
hobbies.value = items;
|
||||
};
|
||||
// 选择
|
||||
const handleNativeChange = (e) => {
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
<!--
|
||||
* @author wangzhuo
|
||||
* @date 2025年9月1日
|
||||
* @description 编辑客户人员信息
|
||||
-->
|
||||
<template>
|
||||
<view class="con-body">
|
||||
<view class="con-bg">
|
||||
@@ -17,7 +22,7 @@
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<view class="white-bg">
|
||||
<view class="form-con">
|
||||
<view class="form-con" @click="handleBlur">
|
||||
<uni-forms ref="formRef" :model="formData" :rules="rules" label-width="40%">
|
||||
<!-- 选择客户 -->
|
||||
<uni-forms-item label="客户名称" name="cusName" required class="f-c-right">
|
||||
@@ -168,8 +173,8 @@
|
||||
<uni-forms-item label="爱好" name="hobby" class="uni-forms-item is-direction-top is-top">
|
||||
<!-- 索引:hobbyIndex 范围:hobbyList 响应:handleHobbyChange-->
|
||||
<uni-easyinput v-model="formData.hobby" placeholder="请输入爱好"/>
|
||||
<multipleSelect :multiple="true" :value="hobbyIndex" downInner :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
<multipleSelect ref="hobbySelectRef" :multiple="true" downInner :value="hobbyIds" :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
|
||||
></multipleSelect><!--placeholder="请选择爱好标签"-->
|
||||
</uni-forms-item>
|
||||
@@ -468,20 +473,29 @@ let handleThinkLevelChange = (e) => {
|
||||
// 系统推荐等级
|
||||
let recommendLevel = ref("");
|
||||
let getRecommendLevel = async () => {
|
||||
if (formData.value.cusEstate && formData.value.functionalRequirements) {
|
||||
if (formData.value.cusEstate) {
|
||||
let {cusEstate, functionalRequirements} = formData.value;
|
||||
let param = {cusEstate, functionalRequirements};
|
||||
if (formData.value.salesmanThinkLevel) {
|
||||
param.personnelLevel = formData.value.salesmanThinkLevel;
|
||||
}
|
||||
let res = await getCustomerLevel(param).catch(err => {
|
||||
let res = await getCustomerLevel(param)
|
||||
/*.catch(err => {
|
||||
console.error(err, "客户的系统推荐等级获取失败")
|
||||
})
|
||||
if (!res.systemRecommendationLevel) {
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
console.log(formData.value.systemThinkLevel + "???")
|
||||
})*/
|
||||
try{
|
||||
if(res.data.systemRecommendationLevel){
|
||||
formData.value.systemThinkLevel = res.data.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐";
|
||||
}
|
||||
}catch(e){
|
||||
if (res.systemRecommendationLevel) {
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
}
|
||||
}
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
} else {
|
||||
recommendLevel.value = "无公司等级信息,无法推荐等级";
|
||||
}
|
||||
@@ -510,8 +524,7 @@ let handleUserTypeChange = (e) => {
|
||||
|
||||
// 选择日期
|
||||
function handleTenureTimeChange(e) {
|
||||
let {value} = e.detail;
|
||||
formData.value.tenureTime = value;
|
||||
formData.value.tenureTime = e;
|
||||
}
|
||||
|
||||
// 需求层次索引
|
||||
@@ -534,17 +547,19 @@ let handleDevelopChange = e => {
|
||||
|
||||
// 选择生日
|
||||
function handleBirthdayChange(e) {
|
||||
let{value} = e.detail
|
||||
formData.value.birthday = value;
|
||||
formData.value.birthday = e;
|
||||
}
|
||||
|
||||
// 爱好标签索引
|
||||
let hobbyIndex = reactive([]);
|
||||
let hobbyIds = ref([]);
|
||||
let hobbies = ref([]);
|
||||
// 选择爱好标签
|
||||
const handleHobbyChange = (item, value) => {
|
||||
// console.log("爱好", item, value);
|
||||
hobbyIndex = value;
|
||||
const handleHobbyChange = (items, ids) => {
|
||||
console.log('选择爱好', items, ids);
|
||||
hobbyIds.value = [];
|
||||
hobbies.value = items;
|
||||
};
|
||||
|
||||
// 选择
|
||||
const handleNativeChange = (e) => {
|
||||
formData.value.nativec = (e.detail.value.map(item => {
|
||||
@@ -567,17 +582,22 @@ let handleWorkingStatusChange = e => {
|
||||
formData.value.workingStatus = workingStatusList[value].name;
|
||||
}
|
||||
|
||||
const hobbySelectRef = ref(null);
|
||||
// 多选组件失去焦点关闭
|
||||
let handleBlur = () => {
|
||||
if (hobbySelectRef.value) hobbySelectRef.value.handleBlur();
|
||||
}
|
||||
let submitForm = async () => {
|
||||
let hobbyTags = hobbyIndex.map(it => {
|
||||
let {name} = hobbyList[it];
|
||||
let hobbyTags = hobbies.value.map(it => {
|
||||
let {name} = it;
|
||||
return name;
|
||||
})
|
||||
formData.value.iphone = formData.value.mobilePhone; // 特殊处理
|
||||
const hobbyTagString = hobbyTags.join(',');
|
||||
console.log(hobbyTagString);
|
||||
if (hobbyTagString || formData.value.hobby) {
|
||||
formData.value.hobby = formData.value.hobby ? formData.value.hobby + ',' + hobbyTagString : hobbyTagString;
|
||||
formData.value.hobby = hobbyTagString ? (formData.value.hobby ? formData.value.hobby + ',' : '') + hobbyTagString : formData.value.hobby;
|
||||
}
|
||||
formData.value.iphone = formData.value.mobilePhone; // 特殊处理
|
||||
// console.log(formData.value, "校验表单数据")
|
||||
// console.log(recommendLevel);
|
||||
formData.value.cusName = customerUser.value.cusName;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<view class="white-bg">
|
||||
<view class="form-con">
|
||||
<view class="form-con" @click="handleBlur">
|
||||
<uni-forms ref="formRef" :model="formData" :rules="rules" label-width="40%">
|
||||
<!-- 选择客户 -->
|
||||
<uni-forms-item label="客户名称" name="cusName" required class="f-c-right">
|
||||
@@ -178,7 +178,7 @@
|
||||
<uni-forms-item label="爱好" name="hobby" class="uni-forms-item is-direction-top is-top">
|
||||
<!-- 索引:hobbyIndex 范围:hobbyList 响应:handleHobbyChange-->
|
||||
<uni-easyinput v-model="formData.hobby" placeholder="请输入爱好"/>
|
||||
<multipleSelect :multiple="true" :value="hobbyIndex" downInner :options="hobbyList"
|
||||
<multipleSelect ref="hobbySelectRef" :multiple="true" downInner :value="hobbyIds" :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
|
||||
></multipleSelect><!--placeholder="请选择爱好标签"-->
|
||||
@@ -271,7 +271,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref, onMounted, computed, reactive} from 'vue'
|
||||
import {ref, reactive} from 'vue'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import multipleSelect from '@/components/multipleSelect.vue'
|
||||
import {
|
||||
@@ -284,7 +284,8 @@ import {
|
||||
} from "./dataMap";
|
||||
import city from "@/utils/area";
|
||||
import {getCustomerLevel, saveappCrmCusUserNew} from "@/api/crm/customer/getCustomer";
|
||||
|
||||
// 对 multipleSelect 组件的引用
|
||||
const hobbySelectRef = ref(null);
|
||||
// 表单引用
|
||||
const formRef = ref({});
|
||||
// 表单数据
|
||||
@@ -412,7 +413,7 @@ let handleCustomerClick = () => {
|
||||
let {
|
||||
cusName, // 公司名称
|
||||
cusEstate, // 等级
|
||||
cusId,
|
||||
cusId,
|
||||
} = data;
|
||||
customerUser.value.cusName = cusName;
|
||||
if (!cusEstate) customerUser.value.sysThinkLevel = "该客户暂无等级信息,无法进行系统推荐"
|
||||
@@ -448,20 +449,29 @@ let handleThinkLevelChange = (e) => {
|
||||
// 系统推荐等级
|
||||
let recommendLevel = ref("");
|
||||
let getRecommendLevel = async () => {
|
||||
if (formData.value.cusEstate && formData.value.functionalRequirements) {
|
||||
if (formData.value.cusEstate) {
|
||||
let {cusEstate, functionalRequirements} = formData.value;
|
||||
let param = {cusEstate, functionalRequirements};
|
||||
if (formData.value.salesmanThinkLevel) {
|
||||
param.personnelLevel = formData.value.salesmanThinkLevel;
|
||||
}
|
||||
let res = await getCustomerLevel(param).catch(err => {
|
||||
let res = await getCustomerLevel(param)
|
||||
/*.catch(err => {
|
||||
console.error(err, "客户的系统推荐等级获取失败")
|
||||
})
|
||||
if (!res.systemRecommendationLevel) {
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
console.log(formData.value.systemThinkLevel + "???")
|
||||
})*/
|
||||
try{
|
||||
if(res.data.systemRecommendationLevel){
|
||||
formData.value.systemThinkLevel = res.data.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐";
|
||||
}
|
||||
}catch(e){
|
||||
if (res.systemRecommendationLevel) {
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
}
|
||||
}
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
} else {
|
||||
recommendLevel.value = "无公司等级信息,无法推荐等级";
|
||||
}
|
||||
@@ -489,9 +499,9 @@ let handleUserTypeChange = (e) => {
|
||||
}
|
||||
|
||||
// 选择日期
|
||||
function handleTenureTimeChange(e) {
|
||||
let {value} = e.detail;
|
||||
formData.value.tenureTime = value;
|
||||
function handleTenureTimeChange(val) {
|
||||
console.log(val)
|
||||
formData.value.tenureTime = val;
|
||||
}
|
||||
|
||||
// 需求层次索引
|
||||
@@ -513,18 +523,20 @@ let handleDevelopChange = e => {
|
||||
}
|
||||
|
||||
// 选择生日
|
||||
function handleBirthdayChange(e) {
|
||||
let{value} = e.detail
|
||||
formData.value.birthday = value;
|
||||
function handleBirthdayChange(val) {
|
||||
formData.value.birthday = val;
|
||||
}
|
||||
|
||||
// 爱好标签索引
|
||||
let hobbyIndex = reactive([]);
|
||||
let hobbyIds = ref([]);
|
||||
let hobbies = ref([]);
|
||||
// 选择爱好标签
|
||||
const handleHobbyChange = (item, value) => {
|
||||
// console.log("爱好", item, value);
|
||||
hobbyIndex = value;
|
||||
const handleHobbyChange = (items, ids) => {
|
||||
console.log('选择爱好', items, ids);
|
||||
hobbyIds.value = [];
|
||||
hobbies.value = items;
|
||||
};
|
||||
|
||||
// 选择
|
||||
const handleNativeChange = (e) => {
|
||||
formData.value.nativec = (e.detail.value.map(item => {
|
||||
@@ -546,16 +558,93 @@ let handleWorkingStatusChange = e => {
|
||||
workingStatusIndex.value = 0;
|
||||
formData.value.workingStatus = workingStatusList[value].name;
|
||||
}
|
||||
|
||||
let submitForm = async () => {
|
||||
let hobbyTags = hobbyIndex.map(it => {
|
||||
let {name} = hobbyList[it];
|
||||
// 多选组件失去焦点关闭
|
||||
let handleBlur = () => {
|
||||
if (hobbySelectRef.value) hobbySelectRef.value.handleBlur();
|
||||
}
|
||||
// 提取爱好标签处理逻辑
|
||||
const processHobbyTags = () => {
|
||||
let hobbyTags = hobbies.value.map(it => {
|
||||
let {name} = it;
|
||||
return name;
|
||||
})
|
||||
const hobbyTagString = hobbyTags.join(',');
|
||||
console.log(hobbyTagString);
|
||||
if (hobbyTagString || formData.value.hobby) {
|
||||
formData.value.hobby = formData.value.hobby ? formData.value.hobby + ',' + hobbyTagString : hobbyTagString;
|
||||
formData.value.hobby = hobbyTagString ? (formData.value.hobby ? formData.value.hobby + ',' : '') + hobbyTagString : formData.value.hobby;
|
||||
}
|
||||
};
|
||||
|
||||
// 提取表单验证逻辑
|
||||
const validateForm = async () => {
|
||||
formData.value.cusName = customerUser.value.cusName;
|
||||
await formRef.value.validate();
|
||||
console.log(formData.value, "提交表单数据");
|
||||
};
|
||||
|
||||
// 提取API调用逻辑
|
||||
const saveCustomerUser = async () => {
|
||||
uni.showLoading();
|
||||
try {
|
||||
const res = await saveappCrmCusUserNew(formData.value);
|
||||
if(res.code === 200){
|
||||
uni.showToast({
|
||||
title: "保存成功"
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "操作失败",
|
||||
icon: "error"
|
||||
});
|
||||
}
|
||||
setTimeout(() => uni.navigateBack(), 1500);
|
||||
} catch(err) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: "保存失败"
|
||||
});
|
||||
}
|
||||
finally{
|
||||
uni.hideLoading()
|
||||
}
|
||||
};
|
||||
|
||||
// 简化后的 submitForm 方法
|
||||
let submitForm = async () => {
|
||||
console.log(formData.value);
|
||||
try {
|
||||
if(formData.value.iphone){
|
||||
formData.value.mobilePhone = formData.value.iphone;
|
||||
}
|
||||
// 处理爱好标签
|
||||
processHobbyTags();
|
||||
|
||||
// 表单验证
|
||||
await validateForm();
|
||||
|
||||
// 保存客户人员信息
|
||||
await saveCustomerUser();
|
||||
} catch (err) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '请检查并完善信息'
|
||||
});
|
||||
console.warn(err);
|
||||
}
|
||||
};
|
||||
|
||||
/*let submitForm = async () => {
|
||||
let hobbyTags = hobbies.value.map(it => {
|
||||
let {name} = it;
|
||||
return name;
|
||||
})
|
||||
const hobbyTagString = hobbyTags.join(',');
|
||||
console.log(hobbyTagString);
|
||||
if (hobbyTagString || formData.value.hobby) {
|
||||
formData.value.hobby = hobbyTagString ? (formData.value.hobby ? formData.value.hobby + ',' : '') + hobbyTagString : formData.value.hobby;
|
||||
}
|
||||
if(formData.value.iphone){
|
||||
formData.value.mobilePhone = formData.value.iphone;
|
||||
}
|
||||
// console.log(formData.value, "校验表单数据")
|
||||
// console.log(recommendLevel);
|
||||
@@ -565,19 +654,19 @@ let submitForm = async () => {
|
||||
console.log(formData.value, "提交表单数据")
|
||||
// 请求保存
|
||||
uni.showLoading()
|
||||
saveappCrmCusUserNew(formData.value).then(res=>{
|
||||
saveappCrmCusUserNew(formData.value).then(res => {
|
||||
uni.hideLoading();
|
||||
if(res.code === 200){
|
||||
if (res.code === 200) {
|
||||
uni.showToast({
|
||||
title: "保存成功"
|
||||
})
|
||||
}else{
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "操作失败"
|
||||
})
|
||||
}
|
||||
setTimeout(()=>uni.navigateBack(), 1500);
|
||||
}).catch(err=>{
|
||||
setTimeout(() => uni.navigateBack(), 1500);
|
||||
}).catch(() => {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: "保存失败"
|
||||
@@ -593,7 +682,7 @@ let submitForm = async () => {
|
||||
})
|
||||
console.warn(err);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
@@ -133,8 +133,8 @@ const upOption = ref({
|
||||
page: {num: 0, size: 10},
|
||||
noMoreSize: 5,
|
||||
empty: {
|
||||
tip: '~ 空空如也 ~',
|
||||
icon: "../../../../static/images/mescroll-empty.png"
|
||||
tip: '~ 空空如也 ~',
|
||||
icon: "../../static/images/mescroll-empty.png"
|
||||
},
|
||||
textLoading: '加载中...',
|
||||
textNoMore: '已经到底了'
|
||||
|
||||
@@ -168,8 +168,8 @@
|
||||
<uni-forms-item label="爱好" name="hobby" class="uni-forms-item is-direction-top is-top">
|
||||
<!-- 索引:hobbyIndex 范围:hobbyList 响应:handleHobbyChange-->
|
||||
<uni-easyinput v-model="formData.hobby" placeholder="请输入爱好" :disabled="!editable"/>
|
||||
<multipleSelect :multiple="true" :value="hobbyIndex" downInner :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
<multipleSelect ref="hobbySelectRef" :multiple="true" downInner :value="hobbyIds" :options="hobbyList"
|
||||
@change="handleHobbyChange" :slabel="'name'"
|
||||
|
||||
></multipleSelect><!--placeholder="请选择爱好标签"-->
|
||||
</uni-forms-item>
|
||||
@@ -439,20 +439,29 @@ let handleThinkLevelChange = (e) => {
|
||||
// 系统推荐等级
|
||||
let recommendLevel = ref("");
|
||||
let getRecommendLevel = async () => {
|
||||
if (formData.value.cusEstate && formData.value.functionalRequirements) {
|
||||
if (formData.value.cusEstate) {
|
||||
let {cusEstate, functionalRequirements} = formData.value;
|
||||
let param = {cusEstate, functionalRequirements};
|
||||
if (formData.value.salesmanThinkLevel) {
|
||||
param.personnelLevel = formData.value.salesmanThinkLevel;
|
||||
}
|
||||
let res = await getCustomerLevel(param).catch(err => {
|
||||
let res = await getCustomerLevel(param)
|
||||
/*.catch(err => {
|
||||
console.error(err, "客户的系统推荐等级获取失败")
|
||||
})
|
||||
if (!res.systemRecommendationLevel) {
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
console.log(formData.value.systemThinkLevel + "???")
|
||||
})*/
|
||||
try{
|
||||
if(res.data.systemRecommendationLevel){
|
||||
formData.value.systemThinkLevel = res.data.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐";
|
||||
}
|
||||
}catch(e){
|
||||
if (res.systemRecommendationLevel) {
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
}else{
|
||||
recommendLevel.value = "客户无等级信息,暂无法进行等级推荐"
|
||||
}
|
||||
}
|
||||
formData.value.systemThinkLevel = res.systemRecommendationLevel;
|
||||
} else {
|
||||
recommendLevel.value = "无公司等级信息,无法推荐等级";
|
||||
}
|
||||
@@ -481,8 +490,7 @@ let handleUserTypeChange = (e) => {
|
||||
|
||||
// 选择日期
|
||||
function handleTenureTimeChange(e) {
|
||||
let {value} = e.detail;
|
||||
formData.value.tenureTime = value;
|
||||
formData.value.tenureTime = e;
|
||||
}
|
||||
|
||||
// 需求层次索引
|
||||
@@ -505,17 +513,19 @@ let handleDevelopChange = e => {
|
||||
|
||||
// 选择生日
|
||||
function handleBirthdayChange(e) {
|
||||
let{value} = e.detail
|
||||
formData.value.birthday = value;
|
||||
formData.value.birthday = e;
|
||||
}
|
||||
|
||||
// 爱好标签索引
|
||||
let hobbyIndex = reactive([]);
|
||||
let hobbyIds = ref([]);
|
||||
let hobbies = ref([]);
|
||||
// 选择爱好标签
|
||||
const handleHobbyChange = (item, value) => {
|
||||
// console.log("爱好", item, value);
|
||||
hobbyIndex = value;
|
||||
const handleHobbyChange = (items, ids) => {
|
||||
console.log('选择爱好', items, ids);
|
||||
hobbyIds.value = [];
|
||||
hobbies.value = items;
|
||||
};
|
||||
|
||||
// 选择
|
||||
const handleNativeChange = (e) => {
|
||||
formData.value.nativec = (e.detail.value.map(item => {
|
||||
@@ -539,16 +549,18 @@ let handleWorkingStatusChange = e => {
|
||||
}
|
||||
|
||||
let submitForm = async () => {
|
||||
let hobbyTags = hobbyIndex.map(it => {
|
||||
let {name} = hobbyList[it];
|
||||
let hobbyTags = hobbies.value.map(it => {
|
||||
let {name} = it;
|
||||
return name;
|
||||
})
|
||||
formData.value.iphone = formData.value.mobilePhone; // 特殊处理
|
||||
const hobbyTagString = hobbyTags.join(',');
|
||||
console.log(hobbyTagString);
|
||||
if (hobbyTagString || formData.value.hobby) {
|
||||
formData.value.hobby = formData.value.hobby ? formData.value.hobby + ',' + hobbyTagString : hobbyTagString;
|
||||
formData.value.hobby = hobbyTagString ? (formData.value.hobby ? formData.value.hobby + ',' : '') + hobbyTagString : formData.value.hobby;
|
||||
}
|
||||
|
||||
formData.value.iphone = formData.value.mobilePhone; // 特殊处理
|
||||
|
||||
// console.log(formData.value, "校验表单数据")
|
||||
// console.log(recommendLevel);
|
||||
formData.value.cusName = customerUser.value.cusName;
|
||||
|
||||
@@ -11,18 +11,18 @@
|
||||
</customHeader>
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height" :style="{ paddingTop: navBarPaddingTop + 'px' }"></view>
|
||||
<view class="top-height"></view>
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<view class="all-body">
|
||||
<!-- 搜索-->
|
||||
<!-- <view class="search">-->
|
||||
<!-- <uni-search-bar class="custom-search" radius="28" placeholder="请输入客户人员名称" clearButton="auto"-->
|
||||
<!-- cancelButton="none" bgColor="#6FA2F8" textColor="#ffffff"-->
|
||||
<!-- v-model="searchValue"-->
|
||||
<!-- />-->
|
||||
<!-- <button type="default" @click="clearSearchValue" size="mini" class="btn-search">清空</button>-->
|
||||
<!-- </view>-->
|
||||
<!-- <view class="search">-->
|
||||
<!-- <uni-search-bar class="custom-search" radius="28" placeholder="请输入客户人员名称" clearButton="auto"-->
|
||||
<!-- cancelButton="none" bgColor="#6FA2F8" textColor="#ffffff"-->
|
||||
<!-- v-model="searchValue"-->
|
||||
<!-- />-->
|
||||
<!-- <button type="default" @click="clearSearchValue" size="mini" class="btn-search">清空</button>-->
|
||||
<!-- </view>-->
|
||||
|
||||
<!-- 分页部分 -->
|
||||
<mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
|
||||
@@ -122,10 +122,7 @@ let list = ref([]);
|
||||
const upOption = ref({
|
||||
page: {num: 0, size: 10},
|
||||
noMoreSize: 5,
|
||||
empty: {
|
||||
tip: '~ 空空如也 ~',
|
||||
icon: "../../static/images/mescroll-empty.png"
|
||||
},
|
||||
empty: {tip: '~ 空空如也 ~'},
|
||||
textLoading: '加载中...',
|
||||
textNoMore: '已经到底了'
|
||||
});
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<!-- #endif -->
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height" :style="{ paddingTop: navBarPaddingTop + 'px' }"></view>
|
||||
<view class="top-height"></view>
|
||||
|
||||
<view class="white-bg">
|
||||
<navigator url="/pages/business/CRM/plan/myPlan">
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
</view>
|
||||
|
||||
<view class="nav-list">
|
||||
<view class="nav-item" :class="{active:index==activeTab}"
|
||||
v-for="(item,index) in allPlans" :key="index"
|
||||
@click="handleNav(index)"
|
||||
<view class="nav-item" :class="{active:index==activeTab}"
|
||||
v-for="(item,index) in allPlans" :key="index"
|
||||
@click="handleNav(index)"
|
||||
>{{ getTapLabel(item) }}
|
||||
</view>
|
||||
</view>
|
||||
@@ -54,7 +54,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='bottom-spliter bg-gray'></view>
|
||||
<view class='bottom-spliter bg-gray'></view>
|
||||
</block>
|
||||
|
||||
<!-- 底部加高度来避免tabbar遮挡 -->
|
||||
@@ -269,13 +269,13 @@ function handleEdit(index) {
|
||||
}
|
||||
|
||||
.white-bg.white-bg-2 {
|
||||
/* margin-bottom: 20rpx; */
|
||||
/* margin-bottom: 20rpx; */
|
||||
}
|
||||
.bottom-spliter{
|
||||
height: 20rpx;
|
||||
height: 20rpx;
|
||||
}
|
||||
.bg-gray{
|
||||
background-color: #f0f0f0;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
.report-list .w-b-title .btn-edit {
|
||||
background-color: #5C96F7;
|
||||
@@ -286,14 +286,14 @@ function handleEdit(index) {
|
||||
}
|
||||
|
||||
.nav-list {
|
||||
/* display: flex;*/
|
||||
/* width: 690rpx;*/
|
||||
/* display: flex;*/
|
||||
/* width: 690rpx;*/
|
||||
overflow-x: auto; /* 允许横向滚动 */
|
||||
/*overflow-y: hidden; 隐藏垂直滚动 */
|
||||
/*-ms-overflow-style: none; IE 隐藏滚动条 */
|
||||
/* scrollbar-width: none; */ /*Firefox 隐藏滚动条 */
|
||||
/* scrollbar-width: none; */ /*Firefox 隐藏滚动条 */
|
||||
/* 添加高度以确保有足够的空间 */
|
||||
/* height: 80rpx;*/
|
||||
/* height: 80rpx;*/
|
||||
white-space: nowrap; /* 保持子元素在同一行显示 */
|
||||
/* 添加这些属性确保滚动正常工作 */
|
||||
scroll-behavior: smooth;
|
||||
@@ -310,7 +310,7 @@ function handleEdit(index) {
|
||||
}
|
||||
.nav-list .nav-item {
|
||||
/* flex: 0 0 auto; 关键:不放大、不缩小、自动宽度 */
|
||||
/* width: 200rpx;*/
|
||||
/* width: 200rpx;*/
|
||||
display: inline-block;
|
||||
background-color: #05A3F4;
|
||||
border-radius: 10rpx;
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
</customHeader>
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height" :style="{ paddingTop: navBarPaddingTop + 'px' }"></view>
|
||||
|
||||
<view class="top-height"></view>
|
||||
<!-- 正文内容 -->
|
||||
<view>
|
||||
|
||||
@@ -37,61 +36,61 @@
|
||||
</view>
|
||||
|
||||
<!-- 分页部分 -->
|
||||
<!-- <mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"-->
|
||||
<!-- :up="upOption" :down="downOption" :fixed="false" textColor="#ffffff" bgColor="#ffffff"-->
|
||||
<!-- class="scroll-h" :class="{'loading-scroll':cssFlag}">-->
|
||||
<view class="white-bg" v-if="list.length">
|
||||
<!--v-for="(item, index) in list" :key="index" @click="handleDetail(item)"-->
|
||||
<view style="text-align: center; margin-bottom: 30rpx; font-size: 30rpx;">
|
||||
{{ parseInt(searchValue.selectDate.substring(5, 7)) }}月
|
||||
<span class="line"></span>
|
||||
{{searchValue.selectDate.substring(0, 4) }}年
|
||||
</view>
|
||||
<!-- <mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"-->
|
||||
<!-- :up="upOption" :down="downOption" :fixed="false" textColor="#ffffff" bgColor="#ffffff"-->
|
||||
<!-- class="scroll-h" :class="{'loading-scroll':cssFlag}">-->
|
||||
<view class="white-bg" v-if="list.length">
|
||||
<!--v-for="(item, index) in list" :key="index" @click="handleDetail(item)"-->
|
||||
<view style="text-align: center; margin-bottom: 30rpx; font-size: 30rpx;">
|
||||
{{ parseInt(searchValue.selectDate.substring(5, 7)) }}月
|
||||
<span class="line"></span>
|
||||
{{searchValue.selectDate.substring(0, 4) }}年
|
||||
</view>
|
||||
<uni-row class="demo-uni-row">
|
||||
<uni-col :span="1">
|
||||
<view class="demo-uni-col right-radius">序号</view>
|
||||
</uni-col>
|
||||
<uni-col :span="2">
|
||||
<view class="demo-uni-col left-radius">姓名</view>
|
||||
</uni-col>
|
||||
<block v-for="(field, i) in OrdinalDate">
|
||||
<uni-col :span="3">
|
||||
<view class="demo-uni-col mar-left">
|
||||
<text>{{ WeekShortCN[i] }}</text>
|
||||
<text v-if="list[0][field]">{{ list[0][field].substring(8) }}</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
</block>
|
||||
</uni-row>
|
||||
<block v-for="(item, index) in list" :key="index">
|
||||
<uni-row class="demo-uni-row">
|
||||
<uni-col :span="1">
|
||||
<view class="demo-uni-col right-radius">序号</view>
|
||||
<view class="demo-uni-col right-radius">
|
||||
<text>{{ index + 1 }}</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
<uni-col :span="2">
|
||||
<view class="demo-uni-col left-radius">姓名</view>
|
||||
<view class="demo-uni-col left-radius">
|
||||
<text>{{ item.nickName || item.userName }}</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
<block v-for="(field, i) in OrdinalDate">
|
||||
<block v-for="(field, i) in WorkType">
|
||||
<uni-col :span="3">
|
||||
<view class="demo-uni-col mar-left">
|
||||
<text>{{ WeekShortCN[i] }}</text>
|
||||
<text v-if="list[0][field]">{{ list[0][field].substring(8) }}</text>
|
||||
<view class="demo-uni-col mar-left color-white" @click="handleDetail(index, i)"
|
||||
:style="{ backgroundColor: COLOR_MAP[item[field]] }"
|
||||
><!--@click="handleView(index, i)"-->
|
||||
<text v-if="item[field]">{{ item[field] }}</text>
|
||||
<text v-else style="color: gray">暂无</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
</block>
|
||||
</uni-row>
|
||||
<block v-for="(item, index) in list" :key="index">
|
||||
<uni-row class="demo-uni-row">
|
||||
<uni-col :span="1">
|
||||
<view class="demo-uni-col right-radius">
|
||||
<text>{{ index + 1 }}</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
<uni-col :span="2">
|
||||
<view class="demo-uni-col left-radius">
|
||||
<text>{{ item.nickName || item.userName }}</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
<block v-for="(field, i) in WorkType">
|
||||
<uni-col :span="3">
|
||||
<view class="demo-uni-col mar-left color-white" @click="handleDetail(index, i)"
|
||||
:style="{ backgroundColor: COLOR_MAP[item[field]] }"
|
||||
><!--@click="handleView(index, i)"-->
|
||||
<text v-if="item[field]">{{ item[field] }}</text>
|
||||
<text v-else style="color: gray">暂无</text>
|
||||
</view>
|
||||
</uni-col>
|
||||
</block>
|
||||
</uni-row>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else style="text-align: center; margin-top: 50%; color: white">
|
||||
暂无数据
|
||||
</view>
|
||||
<!-- </mescroll-uni>-->
|
||||
</block>
|
||||
</view>
|
||||
<view v-else style="text-align: center; margin-top: 50%; color: white">
|
||||
暂无数据
|
||||
</view>
|
||||
<!-- </mescroll-uni>-->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -144,10 +143,7 @@ const mescrollRef = ref(null);
|
||||
const upOption = ref({
|
||||
page: {num: 0, size: 10},
|
||||
noMoreSize: 5,
|
||||
empty: {
|
||||
tip: '~ 空空如也 ~',
|
||||
icon: "../../../../static/images/mescroll-empty.png"
|
||||
},
|
||||
empty: {tip: '~ 空空如也 ~'},
|
||||
textLoading: '加载中...',
|
||||
textNoMore: '已经到底了'
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user