diff --git a/src/api/crm/customer/index.ts b/src/api/crm/customer/index.ts index 4542c86a..eb3445cf 100644 --- a/src/api/crm/customer/index.ts +++ b/src/api/crm/customer/index.ts @@ -100,3 +100,8 @@ export const receiveCustomer = async (ids: any[]) => { export const putCustomerPool = async (id: number) => { return await request.put({ url: `/crm/customer/put-pool?id=${id}` }) } + +// 进入公海客户提醒 +export const getPutInPoolRemindCustomerPage = async (params) => { + return await request.get({ url: `/crm/customer/put-in-pool-remind-page`, params }) +} diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue index e8b03a93..5d349ce3 100644 --- a/src/views/Login/Login.vue +++ b/src/views/Login/Login.vue @@ -1,7 +1,7 @@ <template> <div :class="prefixCls" - class="relative h-[100%] lt-xl:px-10px lt-md:px-10px lt-sm:px-10px lt-xl:px-10px" + class="relative h-[100%] lt-md:px-10px lt-sm:px-10px lt-xl:px-10px lt-xl:px-10px" > <div class="relative mx-auto h-full flex"> <div diff --git a/src/views/crm/backlog/index.vue b/src/views/crm/backlog/index.vue index bbaf3f16..bc20c425 100644 --- a/src/views/crm/backlog/index.vue +++ b/src/views/crm/backlog/index.vue @@ -1,3 +1,4 @@ +<!-- TODO @dhb52: 存在很多重复的 table 定义,如Customer: TodayCustomer,FollowCustomer,PutInPoolRemind --> <template> <el-row :gutter="20"> <el-col :span="4" class="min-w-[200px]"> @@ -71,7 +72,6 @@ const leftSides = ref([ }, { name: '待审核回款', - crmType: 'receivables', infoType: 'checkReceivables', msgCount: 0, tips: '' diff --git a/src/views/crm/backlog/tables/PutInPoolRemind.vue b/src/views/crm/backlog/tables/PutInPoolRemind.vue index bb9b17a5..bc99a885 100644 --- a/src/views/crm/backlog/tables/PutInPoolRemind.vue +++ b/src/views/crm/backlog/tables/PutInPoolRemind.vue @@ -1,15 +1,155 @@ <!-- 待进入公海的客户 --> -<!-- TODO: 后续再统一改名字 --> <template> - <div> - TODO: 待进入公海的客户 - </div> + <ContentWrap> + <div class="pb-5 text-xl"> 待进入公海的客户 </div> + <!-- 搜索工作栏 --> + <el-form + ref="queryFormRef" + :inline="true" + :model="queryParams" + class="-mb-15px" + label-width="68px" + > + <el-form-item label="归属" prop="sceneType"> + <el-select + v-model="queryParams.sceneType" + class="!w-240px" + placeholder="归属" + @change="handleQuery" + > + <el-option + v-for="(option, index) in SCENE_TYPES" + :label="option.label" + :value="option.value" + :key="index" + /> + </el-select> + </el-form-item> + </el-form> + </ContentWrap> + <ContentWrap> + <el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true"> + <el-table-column align="center" label="编号" prop="id" /> + <el-table-column align="center" label="客户名称" prop="name" width="160"> + <template #default="scope"> + <el-link :underline="false" type="primary" @click="openDetail(scope.row.id)"> + {{ scope.row.name }} + </el-link> + </template> + </el-table-column> + <el-table-column align="center" label="手机" prop="mobile" width="120" /> + <el-table-column align="center" label="电话" prop="telephone" width="120" /> + <el-table-column align="center" label="客户来源" prop="source" width="100"> + <template #default="scope"> + <dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" /> + </template> + </el-table-column> + <el-table-column align="center" label="所属行业" prop="industryId" width="120"> + <template #default="scope"> + <dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industryId" /> + </template> + </el-table-column> + <el-table-column align="center" label="客户等级" prop="level" width="120"> + <template #default="scope"> + <dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" /> + </template> + </el-table-column> + <el-table-column align="center" label="网址" prop="website" width="200" /> + <el-table-column + :formatter="dateFormatter" + align="center" + label="下次联系时间" + prop="contactNextTime" + width="180px" + /> + <el-table-column align="center" label="备注" prop="remark" width="200" /> + <el-table-column align="center" label="成交状态" prop="dealStatus"> + <template #default="scope"> + <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.dealStatus" /> + </template> + </el-table-column> + <el-table-column align="center" label="距进入公海天数" prop="poolDay" width="100px" /> + <el-table-column + :formatter="dateFormatter" + align="center" + label="最后跟进时间" + prop="contactLastTime" + width="180px" + /> + <el-table-column + :formatter="dateFormatter" + align="center" + label="创建时间" + prop="updateTime" + width="180px" + /> + <el-table-column + :formatter="dateFormatter" + align="center" + label="创建时间" + prop="createTime" + width="180px" + /> + <el-table-column align="center" label="负责人" prop="ownerUserName" width="100px" /> + <el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" /> + <el-table-column align="center" label="创建人" prop="creatorName" width="100px" /> + </el-table> + <!-- 分页 --> + <Pagination + v-model:limit="queryParams.pageSize" + v-model:page="queryParams.pageNo" + :total="total" + @pagination="getList" + /> + </ContentWrap> </template> -<script setup lang="ts" name="PutInPoolRemind"> +<script lang="ts" setup name="PutInPoolRemind"> +import * as CustomerApi from '@/api/crm/customer' +import { DICT_TYPE } from '@/utils/dict' +import { dateFormatter } from '@/utils/formatTime' +import { SCENE_TYPES } from './common' +const { push } = useRouter() + +const loading = ref(true) // 列表的加载中 +const total = ref(0) // 列表的总页数 +const list = ref([]) // 列表的数据 +const queryParams = ref({ + pageNo: 1, + pageSize: 10, + sceneType: 1, // 我负责的 + pool: true, // 固定 公海参数为 true +}) +const queryFormRef = ref() // 搜索的表单 + +/** 查询列表 */ +const getList = async () => { + loading.value = true + try { + const data = await CustomerApi.getPutInPoolRemindCustomerPage(queryParams.value) + list.value = data.list + total.value = data.total + } finally { + loading.value = false + } +} + +/** 搜索按钮操作 */ +const handleQuery = () => { + queryParams.value.pageNo = 1 + getList() +} + +/** 打开客户详情 */ +const openDetail = (id: number) => { + push({ name: 'CrmCustomerDetail', params: { id } }) +} + +/** 初始化 **/ +onMounted(() => { + getList() +}) </script> -<style scoped> - -</style> +<style lang="scss"></style>