diff --git a/src/api/crm/contract/index.ts b/src/api/crm/contract/index.ts
index c8ab0e4d8..3b64d4ce0 100644
--- a/src/api/crm/contract/index.ts
+++ b/src/api/crm/contract/index.ts
@@ -160,6 +160,11 @@ export const printContract = async (id: number) => {
})
}
+// 合同上传
+export const contractUpload = async (data: TransferReqVO) => {
+ return await request.put({ url: '/crm/contract/updateFileUrl', data })
+}
+
// ==================== 子表(CRM 合同产品关联) ====================
diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue
index 60d9d46ff..6947dd4a2 100644
--- a/src/views/crm/business/BusinessForm.vue
+++ b/src/views/crm/business/BusinessForm.vue
@@ -509,7 +509,7 @@ const resetForm = () => {
const changeCustomer = async (val) => {
const customerRes = await CustomerApi.getCustomer(val);
formData.value.clueDeveloper = customerRes.clueDeveloper
- formData.value.maintenanceUserId = customerRes.maintainer
+ formData.value.maintainer = customerRes.maintainer
}
const changeCheck = (val) => {
@@ -532,7 +532,7 @@ console.log('%csrc/views/crm/business/BusinessForm.vue:516 getIntDictOptions(DIC
const customerId = route.query.customerId;
formData.value.customerId = Number(route.query.bizId) || ''
formData.value.clueDeveloper = Number(route.query.clueDeveloper) || ''
- formData.value.maintenanceUserId = Number(route.query.maintenanceUserId) || ''
+ formData.value.maintainer = Number(route.query.maintainer) || ''
formData.value.requestorUserId = customerId ? '' : useUserStore().getUser.id;
formType.value = route.query.id || route.params.id;
diff --git a/src/views/crm/business/components/BusinessList.vue b/src/views/crm/business/components/BusinessList.vue
index 3627b5dea..43f9e3f62 100644
--- a/src/views/crm/business/components/BusinessList.vue
+++ b/src/views/crm/business/components/BusinessList.vue
@@ -75,7 +75,7 @@ const props = defineProps<{
customerId?: number // 关联联系人与商机时,需要传入 customerId 进行筛选
contactId?: number // 特殊:联系人编号;在【联系人】详情中,可以传递联系人编号,默认新建的商机关联到该联系人
clueDeveloper: number
- maintenanceUserId: number
+ maintainer: number
}>()
const loading = ref(true) // 列表的加载中
@@ -119,7 +119,6 @@ defineExpose({ getList })
const getData = (val,data) => {
list.value = data
- console.log('%csrc/views/crm/business/components/BusinessList.vue:118 val', 'color: #007acc;', val, data.value);
}
/** 搜索按钮操作 */
@@ -132,13 +131,12 @@ const handleQuery = () => {
const { push } = useRouter()
const formRef = ref()
const openForm = () => {
- console.log('%csrc/views/crm/business/components/BusinessList.vue:135 props', 'color: green;', props);
push({
name: 'CrmBusinessAdd',
query: {
bizId: props.bizId,
clueDeveloper: props.clueDeveloper,
- maintenanceUserId: props.maintenanceUserId
+ maintainer: props.maintainer
}
})
}
diff --git a/src/views/crm/capitalcost/CapitalCostForm.vue b/src/views/crm/capitalcost/CapitalCostForm.vue
index 866830686..b27a53eae 100644
--- a/src/views/crm/capitalcost/CapitalCostForm.vue
+++ b/src/views/crm/capitalcost/CapitalCostForm.vue
@@ -51,27 +51,32 @@
-
+
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
diff --git a/src/views/crm/contact/components/ContactList.vue b/src/views/crm/contact/components/ContactList.vue
index 2e9911043..a22d757bc 100644
--- a/src/views/crm/contact/components/ContactList.vue
+++ b/src/views/crm/contact/components/ContactList.vue
@@ -1,7 +1,7 @@
-
+
创建联系人
@@ -41,13 +41,40 @@
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
{
/** 添加操作 */
const formRef = ref()
-const openForm = () => {
- formRef.value.open('create', undefined, props.bizId, props.businessId)
+const openForm = (type, val?: number) => {
+ formRef.value.open(type, val, props.bizId, props.businessId)
}
/** 打开联系人详情 */
@@ -159,6 +187,19 @@ const createContactBusinessList = async (contactIds: number[]) => {
handleQuery()
}
+/** 删除按钮操作 */
+const handleDelete = async (id: number) => {
+ try {
+ // 删除的二次确认
+ await message.delConfirm()
+ // 发起删除
+ await ContactApi.deleteContact(id)
+ message.success(t('common.delSuccess'))
+ // 刷新列表
+ await getList()
+ } catch {}
+}
+
/** 解除联系人与商机的关联 */
const contactRef = ref()
const deleteContactBusinessList = async () => {
diff --git a/src/views/crm/contact/index.vue b/src/views/crm/contact/index.vue
index aeac4d346..a598427aa 100644
--- a/src/views/crm/contact/index.vue
+++ b/src/views/crm/contact/index.vue
@@ -103,7 +103,7 @@
-
+
-
+
@@ -144,6 +144,7 @@
+
{
}
const getList = (val: []) => {
- console.log('%csrc/views/crm/contract/components/ContractAAuthorizedPersonForm.vue:182 val', 'color: #007acc;', val);
for(let i = val.length - 1; i >= 0; i--) {
let obj = val[i]
if(formData.value.some(v => v.customerContactId === obj.id)) val.splice(i, 1)
diff --git a/src/views/crm/contract/contractUpload.vue b/src/views/crm/contract/contractUpload.vue
new file mode 100644
index 000000000..504e4f851
--- /dev/null
+++ b/src/views/crm/contract/contractUpload.vue
@@ -0,0 +1,86 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue
index b112e8ff8..63991f92f 100644
--- a/src/views/crm/contract/index.vue
+++ b/src/views/crm/contract/index.vue
@@ -305,6 +305,7 @@
/>
+
@@ -312,6 +313,7 @@
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download'
import FileTemplateForm from './templateForm.vue'
+import ContractUpload from './contractUpload.vue'
import * as ContractApi from '@/api/crm/contract'
import { DICT_TYPE } from '@/utils/dict'
import { erpPriceInputFormatter, erpPriceTableColumnFormatter } from '@/utils'
@@ -325,6 +327,7 @@ defineOptions({ name: 'CrmContract' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
+const uploadFormRef = ref('')
const loading = ref(true) // 列表的加载中
const total = ref(0) // 列表的总页数
const list = ref([]) // 列表的数据
@@ -460,7 +463,7 @@ const getPrintTemplate = (row) => {
}
const handleUpload = (val) => {
-
+ uploadFormRef.value.open(val)
}
//盖章合同下载
diff --git a/src/views/crm/customer/detail/authorizedPersonForm.vue b/src/views/crm/customer/detail/authorizedPersonForm.vue
new file mode 100644
index 000000000..98c0bb3b4
--- /dev/null
+++ b/src/views/crm/customer/detail/authorizedPersonForm.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+ 创建授权人
+
+
+
+
+
+
+
+
+
+
+
+
+ {{row.customerName}}
+
+
+
+
+
+
+
+
+
+ {{getName(getIntDictOptions(DICT_TYPE.CRM_CONTACT_ROLE_TYPE), row.authPersonType)}}
+
+
+
+
+
+
+
+
+ {{row.phoneNumber}}
+
+
+
+
+
+
+
+
+
+ {{row.wechat}}
+
+
+
+
+
+
+
+
+
+ {{row.idNumber}}
+
+
+
+
+
+
+
+
+
+ {{row.email}}
+
+
+
+
+
+ —
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue
index 58a752be2..5111611cd 100644
--- a/src/views/crm/customer/detail/index.vue
+++ b/src/views/crm/customer/detail/index.vue
@@ -26,12 +26,12 @@
>
锁定
-->
- 领取
-
+ 领取
+
分配
放入公海
@@ -61,7 +61,7 @@
/>
-->
-
+
@@ -69,6 +69,9 @@
+
+
+
@@ -112,6 +115,7 @@ import { BizTypeEnum } from '@/api/crm/permission'
import type { OperateLogVO } from '@/api/system/operatelog'
import { getOperateLogPage } from '@/api/crm/operateLog'
import CustomerDistributeForm from '@/views/crm/customer/pool/CustomerDistributeForm.vue'
+import AuthorizedPersonForm from '@/views/crm/customer/detail/authorizedPersonForm.vue'
defineOptions({ name: 'CrmCustomerDetail' })
diff --git a/src/views/crm/quotation/QuotationForm.vue b/src/views/crm/quotation/QuotationForm.vue
index 80d2eccd1..52eb72598 100644
--- a/src/views/crm/quotation/QuotationForm.vue
+++ b/src/views/crm/quotation/QuotationForm.vue
@@ -229,6 +229,7 @@
:data="deptTree"
:props="defaultProps"
filterable
+ disabled
check-strictly
node-key="id"
placeholder="请选择归属部门"
@@ -918,6 +919,11 @@ const resetForm = () => {
}
const changePartnerType = async (val) => {
+ formData.value.partnerCompanyId = ''
+ formData.value.creditCode = ''
+ formData.value.bankName = ''
+ formData.value.bankAccount = ''
+ formData.value.legalRepresentative = ''
const org = await ContractApi.getOrg({
pageNo: 1,
pageSize: 1000,
@@ -928,11 +934,13 @@ const changePartnerType = async (val) => {
const route = useRoute();
onMounted(async () => {
+ console.log('%csrc/views/crm/quotation/QuotationForm.vue:931 useUserStore().getUser', 'color: #007acc;', useUserStore().getUser);
formType.value = props.id || route.query.id;
if (formType.value) open(formType.value)
formData.value.pricingUserId = useUserStore().getUser.id;
+ formData.value.deptId = useUserStore().getUser.deptId;
// 获得客户列表
diff --git a/src/views/crm/quotation/components/QuotationProductForm.vue b/src/views/crm/quotation/components/QuotationProductForm.vue
index 15b5a6b37..aff3a066b 100644
--- a/src/views/crm/quotation/components/QuotationProductForm.vue
+++ b/src/views/crm/quotation/components/QuotationProductForm.vue
@@ -25,25 +25,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
+
+
-
diff --git a/src/views/crm/quotation/index.vue b/src/views/crm/quotation/index.vue
index 577f36b66..d55ab0ef6 100644
--- a/src/views/crm/quotation/index.vue
+++ b/src/views/crm/quotation/index.vue
@@ -51,10 +51,10 @@
/>
-
+