Merge remote-tracking branch 'origin/master'
commit
00ebfe482e
|
|
@ -4,7 +4,7 @@ NODE_ENV=development
|
||||||
VITE_DEV=true
|
VITE_DEV=true
|
||||||
|
|
||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://172.22.3.168:48080'
|
VITE_BASE_URL='http://8.130.12.151:48080'
|
||||||
|
|
||||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
||||||
VITE_UPLOAD_TYPE=server
|
VITE_UPLOAD_TYPE=server
|
||||||
|
|
|
||||||
|
|
@ -1,54 +1,48 @@
|
||||||
<!-- 合同详情页面组件-->
|
<!-- 合同详情页面组件-->
|
||||||
<template>
|
<template>
|
||||||
<ContractDetailsHeader v-loading="loading" :contract="contract">
|
<ContentWrap class="mt-10px">
|
||||||
<el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', contract.id)">
|
<el-col>
|
||||||
编辑
|
<el-tabs>
|
||||||
</el-button>
|
<el-tab-pane label="跟进记录">
|
||||||
<el-button v-if="permissionListRef?.validateOwnerUser" type="primary" @click="transferContract">
|
<FollowUpList :biz-id="contract.id" :type="1" :biz-type="BizTypeEnum.CRM_CONTRACT" />
|
||||||
转移
|
</el-tab-pane>
|
||||||
</el-button>
|
<el-tab-pane label="基本信息">
|
||||||
</ContractDetailsHeader>
|
<ContractDetailsInfo :contract="contract" />
|
||||||
<el-col>
|
</el-tab-pane>
|
||||||
<el-tabs>
|
<el-tab-pane label="产品">
|
||||||
<el-tab-pane label="跟进记录">
|
<ContractProductList :contract="contract" />
|
||||||
<FollowUpList :biz-id="contract.id" :biz-type="BizTypeEnum.CRM_CONTRACT" />
|
</el-tab-pane>
|
||||||
</el-tab-pane>
|
<el-tab-pane label="回款">
|
||||||
<el-tab-pane label="基本信息">
|
<ReceivablePlanList
|
||||||
<ContractDetailsInfo :contract="contract" />
|
:type="1"
|
||||||
</el-tab-pane>
|
:contract-id="contract.id!"
|
||||||
<el-tab-pane label="产品">
|
:customer-id="contract.customerId"
|
||||||
<ContractProductList :contract="contract" />
|
@create-receivable="createReceivable"
|
||||||
</el-tab-pane>
|
/>
|
||||||
<el-tab-pane label="回款">
|
<ReceivableList
|
||||||
<ReceivablePlanList
|
ref="receivableListRef"
|
||||||
:contract-id="contract.id!"
|
:type="1"
|
||||||
:customer-id="contract.customerId"
|
:contract-id="contract.id!"
|
||||||
@create-receivable="createReceivable"
|
:customer-id="contract.customerId"
|
||||||
/>
|
/>
|
||||||
<ReceivableList
|
</el-tab-pane>
|
||||||
ref="receivableListRef"
|
<el-tab-pane label="团队成员">
|
||||||
:contract-id="contract.id!"
|
<PermissionList
|
||||||
:customer-id="contract.customerId"
|
ref="permissionListRef"
|
||||||
/>
|
:type="1"
|
||||||
</el-tab-pane>
|
:biz-id="contract.id!"
|
||||||
<el-tab-pane label="团队成员">
|
:biz-type="BizTypeEnum.CRM_CONTRACT"
|
||||||
<PermissionList
|
:show-action="true"
|
||||||
ref="permissionListRef"
|
@quit-team="close"
|
||||||
:biz-id="contract.id!"
|
/>
|
||||||
:biz-type="BizTypeEnum.CRM_CONTRACT"
|
</el-tab-pane>
|
||||||
:show-action="true"
|
<el-tab-pane label="操作日志">
|
||||||
@quit-team="close"
|
<OperateLogV2 :log-list="logList" />
|
||||||
/>
|
</el-tab-pane>
|
||||||
</el-tab-pane>
|
</el-tabs>
|
||||||
<el-tab-pane label="操作日志">
|
</el-col>
|
||||||
<OperateLogV2 :log-list="logList" />
|
</ContentWrap>
|
||||||
</el-tab-pane>
|
|
||||||
</el-tabs>
|
|
||||||
</el-col>
|
|
||||||
|
|
||||||
<!-- 表单弹窗:添加/修改 -->
|
|
||||||
<ContractForm ref="formRef" @success="getContractData" />
|
|
||||||
<CrmTransferForm ref="transferFormRef" :biz-type="BizTypeEnum.CRM_CONTRACT" @success="close" />
|
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||||||
|
|
@ -59,8 +53,6 @@ import ContractDetailsHeader from './ContractDetailsHeader.vue'
|
||||||
import ContractProductList from './ContractProductList.vue'
|
import ContractProductList from './ContractProductList.vue'
|
||||||
import { BizTypeEnum } from '@/api/crm/permission'
|
import { BizTypeEnum } from '@/api/crm/permission'
|
||||||
import { getOperateLogPage } from '@/api/crm/operateLog'
|
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 PermissionList from '@/views/crm/permission/components/PermissionList.vue'
|
||||||
import FollowUpList from '@/views/crm/followup/index.vue'
|
import FollowUpList from '@/views/crm/followup/index.vue'
|
||||||
import ReceivableList from '@/views/crm/receivable/components/ReceivableList.vue'
|
import ReceivableList from '@/views/crm/receivable/components/ReceivableList.vue'
|
||||||
|
|
@ -89,6 +81,7 @@ const openForm = (type: string, id?: number) => {
|
||||||
const getContractData = async () => {
|
const getContractData = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
console.log('%csrc/views/crm/contract/detail/index.vue:92 234', 'color: #007acc;', contractId.value,234);
|
||||||
contract.value = await ContractApi.getContract(contractId.value)
|
contract.value = await ContractApi.getContract(contractId.value)
|
||||||
await getOperateLog(contractId.value)
|
await getOperateLog(contractId.value)
|
||||||
} finally {
|
} finally {
|
||||||
|
|
@ -130,6 +123,7 @@ const close = () => {
|
||||||
|
|
||||||
/** 初始化 */
|
/** 初始化 */
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
console.log('%csrc/views/crm/contract/detail/index.vue:134 props.id', 'color: #007acc;', props.id);
|
||||||
const id = props.id || route.query.id
|
const id = props.id || route.query.id
|
||||||
if (!id) {
|
if (!id) {
|
||||||
message.warning('参数错误,合同不能为空!')
|
message.warning('参数错误,合同不能为空!')
|
||||||
|
|
|
||||||
|
|
@ -389,7 +389,7 @@ const handleProcessDetail = (row) => {
|
||||||
|
|
||||||
/** 打开合同详情 */
|
/** 打开合同详情 */
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
const openDetail = (row) => {
|
const openDetail = (row: Object) => {
|
||||||
router.push({ name: 'CrmContractDetail', query: { id: row.id } })
|
router.push({ name: 'CrmContractDetail', query: { id: row.id } })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<!-- 某个记录的跟进记录列表,目前主要用于 CRM 客户、商机等详情界面 -->
|
<!-- 某个记录的跟进记录列表,目前主要用于 CRM 客户、商机等详情界面 -->
|
||||||
<template>
|
<template>
|
||||||
<!-- 操作栏 -->
|
<!-- 操作栏 -->
|
||||||
<el-row class="mb-10px" justify="end">
|
<el-row class="mb-10px" justify="end" v-if="!type">
|
||||||
<el-button @click="openForm">
|
<el-button @click="openForm">
|
||||||
<Icon class="mr-5px" icon="ep:edit" />
|
<Icon class="mr-5px" icon="ep:edit" />
|
||||||
写跟进
|
写跟进
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
</el-link>
|
</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="操作">
|
<el-table-column align="center" label="操作" v-if="!type">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button>
|
<el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -99,7 +99,8 @@ import { BizTypeEnum } from '@/api/crm/permission'
|
||||||
defineOptions({ name: 'FollowUpRecord' })
|
defineOptions({ name: 'FollowUpRecord' })
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
bizType: number
|
bizType: number
|
||||||
bizId: number
|
bizId: number,
|
||||||
|
type: number
|
||||||
}>()
|
}>()
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- 操作栏 -->
|
<!-- 操作栏 -->
|
||||||
<el-row v-if="showAction" justify="end">
|
<el-row v-if="showAction && !type" justify="end">
|
||||||
<el-button v-if="validateOwnerUser" type="primary" @click="openForm">
|
<el-button v-if="validateOwnerUser" type="primary" @click="openForm">
|
||||||
<Icon class="mr-5px" icon="ep:plus" />
|
<Icon class="mr-5px" icon="ep:plus" />
|
||||||
新增
|
新增
|
||||||
|
|
@ -57,7 +57,8 @@ const message = useMessage() // 消息
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
bizType: number // 模块类型
|
bizType: number // 模块类型
|
||||||
bizId: number | undefined // 模块数据编号
|
bizId: number | undefined // 模块数据编号
|
||||||
showAction: boolean //是否展示操作按钮
|
showAction: boolean, //是否展示操作按钮
|
||||||
|
type: number
|
||||||
}>()
|
}>()
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const list = ref<PermissionApi.PermissionVO[]>([]) // 列表的数据
|
const list = ref<PermissionApi.PermissionVO[]>([]) // 列表的数据
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- 操作栏 -->
|
<!-- 操作栏 -->
|
||||||
<el-row justify="end">
|
<el-row justify="end" v-if="!type">
|
||||||
<el-button @click="openForm('create')">
|
<el-button @click="openForm('create')">
|
||||||
<Icon class="mr-5px" icon="icon-park:income-one" />
|
<Icon class="mr-5px" icon="icon-park:income-one" />
|
||||||
创建回款
|
创建回款
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="负责人" prop="ownerUserName" />
|
<el-table-column align="center" label="负责人" prop="ownerUserName" />
|
||||||
<el-table-column align="center" label="备注" prop="remark" />
|
<el-table-column align="center" label="备注" prop="remark" />
|
||||||
<el-table-column align="center" fixed="right" label="操作" width="130px">
|
<el-table-column align="center" fixed="right" label="操作" width="130px" v-if="!type">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['crm:receivable:update']"
|
v-hasPermi="['crm:receivable:update']"
|
||||||
|
|
@ -78,6 +78,7 @@ defineOptions({ name: 'CrmReceivableList' })
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
customerId?: number // 客户编号
|
customerId?: number // 客户编号
|
||||||
contractId?: number // 合同编号
|
contractId?: number // 合同编号
|
||||||
|
type: number
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- 操作栏 -->
|
<!-- 操作栏 -->
|
||||||
<el-row justify="end">
|
<el-row justify="end" v-if="!type">
|
||||||
<el-button @click="openForm('create', undefined)">
|
<el-button @click="openForm('create', undefined)">
|
||||||
<Icon class="mr-5px" icon="icon-park:income" />
|
<Icon class="mr-5px" icon="icon-park:income" />
|
||||||
创建回款计划
|
创建回款计划
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column label="负责人" prop="ownerUserName" width="120" />
|
<el-table-column label="负责人" prop="ownerUserName" width="120" />
|
||||||
<el-table-column align="center" label="备注" prop="remark" />
|
<el-table-column align="center" label="备注" prop="remark" />
|
||||||
<el-table-column align="center" fixed="right" label="操作" width="200px">
|
<el-table-column align="center" fixed="right" label="操作" width="200px" v-if="!type">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['crm:receivable:create']"
|
v-hasPermi="['crm:receivable:create']"
|
||||||
|
|
@ -89,6 +89,8 @@ defineOptions({ name: 'CrmReceivablePlanList' })
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
customerId?: number // 客户编号
|
customerId?: number // 客户编号
|
||||||
contractId?: number // 合同编号
|
contractId?: number // 合同编号
|
||||||
|
type: number
|
||||||
|
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue