diff --git a/src/api/crm/contract/index.ts b/src/api/crm/contract/index.ts
index a25d7c403..017567137 100644
--- a/src/api/crm/contract/index.ts
+++ b/src/api/crm/contract/index.ts
@@ -125,6 +125,11 @@ export const getRemindContractCount = async () => {
return await request.get({ url: '/crm/contract/remind-count' })
}
+// 合作主主体
+export const getOrg = async (params) => {
+ return await request.get({ url: '/system/organizations/page', params })
+}
+
// ==================== 子表(CRM 合同产品关联) ====================
// 获得CRM 合同产品关联列表
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index a9413a9b0..a5b12161e 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -557,11 +557,12 @@ const remainingRouter: AppRouteRecordRaw[] = [
component: () => import('@/views/crm/billtemplate/BillTemplateForm.vue')
},
{
- path: 'business/quotationAdd',
+ path: 'quotation/QuotationForm',
name: 'QuotationAdd',
meta: {
title: '方案报价新增',
noCache: true,
+ canTo: true,
hidden: true,
activeMenu: '/crm/quotation'
},
@@ -579,11 +580,12 @@ const remainingRouter: AppRouteRecordRaw[] = [
component: () => import('@/views/crm/quotation/QuotationForm.vue')
},
{
- path: 'business/quotationDetail',
+ path: 'quotation/quotationDetail',
name: 'QuotationDetail',
meta: {
title: '方案报价详情',
noCache: true,
+ canTo: true,
hidden: true,
activeMenu: '/crm/quotation'
},
@@ -645,11 +647,12 @@ const remainingRouter: AppRouteRecordRaw[] = [
component: () => import('@/views/crm/contract/ContractChange.vue')
},
{
- path: 'contract/detail/:id',
+ path: 'contract/detail/index',
name: 'CrmContractDetail',
meta: {
title: '合同详情',
noCache: true,
+ canTo: true,
hidden: true,
activeMenu: '/crm/contract'
},
diff --git a/src/views/crm/contract/ContractForm.vue b/src/views/crm/contract/ContractForm.vue
index 683f1d0a0..15f165072 100644
--- a/src/views/crm/contract/ContractForm.vue
+++ b/src/views/crm/contract/ContractForm.vue
@@ -8,16 +8,17 @@
label-width="120px"
>
-
-
-
-
-
+
+
+
+
+
+
@@ -264,7 +265,7 @@
([]) // 用户列表
const customerList = ref([]) // 客户列表的数据
const quotationList = ref([])
const contactList = ref([])
+const orgList = ref([])
/** 子表的表单 */
const subTabsName = ref('product')
@@ -626,7 +631,7 @@ const getContactOptions = computed(() =>
const route = useRoute();
onMounted(async () => {
- formType.value = route.query.id;
+ formType.value = props.id || route.query.id
if (formType.value) open(formType.value)
@@ -643,5 +648,10 @@ onMounted(async () => {
// }
// 获取联系人
contactList.value = await ContactApi.getSimpleContactList()
+ const data = await ContractApi.getOrg({
+ pageNo: 1,
+ pageSize: 1000
+ })
+ orgList.value = data.list
});
diff --git a/src/views/crm/contract/detail/index.vue b/src/views/crm/contract/detail/index.vue
index 9d5e14ca4..375c3d095 100644
--- a/src/views/crm/contract/detail/index.vue
+++ b/src/views/crm/contract/detail/index.vue
@@ -65,9 +65,10 @@ 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'
import ReceivablePlanList from '@/views/crm/receivable/plan/components/ReceivablePlanList.vue'
+import { propTypes } from '@/utils/propTypes'
defineOptions({ name: 'CrmContractDetail' })
-const props = defineProps<{ id?: number }>()
+
const route = useRoute()
const message = useMessage()
@@ -75,7 +76,9 @@ const contractId = ref(0) // 编号
const loading = ref(true) // 加载中
const contract = ref({} as ContractApi.ContractVO) // 详情
const permissionListRef = ref>() // 团队成员列表 Ref
-
+const props = defineProps({
+ id: propTypes.number.def(undefined)
+})
/** 编辑 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
@@ -127,7 +130,7 @@ const close = () => {
/** 初始化 */
onMounted(async () => {
- const id = props.id || route.params.id
+ const id = props.id || route.query.id
if (!id) {
message.warning('参数错误,合同不能为空!')
close()
diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue
index 5eb04fb96..99910139a 100644
--- a/src/views/crm/contract/index.vue
+++ b/src/views/crm/contract/index.vue
@@ -82,7 +82,7 @@
-
+
{{ scope.row.name }}
@@ -229,17 +229,17 @@
- 查看审批
+ 进度
详情
@@ -327,6 +327,7 @@ const resetQuery = () => {
/** 添加/修改操作 */
const formRef = ref()
+const router = useRouter() // 路由
const openFormEdit = (row: Object) => {
@@ -340,8 +341,8 @@ const openFormDetail = (row: Object) => {
push({ name: 'CrmContractDetail', query: { id: row.id } })
}
-const handleChange = (row: Object) => {
- push({ name: 'CrmContractChange', query: { id: row.id } })
+const handleChange = (row) => {
+ router.push({ name: 'CrmContractChange', query: { id: row.id } })
}
@@ -382,19 +383,19 @@ const handleSubmit = async (row: ContractApi.ContractVO) => {
}
/** 查看审批 */
-const handleProcessDetail = (row: ContractApi.ContractVO) => {
- push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
+const handleProcessDetail = (row) => {
+ router.push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } })
}
/** 打开合同详情 */
const { push } = useRouter()
-const openDetail = (id: number) => {
- push({ name: 'CrmContractDetail', params: { id } })
+const openDetail = (row) => {
+ router.push({ name: 'CrmContractDetail', query: { id: row.id } })
}
/** 打开客户详情 */
const openCustomerDetail = (id: number) => {
- push({ name: 'CrmCustomerDetail', params: { id } })
+ router.push({ name: 'CrmCustomerDetail', query: { id } })
}
/** 打开联系人详情 */
diff --git a/src/views/crm/quotation/QuotationDetail.vue b/src/views/crm/quotation/QuotationDetail.vue
index d56d154d2..2a4f36fd4 100644
--- a/src/views/crm/quotation/QuotationDetail.vue
+++ b/src/views/crm/quotation/QuotationDetail.vue
@@ -361,6 +361,7 @@ import * as UserApi from '@/api/system/user'
import * as DeptApi from '@/api/system/dept'
import * as BusinessApi from '@/api/crm/business'
import { erpPriceMultiply, erpPriceInputFormatter } from '@/utils'
+import { propTypes } from '@/utils/propTypes'
/** CRM 方案报价 表单 */
defineOptions({ name: 'QuotationForm' })
@@ -375,7 +376,9 @@ const deptTree = ref() // 部门树形结构
const deptList = ref() // 部门
const invoiceTemplateList = ref([])
-
+const props = defineProps({
+ id: propTypes.number.def(undefined)
+})
const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
@@ -590,8 +593,7 @@ const resetForm = () => {
const route = useRoute();
onMounted(async () => {
- formType.value = route.query.id;
-
+ formType.value = props.id
if (formType.value) open(formType.value)
// 获得客户列表
diff --git a/src/views/crm/quotation/QuotationForm.vue b/src/views/crm/quotation/QuotationForm.vue
index ae8938645..0fd5e92cc 100644
--- a/src/views/crm/quotation/QuotationForm.vue
+++ b/src/views/crm/quotation/QuotationForm.vue
@@ -142,7 +142,7 @@
{
businessList.value = await BusinessApi.getSimpleBusinessList()
// 获得部门树
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
+ const org = await ContractApi.getOrg({
+ pageNo: 1,
+ pageSize: 1000
+ })
+ orgList.value = org.list
});
\ No newline at end of file
diff --git a/src/views/crm/quotation/index.vue b/src/views/crm/quotation/index.vue
index 13c13f476..03af1f40a 100644
--- a/src/views/crm/quotation/index.vue
+++ b/src/views/crm/quotation/index.vue
@@ -154,6 +154,14 @@
>
编辑
+
+ 进度
+
{
const openFormDetail = (row: Object) => {
- push({ name: 'QuotationDetail', query: { id: row.id, customerId: row.customerId } })
+ router.push({ name: 'QuotationDetail', query: { id: row.id } })
}
/** 删除按钮操作 */
@@ -262,6 +270,16 @@ const handleDelete = async (id: number) => {
} catch {}
}
+/** 审批进度 */
+const router = useRouter() // 路由
+const handleProcessDetail = (row) => {
+ router.push({
+ name: 'BpmProcessInstanceDetail',
+ query: {
+ id: row.processInstanceId
+ }
+ })
+}
/** 导出按钮操作 */
const handleExport = async () => {
try {