新增地缘获客
parent
594908817c
commit
2b75b549f4
@ -1,52 +1,35 @@
|
||||
import httpClient from '@/utils/axios'
|
||||
import type { ApiResult } from '@/api/types'
|
||||
import type {
|
||||
AccessLogPageParam,
|
||||
SysMenuDTO,
|
||||
SysUserPageParam,
|
||||
resourcesDtoDTO
|
||||
} from '@/api/customermanagement/customerList/types'
|
||||
// SysMenuDTO
|
||||
import type { SysUserPageParam, resourcesDtoDTO } from '@/api/customermanagement/customerList/types'
|
||||
|
||||
/**
|
||||
* 访问日志分页查询
|
||||
* 我的线索分页查询
|
||||
* @param pageParams 分页参数
|
||||
*/
|
||||
// export function pageAccessLogs(pageParams: AccessLogPageParam) {
|
||||
// return httpClient.get<ApiResult>('/log/access-log/page', {
|
||||
// params: pageParams
|
||||
// })
|
||||
// }
|
||||
export function pageAccessLogs(pageParams: SysUserPageParam) {
|
||||
return httpClient.get<ApiResult>('/clue/page', {
|
||||
params: pageParams
|
||||
})
|
||||
}
|
||||
// /**
|
||||
// * 新建菜单
|
||||
// * @param menuDto 菜单传输对象
|
||||
// */
|
||||
// export function createMenu(menuDto: SysMenuDTO) {
|
||||
// return httpClient.post<ApiResult<void>>('/system/menu', menuDto)
|
||||
// }
|
||||
/**
|
||||
* 删除用户
|
||||
* @param userId 用户id
|
||||
*/
|
||||
export function deleteUser(userId: number) {
|
||||
return httpClient.delete<ApiResult<void>>(`/system/user/${userId}`)
|
||||
}
|
||||
/**
|
||||
* 新建菜单
|
||||
* @param menuDto 菜单传输对象
|
||||
*/
|
||||
export function createMenu(menuDto: SysMenuDTO) {
|
||||
return httpClient.post<ApiResult<void>>('/system/menu', menuDto)
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改菜单
|
||||
* @param menuDto 菜单传输对象
|
||||
*/
|
||||
export function updateMenu(menuDto: SysMenuDTO) {
|
||||
return httpClient.put<ApiResult<void>>('/system/menu', menuDto)
|
||||
}
|
||||
/**
|
||||
* 修改资源
|
||||
* @param resourcesDto 菜单传输对象
|
||||
* 编辑
|
||||
* @param resourcesDto 标签阶段打标对象
|
||||
*/
|
||||
export function updateResource(resourcesDto: resourcesDtoDTO) {
|
||||
return httpClient.post<ApiResult<void>>('/clue/update', resourcesDto)
|
||||
}
|
||||
// /**
|
||||
// * 删除用户
|
||||
// * @param userId 用户id
|
||||
// */
|
||||
// export function deleteUser(userId: number) {
|
||||
// return httpClient.delete<ApiResult<void>>(`/system/user/${userId}`)
|
||||
// }
|
||||
|
@ -0,0 +1,98 @@
|
||||
import httpClient from '@/utils/axios'
|
||||
import type { ApiResult } from '@/api/types'
|
||||
import type {
|
||||
DistributeTaskManagementPageParam,
|
||||
distributeTaskId
|
||||
} from '@/api/controlcenterstation/distributionTaskManagement/types'
|
||||
import type {
|
||||
GeopoliticalCustomersDTO,
|
||||
CustomerDTO,
|
||||
customId
|
||||
} from '@/api/geopoliticalCustomers/types'
|
||||
import type { GeopoliticalCustomersPageParam } from '@/api/geopoliticalCustomers/types'
|
||||
|
||||
/**
|
||||
* 地缘获客分页查询
|
||||
* @param pageParams 分页参数
|
||||
*/
|
||||
export function pageAccessLogs(pageParams: GeopoliticalCustomersPageParam) {
|
||||
return httpClient.get<ApiResult>('/custom/page', {
|
||||
params: pageParams
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 删除任务
|
||||
* @param distributeTaskId 分发id
|
||||
*/
|
||||
export function deleteUser(distributeTaskId: number) {
|
||||
return httpClient.delete<ApiResult<void>>(`/distributeTask/${distributeTaskId}`)
|
||||
}
|
||||
/**
|
||||
* 执行任务
|
||||
*
|
||||
*/
|
||||
export function performTask(distributeTaskId: distributeTaskId) {
|
||||
return httpClient.get<ApiResult>('/distributeTask/executeTask', {
|
||||
params: distributeTaskId
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 已选择公司下拉列表数据
|
||||
*
|
||||
*/
|
||||
export function selectedCompanyList() {
|
||||
return httpClient.get<ApiResult>('/system/user/selectSonList')
|
||||
}
|
||||
/**
|
||||
* 文件选择下拉列表数据
|
||||
*
|
||||
*/
|
||||
export function fileSelectionList() {
|
||||
return httpClient.get<ApiResult>('/clueRecord/select')
|
||||
}
|
||||
/**
|
||||
* ID查询已选择的公司回显数据
|
||||
*
|
||||
*/
|
||||
export function selectedCompanyEcho(distributeTaskId: distributeTaskId) {
|
||||
return httpClient.get<ApiResult>('/distributeTask/details', {
|
||||
params: distributeTaskId
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 新增分发任务
|
||||
* @param distributeDto 分发对象
|
||||
*/
|
||||
export function addDistributeConfiguration(distributeDto: GeopoliticalCustomersDTO) {
|
||||
return httpClient.post<ApiResult<void>>('/distributeTask/add', distributeDto)
|
||||
}
|
||||
/**
|
||||
* 修改分发任务
|
||||
* @param distributeDto 分发对象
|
||||
*/
|
||||
export function updateDistributeConfigurationmenuDto(distributeDto: GeopoliticalCustomersDTO) {
|
||||
return httpClient.post<ApiResult<void>>('/distributeTask/update', distributeDto)
|
||||
}
|
||||
/**
|
||||
* 新增客户
|
||||
* @param customerDto 客户信息传输对象
|
||||
*/
|
||||
export function addCustomer(customerDto: CustomerDTO) {
|
||||
return httpClient.post<ApiResult<void>>('/custom/add', customerDto)
|
||||
}
|
||||
/**
|
||||
* 修改客户
|
||||
* @param customerDto 客户信息传输对象
|
||||
*/
|
||||
export function updateCustomer(customerDto: CustomerDTO) {
|
||||
return httpClient.post<ApiResult<void>>('/custom/update', customerDto)
|
||||
}
|
||||
/**
|
||||
* ID查询详情
|
||||
*
|
||||
*/
|
||||
export function getDetail(customId: customId) {
|
||||
return httpClient.get<ApiResult>('/custom/details', {
|
||||
params: customId
|
||||
})
|
||||
}
|
@ -0,0 +1,239 @@
|
||||
import type { PageParam } from '@/api/types'
|
||||
import { Dayjs } from 'dayjs'
|
||||
|
||||
/**
|
||||
* 分发任务管理分页参数
|
||||
*/
|
||||
export type DistributeTaskManagementPageParam = DistributeTaskManagementQO & PageParam
|
||||
/**
|
||||
* 分发任务管理查询对象
|
||||
*/
|
||||
export type DistributeTaskManagementQO = {
|
||||
// 任务名称
|
||||
taskName?: string
|
||||
//任务状态
|
||||
executeStatus?: number
|
||||
//任务类型
|
||||
distributeTaskType?: number
|
||||
// 开始时间
|
||||
startTime?: string
|
||||
// 结束时间
|
||||
endTime?: string
|
||||
}
|
||||
interface userListItem {
|
||||
userName: string
|
||||
userId: number
|
||||
weight?: number
|
||||
}
|
||||
/**
|
||||
* 系统用户状态
|
||||
*/
|
||||
export enum SysUserStatus {
|
||||
// 正常
|
||||
NORMAL = 1,
|
||||
// 锁定的
|
||||
LOCKED = 0
|
||||
}
|
||||
/**
|
||||
* 分发任务管理record
|
||||
*/
|
||||
export type DistributeTaskManagementRecord = {
|
||||
createBy?: number
|
||||
// 创建时间
|
||||
createTime: string
|
||||
defaultType?: number
|
||||
// 用户ID
|
||||
distributeTaskId: number
|
||||
//任务类型
|
||||
distributeTaskType?: number
|
||||
//
|
||||
executeNum?: number
|
||||
executeStatus?: number
|
||||
fileRecordId?: string
|
||||
fileRulePrefix: string
|
||||
recordList: Array<any>
|
||||
//分发规则
|
||||
ruleStatus?: number
|
||||
//选择时间
|
||||
startTime?: string | null
|
||||
//任务名称
|
||||
taskName?: string
|
||||
//分发时间
|
||||
timeStatus?: number
|
||||
userList: Array<userListItem>
|
||||
}
|
||||
/**
|
||||
* 权重Id、权重占比
|
||||
*/
|
||||
interface weightDistribute {
|
||||
userId: number
|
||||
weight?: number | ''
|
||||
}
|
||||
/**
|
||||
* 新增分发任务
|
||||
*/
|
||||
// export interface DistributeTaskDTO {
|
||||
// defaultType: number | undefined
|
||||
// sCID: Array<number>
|
||||
// // 分发任务ID
|
||||
// distributeTaskId?: number
|
||||
// // 任务类型
|
||||
// distributeTaskType: number | undefined
|
||||
// // 任务名称
|
||||
// taskName: string | undefined
|
||||
// // 分发规则
|
||||
// ruleStatus?: number
|
||||
// // 分发时间
|
||||
// timeStatus?: number
|
||||
// // 选择时间
|
||||
// // startTime?: Dayjs | string
|
||||
// startTime: string | Dayjs | undefined
|
||||
// // 文件规则前缀
|
||||
// fileRulePrefix?: string
|
||||
// //上传文件记录ID
|
||||
// fileRecordIdList?: Array<string>
|
||||
// // 权重
|
||||
// users: Array<weightDistribute>
|
||||
// }
|
||||
/**
|
||||
* 分发任务管理搜索区域表单
|
||||
*/
|
||||
export interface DistributeTaskManagementSearch {
|
||||
// 追踪ID
|
||||
// traceId?: string
|
||||
// 用户ID
|
||||
// userId?: number
|
||||
taskName?: string
|
||||
// 访问IP地址
|
||||
ip?: string
|
||||
executeStatus?: string
|
||||
distributeTaskType?: string
|
||||
// 访问时间区间的开始值
|
||||
startTime?: string
|
||||
// 访问时间区间的结束值
|
||||
endTime?: string
|
||||
// 请求Uri
|
||||
// uri?: string
|
||||
|
||||
// 请求映射地址
|
||||
// matchingPattern?: string
|
||||
// 响应状态码
|
||||
// httpStatus?: number
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务ID(接口里面用到)
|
||||
*/
|
||||
export interface distributeTaskId {
|
||||
// 分发任务ID
|
||||
id: number | undefined
|
||||
}
|
||||
interface storeMessageItem {
|
||||
storeName: string
|
||||
appointTime: string
|
||||
}
|
||||
export interface GeopoliticalCustomersDTO {
|
||||
appellation: string
|
||||
number: string
|
||||
address: any
|
||||
communityName: string
|
||||
radius: string
|
||||
storeMessage: Array<storeMessageItem>
|
||||
// storeMessage: any
|
||||
}
|
||||
|
||||
export interface GeopoliticalCustomersStoreDTO {
|
||||
storeName: string
|
||||
appointTime: any
|
||||
}
|
||||
interface customStoreEntitiesItem {
|
||||
// createBy: number
|
||||
// updateBy: number
|
||||
// createTime: string
|
||||
// updateTime: string
|
||||
// customStoreId: number
|
||||
// storeId: number
|
||||
// customId: number
|
||||
//门店名称
|
||||
storeName: string
|
||||
//预约时间
|
||||
reservationTime: string
|
||||
}
|
||||
export interface CustomerDTO {
|
||||
customId?: number | undefined
|
||||
//客户名称
|
||||
customName: string | undefined
|
||||
//客户联系方式
|
||||
customNid: string | undefined
|
||||
address?: Array<any>
|
||||
//省
|
||||
economize: string
|
||||
//市
|
||||
market: string
|
||||
//区
|
||||
distinguish: string
|
||||
//详细地址
|
||||
detailAddress: any
|
||||
//半径
|
||||
radius: any
|
||||
//报名状态
|
||||
enrollStatus: number
|
||||
//门店信息
|
||||
customStoreEntities: Array<customStoreEntitiesItem>
|
||||
}
|
||||
/**
|
||||
* 任务ID(接口里面用到)
|
||||
*/
|
||||
export interface customId {
|
||||
// 分发任务ID
|
||||
id: number | undefined
|
||||
}
|
||||
////////////////////////////////
|
||||
/**
|
||||
* 地缘获客分页参数
|
||||
*/
|
||||
export type GeopoliticalCustomersPageParam = GeopoliticalCustomersQO & PageParam
|
||||
/**
|
||||
* 地缘获客查询对象
|
||||
*/
|
||||
export type GeopoliticalCustomersQO = {
|
||||
// 客户名称
|
||||
customName?: string
|
||||
//报名状态
|
||||
enrollStatus?: number
|
||||
//联系方式
|
||||
customNid?: string
|
||||
// 开始时间
|
||||
startTime?: string
|
||||
// 结束时间
|
||||
endTime?: string
|
||||
}
|
||||
/**
|
||||
* 地缘获客record
|
||||
*/
|
||||
export type GeopoliticalCustomersRecord = {
|
||||
// 创建时间
|
||||
createTime?: string
|
||||
customId?: number
|
||||
customName?: string
|
||||
customNid?: string
|
||||
customStoreVOList?: Array<any>
|
||||
detailAddress?: string
|
||||
distinguish?: string
|
||||
economize?: string
|
||||
market?: string
|
||||
enrollStatus?: string
|
||||
radius?: string
|
||||
}
|
||||
/**
|
||||
* 地缘获客搜索区域表单
|
||||
*/
|
||||
export interface GeopoliticalCustomersSearch {
|
||||
customName?: string
|
||||
customNid?: string
|
||||
enrollStatus?: string
|
||||
// 访问时间区间的开始值
|
||||
startTime?: string
|
||||
// 访问时间区间的结束值
|
||||
endTime?: string
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,174 @@
|
||||
<template>
|
||||
<!-- 头部 -->
|
||||
<a-card :bordered="false" :body-style="{ paddingBottom: 0 }">
|
||||
<div class="formReview-title">表单重审</div>
|
||||
</a-card>
|
||||
<!-- 工具栏 -->
|
||||
<form-review-search :loading="tableRef?.loading" @search="searchTable" />
|
||||
<!-- 批量操作、更多操作 -->
|
||||
<!-- <a-card :bordered="false" :body-style="{ paddingBottom: 0 }">
|
||||
<div class="operationButtonArea">
|
||||
<a-button class="operationButton" @click="newAppointment">新建预约</a-button>
|
||||
</div>
|
||||
</a-card> -->
|
||||
<!-- 底部表格 -->
|
||||
<pro-table
|
||||
ref="tableRef"
|
||||
row-key="customId"
|
||||
:request="tableRequest"
|
||||
:columns="columns"
|
||||
:scroll="{ x: 1100 }"
|
||||
:tool-bar-render="false"
|
||||
class="protable"
|
||||
:pagination="{ showQuickJumper: true }"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'operate'">
|
||||
<operation-group>
|
||||
<!-- <a @click="handleView(record)">查看</a> -->
|
||||
<a @click="handleEdit(record)">审核</a>
|
||||
</operation-group>
|
||||
</template>
|
||||
</template>
|
||||
</pro-table>
|
||||
<!-- 新建预约新建/编辑弹窗 -->
|
||||
<geopolitical-customers-modal ref="geopoliticalCustomersModalRef" @submit-success="reloadTable" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
// import { message } from 'ant-design-vue'
|
||||
// import { doRequest } from '@/utils/axios/request'
|
||||
//底部表格
|
||||
import ProTable from '#/table'
|
||||
import type { ProTableInstanceExpose, TableRequest, ProColumns } from '#/table'
|
||||
import { mergePageParam } from '@/utils/page-utils'
|
||||
import { FormAction } from '@/hooks/form'
|
||||
import GeopoliticalCustomersModal from '@/views/geopoliticalCustomers/geopoliticalCustomersModal.vue'
|
||||
import FormReviewSearch from '@/views/formReview/formReviewSearch.vue'
|
||||
import { pageAccessLogs } from '@/api/geopoliticalCustomers'
|
||||
import type {
|
||||
GeopoliticalCustomersRecord,
|
||||
GeopoliticalCustomersPageParam
|
||||
} from '@/api/geopoliticalCustomers/types'
|
||||
|
||||
defineOptions({ name: 'GeopoliticalCustomers' })
|
||||
|
||||
//底部表格
|
||||
// 表格组件引用
|
||||
const tableRef = ref<ProTableInstanceExpose>()
|
||||
//预约ref
|
||||
const geopoliticalCustomersModalRef = ref<InstanceType<typeof GeopoliticalCustomersModal>>()
|
||||
// 查询参数
|
||||
let searchParams: GeopoliticalCustomersPageParam = {}
|
||||
|
||||
//远程加载表格数据
|
||||
const tableRequest: TableRequest = (params, sorter, filter) => {
|
||||
const pageParam = mergePageParam(params, sorter, filter)
|
||||
return pageAccessLogs({ ...pageParam, ...searchParams })
|
||||
}
|
||||
|
||||
//刷新表格
|
||||
const reloadTable = (resetPageIndex?: boolean) => {
|
||||
tableRef.value?.actionRef?.reload(resetPageIndex)
|
||||
}
|
||||
|
||||
//查询表格
|
||||
const searchTable = (params: GeopoliticalCustomersPageParam) => {
|
||||
searchParams = params
|
||||
reloadTable(true) // 会调用 tableRequest
|
||||
}
|
||||
//新建预约
|
||||
const newAppointment = () => {
|
||||
geopoliticalCustomersModalRef.value?.open({
|
||||
newFormAction: FormAction.CREATE
|
||||
})
|
||||
}
|
||||
//查看
|
||||
const handleView = (record: GeopoliticalCustomersRecord) => {
|
||||
geopoliticalCustomersModalRef.value?.open({
|
||||
newFormAction: FormAction.UPDATE,
|
||||
type: 'view',
|
||||
record: record
|
||||
})
|
||||
}
|
||||
|
||||
//编辑预约
|
||||
const handleEdit = (record: GeopoliticalCustomersRecord) => {
|
||||
geopoliticalCustomersModalRef.value?.open({
|
||||
newFormAction: FormAction.UPDATE,
|
||||
type: 'audit',
|
||||
record: record
|
||||
})
|
||||
}
|
||||
|
||||
const columns: ProColumns[] = [
|
||||
{
|
||||
title: '编号',
|
||||
width: 80,
|
||||
customRender: function ({ index }) {
|
||||
return `${index + 1}`
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '客户名称',
|
||||
dataIndex: 'customName'
|
||||
},
|
||||
{
|
||||
title: '联系方式',
|
||||
dataIndex: 'customNid'
|
||||
},
|
||||
{
|
||||
title: '审核状态',
|
||||
dataIndex: 'enrollStatus',
|
||||
customRender: function ({ record }: any) {
|
||||
if (record.enrollStatus === 0) {
|
||||
return h('div', '待提交')
|
||||
} else if (record.enrollStatus === 1) {
|
||||
return h('div', '已报名')
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '录入日期',
|
||||
dataIndex: 'createTime',
|
||||
width: 230,
|
||||
align: 'center',
|
||||
customRender: function ({ record }: any) {
|
||||
if (record.createTime) {
|
||||
return record.createTime
|
||||
} else if (record.createTime === null) {
|
||||
return '--'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'operate',
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
fixed: 'right'
|
||||
}
|
||||
]
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.formReview-title {
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
//批量操作、更多操作
|
||||
.operationButtonArea {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.operationButton {
|
||||
background-color: #f4f4f5;
|
||||
border-radius: 5px;
|
||||
color: #909399;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.editable-row-operations a {
|
||||
margin-right: 8px;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,122 @@
|
||||
<template>
|
||||
<a-card :bordered="false" style="margin-bottom: 16px" :body-style="{ paddingBottom: 0 }">
|
||||
<a-form :model="formModel" :label-col="labelCol">
|
||||
<a-row :gutter="16">
|
||||
<!-- v-if="userInfoCurrent === 'ROLE_ADMIN'" -->
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="编号">
|
||||
<a-input v-model:value="formModel.customName" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!-- <a-col v-if="userInfoCurrent === 'ROLE_SALES_EXECUTIVE'" :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="坐席名称">
|
||||
<a-input v-model:value="formModel.customName" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col> -->
|
||||
<!-- <a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="坐席名称">
|
||||
<dict-select
|
||||
v-model:value="formModel.ip"
|
||||
dict-code="user_status"
|
||||
allow-clear
|
||||
placeholder="请选择"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col> -->
|
||||
<!-- <a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="报名状态">
|
||||
<dict-select
|
||||
v-model:value="formModel.enrollStatus"
|
||||
dict-code="registration_status"
|
||||
allow-clear
|
||||
placeholder="请选择"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="联系方式">
|
||||
<a-input v-model:value="formModel.customNid" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col> -->
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="填写时间">
|
||||
<a-range-picker
|
||||
v-model:value="searchTimeValue"
|
||||
show-time
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
style="width: 100%"
|
||||
:ranges="{
|
||||
Today: [dayjs().startOf('date'), dayjs()]
|
||||
}"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="24" :md="24" :sm="24">
|
||||
<search-actions :loading="props.loading" @search="search" @reset="reset" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Form } from 'ant-design-vue'
|
||||
import type { GeopoliticalCustomersSearch } from '@/api/geopoliticalCustomers/types'
|
||||
import dayjs from 'dayjs'
|
||||
import type { Dayjs } from 'dayjs'
|
||||
//获取当前账号角色
|
||||
import { useUserStore } from '@/stores/user-store'
|
||||
const { userInfo } = useUserStore()
|
||||
|
||||
const userInfoCurrent = ref<string | undefined>('')
|
||||
onMounted(() => {
|
||||
console.log(userInfo, 'userInfo?.permissions')
|
||||
// userInfoCurrent = userInfo?.roleCodes
|
||||
userInfoCurrent.value = userInfo?.roleCodes?.toLocaleString()
|
||||
})
|
||||
|
||||
const useForm = Form.useForm
|
||||
|
||||
// 表单 label 全局配置
|
||||
const labelCol = { md: { span: 6 } }
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
loading?: boolean
|
||||
}>(),
|
||||
{ loading: false }
|
||||
)
|
||||
|
||||
const emits = defineEmits<{
|
||||
(e: 'search', params: Record<string, any>): void
|
||||
}>()
|
||||
|
||||
const searchTimeValue = ref<[Dayjs, Dayjs]>()
|
||||
const formModel = reactive<GeopoliticalCustomersSearch>({
|
||||
customName: '',
|
||||
customNid: '',
|
||||
enrollStatus: undefined
|
||||
})
|
||||
|
||||
const { resetFields } = useForm(formModel)
|
||||
|
||||
const search = () => {
|
||||
const param = toRaw(formModel)
|
||||
if (searchTimeValue.value && searchTimeValue.value.length == 2) {
|
||||
param.startTime = searchTimeValue.value[0].format('YYYY-MM-DD HH:mm:ss')
|
||||
param.endTime = searchTimeValue.value[1].format('YYYY-MM-DD HH:mm:ss')
|
||||
} else {
|
||||
param.startTime = ''
|
||||
param.endTime = ''
|
||||
}
|
||||
emits('search', param)
|
||||
}
|
||||
|
||||
const reset = () => {
|
||||
// 清空表单其他元素
|
||||
resetFields()
|
||||
// 清空时间
|
||||
searchTimeValue.value = undefined
|
||||
search()
|
||||
}
|
||||
</script>
|
@ -0,0 +1,175 @@
|
||||
<template>
|
||||
<!-- 头部 -->
|
||||
<a-card :bordered="false" :body-style="{ paddingBottom: 0 }">
|
||||
<div class="geopoliticalCustomers-title">地缘获客</div>
|
||||
</a-card>
|
||||
<!-- 工具栏 -->
|
||||
<geopolitical-customers-search :loading="tableRef?.loading" @search="searchTable" />
|
||||
<!-- 批量操作、更多操作 -->
|
||||
<a-card :bordered="false" :body-style="{ paddingBottom: 0 }">
|
||||
<div class="operationButtonArea">
|
||||
<a-button class="operationButton" @click="newAppointment">新建预约</a-button>
|
||||
<!-- 更多操作 -->
|
||||
</div>
|
||||
</a-card>
|
||||
<!-- 底部表格 -->
|
||||
<pro-table
|
||||
ref="tableRef"
|
||||
row-key="customId"
|
||||
:request="tableRequest"
|
||||
:columns="columns"
|
||||
:scroll="{ x: 1100 }"
|
||||
:tool-bar-render="false"
|
||||
class="protable"
|
||||
:pagination="{ showQuickJumper: true }"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'operate'">
|
||||
<operation-group>
|
||||
<a @click="handleView(record)">查看</a>
|
||||
<a @click="handleEdit(record)">编辑</a>
|
||||
</operation-group>
|
||||
</template>
|
||||
</template>
|
||||
</pro-table>
|
||||
<!-- 新建预约新建/编辑弹窗 -->
|
||||
<geopolitical-customers-modal ref="geopoliticalCustomersModalRef" @submit-success="reloadTable" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
// import { message } from 'ant-design-vue'
|
||||
// import { doRequest } from '@/utils/axios/request'
|
||||
//底部表格
|
||||
import ProTable from '#/table'
|
||||
import type { ProTableInstanceExpose, TableRequest, ProColumns } from '#/table'
|
||||
import { mergePageParam } from '@/utils/page-utils'
|
||||
import { FormAction } from '@/hooks/form'
|
||||
import GeopoliticalCustomersModal from '@/views/geopoliticalCustomers/geopoliticalCustomersModal.vue'
|
||||
import GeopoliticalCustomersSearch from '@/views/geopoliticalCustomers/geopoliticalCustomersSearch.vue'
|
||||
import { pageAccessLogs } from '@/api/geopoliticalCustomers'
|
||||
import type {
|
||||
GeopoliticalCustomersRecord,
|
||||
GeopoliticalCustomersPageParam
|
||||
} from '@/api/geopoliticalCustomers/types'
|
||||
|
||||
defineOptions({ name: 'GeopoliticalCustomers' })
|
||||
|
||||
//底部表格
|
||||
// 表格组件引用
|
||||
const tableRef = ref<ProTableInstanceExpose>()
|
||||
//预约ref
|
||||
const geopoliticalCustomersModalRef = ref<InstanceType<typeof GeopoliticalCustomersModal>>()
|
||||
// 查询参数
|
||||
let searchParams: GeopoliticalCustomersPageParam = {}
|
||||
|
||||
//远程加载表格数据
|
||||
const tableRequest: TableRequest = (params, sorter, filter) => {
|
||||
const pageParam = mergePageParam(params, sorter, filter)
|
||||
return pageAccessLogs({ ...pageParam, ...searchParams })
|
||||
}
|
||||
|
||||
//刷新表格
|
||||
const reloadTable = (resetPageIndex?: boolean) => {
|
||||
tableRef.value?.actionRef?.reload(resetPageIndex)
|
||||
}
|
||||
|
||||
//查询表格
|
||||
const searchTable = (params: GeopoliticalCustomersPageParam) => {
|
||||
searchParams = params
|
||||
reloadTable(true) // 会调用 tableRequest
|
||||
}
|
||||
//新建预约
|
||||
const newAppointment = () => {
|
||||
geopoliticalCustomersModalRef.value?.open({
|
||||
newFormAction: FormAction.CREATE
|
||||
})
|
||||
}
|
||||
//查看
|
||||
const handleView = (record: GeopoliticalCustomersRecord) => {
|
||||
geopoliticalCustomersModalRef.value?.open({
|
||||
newFormAction: FormAction.UPDATE,
|
||||
type: 'view',
|
||||
record: record
|
||||
})
|
||||
}
|
||||
|
||||
//编辑预约
|
||||
const handleEdit = (record: GeopoliticalCustomersRecord) => {
|
||||
geopoliticalCustomersModalRef.value?.open({
|
||||
newFormAction: FormAction.UPDATE,
|
||||
type: 'edit',
|
||||
record: record
|
||||
})
|
||||
}
|
||||
|
||||
const columns: ProColumns[] = [
|
||||
{
|
||||
title: '编号',
|
||||
width: 80,
|
||||
customRender: function ({ index }) {
|
||||
return `${index + 1}`
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '客户名称',
|
||||
dataIndex: 'customName'
|
||||
},
|
||||
{
|
||||
title: '联系方式',
|
||||
dataIndex: 'customNid'
|
||||
},
|
||||
{
|
||||
title: '报名状态',
|
||||
dataIndex: 'enrollStatus',
|
||||
customRender: function ({ record }: any) {
|
||||
if (record.enrollStatus === 0) {
|
||||
return h('div', '待提交')
|
||||
} else if (record.enrollStatus === 1) {
|
||||
return h('div', '已报名')
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '录入日期',
|
||||
dataIndex: 'createTime',
|
||||
width: 230,
|
||||
align: 'center',
|
||||
customRender: function ({ record }: any) {
|
||||
if (record.createTime) {
|
||||
return record.createTime
|
||||
} else if (record.createTime === null) {
|
||||
return '--'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'operate',
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: 160,
|
||||
fixed: 'right'
|
||||
}
|
||||
]
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.geopoliticalCustomers-title {
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
//批量操作、更多操作
|
||||
.operationButtonArea {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.operationButton {
|
||||
background-color: #f4f4f5;
|
||||
border-radius: 5px;
|
||||
color: #909399;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.editable-row-operations a {
|
||||
margin-right: 8px;
|
||||
}
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,122 @@
|
||||
<template>
|
||||
<a-card :bordered="false" style="margin-bottom: 16px" :body-style="{ paddingBottom: 0 }">
|
||||
<a-form :model="formModel" :label-col="labelCol">
|
||||
<a-row :gutter="16">
|
||||
<!-- v-if="userInfoCurrent === 'ROLE_ADMIN'" -->
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="客户名称">
|
||||
<a-input v-model:value="formModel.customName" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!-- <a-col v-if="userInfoCurrent === 'ROLE_SALES_EXECUTIVE'" :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="坐席名称">
|
||||
<a-input v-model:value="formModel.customName" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col> -->
|
||||
<!-- <a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="坐席名称">
|
||||
<dict-select
|
||||
v-model:value="formModel.ip"
|
||||
dict-code="user_status"
|
||||
allow-clear
|
||||
placeholder="请选择"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col> -->
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="报名状态">
|
||||
<dict-select
|
||||
v-model:value="formModel.enrollStatus"
|
||||
dict-code="registration_status"
|
||||
allow-clear
|
||||
placeholder="请选择"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="联系方式">
|
||||
<a-input v-model:value="formModel.customNid" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="8" :md="12" :sm="24">
|
||||
<a-form-item label="填写时间">
|
||||
<a-range-picker
|
||||
v-model:value="searchTimeValue"
|
||||
show-time
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
style="width: 100%"
|
||||
:ranges="{
|
||||
Today: [dayjs().startOf('date'), dayjs()]
|
||||
}"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="24" :md="24" :sm="24">
|
||||
<search-actions :loading="props.loading" @search="search" @reset="reset" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Form } from 'ant-design-vue'
|
||||
import type { GeopoliticalCustomersSearch } from '@/api/geopoliticalCustomers/types'
|
||||
import dayjs from 'dayjs'
|
||||
import type { Dayjs } from 'dayjs'
|
||||
//获取当前账号角色
|
||||
import { useUserStore } from '@/stores/user-store'
|
||||
const { userInfo } = useUserStore()
|
||||
|
||||
const userInfoCurrent = ref<string | undefined>('')
|
||||
onMounted(() => {
|
||||
console.log(userInfo, 'userInfo?.permissions')
|
||||
// userInfoCurrent = userInfo?.roleCodes
|
||||
userInfoCurrent.value = userInfo?.roleCodes?.toLocaleString()
|
||||
})
|
||||
|
||||
const useForm = Form.useForm
|
||||
|
||||
// 表单 label 全局配置
|
||||
const labelCol = { md: { span: 6 } }
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
loading?: boolean
|
||||
}>(),
|
||||
{ loading: false }
|
||||
)
|
||||
|
||||
const emits = defineEmits<{
|
||||
(e: 'search', params: Record<string, any>): void
|
||||
}>()
|
||||
|
||||
const searchTimeValue = ref<[Dayjs, Dayjs]>()
|
||||
const formModel = reactive<GeopoliticalCustomersSearch>({
|
||||
customName: '',
|
||||
customNid: '',
|
||||
enrollStatus: undefined
|
||||
})
|
||||
|
||||
const { resetFields } = useForm(formModel)
|
||||
|
||||
const search = () => {
|
||||
const param = toRaw(formModel)
|
||||
if (searchTimeValue.value && searchTimeValue.value.length == 2) {
|
||||
param.startTime = searchTimeValue.value[0].format('YYYY-MM-DD HH:mm:ss')
|
||||
param.endTime = searchTimeValue.value[1].format('YYYY-MM-DD HH:mm:ss')
|
||||
} else {
|
||||
param.startTime = ''
|
||||
param.endTime = ''
|
||||
}
|
||||
emits('search', param)
|
||||
}
|
||||
|
||||
const reset = () => {
|
||||
// 清空表单其他元素
|
||||
resetFields()
|
||||
// 清空时间
|
||||
searchTimeValue.value = undefined
|
||||
search()
|
||||
}
|
||||
</script>
|
Loading…
Reference in New Issue