场地动态搜索改为按照责任人搜索
场地动态中,点击场地名称可直接跳转
跟进记录中,点客户单位名称可直接跳转
跟进记录中没有显示客户联系人,应显示
场地动态详情中,权限设置无编辑和转移功能,但再详情页中仍然显示
pull/853/head
wersd 2025-06-25 21:15:59 +08:00
parent 8ec57f041d
commit a39c2a8e6d
8 changed files with 53 additions and 19 deletions

View File

@ -4,7 +4,7 @@ NODE_ENV=production
VITE_DEV=true
# 请求路径
VITE_BASE_URL='http://www.sujieguanli.top:48080'
VITE_BASE_URL='http://www.woyaoshouchong.asia:48080'
# 文件上传类型server - 后端上传, client - 前端直连上传仅支持S3服务
VITE_UPLOAD_TYPE=client

View File

@ -4,7 +4,7 @@ NODE_ENV=development
VITE_DEV=true
# 请求路径
VITE_BASE_URL='http://www.sujieguanli.top:48080'
VITE_BASE_URL='http://www.woyaoshouchong.asia:48080'
# 文件上传类型server - 后端上传, client - 前端直连上传,仅支持 S3 服务
VITE_UPLOAD_TYPE=client

View File

@ -4,7 +4,7 @@ NODE_ENV=production
VITE_DEV=false
# 请求路径
VITE_BASE_URL='http://www.sujieguanli.top:88'
VITE_BASE_URL='http://www.sujieguanli.top'
# 文件上传类型server - 后端上传, client - 前端直连上传仅支持S3服务
VITE_UPLOAD_TYPE=client

View File

@ -48,7 +48,6 @@
import { useTagsViewStore } from '@/store/modules/tagsView'
import { OperateLogVO } from '@/api/system/operatelog'
import * as ContractApi from '@/api/crm/contract'
import ContractDetailsInfo from './ContractDetailsInfo.vue'
import ContractDetailsHeader from './ContractDetailsHeader.vue'
import ContractProductList from './ContractProductList.vue'
import { BizTypeEnum } from '@/api/crm/permission'
@ -56,7 +55,6 @@ import { getOperateLogPage } from '@/api/crm/operateLog'
import ContractForm from '@/views/crm/contract/ContractForm.vue'
import CrmTransferForm from '@/views/crm/permission/components/TransferForm.vue'
import PermissionList from '@/views/crm/permission/components/PermissionList.vue'
import FollowUpList from '@/views/crm/followup/components/FollowUpList.vue'
import ReceivableList from '@/views/crm/receivable/components/ReceivableList.vue'
import ReceivablePlanList from '@/views/crm/receivable/plan/components/ReceivablePlanList.vue'

View File

@ -25,7 +25,6 @@
>
锁定
</el-button>
<text>{{ customerId }}</text>
<!-- <el-button v-if="!customer.ownerUserId" type="primary" @click="handleReceive"> </el-button>
<el-button v-if="!customer.ownerUserId" type="primary" @click="handleDistributeForm">
分配

View File

@ -2,7 +2,7 @@
<template>
<!-- 搜索栏 -->
<el-form :inline="true" :model="queryParams" class="mb-10px">
<el-form-item :label="bizLabel + '人'">
<el-form-item v-if="queryParams.bizType === BizTypeEnum.CRM_CUSTOMER" :label="bizLabel + '人'">
<el-select
v-model="queryParams.creator"
filterable
@ -17,6 +17,22 @@
:value="user.id"
/>
</el-select>
</el-form-item>
<el-form-item v-if="queryParams.bizType === BizTypeEnum.CRM_STATION_SITE" label="责任人">
<el-select
v-model="queryParams.ownerUserId"
filterable
clearable
placeholder="请选择责任人"
style="width: 150px"
>
<el-option
v-for="user in userOptions"
:key="user.id"
:label="user.nickname"
:value="user.id"
/>
</el-select>
</el-form-item>
<el-form-item v-if="queryParams.bizType === BizTypeEnum.CRM_CUSTOMER" :label="bizLabel + '方式'">
<el-select v-model="queryParams.type" :placeholder="'请选择' + bizLabel + '方式'" clearable style="width: 150px">
@ -46,11 +62,17 @@
placement="top"
>
<span>{{ bizLabel }}</span>{{ item.creatorName }}
<span v-if="queryParams.bizId === undefined && Array.isArray(item.customer) && item.customer.length > 0 && item.customer[0].name" style="margin-left: 8px;">
客户名称{{ item.customer[0].name }}
<span v-if="queryParams.bizId === undefined && Array.isArray(item.customer) && item.customer.length > 0 && item.customer[0].name" style="margin-left: 8px; display: inline-flex; align-items: center;">
<span>客户名称</span>
<el-link :underline="false" type="primary" @click="openCustomerDetail(item.customer[0].id)">
{{ item.customer[0].name }}
</el-link>
</span>
<span v-if="queryParams.bizId === undefined && Array.isArray(item.stationSite) && item.stationSite.length > 0 && item.stationSite[0].name" style="margin-left: 8px;">
场地名称{{ item.stationSite[0].name }}
<span v-if="queryParams.bizId === undefined && Array.isArray(item.stationSite) && item.stationSite.length > 0 && item.stationSite[0].name" style="margin-left: 8px; display: inline-flex; align-items: center;">
<span>场地名称</span>
<el-link :underline="false" type="primary" @click="openStationDetail(item.stationSite[0].id)">
{{ item.stationSite[0].name }}
</el-link>
</span>
<template #timestamp>
@ -137,6 +159,7 @@ import { FollowUpRecordApi, FollowUpRecordVO } from '@/api/crm/followup'
import FollowUpRecordForm from './FollowUpRecordForm.vue'
import { BizTypeEnum } from '@/api/crm/permission'
import * as UserApi from '@/api/system/user'
import { defaultProps } from '@/utils/tree'
const userOptions = ref<any[]>([])
@ -161,7 +184,8 @@ const queryParams = reactive({
bizId: undefined as number | undefined,
content: '',
type: undefined,
creator: undefined as number | undefined //
creator: undefined as number | undefined, //
ownerUserId: undefined as number | undefined //
})
/** 查询列表 */
@ -219,6 +243,16 @@ const openContactDetail = (id: number) => {
const openBusinessDetail = (id: number) => {
push({ name: 'CrmBusinessDetail', params: { id } })
}
/** 打开场地信息详情 */
const openStationDetail = (id: number) => {
push({ name: 'CrmStationSiteDetail', params: { id } })
}
/** 打开客户详情 */
const openCustomerDetail = (id: number) => {
push({ name: 'CrmCustomerDetail', params: { id } })
}
/** 文件查看弹窗 */
const fileDialogVisible = ref(false)
@ -240,6 +274,9 @@ const resetQuery = () => {
queryParams.content = ''
queryParams.creator = undefined
queryParams.type = undefined
queryParams.ownerUserId = undefined
queryParams.pageNo = 1
queryParams.pageSize = 10
handleQuery()
}

View File

@ -23,7 +23,11 @@
</el-col>
<el-col :span="12" v-if="formData.bizType == BizTypeEnum.CRM_CUSTOMER">
<el-form-item label="选择联系人" prop="contactIds">
<el-select v-model="contactId" filterable placeholder="请选择联系人" @change="val => console.log('contactIds changed:', val)">
<el-select
v-model="formData.contactIds"
filterable
multiple
placeholder="请选择联系人">
<el-option v-for="item in contactOptions" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@ -58,7 +62,6 @@ defineOptions({ name: 'FollowUpRecordForm' })
const { t } = useI18n() //
const message = useMessage() //
const contactId = ref()
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
@ -125,11 +128,6 @@ watch(
//
const res = await ContactApi.getContactPageByCustomer({ customerId: val, pageSize: 100 })
contactOptions.value = res.list || []
//
if (formType.value === 'update' && contactOptions.value.length > 0) {
formData.value.contactIds = [contactOptions.value[0].id]
contactId.value = contactOptions.value[0].id
}
} else {
contactOptions.value = []
formData.value.contactIds = []

View File

@ -2,11 +2,13 @@
<StationSiteDetailsHeader :station-site="stationSite" :loading="loading">
<el-button
type="primary"
v-hasPermi="['crm:station-site:update']"
@click="openForm('update', stationSite.id)"
>
编辑
</el-button>
<el-button
v-hasPermi="['crm:station-site:transfor']"
@click="transfer"
>
转移