Просмотр исходного кода

✨ CRM:完善合同的审批逻辑

YunaiV 1 год назад
Родитель
Сommit
c1f507bcae

+ 12 - 0
src/router/modules/remaining.ts

@@ -539,6 +539,18 @@ const remainingRouter: AppRouteRecordRaw[] = [
         },
         component: () => import('@/views/crm/contract/detail/index.vue')
       },
+      {
+        path: 'contract/detail',
+        name: 'CrmContractDetail2', // 特殊:用于适配 BPM 打开详情
+        meta: {
+          title: '合同详情XXX',
+          noCache: true,
+          hidden: true,
+          canTo: true,
+          activeMenu: '/crm/contract'
+        },
+        component: () => import('@/views/crm/contract/detail/index.vue')
+      },
       {
         path: 'contact/detail/:id',
         name: 'CrmContactDetail',

+ 2 - 2
src/views/crm/contract/detail/ContractDetailsHeader.vue

@@ -24,7 +24,7 @@
         {{ erpPriceInputFormatter(contract.totalPrice) }}
       </el-descriptions-item>
       <el-descriptions-item label="下单时间">
-        {{ contract.orderDate ? formatDate(contract.orderDate) : '空' }}
+        {{ formatDate(contract.orderDate) }}
       </el-descriptions-item>
       <!-- TODO 芋艿:回款金额 -->
       <el-descriptions-item label="回款金额(元)"> 待实现 </el-descriptions-item>
@@ -37,7 +37,7 @@
 <script lang="ts" setup>
 import * as ContractApi from '@/api/crm/contract'
 import { formatDate } from '@/utils/formatTime'
-import { erpPriceInputFormatter, floatToFixed2 } from '@/utils'
+import { erpPriceInputFormatter } from '@/utils'
 
 defineOptions({ name: 'ContractDetailsHeader' })
 defineProps<{ contract: ContractApi.ContractVO }>()

+ 4 - 3
src/views/crm/contract/detail/index.vue

@@ -43,8 +43,8 @@
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { OperateLogV2VO } from '@/api/system/operatelog'
 import * as ContractApi from '@/api/crm/contract'
-import ContractDetailsHeader from './ContractDetailsHeader.vue'
 import ContractDetailsInfo from './ContractDetailsInfo.vue'
+import ContractDetailsHeader from './ContractDetailsHeader.vue'
 import ContractProductList from './ContractProductList.vue'
 import { BizTypeEnum } from '@/api/crm/permission'
 import { getOperateLogPage } from '@/api/crm/operateLog'
@@ -54,6 +54,7 @@ import PermissionList from '@/views/crm/permission/components/PermissionList.vue
 import FollowUpList from '@/views/crm/followup/index.vue'
 
 defineOptions({ name: 'CrmContractDetail' })
+const props = defineProps<{ id?: number }>()
 
 const route = useRoute()
 const message = useMessage()
@@ -72,8 +73,8 @@ const openForm = (type: string, id?: number) => {
 const getContractData = async () => {
   loading.value = true
   try {
-    await getOperateLog(contractId.value)
     contract.value = await ContractApi.getContract(contractId.value)
+    await getOperateLog(contractId.value)
   } finally {
     loading.value = false
   }
@@ -108,7 +109,7 @@ const close = () => {
 
 /** 初始化 */
 onMounted(async () => {
-  const id = route.params.id
+  const id = props.id || route.params.id
   if (!id) {
     message.warning('参数错误,合同不能为空!')
     close()

+ 16 - 1
src/views/crm/contract/index.vue

@@ -183,6 +183,7 @@
       <el-table-column fixed="right" label="操作" width="250">
         <template #default="scope">
           <el-button
+            v-if="scope.row.auditStatus === 0"
             v-hasPermi="['crm:contract:update']"
             link
             type="primary"
@@ -190,8 +191,8 @@
           >
             编辑
           </el-button>
-          <!-- TODO @puhui999:可以加下判断,什么情况下,可以审批;然后加个【查看审批】按钮 -->
           <el-button
+            v-if="scope.row.auditStatus === 0"
             v-hasPermi="['crm:contract:update']"
             link
             type="primary"
@@ -199,6 +200,15 @@
           >
             提交审核
           </el-button>
+          <el-button
+            v-else
+            link
+            v-hasPermi="['crm:contract:update']"
+            type="primary"
+            @click="handleProcessDetail(scope.row)"
+          >
+            查看审批
+          </el-button>
           <el-button
             v-hasPermi="['crm:contract:query']"
             link
@@ -328,6 +338,11 @@ const handleSubmit = async (row: ContractApi.ContractVO) => {
   await getList()
 }
 
+/** 查看审批 */
+const handleProcessDetail = (row: ContractApi.ContractVO) => {
+  push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
+}
+
 /** 打开合同详情 */
 const { push } = useRouter()
 const openDetail = (id: number) => {