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