diff --git a/.env.local b/.env.local index de3676009..4f4983ead 100644 --- a/.env.local +++ b/.env.local @@ -6,8 +6,8 @@ VITE_DEV=true # 请求路径 # VITE_BASE_URL='http://8.130.12.151:48080' # VITE_BASE_URL='http://lhy.free.idcfengye.com' -# VITE_BASE_URL='http://m94844f6.natappfree.cc' -VITE_BASE_URL='http://172.22.3.168:48080' +VITE_BASE_URL='http://m94844f6.natappfree.cc' +# VITE_BASE_URL='http://172.22.3.168:48080' # VITE_BASE_URL='http://172.22.3.203:48080' # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务 diff --git a/package-lock.json b/package-lock.json index 91734769c..6e776df80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,6 +60,7 @@ "vue-router": "4.4.5", "vue-signature-pad": "^3.0.2", "vue-types": "^5.1.1", + "vue3-print-nb": "^0.1.4", "vue3-signature": "^0.2.4", "vuedraggable": "^4.1.0", "web-storage-cache": "^1.1.1", @@ -17105,6 +17106,14 @@ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", "license": "MIT" }, + "node_modules/vue3-print-nb": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz", + "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==", + "dependencies": { + "vue": "^3.0.5" + } + }, "node_modules/vue3-signature": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/vue3-signature/-/vue3-signature-0.2.4.tgz", diff --git a/package.json b/package.json index d76a70c12..888f02bf2 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "vue-router": "4.4.5", "vue-signature-pad": "^3.0.2", "vue-types": "^5.1.1", + "vue3-print-nb": "^0.1.4", "vue3-signature": "^0.2.4", "vuedraggable": "^4.1.0", "web-storage-cache": "^1.1.1", diff --git a/src/components/SelectCustomer/src/index.vue b/src/components/SelectCustomer/src/index.vue index 587e3d748..928522178 100644 --- a/src/components/SelectCustomer/src/index.vue +++ b/src/components/SelectCustomer/src/index.vue @@ -50,7 +50,7 @@ watch(() => props.modelValue, (val) => { let selectItem = props.customerList.filter(v => v.id === val) options.value = [...options.value, ...selectItem] } -},) +}, { immediate: true }) watch(() => props.customerList, (val) => { options.value = val.slice(0, 10) diff --git a/src/main.ts b/src/main.ts index dae04a46a..8b02f0f8a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -44,6 +44,7 @@ import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐 import VueSignaturePad from "vue-signature-pad"; +import print from 'vue3-print-nb' // 创建实例 const setupAll = async () => { const app = createApp(App) @@ -68,7 +69,7 @@ const setupAll = async () => { app.use(VueDOMPurifyHTML) app.use(VueSignaturePad); - + app.use(print) app.mount('#app') } diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 63ac284ab..90a67f639 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -221,6 +221,7 @@ export enum DICT_TYPE { TIME_TYPE='time_type',// 时间类型 CRM_PARTNER_TYPE = 'crm_partner_type',//合作类型 CRM_SERVICE_FEE_COLLECTION_METHOD = 'crm_service_fee_collection_method',//服务费收取方式 + CRM_CONTACT_ROLE_TYPE = 'crm_contact_role_type',//角色 CRM_PRODUCT_CATEGORY = "crm_product_category", //CRM 产品类型 CRM_PRODUCT_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型 diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue index fdfc4053e..0a6a3c939 100644 --- a/src/views/crm/business/BusinessForm.vue +++ b/src/views/crm/business/BusinessForm.vue @@ -8,11 +8,11 @@ v-loading="formLoading" > - + @@ -104,7 +104,7 @@ /> --> - + { loading.value = false } } +defineExpose({ getList }) const getData = (val,data) => { list.value = data diff --git a/src/views/crm/contact/ContactForm.vue b/src/views/crm/contact/ContactForm.vue index 02c202daa..628771442 100644 --- a/src/views/crm/contact/ContactForm.vue +++ b/src/views/crm/contact/ContactForm.vue @@ -1,5 +1,5 @@ - + - + + + + + + @@ -249,7 +274,7 @@ const open = async (type: string, id?: number, customerId?: number, businessId?: formLoading.value = false } } else { - // console.log('%csrc/views/crm/contact/ContactForm.vue:229 customerId', 'color: #007acc;', customerId); + console.log('%csrc/views/crm/contact/ContactForm.vue:229 customerId', 'color: #007acc;', customerId); if (customerId) { formData.value.customerId = customerId formData.value.customerDefault = true // 默认客户的选择,不允许变 @@ -258,6 +283,7 @@ const open = async (type: string, id?: number, customerId?: number, businessId?: if (businessId) { formData.value.businessId = businessId } + console.log('%csrc/views/crm/contact/ContactForm.vue:273 formData.customerId', 'color: #007acc;', formData.value); } // 获得联系人列表 contactList.value = await ContactApi.getSimpleContactList() @@ -300,6 +326,11 @@ const submitForm = async () => { } } +const changeCustomerId = (val) => { + let arr = customerList.value.filter(v => v.id === val) + if(arr.length) formData.value.registeredAddress = arr[0]['registeredAddress'] +} + /** 重置表单 */ const resetForm = () => { formData.value = { diff --git a/src/views/crm/contact/components/ContactList.vue b/src/views/crm/contact/components/ContactList.vue index 080bbf333..0ed59b5f8 100644 --- a/src/views/crm/contact/components/ContactList.vue +++ b/src/views/crm/contact/components/ContactList.vue @@ -120,6 +120,7 @@ const getList = async () => { loading.value = false } } +defineExpose({ getList }) /** 搜索按钮操作 */ const handleQuery = () => { diff --git a/src/views/crm/contract/ContractForm.vue b/src/views/crm/contract/ContractForm.vue index 0b788ba3b..5251f126c 100644 --- a/src/views/crm/contract/ContractForm.vue +++ b/src/views/crm/contract/ContractForm.vue @@ -442,6 +442,7 @@ - + 合同甲方授权人信息 - + 合同乙方授权人信息 - + @@ -506,6 +507,49 @@ const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formType = ref('') // 表单的类型:create - 新增;update - 修改 const deptTree = ref() // 部门树形结构 +const formFields = ref({ + productsother: 1, + productsproductName: 1, + productscategory: 1, + productsdetailType: 1, + productsproductUnit: 1, + productsbasicServiceFee: 1, + productsadvancePaymentServiceFee: 1, + productsbookingPaymentServiceFee: 1, + productsbillSortingServiceFee: 1, + productstotalServiceFee: 1, + productsproductInvoice: 1, + productsproductInvoiceItem: 1, + productsserviceInvoice: 1, + productsserviceInvoiceItem: 1, + productsother1: 1, + contractAAuthorizedCompanysother: 1, + contractAAuthorizedCompanysunifiedCreditCode: 1, + contractAAuthorizedCompanysinvoicingAddress: 1, + contractAAuthorizedCompanysinvoicingTelephone: 1, + contractAAuthorizedCompanyscompanyBank: 1, + contractAAuthorizedCompanyscompanyAccount: 1, + contractAAuthorizedCompanyscompanyAddress: 1, + contractAAuthorizedCompanysother2: 1, + contractAAuthorizedPersonsother: 1, + contractAAuthorizedPersonscustomerName: 1, + contractAAuthorizedPersonsauthPersonType: 1, + contractAAuthorizedPersonsphoneNumber: 1, + contractAAuthorizedPersonswechat: 1, + contractAAuthorizedPersonsidNumber: 1, + contractAAuthorizedPersonsemail: 1, + contractAAuthorizedPersonsother2: 1, + contractBAuthorizedPersonsother: 1, + contractBAuthorizedPersonsauthType: 1, + contractBAuthorizedPersonsuserId: 1, + contractBAuthorizedPersonspostName: 1, + contractBAuthorizedPersonsuserRank: 1, + contractBAuthorizedPersonsauthDesc: 1, + contractBAuthorizedPersonsphoneNumber: 1, + contractBAuthorizedPersonswechat: 1, + contractBAuthorizedPersonsemail: 1, + contractBAuthorizedPersonsother2: 1, +}) const formData = ref({ id: undefined, name: undefined, diff --git a/src/views/crm/contract/components/ContractAAuthorizedCompanyForm.vue b/src/views/crm/contract/components/ContractAAuthorizedCompanyForm.vue index 4597fde6b..5a116a6fa 100644 --- a/src/views/crm/contract/components/ContractAAuthorizedCompanyForm.vue +++ b/src/views/crm/contract/components/ContractAAuthorizedCompanyForm.vue @@ -7,84 +7,102 @@ label-width="0px" :inline-message="true" > - - - - - - - - - {{row.customerName}} - - - - - - - - - - {{row.unifiedCreditCode}} - - - - - - - - - - {{row.invoicingAddress}} - - - - - - - - - - {{row.invoicingTelephone}} - - - - - - - - - - {{row.companyBank}} - - - - - - - - - - {{row.companyAccount}} - - - - - - - - - - {{row.companyAddress}} - - - - - - — - - - + + + + + + + + + + + + {{row.customerName}} + + + + + + + + + + + + {{row.unifiedCreditCode}} + + + + + + + + + + + + {{row.invoicingAddress}} + + + + + + + + + + + + {{row.invoicingTelephone}} + + + + + + + + + + + + {{row.companyBank}} + + + + + + + + + + + + {{row.companyAccount}} + + + + + + + + + + + + {{row.companyAddress}} + + + + + + + + — + + + + + 添加 @@ -127,7 +145,8 @@ const handleAdd = () => { const props = defineProps<{ data: undefined, - type: undefined + type: undefined, + formFields: {} }>() /** 监听主表的关联字段的变化,加载对应的子表数据 */ diff --git a/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue b/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue index eb3e49a03..74af8aefa 100644 --- a/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue +++ b/src/views/crm/contract/components/ContractAAuthorizedPersonForm.vue @@ -7,88 +7,104 @@ label-width="0px" :inline-message="true" > - - - - - - - - - {{row.customerName}} - - - - - - - - - - - - - {{getName(getIntDictOptions('auth_person_type'), row.authPersonType)}} - - - - - - - - - - {{row.phoneNumber}} - - - - - - - - - - {{row.wechat}} - - - - - - - - - - {{row.idNumber}} - - - - - - - - - - {{row.email}} - - - - - - — - - - + + + + + + + + + + + + {{row.customerName}} + + + + + + + + + + + + + + + {{getName(getIntDictOptions('auth_person_type'), row.authPersonType)}} + + + + + + + + + + + + {{row.phoneNumber}} + + + + + + + + + + + + {{row.wechat}} + + + + + + + + + + + + {{row.idNumber}} + + + + + + + + + + + + {{row.email}} + + + + + + + + — + + + + + 添加 @@ -104,7 +120,8 @@ import ContactForm from '@/components/contact/index.vue' const props = defineProps<{ contractId: undefined, // 合同ID(主表的关联字段) type: undefined, - customerId: undefined + customerId: undefined, + formFields: {} }>() const formLoading = ref(false) // 表单的加载中 const formData = ref([]) diff --git a/src/views/crm/contract/components/ContractBAuthorizedPersonForm.vue b/src/views/crm/contract/components/ContractBAuthorizedPersonForm.vue index 88702d451..c9a0e9ead 100644 --- a/src/views/crm/contract/components/ContractBAuthorizedPersonForm.vue +++ b/src/views/crm/contract/components/ContractBAuthorizedPersonForm.vue @@ -7,115 +7,135 @@ label-width="0px" :inline-message="true" > - - - - - - - + + + + + + + + + + + + + + + {{getName(getIntDictOptions('auth_type'), row.authType, 'value', 'label')}} + + + + + + + + + - - - {{getName(getIntDictOptions('auth_type'), row.authType, 'value', 'label')}} - - - - - - - - - - - - {{getName(userOptions, row.userId, 'id', 'nickname')}} - - - - - - - - - - {{row.postName}} - - - - - - - - - - {{row.userRank}} - - - - - - - - - - {{row.authDesc}} - - - - - - - - - - {{row.phoneNumber}} - - - - - - - - - - {{row.wechat}} - - - - - - - - - - {{row.email}} - - - - - - — - - - + + + {{getName(userOptions, row.userId, 'id', 'nickname')}} + + + + + + + + + + + + {{row.postName}} + + + + + + + + + + + + {{row.userRank}} + + + + + + + + + + + + {{row.authDesc}} + + + + + + + + + + + + {{row.phoneNumber}} + + + + + + + + + + + + {{row.wechat}} + + + + + + + + + + + + {{row.email}} + + + + + + + + — + + + + + 添加 @@ -131,7 +151,8 @@ import ContactForm from '@/components/user/index.vue' const props = defineProps<{ contractId: undefined, // 合同ID(主表的关联字段) type: undefined, - userOptions: undefined + userOptions: undefined, + formFields: {}, }>() const formLoading = ref(false) // 表单的加载中 const formData = ref([]) diff --git a/src/views/crm/contract/components/ContractChangeLimit.vue b/src/views/crm/contract/components/ContractChangeLimit.vue index 4434bb15a..44540c0a7 100644 --- a/src/views/crm/contract/components/ContractChangeLimit.vue +++ b/src/views/crm/contract/components/ContractChangeLimit.vue @@ -162,7 +162,7 @@ - + @@ -180,7 +180,7 @@ v-model="formData.changeAmountDeadline" value-format="YYYY-MM-DD" type="date" - :disabled="type" + :disabled="formFields.contractBody !== 2 || isTrue" placeholder="请选择调整金额截止日期" style="width: 100%" /> @@ -212,6 +212,7 @@ import { propTypes } from '@/utils/propTypes' /** CRM 方案报价 表单 */ defineOptions({ name: 'ContractChangeLimit' }) +const isTrue = ref(false) const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const customerList = ref([]) // 客户列表的数据 @@ -434,8 +435,9 @@ const resetForm = () => { formRef.value?.resetFields() } -// const route = useRoute(); +const route = useRoute(); onMounted(async () => { + isTrue.value = !!route.query.isDetail console.log('%csrc/views/crm/quotation/QuotationForm.vue:596 route', 'color: #007acc;', props.formFields); // formType.value = route.query.id; diff --git a/src/views/crm/contract/components/ContractList.vue b/src/views/crm/contract/components/ContractList.vue index fcdda402f..307285a1b 100644 --- a/src/views/crm/contract/components/ContractList.vue +++ b/src/views/crm/contract/components/ContractList.vue @@ -103,6 +103,7 @@ const getList = async () => { loading.value = false } } +defineExpose({ getList }) /** 搜索按钮操作 */ const handleQuery = () => { diff --git a/src/views/crm/contract/components/ContractProductForm.vue b/src/views/crm/contract/components/ContractProductForm.vue index 9a3fa216f..d143bfd2d 100644 --- a/src/views/crm/contract/components/ContractProductForm.vue +++ b/src/views/crm/contract/components/ContractProductForm.vue @@ -8,8 +8,9 @@ :inline-message="true" :disabled="disabled" > - - + + + - - - - - - - {{row.productName}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{row.basicServiceFee}} - - - - - - - - - {{row.advancePaymentServiceFee}} - - - - - - - {{row.bookingPaymentServiceFee}} - - - - - - - {{row.billSortingServiceFee}} - - - - - - - {{row.totalServiceFee}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - — - - - + + + + + + + + + {{row.productName}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{row.basicServiceFee}} + + + + + + + + + + {{row.advancePaymentServiceFee}} + + + + + + + + + {{row.bookingPaymentServiceFee}} + + + + + + + + + {{row.billSortingServiceFee}} + + + + + + + + + {{row.totalServiceFee}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + diff --git a/src/views/crm/customer/detail/companyInfo/changerecorddata/index.vue b/src/views/crm/customer/detail/companyInfo/changerecorddata/index.vue index 47770a2b7..b23f65cd1 100644 --- a/src/views/crm/customer/detail/companyInfo/changerecorddata/index.vue +++ b/src/views/crm/customer/detail/companyInfo/changerecorddata/index.vue @@ -32,12 +32,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await ChangeRecordDataApi.getChangeRecordDataPage(queryParams) list.value = data.list total.value = data.total + emit('success','ChangeRecordDataFormIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/companyabnormalinfo/index.vue b/src/views/crm/customer/detail/companyInfo/companyabnormalinfo/index.vue index 5933121c8..e06ae4b76 100644 --- a/src/views/crm/customer/detail/companyInfo/companyabnormalinfo/index.vue +++ b/src/views/crm/customer/detail/companyInfo/companyabnormalinfo/index.vue @@ -35,12 +35,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await CompanyAbnormalInfoApi.getCompanyAbnormalInfoPage(queryParams) list.value = data.list total.value = data.total + emit('success','CompanyaBnormalInfoIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/companybranchinfo/index.vue b/src/views/crm/customer/detail/companyInfo/companybranchinfo/index.vue index 6619c9c42..d14bc4c75 100644 --- a/src/views/crm/customer/detail/companyInfo/companybranchinfo/index.vue +++ b/src/views/crm/customer/detail/companyInfo/companybranchinfo/index.vue @@ -30,12 +30,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await CompanyBranchInfoApi.getCompanyBranchInfoPage(queryParams) list.value = data.list total.value = data.total + emit('success','CompanyBranchInfoIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/companycourtinfo/index.vue b/src/views/crm/customer/detail/companyInfo/companycourtinfo/index.vue index 4208bd4a9..29bce9935 100644 --- a/src/views/crm/customer/detail/companyInfo/companycourtinfo/index.vue +++ b/src/views/crm/customer/detail/companyInfo/companycourtinfo/index.vue @@ -33,12 +33,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await CompanyCourtInfoApi.getCompanyCourtInfoPage(queryParams) list.value = data.list total.value = data.total + emit('success','CompanyCourtInfoIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/companyjudgmentdebtorinfo/index.vue b/src/views/crm/customer/detail/companyInfo/companyjudgmentdebtorinfo/index.vue index d6f0116c1..d94446b10 100644 --- a/src/views/crm/customer/detail/companyInfo/companyjudgmentdebtorinfo/index.vue +++ b/src/views/crm/customer/detail/companyInfo/companyjudgmentdebtorinfo/index.vue @@ -33,12 +33,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await CompanyJudgmentDebtorInfoApi.getCompanyJudgmentDebtorInfoPage(queryParams) list.value = data.list total.value = data.total + emit('success','CompanyJudgmentDebtorInfoIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/companylawsuitinfo/index.vue b/src/views/crm/customer/detail/companyInfo/companylawsuitinfo/index.vue index 6f6dcb54a..0225ee31f 100644 --- a/src/views/crm/customer/detail/companyInfo/companylawsuitinfo/index.vue +++ b/src/views/crm/customer/detail/companyInfo/companylawsuitinfo/index.vue @@ -34,12 +34,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await CompanyLawsuitInfoApi.getCompanyLawsuitInfoPage(queryParams) list.value = data.list total.value = data.total + emit('success','CompanyLawsuitInfoIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/employeedata/index.vue b/src/views/crm/customer/detail/companyInfo/employeedata/index.vue index 085b6a845..41126d17e 100644 --- a/src/views/crm/customer/detail/companyInfo/employeedata/index.vue +++ b/src/views/crm/customer/detail/companyInfo/employeedata/index.vue @@ -32,12 +32,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await EmployeeDataApi.getEmployeeDataPage(queryParams) list.value = data.list total.value = data.total + emit('success','EmployeeDataIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/companyInfo/partnerdata/index.vue b/src/views/crm/customer/detail/companyInfo/partnerdata/index.vue index 540329795..5959f26da 100644 --- a/src/views/crm/customer/detail/companyInfo/partnerdata/index.vue +++ b/src/views/crm/customer/detail/companyInfo/partnerdata/index.vue @@ -34,12 +34,14 @@ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 查询列表 */ +const emit = defineEmits(['success']) const getList = async () => { loading.value = true try { const data = await PartnerDataApi.getPartnerDataPage(queryParams) list.value = data.list total.value = data.total + emit('success', 'PartnerDataIstrue', list.value) } finally { loading.value = false } diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index cf0bde87c..166684643 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -38,20 +38,20 @@ - - - + + + - - + + - - + + - + - - + + - - + + - - + + @@ -105,27 +120,32 @@ - + - + - + - + + + + + + + + + + - + - - + --> 删除 @@ -161,6 +161,8 @@ const getList = async () => { loading.value = false } } +defineExpose({ getList }) + const previewPic = (val) => { show.value = true diff --git a/src/views/crm/permission/components/PermissionList.vue b/src/views/crm/permission/components/PermissionList.vue index 656976d12..337c31f9f 100644 --- a/src/views/crm/permission/components/PermissionList.vue +++ b/src/views/crm/permission/components/PermissionList.vue @@ -171,7 +171,7 @@ watch( } ) -defineExpose({ openForm, validateOwnerUser, validateWrite, isPool }) +defineExpose({ openForm, validateOwnerUser, validateWrite, isPool, getList }) const emits = defineEmits<{ (e: 'quitTeam'): void }>() diff --git a/src/views/crm/quotation/QuotationDetail.vue b/src/views/crm/quotation/QuotationDetail.vue index 3873774e3..2d993bcdd 100644 --- a/src/views/crm/quotation/QuotationDetail.vue +++ b/src/views/crm/quotation/QuotationDetail.vue @@ -1,15 +1,17 @@ - - + + + - - - + @@ -22,29 +24,41 @@ + + - - 风控信息 - + + + + 风控信息 + + + + + + + + + @@ -58,6 +72,8 @@ --> + + @@ -70,6 +86,8 @@ + + @@ -80,21 +98,29 @@ --> + + + + + + + + @@ -110,8 +136,8 @@ --> - - + + @@ -120,6 +146,8 @@ + + @@ -128,6 +156,8 @@ + + @@ -136,6 +166,8 @@ + + @@ -144,6 +176,8 @@ + + @@ -152,6 +186,8 @@ + + @@ -160,10 +196,27 @@ - - 需求信息 + + + + + 需求信息 + - + + + + + + + + + @@ -176,21 +229,29 @@ + + + + + + + + @@ -207,37 +268,38 @@ --> - - + + + + + + + + + + - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -363,6 +438,8 @@ + + --> + + - - + + - - - - - + + + + 报价产品关联 + + + + + + + 营收分析 + + + + + \ No newline at end of file + + + \ No newline at end of file diff --git a/src/views/crm/quotation/QuotationForm.vue b/src/views/crm/quotation/QuotationForm.vue index 1ff024f6d..ed0f0d5b2 100644 --- a/src/views/crm/quotation/QuotationForm.vue +++ b/src/views/crm/quotation/QuotationForm.vue @@ -60,7 +60,7 @@ - + - + - + - + - + - + @@ -165,13 +165,13 @@ - - + + @@ -326,7 +326,7 @@ - + @@ -515,14 +515,14 @@ const formRules = reactive({ customerId: [{ required: true, message: '客户id不能为空', trigger: 'change' }], businessId: [{ required: true, message: '商机编号不能为空', trigger: 'change' }], invoiceTemplateId: [{ required: true, message: '票据模板Id不能为空', trigger: 'change' }], - actualCapital: [{ required: true, message: '实缴资金不能为空', trigger: 'blur' }], - socialEmployeeNum: [{ required: true, message: '参保人数不能为空', trigger: 'blur' }], - defendantRecord: [{ required: true, message: '被告记录不能为空', trigger: 'blur' }], - abnormalService: [{ required: true, message: '经营异常不能为空', trigger: 'blur' }], - equityPledge: [{ required: true, message: '股权出质不能为空', trigger: 'blur' }], - dishonestyRecord: [{ required: true, message: '失信记录不能为空', trigger: 'blur' }], - financeRecord: [{ required: true, message: '融资记录不能为空', trigger: 'blur' }], - judgmentRecord: [{ required: true, message: '被执行记录不能为空', trigger: 'blur' }], + // actualCapital: [{ required: true, message: '实缴资金不能为空', trigger: 'blur' }], + // socialEmployeeNum: [{ required: true, message: '参保人数不能为空', trigger: 'blur' }], + // defendantRecord: [{ required: true, message: '被告记录不能为空', trigger: 'blur' }], + // abnormalService: [{ required: true, message: '经营异常不能为空', trigger: 'blur' }], + // equityPledge: [{ required: true, message: '股权出质不能为空', trigger: 'blur' }], + // dishonestyRecord: [{ required: true, message: '失信记录不能为空', trigger: 'blur' }], + // financeRecord: [{ required: true, message: '融资记录不能为空', trigger: 'blur' }], + // judgmentRecord: [{ required: true, message: '被执行记录不能为空', trigger: 'blur' }], paymentTerm: [{ required: true, message: '账期不能为空', trigger: 'change' }], partnerCompanyId: [{ required: true, message: '合作主体不能为空', trigger: 'change' }], creditMethod: [{ required: true, message: '授信方式不能为空', trigger: 'change' }], diff --git a/src/views/crm/quotation/components/QuotationProductDetail.vue b/src/views/crm/quotation/components/QuotationProductDetail.vue index 7715bd3f9..2c923da1c 100644 --- a/src/views/crm/quotation/components/QuotationProductDetail.vue +++ b/src/views/crm/quotation/components/QuotationProductDetail.vue @@ -8,8 +8,8 @@ :inline-message="true" > - - + + - + - + diff --git a/src/views/crm/quotation/components/RevenueAnalysis.vue b/src/views/crm/quotation/components/RevenueAnalysis.vue index 48a1b6624..df8178d92 100644 --- a/src/views/crm/quotation/components/RevenueAnalysis.vue +++ b/src/views/crm/quotation/components/RevenueAnalysis.vue @@ -1,64 +1,85 @@ - - - - - - - - - - - - - - - {{row.revenueAnalysisVO.salesVolume}} - - - - - {{row.revenueAnalysisVO.totalOrderVolume}} - - - - - {{row.revenueAnalysisVO.totalIncome}} - - - - - {{(row.revenueAnalysisVO.incomeInterestRate * 100).toFixed(2) + '%'}} - - - - - {{row.revenueAnalysisVO.deductibleCost}} - - - - - {{row.revenueAnalysisVO.profit}} - - - - - {{(row.revenueAnalysisVO.profitRate * 100).toFixed(2) + '%'}} - - - - - - {{(row.revenueAnalysisVO.profitSharingRatio * 100).toFixed(2) + '%'}} - - - - - {{row.revenueAnalysisVO.profitSharingIncome}} - - - + + + + + + + + + + + + + + + + + + {{row.revenueAnalysisVO.salesVolume}} + + + + + + + {{row.revenueAnalysisVO.totalOrderVolume}} + + + + + + + {{row.revenueAnalysisVO.totalIncome}} + + + + + + + {{(row.revenueAnalysisVO.incomeInterestRate * 100).toFixed(2) + '%'}} + + + + + + + {{row.revenueAnalysisVO.deductibleCost}} + + + + + + + {{row.revenueAnalysisVO.profit}} + + + + + + + {{(row.revenueAnalysisVO.profitRate * 100).toFixed(2) + '%'}} + + + + + + + + {{(row.revenueAnalysisVO.profitSharingRatio * 100).toFixed(2) + '%'}} + + + + + + + {{row.revenueAnalysisVO.profitSharingIncome}} + + + + + diff --git a/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue b/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue index b8ae6d05f..86fe10955 100644 --- a/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue +++ b/src/views/hrm/recruitmentrequest/RecruitmentRequestForm.vue @@ -25,6 +25,7 @@ :label="dict.label" :value="dict.value" /> + @@ -40,8 +41,8 @@ - - + + - +