推送市场信息模块
This commit is contained in:
@@ -56,4 +56,83 @@ import request from "@/utils/request"
|
||||
data
|
||||
})
|
||||
}
|
||||
//市场信息查询接口
|
||||
export function viewingMarketInfForAllMembers(data) {
|
||||
return request.get({
|
||||
url: '/app/informationMarketInformation/viewList',
|
||||
data
|
||||
})
|
||||
}
|
||||
//市场信息详情查询接口
|
||||
export function viewingMarketInfgetDetail(data) {
|
||||
return request.get({
|
||||
url: '/app/informationMarketInformation/getDetail',
|
||||
data
|
||||
})
|
||||
}
|
||||
//市场信审核列表接口
|
||||
export function approvalMarketInfget(data) {
|
||||
return request.get({
|
||||
url: 'app/informationMarketInformation/Approval',
|
||||
data
|
||||
})
|
||||
}
|
||||
//回款模块列表查询
|
||||
export function getPaymentList(data) {
|
||||
return request.get({
|
||||
url: '/app/InformationReviewController/getPaymentList',
|
||||
data
|
||||
})
|
||||
}
|
||||
//回款新增接口
|
||||
export function addPaymentCollection(data) {
|
||||
return request.post({
|
||||
url: '/app/InformationReviewController/addPaymentCollection',
|
||||
data
|
||||
})
|
||||
}
|
||||
//回款更新接口
|
||||
export function updatePaymentDetail(data) {
|
||||
return request.post({
|
||||
url: '/app/InformationReviewController/updatePaymentDetail',
|
||||
data
|
||||
})
|
||||
}
|
||||
//回款删除接口
|
||||
export function deletePaymentDetail(data) {
|
||||
return request.post({
|
||||
url: '/app/InformationReviewController/deletePaymentDetail',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//全员查询回款接口
|
||||
export function getFullStaffStatisticsViewingTable(data) {
|
||||
return request.get({
|
||||
url: '/app/InformationReviewController/getFullStaffStatisticsViewingTable',
|
||||
data
|
||||
})
|
||||
}
|
||||
//个人查询回款接口
|
||||
export function getPersonalPaymentCollectionTable(data) {
|
||||
return request.get({
|
||||
url: '/app/InformationReviewController/getPersonalPaymentCollectionTable',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//市场信息审核通过接口
|
||||
export function crmMarketInformationApprovalSuccess(data) {
|
||||
return request.get({
|
||||
url: '/app/informationMarketInformation/ApprovalSuccess',
|
||||
data
|
||||
})
|
||||
}
|
||||
//市场信息审核驳回接口
|
||||
export function crmMarketInformationApprovalUnSuccess(data) {
|
||||
return request.get({
|
||||
url: '/app/informationMarketInformation/ApprovalUnSuccess',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
@@ -174,6 +174,11 @@
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
console.log('表单数据:', formData.value)
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
|
||||
@@ -179,8 +179,10 @@
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
@@ -216,8 +218,10 @@ onMounted(() => {
|
||||
title: '删除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
@@ -327,15 +327,12 @@ const dynamicPlaceholder = computed(() => {
|
||||
// 当前选中的信息类型
|
||||
const competitorLevelOneIndex = ref(0)
|
||||
const competitorLevelOne = ref('基本信息')
|
||||
|
||||
const competitorLevelTwo = ref('资质情况')
|
||||
// 当前选中的具体分类索引
|
||||
const competitorLevelTwoIndex = ref(0)
|
||||
|
||||
// 当前显示的具体分类选项数组(动态切换 array2 / array3)
|
||||
const currentCompetitorLevelTwoArray = ref(array2.value)
|
||||
|
||||
// 当前选中的具体分类名称
|
||||
const competitorLevelTwo = ref('')
|
||||
|
||||
// 表单引用 & 客户选择器引用
|
||||
const formRef = ref(null)
|
||||
@@ -374,6 +371,11 @@ const dynamicPlaceholder = computed(() => {
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
console.log('表单数据:', formData.value)
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
|
||||
@@ -379,8 +379,10 @@ const dynamicPlaceholder = computed(() => {
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
@@ -448,8 +450,10 @@ const dynamicPlaceholder = computed(() => {
|
||||
title: '删除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
411
src/pages/business/CRM/marketInformation/infomationView.vue
Normal file
411
src/pages/business/CRM/marketInformation/infomationView.vue
Normal file
@@ -0,0 +1,411 @@
|
||||
<template>
|
||||
<view class="con-body">
|
||||
<view class="con-bg">
|
||||
<!-- 头部 -->
|
||||
<customHeader ref="customHeaderRef" :title="'市场信息查看'" :leftFlag="true" :rightFlag="true">
|
||||
<template #right>
|
||||
</template>
|
||||
</customHeader>
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height" :style="{ paddingTop: navBarPaddingTop + 'px' }"></view>
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<view class="all-body">
|
||||
<!-- 搜索 @blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear"-->
|
||||
<!-- <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="handleSearch" size="mini" class="btn-search">查询</button>
|
||||
</view> -->
|
||||
<view class="search_center">
|
||||
<view class="category">
|
||||
<view class="flex_row_center_center" @click="showCate">
|
||||
<text>{{selCategory.val||'全部'}}</text>
|
||||
<image src="@/static/images/icon-notice@2x.png" mode=""></image>
|
||||
</view>
|
||||
<view class="pop_arrow" v-if="maskShow"></view>
|
||||
<view class="pop" v-if="maskShow">
|
||||
<text v-for="(item,index) in categories" :key="index"
|
||||
@click="toList(item.categoryId,item.categoryName)">{{item.categoryName}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<image class="search_icon" src="@/static/images/icon-notice@2x.png"></image>
|
||||
<input class='sea_input' :focus="inputFocus" type='text' :value="inputval" placeholder="请输入搜索条件"
|
||||
@input="inputChange" @confirm='search' maxlength="50" placeholder-class="placeClass"></input>
|
||||
<image class='clear_content' v-show="inputval" @click="clearInputVal"
|
||||
src="@/static/images/icon-notice@2x.png" />
|
||||
</view>
|
||||
<text class='sea_btn' @click="btnSearch(1)">{{'搜索'}}</text>
|
||||
<!-- 分页部分 -->
|
||||
<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 margin-bottom20" v-for="(item, index) in list" :key="index" @click="showDetail(item)">
|
||||
<view>
|
||||
<view class="report-list">
|
||||
<view class="title">信息类型:{{ item.informationType }}</view>
|
||||
|
||||
|
||||
<view class="r-list">
|
||||
<view class="r-name"v-if="item.cusName!=null">公司名称:{{ item.cusName }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="item.myselfBrowsing==0?'btn-blue':'btn-green'"
|
||||
size="mini">{{item.myselfBrowsing==0?'未读':'已读'}}</view>
|
||||
|
||||
</view>
|
||||
<view class="border-bottom"></view>
|
||||
|
||||
<view class="border-bottom"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">报告人</view>
|
||||
<view class="r-right">{{ item.createName }}</view>
|
||||
</view>
|
||||
<view class="border-bottom"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">报告日期</view>
|
||||
<view class="r-right">{{ item.createTime }}</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-uni>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted,
|
||||
watch
|
||||
} from 'vue'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import MescrollUni from 'mescroll-uni/mescroll-uni.vue';
|
||||
import {
|
||||
getNavBarPaddingTop
|
||||
} from '@/utils/system.js'
|
||||
import {
|
||||
visitorReportList
|
||||
} from '@/api/business.js'
|
||||
import {
|
||||
viewingMarketInfForAllMembers
|
||||
} from '@/api/crm/api_ys.js';
|
||||
import {
|
||||
onLoad,
|
||||
onShow,
|
||||
onUnload
|
||||
} from '@dcloudio/uni-app'
|
||||
// 获取导航栏高度用于内容区域padding
|
||||
const navBarPaddingTop = ref(0);
|
||||
onMounted(() => {
|
||||
navBarPaddingTop.value = getNavBarPaddingTop() * 2;
|
||||
uni.$on('updateStatus', markVisited)
|
||||
})
|
||||
|
||||
// 查询列表
|
||||
let list = ref([]);
|
||||
|
||||
let searchValue = ref(null)
|
||||
//监视查询的内容的变化
|
||||
watch(searchValue, (newValue, oldValue) => {
|
||||
//变化了之后,重新查询内容
|
||||
var data = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
searchContent: searchValue.value
|
||||
};
|
||||
viewingMarketInfForAllMembers(data).then(res => {
|
||||
if (res.code == 200) {
|
||||
//设置列表数据
|
||||
list.value = res.rows;
|
||||
}
|
||||
})
|
||||
})
|
||||
const index = ref(0)
|
||||
const categories = ref([{
|
||||
categoryId: 1,
|
||||
categoryName: '市场机会'
|
||||
}, {
|
||||
categoryId: 2,
|
||||
categoryName: '重大事项信息'
|
||||
}, {
|
||||
categoryId: 3,
|
||||
categoryName: '竞争对手信息'
|
||||
}, {
|
||||
categoryId: 4,
|
||||
categoryName: '人员变化信息'
|
||||
}, {
|
||||
categoryId: 5,
|
||||
categoryName: '重点型号任务信息'
|
||||
}, {
|
||||
categoryId: 6,
|
||||
categoryName: '通用信息'
|
||||
}])
|
||||
const selCategory = ref ({
|
||||
id: 1,
|
||||
val: ''
|
||||
})
|
||||
// 查询搜索跳转
|
||||
let handleSearch = () => {
|
||||
var data = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
searchContent: searchValue.value
|
||||
};
|
||||
viewingMarketInfForAllMembers(data).then(res => {
|
||||
if (res.code == 200) {
|
||||
//设置列表数据
|
||||
list.value = res.rows;
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: "请求失败",
|
||||
});
|
||||
list.value = null;
|
||||
}
|
||||
|
||||
})
|
||||
console.log(searchValue.value)
|
||||
}
|
||||
|
||||
const mescrollRef = ref(null);
|
||||
const upOption = ref({
|
||||
page: {
|
||||
num: 0,
|
||||
size: 10
|
||||
},
|
||||
noMoreSize: 5,
|
||||
empty: {
|
||||
tip: '~ 空空如也 ~'
|
||||
},
|
||||
textLoading: '加载中...',
|
||||
textNoMore: '已经到底了'
|
||||
});
|
||||
|
||||
const downOption = ref({
|
||||
auto: true,
|
||||
textInOffset: '下拉刷新',
|
||||
textOutOffset: '释放更新',
|
||||
textLoading: '刷新中...'
|
||||
});
|
||||
|
||||
let cssFlag = ref(false); //控制样式
|
||||
const mescrollInit = (mescroll) => {
|
||||
cssFlag.value = true;
|
||||
mescrollRef.value = mescroll;
|
||||
};
|
||||
|
||||
// 下拉刷新
|
||||
const downCallback = async (mescroll) => {
|
||||
try {
|
||||
setTimeout(async () => {
|
||||
const res = await getViewingMarketInfForAllMembers(1, upOption.value.page.size);
|
||||
cssFlag.value = false;
|
||||
list.value = res.list;
|
||||
mescroll.resetUpScroll();
|
||||
}, 500);
|
||||
} catch (error) {
|
||||
mescroll.endErr();
|
||||
} finally {
|
||||
setTimeout(async () => {
|
||||
mescroll.endSuccess();
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
// 上拉加载更多
|
||||
const upCallback = async (mescroll) => {
|
||||
try {
|
||||
setTimeout(async () => {
|
||||
const res = await getViewingMarketInfForAllMembers(mescroll.num, mescroll.size);
|
||||
if (mescroll.num === 1) {
|
||||
list.value = res.list;
|
||||
} else {
|
||||
list.value.push(...res.list);
|
||||
}
|
||||
mescroll.endBySize(res.list.length, res.total);
|
||||
}, 500);
|
||||
} catch (error) {
|
||||
mescroll.endErr();
|
||||
}
|
||||
}
|
||||
|
||||
// 获取数据列表
|
||||
const getViewingMarketInfForAllMembers = (pageNum, pageSize) => {
|
||||
return new Promise(async (resolve) => {
|
||||
let param = {
|
||||
pageNum,
|
||||
pageSize
|
||||
}
|
||||
let res = await viewingMarketInfForAllMembers(param);
|
||||
resolve({
|
||||
list: res.rows,
|
||||
total: res.total
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
let Loop = ref(0)
|
||||
let now
|
||||
const visistId = ref();
|
||||
const cusName = ref();
|
||||
const cusId = ref();
|
||||
const status = ref()
|
||||
|
||||
function showDetail(item) {
|
||||
uni.navigateTo({
|
||||
url: "/pages/business/CRM/marketInformation/informationDetail?informationId=" + item.informationId + '&selValue=' + item.selValue+ '&inputval=' + item.inputval
|
||||
})
|
||||
}
|
||||
|
||||
onUnload(() => {
|
||||
uni.$off('updateStatus')
|
||||
})
|
||||
|
||||
const markVisited = (informationId) => {
|
||||
const newList = [...list.value].map(item => {
|
||||
if (item.informationId == informationId) {
|
||||
return { ...item, myselfBrowsing: 1 };
|
||||
}
|
||||
return item;
|
||||
});
|
||||
list.value = newList;
|
||||
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.all-body {
|
||||
/* #ifdef APP-PLUS */
|
||||
top: 150rpx;
|
||||
height: calc(100vh - 75px);
|
||||
/* #endif */
|
||||
/* #ifndef APP-PLUS */
|
||||
top: 120rpx;
|
||||
height: calc(100vh);
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.search {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.search .btn-search {
|
||||
border: none;
|
||||
background: none;
|
||||
line-height: normal;
|
||||
color: #fff;
|
||||
line-height: 56rpx !important;
|
||||
padding: 10rpx 0 0;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.search .btn-search::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search .custom-search {
|
||||
width: 80%;
|
||||
|
||||
}
|
||||
|
||||
.search .custom-search.uni-searchbar {
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
.scroll-h {
|
||||
/* #ifdef APP-PLUS */
|
||||
height: calc(100vh - 120px);
|
||||
/* #endif */
|
||||
/* #ifndef APP-PLUS */
|
||||
height: calc(100vh - 110px);
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.white-bg {
|
||||
padding-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.search_center {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border: none;
|
||||
flex: 1;
|
||||
height: 70rpx;
|
||||
margin-left: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
border-radius: 32.5rpx;
|
||||
background-color: #f5f5f5;
|
||||
|
||||
.search_icon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 22rpx;
|
||||
}
|
||||
|
||||
.category {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 16rpx;
|
||||
padding-right: 16rpx;
|
||||
border-right: 2rpx solid #D4D4D4;
|
||||
position: relative;
|
||||
|
||||
text {
|
||||
font-size: 13px;
|
||||
margin-left: 10rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
image {
|
||||
margin-top: 4rpx;
|
||||
width: 20rpx;
|
||||
height: 11rpx;
|
||||
|
||||
}
|
||||
|
||||
.pop {
|
||||
position: absolute;
|
||||
top: 50rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 0px 40rpx 0px rgba(59, 59, 59, 0.2);
|
||||
border-radius: 12rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 20rpx;
|
||||
z-index: 100;
|
||||
max-height: 566rpx;
|
||||
overflow-y: auto;
|
||||
|
||||
text {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
white-space: nowrap;
|
||||
margin: 10rpx 0;
|
||||
line-height: 56rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.pop_arrow {
|
||||
position: absolute;
|
||||
top: 48rpx;
|
||||
z-index: 999;
|
||||
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 68rpx;
|
||||
top: -26rpx;
|
||||
border: 14rpx solid #fff;
|
||||
border-color: transparent transparent #fff transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
288
src/pages/business/CRM/marketInformation/informationDetail.vue
Normal file
288
src/pages/business/CRM/marketInformation/informationDetail.vue
Normal file
@@ -0,0 +1,288 @@
|
||||
<template>
|
||||
<view class="con-body">
|
||||
<view class="con-bg">
|
||||
<!-- 头部 -->
|
||||
<customHeader ref="customHeaderRef" :title="'市场信息详情'" :leftFlag="true" :rightFlag="false"></customHeader>
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height"></view>
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<!-- 详情内容 -->
|
||||
<view class="white-bg">
|
||||
<view class="report-list">
|
||||
<view class="title">{{ detailList.informationType }}</view>
|
||||
<view class="r-list">
|
||||
<view class="r-name">{{ detailList.cusName }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">报告人</view>
|
||||
<view class="r-right">{{ detailList.createName }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">创建日期</view>
|
||||
<view class="r-right">{{ detailList.createTime }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width" v-if="detailList.createTime != null"></view>
|
||||
<view class="r-list" v-if="detailList.createTime != null">
|
||||
<view class="r-left">创建时间</view>
|
||||
<view class="r-right">{{ detailList.createTime }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.opportunityType != null"></view>
|
||||
<view class="r-list" v-if="detailList.opportunityType != null">
|
||||
<view class="r-left">机会类型</view>
|
||||
<view class="r-right">{{ detailList.opportunityType }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.understandTheWay != null"></view>
|
||||
<view class="r-list" v-if="detailList.understandTheWay != null">
|
||||
<view class="r-left">了解途径</view>
|
||||
<view class="r-right">{{ detailList.understandTheWay }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.opportunityDescription != null"></view>
|
||||
<view class="r-list" v-if="detailList.opportunityDescription != null">
|
||||
<view class="r-left">机会描述</view>
|
||||
<view class="r-right">{{ detailList.opportunityDescription }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.opportunityStatus != null"></view>
|
||||
<view class="r-list" v-if="detailList.opportunityStatus != null">
|
||||
<view class="r-left">机会所处状态</view>
|
||||
<view class="r-right">{{ detailList.opportunityStatus }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.predictedAmount != null"></view>
|
||||
<view class="r-list" v-if="detailList.predictedAmount != null">
|
||||
<view class="r-left">预测金额或情况</view>
|
||||
<view class="r-right">{{ detailList.predictedAmount }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitionSituation != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitionSituation != null">
|
||||
<view class="r-left">竞争情况</view>
|
||||
<view class="r-right">{{ detailList.competitionSituation }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.majorTypesOfMatters != null"></view>
|
||||
<view class="r-list" v-if="detailList.majorTypesOfMatters != null">
|
||||
<view class="r-left">重大事项类型</view>
|
||||
<view class="r-right">{{ detailList.majorTypesOfMatters }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.theImpactGenerated != null"></view>
|
||||
<view class="r-list" v-if="detailList.theImpactGenerated != null">
|
||||
<view class="r-left">产生的影响</view>
|
||||
<view class="r-right">{{ detailList.theImpactGenerated }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.companyResponseStrategy != null"></view>
|
||||
<view class="r-list" v-if="detailList.companyResponseStrategy != null">
|
||||
<view class="r-left">公司应对策略</view>
|
||||
<view class="r-right">{{ detailList.companyResponseStrategy }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitiveUnits != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitiveUnits != null">
|
||||
<view class="r-left">竞争单位</view>
|
||||
<view class="r-right">{{ detailList.competitiveUnits }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitorLevelOne != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitorLevelOne != null">
|
||||
<view class="r-left">信息类型</view>
|
||||
<view class="r-right">{{ detailList.competitorLevelOne }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitorLevelTwo != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitorLevelTwo != null">
|
||||
<view class="r-left">具体分类</view>
|
||||
<view class="r-right">{{ detailList.competitorLevelTwo }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.specificMatters != null"></view>
|
||||
<view class="r-list" v-if="detailList.specificMatters != null">
|
||||
<view class="r-left">具体事情</view>
|
||||
<view class="r-right">{{ detailList.specificMatters }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.originalPosition != null"></view>
|
||||
<view class="r-list" v-if="detailList.originalPosition != null">
|
||||
<view class="r-left">原职务</view>
|
||||
<view class="r-right">{{ detailList.originalPosition }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.currentPosition != null"></view>
|
||||
<view class="r-list" v-if="detailList.currentPosition != null">
|
||||
<view class="r-left">现职务</view>
|
||||
<view class="r-right">{{ detailList.currentPosition }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.positionOfOurCompany != null"></view>
|
||||
<view class="r-list" v-if="detailList.positionOfOurCompany != null">
|
||||
<view class="r-left">现职务是否与我公司业务相关</view>
|
||||
<view class="r-right">{{ detailList.positionOfOurCompany }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.developmentEfforts != null"></view>
|
||||
<view class="r-list" v-if="detailList.developmentEfforts != null">
|
||||
<view class="r-left">攻关力度</view>
|
||||
<view class="r-right">{{ detailList.developmentEfforts }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.successor != null"></view>
|
||||
<view class="r-list" v-if="detailList.successor != null">
|
||||
<view class="r-left">继任者</view>
|
||||
<view class="r-right">{{ detailList.successor }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.keyModels != null"></view>
|
||||
<view class="r-list" v-if="detailList.keyModels != null">
|
||||
<view class="r-left">重点型号</view>
|
||||
<view class="r-right">{{ detailList.keyModels }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.currentStatus != null"></view>
|
||||
<view class="r-list" v-if="detailList.currentStatus != null">
|
||||
<view class="r-left">目前状态</view>
|
||||
<view class="r-right">{{ detailList.currentStatus }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.batchProductionPlan != null"></view>
|
||||
<view class="r-list" v-if="detailList.batchProductionPlan != null">
|
||||
<view class="r-left">批产计划</view>
|
||||
<view class="r-right">{{ detailList.batchProductionPlan }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.situation != null"></view>
|
||||
<view class="r-list" v-if="detailList.situation != null">
|
||||
<view class="r-left">外协、外包、上级单位情况</view>
|
||||
<view class="r-right">{{ detailList.situation }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.subordinateSupportingUnits != null"></view>
|
||||
<view class="r-list" v-if="detailList.subordinateSupportingUnits != null">
|
||||
<view class="r-left">下级配套单位</view>
|
||||
<view class="r-right">{{ detailList.subordinateSupportingUnits }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.generalFormType != null"></view>
|
||||
<view class="r-list" v-if="detailList.generalFormType != null">
|
||||
<view class="r-left">通用表单类型</view>
|
||||
<view class="r-right">{{ detailList.generalFormType }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.informationContent != null"></view>
|
||||
<view class="r-list" v-if="detailList.informationContent != null">
|
||||
<view class="r-left">信息内容</view>
|
||||
<view class="r-right">{{ detailList.informationContent }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width" v-if="detailList.remark != null"></view>
|
||||
<view class="r-list" v-if="detailList.remark != null">
|
||||
<view class="r-left">备注</view>
|
||||
<view class="r-right">{{ detailList.remark }}</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<view class="border-bottom b-width"></view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- 底部加高度来避免tabbar遮挡 -->
|
||||
<view class="bottom-height"></view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted
|
||||
} from 'vue'
|
||||
import {
|
||||
onLoad,
|
||||
onShow
|
||||
} from '@dcloudio/uni-app'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import customTabs from '@/components/customTabs.vue';
|
||||
import {
|
||||
viewingMarketInfgetDetail
|
||||
} from '@/api/crm/api_ys.js';
|
||||
|
||||
|
||||
let informationId = ref(0)
|
||||
// 加载后调用
|
||||
let id = ref(null)
|
||||
onLoad((options) => {
|
||||
informationId.value = options.informationId
|
||||
getVisitorReportDetail();
|
||||
})
|
||||
// 查询详情
|
||||
let item = ref({});
|
||||
//明细List
|
||||
let detailList = ref({})
|
||||
const getVisitorReportDetail = async () => {
|
||||
let param = {
|
||||
informationId: informationId.value
|
||||
}
|
||||
let detailRes = await viewingMarketInfgetDetail(param);
|
||||
detailList.value = detailRes.rows[0];
|
||||
uni.$emit('updateStatus',informationId.value);
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.white-bg {
|
||||
width: 690rpx;
|
||||
margin: 0;
|
||||
border-radius: 8px 8px 0 0;
|
||||
}
|
||||
|
||||
.white-bg.white-bg-2 {
|
||||
border-radius: 0;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
:deep(.tabs-header) {
|
||||
/* background: none !important; */
|
||||
border-bottom: none !important;
|
||||
margin: 0 auto;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
:deep(.tab-item) {
|
||||
color: #919191;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
/* flex:none; */
|
||||
/* margin: 0 -50rpx; */
|
||||
/* padding: 0 50rpx; */
|
||||
}
|
||||
|
||||
:deep(.tab-item:first-child) {
|
||||
text-align: right;
|
||||
margin-left: 230rpx;
|
||||
}
|
||||
|
||||
:deep(.tab-item:last-child) {
|
||||
text-align: left;
|
||||
margin-right: 230rpx;
|
||||
}
|
||||
|
||||
:deep(.tab-item.active) {
|
||||
color: #3384DF;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
:deep(.tab-item.active::after) {
|
||||
width: 100rpx;
|
||||
height: 8rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -178,6 +178,11 @@
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
console.log('表单数据:', formData.value)
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
|
||||
@@ -183,8 +183,10 @@
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
@@ -217,8 +219,10 @@
|
||||
title: '删除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
@@ -203,6 +203,11 @@
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
console.log('表单数据:', formData.value)
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
|
||||
@@ -210,8 +210,10 @@
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
@@ -250,8 +252,10 @@
|
||||
title: '删除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<view class="title r-list">
|
||||
<view class="r-left" style="font-size:38rpx;">{{ item.cusName }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="{'btn-blue':item.status==2}"
|
||||
size="mini" @click="itemView(item)">{{ item.state }}</view>
|
||||
size="mini" @click.stop="itemView(item)">{{ item.state }}</view>
|
||||
</view>
|
||||
<view style="padding:0rpx 0 10rpx">
|
||||
<view class="font-bold" style="padding-bottom:10rpx">机会类型:{{item.opportunityType}}
|
||||
@@ -51,13 +51,13 @@
|
||||
<view class="title r-list">
|
||||
<view class="r-left" style="font-size:38rpx;">{{ item.cusName }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="{'btn-blue':item.status==2}"
|
||||
size="mini">{{ item.state }}</view>
|
||||
size="mini" @click.stop="itemView(item)">{{ item.state }}</view>
|
||||
</view>
|
||||
<view style="padding:0rpx 0 10rpx">
|
||||
<view class="font-bold" style="padding-bottom:10rpx">
|
||||
产生的影响:{{item.theImpactGenerated}}</view>
|
||||
<view class="font-bold" style="padding-bottom:10rpx">
|
||||
重大事项类型:{{item.majorTypesOfMatters}}</view>
|
||||
重大事项类型:{{item.opportunityType}}</view>
|
||||
<!-- <view class="font-gray">{{ item.desc }}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
@@ -70,7 +70,7 @@
|
||||
<view class="title r-list">
|
||||
<view class="r-left" style="font-size:38rpx;">{{ item.competitiveUnits }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="{'btn-blue':item.status==2}"
|
||||
size="mini">{{ item.state }}</view>
|
||||
size="mini" @click.stop="itemView(item)">{{ item.state }}</view>
|
||||
</view>
|
||||
<view style="padding:0rpx 0 10rpx">
|
||||
<view class="font-bold" style="padding-bottom:10rpx">
|
||||
@@ -89,7 +89,7 @@
|
||||
<view class="title r-list">
|
||||
<view class="r-left" style="font-size:38rpx;">{{ item.cusName }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="{'btn-blue':item.status==2}"
|
||||
size="mini">{{ item.state }}</view>
|
||||
size="mini" @click.stop="itemView(item)">{{ item.state }}</view>
|
||||
</view>
|
||||
<view style="padding:0rpx 0 10rpx">
|
||||
<view class="font-bold" style="padding-bottom:10rpx">客户人员名称:{{item.cusUserName}}
|
||||
@@ -110,7 +110,7 @@
|
||||
<view class="title r-list">
|
||||
<view class="r-left" style="font-size:38rpx;">{{ item.cusName }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="{'btn-blue':item.status==2}"
|
||||
size="mini">{{ item.state }}</view>
|
||||
size="mini" @click.stop="itemView(item)">{{ item.state }}</view>
|
||||
</view>
|
||||
<view style="padding:0rpx 0 10rpx">
|
||||
<view class="font-bold" style="padding-bottom:10rpx">重点型号:{{item.keyModels}}</view>
|
||||
@@ -128,7 +128,7 @@
|
||||
<view class="title r-list">
|
||||
<view class="r-left" style="font-size:38rpx;">{{ item.cusName }}</view>
|
||||
<view class="r-right btn-gray flex-auto" :class="{'btn-blue':item.status==2}"
|
||||
size="mini">{{ item.state }}</view>
|
||||
size="mini" @click.stop="itemView(item)">{{ item.state }}</view>
|
||||
</view>
|
||||
<view style="padding:0rpx 0 10rpx">
|
||||
<view class="font-bold" style="padding-bottom:10rpx">标签:{{item.generalFormType}}
|
||||
@@ -148,7 +148,8 @@
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted
|
||||
onMounted,
|
||||
onUnmounted
|
||||
} from 'vue'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import MescrollUni from 'mescroll-uni/mescroll-uni.vue';
|
||||
@@ -166,7 +167,12 @@
|
||||
const navBarPaddingTop = ref(0);
|
||||
onMounted(() => {
|
||||
navBarPaddingTop.value = getNavBarPaddingTop() * 2;
|
||||
uni.$on('refreshMarketList', handleRefreshList);
|
||||
})
|
||||
onUnmounted(() => {
|
||||
// 移除事件监听
|
||||
uni.$off('refreshMarketList', handleRefreshList);
|
||||
});
|
||||
const mescrollInstance = ref(null);
|
||||
const activeTab = ref(0); // 默认市场机会
|
||||
const tabList = ['市场机会', '重大事项信息', '竞争对手信息', '人员变化信息', '重点型号任务信息', '通用表单'];
|
||||
@@ -322,13 +328,14 @@
|
||||
title: '提交成功',
|
||||
duration: 2000
|
||||
})
|
||||
handleRefreshList();
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg || '操作失败',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
reload()
|
||||
|
||||
} catch {
|
||||
uni.showToast({
|
||||
title: '提交失败,请重试',
|
||||
@@ -344,13 +351,14 @@
|
||||
title: '提交成功',
|
||||
duration: 2000
|
||||
})
|
||||
handleRefreshList();
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg || '操作失败',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
reload()
|
||||
|
||||
} catch {
|
||||
uni.showToast({
|
||||
title: '提交失败,请重试',
|
||||
@@ -405,6 +413,13 @@
|
||||
// console.log(item)
|
||||
// uni.navigateTo({ url: '/pages/business/CRM/visitorReportAdd' })
|
||||
}
|
||||
const handleRefreshList = () => {
|
||||
if (mescrollInstance.value) {
|
||||
mescrollInstance.value.triggerDownScroll();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -0,0 +1,249 @@
|
||||
<template>
|
||||
<view class="con-body">
|
||||
<view class="con-bg">
|
||||
<!-- 头部 -->
|
||||
<customHeader ref="customHeaderRef" :title="'市场信息审核'" :leftFlag="true" :rightFlag="true">
|
||||
<template #right>
|
||||
|
||||
</template>
|
||||
</customHeader>
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height" :style="{ paddingTop: navBarPaddingTop + 'px' }"></view>
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<view class="all-body">
|
||||
<!-- 搜索 @blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear"-->
|
||||
<!-- <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="handleSearch" size="mini" class="btn-search">查询</button>
|
||||
</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 margin-bottom20" v-for="(item, index) in list" :key="index" @click="touchstart(item)">
|
||||
<view>
|
||||
<view class="report-list">
|
||||
<view class="title">信息类型:{{ item.informationType }}</view>
|
||||
<view class="r-list">
|
||||
<view class="r-name">公司名称:{{ item.cusName }}</view>
|
||||
|
||||
</view>
|
||||
<view class="border-bottom"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">创建人</view>
|
||||
<view class="r-right">{{ item.createName }}</view>
|
||||
</view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">创建时间</view>
|
||||
<view class="r-right">{{ item.createTime }}</view>
|
||||
</view>
|
||||
<view class="border-bottom"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">是否为商业航天类型</view>
|
||||
<view class="r-name">{{ item.commercialAerospace }}</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</mescroll-uni>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted, watch,onUnmounted } from 'vue'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import MescrollUni from 'mescroll-uni/mescroll-uni.vue';
|
||||
import { getNavBarPaddingTop } from '@/utils/system.js'
|
||||
import { visitorReportList } from '@/api/business.js'
|
||||
import { approvalMarketInfget } from '@/api/crm/api_ys.js';
|
||||
import { onShow } from '@dcloudio/uni-app'
|
||||
// 获取导航栏高度用于内容区域padding
|
||||
const navBarPaddingTop = ref(0);
|
||||
onMounted(() => {
|
||||
navBarPaddingTop.value = getNavBarPaddingTop() * 2;
|
||||
})
|
||||
|
||||
// 查询列表
|
||||
let list = ref([]);
|
||||
|
||||
let searchValue = ref(null)
|
||||
|
||||
//监视查询的内容的变化
|
||||
watch(searchValue, (newValue, oldValue) => {
|
||||
//变化了之后,重新查询内容
|
||||
var data = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
searchContent: searchValue.value
|
||||
};
|
||||
getYsVisistList(data).then(res => {
|
||||
if (res.code == 200) {
|
||||
//设置列表数据
|
||||
list.value = res.rows;
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
// 新增
|
||||
let handleAdd = () => {
|
||||
uni.navigateTo({url: '/pages/business/CRM/paymentCollection/addPaymentCollection'})
|
||||
}
|
||||
|
||||
|
||||
const mescrollRef = ref(null);
|
||||
const upOption = ref({
|
||||
page: {num: 0, size: 10},
|
||||
noMoreSize: 5,
|
||||
empty: {tip: '~ 空空如也 ~'},
|
||||
textLoading: '加载中...',
|
||||
textNoMore: '已经到底了'
|
||||
});
|
||||
|
||||
const downOption = ref({
|
||||
auto: true,
|
||||
textInOffset: '下拉刷新',
|
||||
textOutOffset: '释放更新',
|
||||
textLoading: '刷新中...'
|
||||
});
|
||||
|
||||
let cssFlag = ref(false);//控制样式
|
||||
const mescrollInit = (mescroll) => {
|
||||
cssFlag.value = true;
|
||||
mescrollRef.value = mescroll;
|
||||
};
|
||||
|
||||
// 下拉刷新
|
||||
const downCallback = async (mescroll) => {
|
||||
try {
|
||||
setTimeout(async () => {
|
||||
const res = await ApprovalMarketInfget(1, upOption.value.page.size);
|
||||
cssFlag.value = false;
|
||||
list.value = res.list;
|
||||
mescroll.resetUpScroll();
|
||||
}, 500);
|
||||
} catch (error) {
|
||||
mescroll.endErr();
|
||||
} finally {
|
||||
setTimeout(async () => {
|
||||
mescroll.endSuccess();
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
// 上拉加载更多
|
||||
const upCallback = async (mescroll) => {
|
||||
try {
|
||||
setTimeout(async () => {
|
||||
const res = await ApprovalMarketInfget(mescroll.num, mescroll.size);
|
||||
if (mescroll.num === 1) {
|
||||
list.value = res.list;
|
||||
} else {
|
||||
list.value.push(...res.list);
|
||||
}
|
||||
mescroll.endBySize(res.list.length, res.total);
|
||||
}, 500);
|
||||
} catch (error) {
|
||||
mescroll.endErr();
|
||||
}
|
||||
}
|
||||
|
||||
// 获取数据列表
|
||||
const ApprovalMarketInfget = (pageNum, pageSize) => {
|
||||
return new Promise(async (resolve) => {
|
||||
let param = {
|
||||
pageNum,
|
||||
pageSize
|
||||
}
|
||||
let res = await approvalMarketInfget(param);
|
||||
resolve({
|
||||
list: res.rows,
|
||||
total: res.total
|
||||
});
|
||||
});
|
||||
}
|
||||
let Loop = ref(0)
|
||||
|
||||
function touchstart(item) {
|
||||
uni.navigateTo({
|
||||
url: "/pages/business/CRM/marketInformation/marketInformationReviewDetail?informationId=" + item.informationId
|
||||
})
|
||||
}
|
||||
// 生命周期钩子
|
||||
onShow(() => {
|
||||
// 监听刷新事件
|
||||
|
||||
uni.$on('refreshList', ApprovalMarketInfget(1,10))
|
||||
|
||||
// 页面显示时也加载一次数据
|
||||
ApprovalMarketInfget(1,10)
|
||||
})
|
||||
onUnmounted(() => {
|
||||
// 移除监听(避免重复触发)
|
||||
uni.$off('refreshList')
|
||||
})
|
||||
onMounted(() => {
|
||||
ApprovalMarketInfget()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.all-body {
|
||||
/* #ifdef APP-PLUS */
|
||||
top: 150rpx;
|
||||
height: calc(100vh - 75px);
|
||||
/* #endif */
|
||||
/* #ifndef APP-PLUS */
|
||||
top: 120rpx;
|
||||
height: calc(100vh);
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.search {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.search .btn-search {
|
||||
border: none;
|
||||
background: none;
|
||||
line-height: normal;
|
||||
color: #fff;
|
||||
line-height: 56rpx !important;
|
||||
padding: 10rpx 0 0;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.search .btn-search::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search .custom-search {
|
||||
width: 80%;
|
||||
|
||||
}
|
||||
|
||||
.search .custom-search.uni-searchbar {
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
.scroll-h {
|
||||
/* #ifdef APP-PLUS */
|
||||
height: calc(100vh - 120px);
|
||||
/* #endif */
|
||||
/* #ifndef APP-PLUS */
|
||||
height: calc(100vh - 110px);
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.white-bg {
|
||||
padding-bottom: 10rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,385 @@
|
||||
<template>
|
||||
<view class="con-body">
|
||||
<view class="con-bg">
|
||||
<!-- 头部 -->
|
||||
<customHeader ref="customHeaderRef" :title="'市场信息详情'" :leftFlag="true" :rightFlag="false"></customHeader>
|
||||
|
||||
<!-- 高度来避免头部遮挡 -->
|
||||
<view class="top-height"></view>
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<!-- 详情内容 -->
|
||||
<view class="white-bg">
|
||||
<view class="report-list">
|
||||
<view class="title">{{ detailList.informationType }}</view>
|
||||
<view class="r-list">
|
||||
<view class="r-name">{{ detailList.cusName }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">报告人</view>
|
||||
<view class="r-right">{{ detailList.createName }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width"></view>
|
||||
<view class="r-list">
|
||||
<view class="r-left">创建日期</view>
|
||||
<view class="r-right">{{ detailList.createTime }}</view>
|
||||
</view>
|
||||
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.opportunityType != null"></view>
|
||||
<view class="r-list" v-if="detailList.opportunityType != null">
|
||||
<view class="r-left">机会类型</view>
|
||||
<view class="r-right">{{ detailList.opportunityType }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.understandTheWay != null"></view>
|
||||
<view class="r-list" v-if="detailList.understandTheWay != null">
|
||||
<view class="r-left">了解途径</view>
|
||||
<view class="r-right">{{ detailList.understandTheWay }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.opportunityDescription != null"></view>
|
||||
<view class="r-list" v-if="detailList.opportunityDescription != null">
|
||||
<view class="r-left">机会描述</view>
|
||||
<view class="r-right">{{ detailList.opportunityDescription }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.opportunityStatus != null"></view>
|
||||
<view class="r-list" v-if="detailList.opportunityStatus != null">
|
||||
<view class="r-left">机会所处状态</view>
|
||||
<view class="r-right">{{ detailList.opportunityStatus }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.predictedAmount != null"></view>
|
||||
<view class="r-list" v-if="detailList.predictedAmount != null">
|
||||
<view class="r-left">预测金额或情况</view>
|
||||
<view class="r-right">{{ detailList.predictedAmount }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitionSituation != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitionSituation != null">
|
||||
<view class="r-left">竞争情况</view>
|
||||
<view class="r-right">{{ detailList.competitionSituation }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.majorTypesOfMatters != null"></view>
|
||||
<view class="r-list" v-if="detailList.majorTypesOfMatters != null">
|
||||
<view class="r-left">重大事项类型</view>
|
||||
<view class="r-right">{{ detailList.majorTypesOfMatters }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.theImpactGenerated != null"></view>
|
||||
<view class="r-list" v-if="detailList.theImpactGenerated != null">
|
||||
<view class="r-left">产生的影响</view>
|
||||
<view class="r-right">{{ detailList.theImpactGenerated }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.companyResponseStrategy != null"></view>
|
||||
<view class="r-list" v-if="detailList.companyResponseStrategy != null">
|
||||
<view class="r-left">公司应对策略</view>
|
||||
<view class="r-right">{{ detailList.companyResponseStrategy }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitiveUnits != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitiveUnits != null">
|
||||
<view class="r-left">竞争单位</view>
|
||||
<view class="r-right">{{ detailList.competitiveUnits }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitorLevelOne != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitorLevelOne != null">
|
||||
<view class="r-left">信息类型</view>
|
||||
<view class="r-right">{{ detailList.competitorLevelOne }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.competitorLevelTwo != null"></view>
|
||||
<view class="r-list" v-if="detailList.competitorLevelTwo != null">
|
||||
<view class="r-left">具体分类</view>
|
||||
<view class="r-right">{{ detailList.competitorLevelTwo }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.specificMatters != null"></view>
|
||||
<view class="r-list" v-if="detailList.specificMatters != null">
|
||||
<view class="r-left">具体事情</view>
|
||||
<view class="r-right">{{ detailList.specificMatters }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.originalPosition != null"></view>
|
||||
<view class="r-list" v-if="detailList.originalPosition != null">
|
||||
<view class="r-left">原职务</view>
|
||||
<view class="r-right">{{ detailList.originalPosition }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.currentPosition != null"></view>
|
||||
<view class="r-list" v-if="detailList.currentPosition != null">
|
||||
<view class="r-left">现职务</view>
|
||||
<view class="r-right">{{ detailList.currentPosition }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.positionOfOurCompany != null"></view>
|
||||
<view class="r-list" v-if="detailList.positionOfOurCompany != null">
|
||||
<view class="r-left">现职务是否与我公司业务相关</view>
|
||||
<view class="r-right">{{ detailList.positionOfOurCompany }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.developmentEfforts != null"></view>
|
||||
<view class="r-list" v-if="detailList.developmentEfforts != null">
|
||||
<view class="r-left">攻关力度</view>
|
||||
<view class="r-right">{{ detailList.developmentEfforts }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.successor != null"></view>
|
||||
<view class="r-list" v-if="detailList.successor != null">
|
||||
<view class="r-left">继任者</view>
|
||||
<view class="r-right">{{ detailList.successor }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.keyModels != null"></view>
|
||||
<view class="r-list" v-if="detailList.keyModels != null">
|
||||
<view class="r-left">重点型号</view>
|
||||
<view class="r-right">{{ detailList.keyModels }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.currentStatus != null"></view>
|
||||
<view class="r-list" v-if="detailList.currentStatus != null">
|
||||
<view class="r-left">目前状态</view>
|
||||
<view class="r-right">{{ detailList.currentStatus }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.batchProductionPlan != null"></view>
|
||||
<view class="r-list" v-if="detailList.batchProductionPlan != null">
|
||||
<view class="r-left">批产计划</view>
|
||||
<view class="r-right">{{ detailList.batchProductionPlan }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.situation != null"></view>
|
||||
<view class="r-list" v-if="detailList.situation != null">
|
||||
<view class="r-left">外协、外包、上级单位情况</view>
|
||||
<view class="r-right">{{ detailList.situation }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.subordinateSupportingUnits != null"></view>
|
||||
<view class="r-list" v-if="detailList.subordinateSupportingUnits != null">
|
||||
<view class="r-left">下级配套单位</view>
|
||||
<view class="r-right">{{ detailList.subordinateSupportingUnits }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.generalFormType != null"></view>
|
||||
<view class="r-list" v-if="detailList.generalFormType != null">
|
||||
<view class="r-left">通用表单类型</view>
|
||||
<view class="r-right">{{ detailList.generalFormType }}</view>
|
||||
</view>
|
||||
|
||||
<view class="border-bottom b-width" v-if="detailList.informationContent != null"></view>
|
||||
<view class="r-list" v-if="detailList.informationContent != null">
|
||||
<view class="r-left">信息内容</view>
|
||||
<view class="r-right">{{ detailList.informationContent }}</view>
|
||||
</view>
|
||||
<view class="border-bottom b-width" v-if="detailList.remark != null"></view>
|
||||
<view class="r-list" v-if="detailList.remark != null">
|
||||
<view class="r-left">备注</view>
|
||||
<view class="r-right">{{ detailList.remark }}</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<view class="border-bottom b-width"></view>
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<!-- 底部加高度来避免tabbar遮挡 -->
|
||||
<!-- <view class="bottom-height"></view> -->
|
||||
<view class="tipsPopBtn">
|
||||
<view class="btnCancal" @click="refuse">驳回</view>
|
||||
<!-- <view class="btnComfire" @click="refusePass">通过不得分</view> -->
|
||||
<view class="btnComfire" @click="adopt">通过</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted
|
||||
} from 'vue'
|
||||
import {
|
||||
onLoad,
|
||||
onShow
|
||||
} from '@dcloudio/uni-app'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import customTabs from '@/components/customTabs.vue';
|
||||
import {
|
||||
viewingMarketInfgetDetail,
|
||||
crmMarketInformationApprovalSuccess,
|
||||
crmMarketInformationApprovalUnSuccess
|
||||
} from '@/api/crm/api_ys.js';
|
||||
|
||||
|
||||
let informationId = ref(0)
|
||||
// 加载后调用
|
||||
let id = ref(null)
|
||||
onLoad((options) => {
|
||||
informationId.value = options.informationId
|
||||
getVisitorReportDetail();
|
||||
})
|
||||
// 查询详情
|
||||
let item = ref({});
|
||||
//明细List
|
||||
let detailList = ref({})
|
||||
const getVisitorReportDetail = async () => {
|
||||
let param = {
|
||||
informationId: informationId.value
|
||||
}
|
||||
let detailRes = await viewingMarketInfgetDetail(param);
|
||||
detailList.value = detailRes.rows[0];
|
||||
}
|
||||
//通过审批
|
||||
const adopt = async () => {
|
||||
try {
|
||||
const param = {
|
||||
informationId: informationId.value
|
||||
}
|
||||
const res = await crmMarketInformationApprovalSuccess(param);
|
||||
console.log(res)
|
||||
uni.showToast({
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
});
|
||||
// 操作完成后返回
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('提交失败:', err);
|
||||
uni.showToast({
|
||||
title: '提交失败',
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 修正后的驳回方法
|
||||
const refuse = async () => {
|
||||
uni.showModal({
|
||||
title: '驳回原因',
|
||||
content: '',
|
||||
editable: true,
|
||||
success: async function (modalRes) { // 使用modalRes避免重名
|
||||
if (modalRes.confirm) {
|
||||
try {
|
||||
const param = {
|
||||
informationId: informationId.value,
|
||||
opinion: modalRes.content // 用户输入的驳回原因
|
||||
};
|
||||
const apiRes = await crmMarketInformationApprovalUnSuccess(param); // 避免与modalRes重名
|
||||
console.log('驳回成功:', apiRes);
|
||||
uni.showToast({
|
||||
title: '驳回成功',
|
||||
icon: 'success'
|
||||
});
|
||||
// 操作完成后返回
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('驳回失败:', err);
|
||||
uni.showToast({
|
||||
title: '驳回失败',
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.white-bg {
|
||||
width: 690rpx;
|
||||
margin: 0;
|
||||
border-radius: 8px 8px 0 0;
|
||||
}
|
||||
|
||||
.white-bg.white-bg-2 {
|
||||
border-radius: 0;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.tipsPopBtn {
|
||||
width: 300px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 50px auto 56px auto;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.btnCancal {
|
||||
width: 100px;
|
||||
height: 60px;
|
||||
border: 2px solid #29abe2;
|
||||
border-radius: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #29abe2;
|
||||
font-size: 15px;
|
||||
|
||||
}
|
||||
|
||||
.btnComfire {
|
||||
width: 100px;
|
||||
height: 60px;
|
||||
background-color: #29abe2;
|
||||
border-radius: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #FFF;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
:deep(.tabs-header) {
|
||||
/* background: none !important; */
|
||||
border-bottom: none !important;
|
||||
margin: 0 auto;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
:deep(.tab-item) {
|
||||
color: #919191;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
/* flex:none; */
|
||||
/* margin: 0 -50rpx; */
|
||||
/* padding: 0 50rpx; */
|
||||
}
|
||||
|
||||
:deep(.tab-item:first-child) {
|
||||
text-align: right;
|
||||
margin-left: 230rpx;
|
||||
}
|
||||
|
||||
:deep(.tab-item:last-child) {
|
||||
text-align: left;
|
||||
margin-right: 230rpx;
|
||||
}
|
||||
|
||||
:deep(.tab-item.active) {
|
||||
color: #3384DF;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
:deep(.tab-item.active::after) {
|
||||
width: 100rpx;
|
||||
height: 8rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -87,9 +87,6 @@
|
||||
let customerUser = reactive({})
|
||||
// 客户相关
|
||||
const guestList = ref([])
|
||||
const guestArr = ref([])
|
||||
const guestIndex = ref(0)
|
||||
|
||||
// 表单数据
|
||||
const formData = ref({
|
||||
cusId: null,
|
||||
@@ -186,7 +183,7 @@
|
||||
const form = ref({
|
||||
cusId: null,
|
||||
cusName: null,
|
||||
opportunityType: "", // 机会类型
|
||||
opportunityType: array.value[0].name, // 机会类型
|
||||
understandTheWay: "", // 了解途径
|
||||
opportunityDescription: "", // 机会描述
|
||||
opportunityStatus: "", // 机会所处状态
|
||||
@@ -243,7 +240,12 @@
|
||||
|
||||
//监听时间
|
||||
onMounted(() => {
|
||||
uni.$on('onCustomerSelected', handleCustomerSelected)
|
||||
// 设置机会类型的默认值
|
||||
formData.value.opportunityType = array.value[0].name;
|
||||
opportunityTypeIndex.value = 0;
|
||||
|
||||
// 原有的监听客户选择事件
|
||||
uni.$on('onCustomerSelected', handleCustomerSelected);
|
||||
})
|
||||
//取消监听
|
||||
onUnmounted(() => {
|
||||
@@ -266,17 +268,18 @@
|
||||
try {
|
||||
// 表单校验
|
||||
await formRef.value.validate()
|
||||
const res = await crmMarketInformationAdd(formData.value);
|
||||
const res = await crmMarketInformationAdd(formData.value);
|
||||
console.log(res)
|
||||
uni.showToast({
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
console.log('表单数据:', formData.value)
|
||||
|
||||
// TODO: 在这里添加提交到后端的逻辑,比如调用 api.CrmMarketInformationAdd(formData.value)
|
||||
// 暂时只做校验提示
|
||||
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
@@ -293,8 +293,10 @@ onMounted(() => {
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
@@ -309,7 +311,10 @@ onMounted(() => {
|
||||
title: '删除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
@@ -81,7 +81,10 @@
|
||||
} from 'vue'
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import cache from '@/utils/cache'
|
||||
import { onShow, onUnload } from '@dcloudio/uni-app';
|
||||
import {
|
||||
onShow,
|
||||
onUnload
|
||||
} from '@dcloudio/uni-app';
|
||||
import {
|
||||
getGuestList
|
||||
} from '@/api/business.js'
|
||||
@@ -227,23 +230,23 @@
|
||||
url: '/pages/business/CRM/customerUserList?cusName=' + formData.value.cusName
|
||||
})
|
||||
}
|
||||
//页面渲染完成后,查询catch的get
|
||||
onShow(() => {
|
||||
//页面渲染完成后,查询catch的get
|
||||
onShow(() => {
|
||||
|
||||
if (cache.get('checkedRCClientList') != null && cache.get('checkedRCClientList') != []) {
|
||||
formData.value.cusUserName = cache.get('checkedRCClientList')
|
||||
}
|
||||
if (cache.get('checkedRCClientList') != null && cache.get('checkedRCClientList') != []) {
|
||||
formData.value.cusUserName = cache.get('checkedRCClientList')
|
||||
}
|
||||
|
||||
})
|
||||
//页面卸载之后,删除缓存信息
|
||||
onUnload(() => {
|
||||
handleDeleteLocal()
|
||||
})
|
||||
})
|
||||
//页面卸载之后,删除缓存信息
|
||||
onUnload(() => {
|
||||
handleDeleteLocal()
|
||||
})
|
||||
|
||||
//删除缓存
|
||||
let handleDeleteLocal = () => {
|
||||
cache.remove('checkedRCClientList');
|
||||
}
|
||||
//删除缓存
|
||||
let handleDeleteLocal = () => {
|
||||
cache.remove('checkedRCClientList');
|
||||
}
|
||||
|
||||
// 提交表单
|
||||
const submitForm = async () => {
|
||||
@@ -251,7 +254,7 @@ let handleDeleteLocal = () => {
|
||||
// 表单校验
|
||||
await formRef.value.validate()
|
||||
const cusUserName1 = formData.value.cusUserName;
|
||||
const stringOfNames = cusUserName1.join(",")
|
||||
const stringOfNames = cusUserName1.join(",")
|
||||
formData.value.cusUserName = stringOfNames
|
||||
const res = await crmMarketInformationAdd(formData.value);
|
||||
console.log(res)
|
||||
@@ -259,10 +262,10 @@ let handleDeleteLocal = () => {
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
console.log('表单数据:', formData.value)
|
||||
|
||||
// TODO: 在这里添加提交到后端的逻辑,比如调用 api.CrmMarketInformationAdd(formData.value)
|
||||
// 暂时只做校验提示
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
|
||||
@@ -263,8 +263,10 @@ let handleDeleteLocal = () => {
|
||||
title: '提交成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
|
||||
// TODO: 在这里添加提交到后端的逻辑,比如调用 api.CrmMarketInformationAdd(formData.value)
|
||||
// 暂时只做校验提示
|
||||
@@ -318,8 +320,10 @@ let handleDeleteLocal = () => {
|
||||
title: '删除成功',
|
||||
icon: 'success'
|
||||
})
|
||||
uni.$emit('refreshMarketOpportunityList')
|
||||
uni.navigateBack(1)
|
||||
uni.$emit('refreshMarketList');
|
||||
setTimeout(() => {
|
||||
uni.navigateBack(1);
|
||||
}, 1500);
|
||||
} catch (err) {
|
||||
console.log('表单验证失败:', err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user