This commit is contained in:
weiz 2024-03-19 14:18:28 +08:00
parent 2826bb2660
commit c2258af77e
7 changed files with 94 additions and 117 deletions

View File

@ -2,23 +2,27 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="竞争对手名称" prop="competitor_name">
<el-input class="w-[280px]" v-model="queryParams.competitor_name" clearable placeholder="请输入竞争对手名称" />
<el-input class="w-[280px]" v-model="queryParams.competitor_name" clearable
placeholder="请输入竞争对手名称" />
</el-form-item>
<el-form-item label="竞争对手联系人" prop="competitor_contacts">
<el-input class="w-[280px]" v-model="queryParams.competitor_contacts" clearable placeholder="请输入竞争对手联系人" />
<el-input class="w-[280px]" v-model="queryParams.competitor_contacts" clearable
placeholder="请输入竞争对手联系人" />
</el-form-item>
<el-form-item label="联系人电话" prop="competitor_contacts_phone">
<el-input class="w-[280px]" v-model="queryParams.competitor_contacts_phone" clearable placeholder="请输入联系人电话" />
<el-input class="w-[280px]" v-model="queryParams.competitor_contacts_phone" clearable
placeholder="请输入联系人电话" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="需求名称" prop="customer_demand_name">
<el-input class="w-[280px]" v-model="queryParams.customer_demand_name" clearable placeholder="请输入需求名称" />
<el-input class="w-[280px]" v-model="queryParams.customer_demand_name" clearable
placeholder="请输入需求名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
@ -33,7 +37,8 @@
</template>
新增
</el-button>
<el-button v-perms="['project.competitor/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
<el-button v-perms="['project.competitor/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
</el-button>
<div class="mt-4">
@ -49,10 +54,12 @@
<el-table-column label="竞争能力" prop="competitive_power" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project.competitor/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['project.competitor/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project.competitor/delete']" type="danger" link @click="handleDelete(row.id)">
<el-button v-perms="['project.competitor/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['project.competitor/detail']" link @click="handledetail(row)">
@ -76,7 +83,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiCompetitorLists, apiCompetitorDelete, apiCompetitorDetail } from '@/api/competitor'
import { timeFormat } from '@/utils/util'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
@ -147,4 +154,3 @@ const handledetail = async (data: any) => {
}
getLists()
</script>

View File

@ -2,7 +2,12 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" label-width="auto" inline>
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[250px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="需求主题" prop="theme">
<el-input class="w-[250px]" v-model="queryParams.theme" clearable placeholder="请输入需求主题" />
</el-form-item>
@ -10,27 +15,18 @@
<el-input class="w-[250px]" v-model="queryParams.supplier" clearable placeholder="请输入需求提供人" />
</el-form-item>
<el-form-item label="提供人联系方式" prop="supplier_contacts">
<el-input class="w-[250px]" v-model="queryParams.supplier_contacts" clearable placeholder="请输入提供人联系方式" />
</el-form-item>
<el-form-item label="组织名称" prop="org_name">
<el-input class="w-[250px]" v-model="queryParams.org_name" clearable placeholder="请输入组织名称" />
</el-form-item>
<el-form-item label="部门名称" prop="dept_name">
<el-input class="w-[250px]" v-model="queryParams.dept_name" clearable placeholder="请输入部门名称" />
</el-form-item>
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[250px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[250px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
<el-input class="w-[250px]" v-model="queryParams.supplier_contacts" clearable
placeholder="请输入提供人联系方式" />
</el-form-item>
<el-form-item label="记录时间" prop="recording_time">
<el-date-picker class="w-[250px]" v-model="queryParams.recording_time" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择记录时间">
<el-date-picker class="w-[250px]" v-model="queryParams.recording_time" clearable type="date"
value-format="YYYY-MM-DD" placeholder="选择记录时间">
</el-date-picker>
</el-form-item>
<el-form-item label="重要程度" prop="importance">
<el-select class="w-[250px]" v-model="queryParams.importance" clearable placeholder="请选择发票类型">
<el-option v-for="(item, index) in dictData.importance" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in dictData.importance" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item>
@ -47,7 +43,8 @@
</template>
新增
</el-button>
<el-button v-perms="['custom/demand.customer_demand/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
<el-button v-perms="['custom/demand.customer_demand/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
</el-button>
<div class="mt-4">
@ -70,13 +67,16 @@
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['custom/demand.customer_demand/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['custom/demand.customer_demand/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['custom/demand.customer_demand/delete']" type="danger" link @click="handleDelete(row.id)">
<el-button v-perms="['custom/demand.customer_demand/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['custom/demand.customer_demand/detail']" link @click="handledetail(row)">
<el-button v-perms="['custom/demand.customer_demand/detail']" link
@click="handledetail(row)">
详情
</el-button>
</template>
@ -96,8 +96,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiCustomerDemandLists, apiCustomerDemandDelete, apiCustomerDemandDetail } from '@/api/customer_demand'
import { timeFormat } from '@/utils/util'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
@ -114,9 +113,7 @@ const queryParams = reactive({
theme: '',
supplier: '',
supplier_contacts: '',
org_name: '',
dept_name: '',
project_name: '',
project_id: '',
custom_name: '',
importance: '',
recording_time: '',
@ -173,4 +170,3 @@ const handledetail = async (data: any) => {
getLists()
</script>

View File

@ -2,19 +2,19 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="解决方案主题" prop="theme">
<el-input class="w-[250px]" v-model="queryParams.theme" clearable placeholder="请输入解决方案主题" />
</el-form-item>
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[250px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[250px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="客户需求主题" prop="customer_demand_name">
<el-form-item label="需求主题" prop="customer_demand_name">
<el-input class="w-[250px]" v-model="queryParams.customer_demand_name" clearable
placeholder="请输入客户需求主题" />
</el-form-item>
<el-form-item label="方案主题" prop="theme">
<el-input class="w-[250px]" v-model="queryParams.theme" clearable placeholder="请输入解决方案主题" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
@ -36,7 +36,6 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
<el-table-column label="需求名称" prop="customer_demand_name" show-overflow-tooltip />
@ -66,7 +65,8 @@
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['custom.customer_demand_solution/detail']" link @click="handledetail(row)">
<el-button v-perms="['custom.customer_demand_solution/detail']" link
@click="handledetail(row)">
详情
</el-button>
</template>
@ -86,7 +86,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiCustomerDemandSolutionLists, apiCustomerDemandSolutionDelete, apiCustomerDemandSolutionDetail } from '@/api/customer_demand_solution'
import { timeFormat } from '@/utils/util'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'

View File

@ -3,9 +3,8 @@
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
<el-form-item label="关联客户" prop="custom_id">
<selectRemote :formData="queryParams" model="custom_id" :api="apiCustomSearch" />
</el-form-item>
<el-form-item label="项目编码" prop="project_code">
<el-input class="w-[280px]" v-model="queryParams.project_code" clearable placeholder="请输入项目编码" />
@ -123,6 +122,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectLists, apiProjectDelete, apiProjectDetail } from '@/api/project'
import { apiCustomSearch } from '@/api/custom'
import { getAllProjectTypes } from '@/api/projecttype'
const protype = reactive([])
import feedback from '@/utils/feedback'
@ -141,8 +141,7 @@ const showDtail = ref(false)
//
const queryParams = reactive({
custom_name: '',
custom_id: '',
project_type: '',
project_code: '',
name: '',

View File

@ -2,25 +2,28 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" label-width="auto" inline>
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="概算来源" prop="estimate_source">
<el-select class="w-[280px]" v-model="queryParams.estimate_source" clearable placeholder="请选择概算来源">
<el-option v-for="(item, index) in dictData.estimate_source" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in dictData.estimate_source" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="发票类型" prop="invoice_type">
<el-select class="w-[280px]" v-model="queryParams.invoice_type" clearable placeholder="请选择发票类型">
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name" :value="item.value" />
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="客户需求名称" prop="customer_demand_name">
<el-input class="w-[280px]" v-model="queryParams.customer_demand_name" clearable placeholder="请输入客户需求名称" />
<el-form-item label="需求名称" prop="customer_demand_name">
<el-input class="w-[280px]" v-model="queryParams.customer_demand_name" clearable
placeholder="请输入客户需求名称" />
</el-form-item>
<el-form-item label="联系人" prop="contact_name">
<el-input class="w-[280px]" v-model="queryParams.contact_name" clearable placeholder="请输入联系人" />
@ -48,7 +51,8 @@
</template>
新增
</el-button>
<el-button v-perms="['project.project_estimate/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
<el-button v-perms="['project.project_estimate/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
</el-button>
<div class="mt-4">
@ -75,10 +79,12 @@
<el-table-column label="概算金额" prop="estimate_amount" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project.project_estimate/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['project.project_estimate/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project.project_estimate/delete']" type="danger" link @click="handleDelete(row.id)">
<el-button v-perms="['project.project_estimate/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['project.project_estimate/detail']" link @click="handledetail(row)">
@ -101,7 +107,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectEstimateLists, apiProjectEstimateDelete, apiProjectEstimateDetail } from '@/api/project_estimate'
import { timeFormat } from '@/utils/util'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'

View File

@ -2,7 +2,9 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
@ -13,15 +15,14 @@
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="项目把握度" prop="project_assurance">
<el-select v-model="queryParams.project_assurance" class="w-[280px]" clearable placeholder="请选择项目把握度">
<el-select v-model="queryParams.project_assurance" class="w-[280px]" clearable
placeholder="请选择项目把握度">
<el-option v-for="(item, index) in dictData.project_assurance" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="跟进状态" prop="follow_status">
<el-select v-model="queryParams.follow_status" class="w-[280px]" clearable placeholder="请选择跟进状态">
@ -29,17 +30,12 @@
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="跟进阶段" prop="follow_stage">
<el-select v-model="queryParams.follow_stage" class="w-[280px]" clearable placeholder="请输入跟进阶段">
<el-option v-for="(item, index) in dictData.follow_stage" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="主题" prop="theme">
<el-input v-model="queryParams.theme" class="w-[280px]" clearable placeholder="请输入主题" />
</el-form-item>
@ -47,29 +43,16 @@
<el-input class="w-[280px]" v-model="queryParams.contacts" clearable placeholder="请输入联系人" />
</el-form-item>
<el-form-item label="联系方式" prop="contact_information">
<el-input class="w-[280px]" v-model="queryParams.contact_information" clearable placeholder="请输入联系方式" />
<el-input class="w-[280px]" v-model="queryParams.contact_information" clearable
placeholder="请输入联系方式" />
</el-form-item>
<el-form-item label="执行人" prop="executor">
<el-input class="w-[280px]" v-model="queryParams.executor" clearable placeholder="请输入执行人" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
@ -89,9 +72,7 @@
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="客户名称" prop="custom_name" show-overflow-tooltip />
<el-table-column label="执行人" prop="executor" show-overflow-tooltip />
<el-table-column label="日期" prop="follow_date">
<template #default="{ row }">
<span>{{ row.follow_date ? row.follow_date : '' }}</span>
@ -103,9 +84,7 @@
</template>
</el-table-column>
<el-table-column label="主题" prop="theme" show-overflow-tooltip />
<el-table-column label="项目把握度" prop="project_assurance_text">
</el-table-column>
<el-table-column label="状态" prop="follow_status">
<template #default="{ row }">
@ -117,13 +96,10 @@
<dict-value :options="dictData.follow_stage" :value="row.follow_stage" />
</template>
</el-table-column>
<!-- <el-table-column label="备注" prop="notes" show-overflow-tooltip /> -->
<el-table-column label="下次回访日期" prop="next_follow_up_date">
<template #default="{ row }">
<span>{{ row.next_follow_up_date ? row.next_follow_up_date :
'' }}</span>
'' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="160" fixed="right">
@ -151,12 +127,11 @@
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
</div>
</template>
<script lang="ts" setup name="projectFollowUpLists">
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectFollowUpLists, apiProjectFollowUpDelete, apiProjectFollowUpDetail } from '@/api/project_follow_up'
import { timeFormat } from '@/utils/util'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
@ -167,9 +142,9 @@ const showEdit = ref(false)
const showDtail = ref(false)
//
const queryParams = reactive({
project_id: '',
executor: '',
contacts: '',
contact_information: '',
@ -181,7 +156,6 @@ const queryParams = reactive({
project_assurance: '',
follow_status: '',
follow_stage: '',
})
//
@ -233,4 +207,3 @@ const handledetail = async (data: any) => {
}
getLists()
</script>

View File

@ -2,13 +2,9 @@
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
<el-form-item label="项目名称" prop="project_name">
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
<el-form-item label="所属项目" prop="project_id">
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
</el-form-item>
<el-form-item label="客户名称" prop="custom_name">
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
@ -22,7 +18,8 @@
</template>
新增
</el-button>
<el-button v-perms="['project.project_pre_sales_members/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
<el-button v-perms="['project.project_pre_sales_members/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
</el-button>
<div class="mt-4">
@ -36,13 +33,16 @@
<el-table-column label="添加人" prop="add_user" show-overflow-tooltip />
<el-table-column label="操作" width="160" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project.project_pre_sales_members/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['project.project_pre_sales_members/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project.project_pre_sales_members/delete']" type="danger" link @click="handleDelete(row.id)">
<el-button v-perms="['project.project_pre_sales_members/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['project.project_pre_sales_members/detail']" link @click="handleDetail(row)">
<el-button v-perms="['project.project_pre_sales_members/detail']" link
@click="handleDetail(row)">
详情
</el-button>
</template>
@ -62,7 +62,7 @@
import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions'
import { apiProjectPreSalesMembersLists, apiProjectPreSalesMembersDelete, apiProjectPreSalesMembersDetail } from '@/api/project_pre_sales_members'
import { timeFormat } from '@/utils/util'
import { apiProjectSearch } from '@/api/project'
import feedback from '@/utils/feedback'
import EditPopup from './edit.vue'
import DetailPopup from './detail.vue'
@ -76,9 +76,7 @@ const showDtail = ref(false)
//
const queryParams = reactive({
project_name: '',
custom_name: '',
project_id: '',
})
//
@ -135,4 +133,3 @@ const handleDetail = async (data: any) => {
}
getLists()
</script>