Merge remote-tracking branch 'origin/master'
commit
bcb3ba5755
|
|
@ -126,7 +126,6 @@ watch(allFilterEvents, () => {
|
|||
}, { immediate: true, deep: true })
|
||||
|
||||
const loadmore = () => {
|
||||
console.log('%csrc/components/SelectCustomer/src/index.vue:116 123', 'color: #007acc;', 123);
|
||||
if (props.customerList.length <= options.value.length) return;
|
||||
pageNo.value++;
|
||||
nextTick(() => {
|
||||
|
|
|
|||
|
|
@ -25,11 +25,8 @@
|
|||
选取文件
|
||||
</el-button>
|
||||
<template v-if="isShowTip" #tip>
|
||||
<div style="font-size: 8px">
|
||||
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
|
||||
</div>
|
||||
<div style="font-size: 8px">
|
||||
格式为 <b style="color: #f56c6c">{{ fileType.join('/') }}</b> 的文件
|
||||
<div style="font-size: 14px">
|
||||
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>,格式为 <b style="color: #f56c6c">{{ fileType.join('/') }}</b> 的文件
|
||||
</div>
|
||||
</template>
|
||||
<template #file="row">
|
||||
|
|
@ -88,7 +85,7 @@ const emit = defineEmits(['update:modelValue'])
|
|||
const props = defineProps({
|
||||
modelValue: propTypes.oneOfType<string | string[]>([String, Array<String>]).isRequired,
|
||||
fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf']), // 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileSize: propTypes.number.def(5), // 大小限制(MB)
|
||||
fileSize: propTypes.number.def(20), // 大小限制(MB)
|
||||
limit: propTypes.number.def(5), // 数量限制
|
||||
autoUpload: propTypes.bool.def(true), // 自动上传
|
||||
drag: propTypes.bool.def(false), // 拖拽上传
|
||||
|
|
|
|||
|
|
@ -99,7 +99,6 @@ const queryFormRef = ref() // 搜索的表单
|
|||
const exportLoading = ref(false) // 导出的加载中
|
||||
/** 打开弹窗 */
|
||||
const open = async (data: []) => {
|
||||
console.log('%csrc/components/product/index.vue:102 data', 'color: #007acc;', data);
|
||||
dialogVisible.value = true
|
||||
multipleSelection.value = data
|
||||
await getList()
|
||||
|
|
@ -154,7 +153,6 @@ const setSelections = async () => {
|
|||
id: item.productId
|
||||
}
|
||||
})
|
||||
console.log('%csrc/components/product/index.vue:153 list.value', 'color: #007acc;', list.value);
|
||||
|
||||
if (selections && selections.length > 0) {
|
||||
list.value.forEach((row: any) => {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<doc-alert title="【通用】跟进记录、待办事项" url="https://doc.iocoder.cn/crm/follow-up/" />
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4" class="min-w-[200px]">
|
||||
<el-row style="display: flex">
|
||||
<el-col :span="4" >
|
||||
<div class="side-item-list">
|
||||
<div
|
||||
v-for="(item, index) in leftSides"
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="20" :xs="24">
|
||||
<el-col :span="19" style="margin-left: 20px;flex: 1">
|
||||
<CustomerTodayContactList v-if="leftMenu === 'customerTodayContact'" />
|
||||
<ClueFollowList v-if="leftMenu === 'clueFollow'" />
|
||||
<ContractAuditList v-if="leftMenu === 'contractAudit'" />
|
||||
|
|
|
|||
|
|
@ -8,11 +8,7 @@
|
|||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="商机名称" prop="name">
|
||||
<el-input v-model="formData.name" :disabled="type" clearable placeholder="请输入商机名称" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" @change="changeCustomer" :disabled="formData.customerDefault || type || route.query.bizId" v-model="formData.customerId" />
|
||||
|
|
@ -33,12 +29,17 @@
|
|||
</el-select> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="formType">
|
||||
<el-form-item label="商机名称" prop="name">
|
||||
<el-input v-model="formData.name" disabled clearable placeholder="请输入商机名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="拓展人" prop="clueDeveloper">
|
||||
<el-select
|
||||
v-model="formData.clueDeveloper"
|
||||
disabled
|
||||
placeholder="请选择线拓展人"
|
||||
placeholder=""
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
|
|
@ -51,12 +52,12 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="维护人" prop="maintenanceUserId">
|
||||
<el-form-item label="维护人" prop="maintainer">
|
||||
<el-select
|
||||
v-model="formData.maintenanceUserId"
|
||||
v-model="formData.maintainer"
|
||||
clearable
|
||||
disabled
|
||||
placeholder=""
|
||||
:disabled="type"
|
||||
placeholder="请选择线维护人"
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
|
|
@ -214,7 +215,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目难度" prop="projectDifficultyId">
|
||||
<el-select v-model="formData.projectDifficultyId" :disabled="type" clearable placeholder="请选择项目难度">
|
||||
<el-select v-model="formData.projectDifficultyId" :disabled="type" clearable placeholder="请选择项目难度" @change="changeDifficult">
|
||||
<el-option
|
||||
v-for="dict in difficultOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -226,7 +227,7 @@
|
|||
</el-col>
|
||||
|
||||
<el-col :span="8" class="toop">
|
||||
注:行政自主在线上预定,无审批流,无差标,无客服服务
|
||||
{{remark}}
|
||||
<!-- <el-form-item label="" prop="platformId">
|
||||
|
||||
</el-form-item> -->
|
||||
|
|
@ -238,7 +239,7 @@
|
|||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="产品类型" prop="remark">
|
||||
<el-checkbox-group v-model="checkList" @change="changeCheck">
|
||||
<el-checkbox-group v-model="checkList" :disabled="type" @change="changeCheck">
|
||||
<el-checkbox v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_CATEGORY)"
|
||||
:key="dict.value"
|
||||
:label="dict.value">{{dict.label}}</el-checkbox>
|
||||
|
|
@ -317,6 +318,7 @@ const { proxy }: any = getCurrentInstance();
|
|||
const { t } = useI18n();
|
||||
const message = useMessage();
|
||||
|
||||
const remark = ref('')
|
||||
const checkList = ref([])
|
||||
const productsTypeList = ref([])
|
||||
const dialogVisible = ref(false);
|
||||
|
|
@ -360,6 +362,8 @@ const formRules = reactive({
|
|||
techSupport: [{ required: true, message: '技术需求支持不能为空', trigger: 'change' }],
|
||||
projectDifficultyId: [{ required: true, message: '项目难度不能为空', trigger: 'change' }],
|
||||
platformId: [{ required: true, message: '平台不能为空', trigger: 'change' }],
|
||||
maintenanceUserId: [{ required: true, message: '维护人不能为空', trigger: 'change' }],
|
||||
requestorUserId: [{ required: true, message: '需求提交人不能为空', trigger: 'change' }],
|
||||
|
||||
});
|
||||
const formRef = ref();
|
||||
|
|
@ -387,6 +391,7 @@ watch(
|
|||
let totalOfflinePrice = 0;
|
||||
|
||||
for (const product of newProducts) {
|
||||
console.log('%csrc/views/crm/business/BusinessForm.vue:381 22222', 'color: #007acc;', product,22222);
|
||||
if (typeof product.onlinePrice) {
|
||||
totalOnlinePrice += Number(product.onlinePrice);
|
||||
}
|
||||
|
|
@ -425,7 +430,9 @@ const open = async (id?: number, customerId?: number) => {
|
|||
data.products.map(v => {
|
||||
newData.push(v.category)
|
||||
})
|
||||
checkList.value = [...new Set(newData)]
|
||||
checkList.value = newData.filter((value, index, self) => {
|
||||
return self.indexOf(value) === index;
|
||||
});
|
||||
} finally {
|
||||
formLoading.value = false;
|
||||
}
|
||||
|
|
@ -439,7 +446,6 @@ const open = async (id?: number, customerId?: number) => {
|
|||
};
|
||||
|
||||
const setList = (newProducts) => {
|
||||
checkList.value = []
|
||||
formData.value.products = newProducts;
|
||||
};
|
||||
|
||||
|
|
@ -510,10 +516,19 @@ const changeCheck = (val) => {
|
|||
productFormRef.value.getData(val)
|
||||
}
|
||||
|
||||
const changeDifficult = (val) => {
|
||||
let arr = difficultOptions.value.filter(v => v.id === val)
|
||||
let serviceDesc = (arr.length && arr[0]['dockingMode'])
|
||||
if(serviceDesc) {
|
||||
remark.value = '注:' + serviceDesc
|
||||
} else {
|
||||
remark.value = ''
|
||||
}
|
||||
}
|
||||
|
||||
const route = useRoute();
|
||||
onMounted(async () => {
|
||||
|
||||
console.log('%csrc/views/crm/business/BusinessForm.vue:512 props', 'color: #007acc;', route.query);
|
||||
console.log('%csrc/views/crm/business/BusinessForm.vue:516 getIntDictOptions(DICT_TYPE.CRM_PRODUCT_CATEGORY)', 'color: #007acc;', getIntDictOptions(DICT_TYPE.CRM_PRODUCT_CATEGORY));
|
||||
const customerId = route.query.customerId;
|
||||
formData.value.customerId = Number(route.query.bizId) || ''
|
||||
formData.value.clueDeveloper = Number(route.query.clueDeveloper) || ''
|
||||
|
|
@ -527,7 +542,6 @@ onMounted(async () => {
|
|||
statusTypeList.value = await BusinessStatusApi.getBusinessStatusTypeSimpleList();
|
||||
userOptions.value = await UserApi.getSimpleUserList();
|
||||
let techData = await BusinessApi.getTechnicalList({pageNo: 1, pageSize: 1000});//平台
|
||||
console.log('%csrc/views/crm/business/BusinessForm.vue:468 diffData', 'color: #007acc;', techData);
|
||||
techOptions.value = techData.list
|
||||
let diffData = await BusinessApi.getDifficult({pageNo: 1, pageSize: 1000});//困难度
|
||||
difficultOptions.value = diffData.list
|
||||
|
|
|
|||
|
|
@ -69,9 +69,9 @@
|
|||
|
||||
</el-table>
|
||||
</el-form>
|
||||
<el-row justify="center" class="mt-3" v-if="!disabled">
|
||||
<!-- <el-row justify="center" class="mt-3" v-if="!disabled">
|
||||
<el-button @click="handleAdd" type="primary" round>+ 添加产品</el-button>
|
||||
</el-row>
|
||||
</el-row> -->
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<ProductForm ref="productRef" @success="getList" />
|
||||
</template>
|
||||
|
|
@ -110,31 +110,32 @@ watch(
|
|||
{ immediate: true }
|
||||
);
|
||||
|
||||
watch(
|
||||
() => props.productsTypeList,
|
||||
(val) => {
|
||||
listData.value = val || []; // 确保 formData 是一个数组
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
// watch(
|
||||
// () => props.productsTypeList,
|
||||
// (val) => {
|
||||
// listData.value = val || []; // 确保 formData 是一个数组
|
||||
// },
|
||||
// { immediate: true }
|
||||
// );
|
||||
|
||||
// 监听合同产品变化,计算合同产品总价
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
watch(
|
||||
() => formData.value,
|
||||
(val) => {
|
||||
console.log('%csrc/views/crm/business/components/BusinessProductForm.vue:126 formData.value', 'color: #007acc;', formData.value);
|
||||
if (!val || val.length === 0) {
|
||||
return;
|
||||
}
|
||||
// 循环处理
|
||||
val.forEach((item) => {
|
||||
if (item.offlinePrice != null && item.onlinePrice != null) {
|
||||
item.totalPrice = Number(item.offlinePrice) + Number(item.onlinePrice);
|
||||
item.totalPrice = (Number(item.offlinePrice) + Number(item.onlinePrice)).toFixed(2);
|
||||
} else {
|
||||
item.totalPrice = 0;
|
||||
}
|
||||
});
|
||||
// emit('success', formData.value)
|
||||
emit('success', formData.value)
|
||||
|
||||
},
|
||||
{ deep: true }
|
||||
|
|
@ -157,27 +158,29 @@ watch(
|
|||
// };
|
||||
// formData.value.push(newRow);
|
||||
// };
|
||||
const getList = (val: []) => {
|
||||
for(let i = formData.value.length - 1; i >= 0; i--) {
|
||||
let obj = formData.value[i]
|
||||
if(!val.some(v => v.id === obj.productId)) formData.value.splice(i, 1)
|
||||
}
|
||||
val.forEach(item => {
|
||||
if(!formData.value.some(v => v.productId === item.id)) {
|
||||
formData.value.push({
|
||||
"productId": item.id,
|
||||
"category": item.category,
|
||||
"productName": item.name,
|
||||
"detailType": item.detailType,
|
||||
"productUnit": item.unit,
|
||||
const getList = async (val: []) => {
|
||||
const data = await ProductApi.getProductPage({
|
||||
pageNo: 1,
|
||||
pageSize: 999,
|
||||
status: 1,
|
||||
})
|
||||
let dataList = JSON.parse(JSON.stringify(data.list))
|
||||
for(let i = dataList.length - 1; i >= 0; i--) {
|
||||
let obj = dataList[i]
|
||||
// if(!val.some(v => v.id === obj.productId)) formData.value.splice(i, 1)
|
||||
// }
|
||||
listData.value.push({
|
||||
"productId": obj.id,
|
||||
"category": obj.category,
|
||||
"productName": obj.name,
|
||||
"detailType": obj.detailType,
|
||||
"productUnit": obj.unit,
|
||||
"onlinePrice": '',
|
||||
"offlinePrice": ''
|
||||
})
|
||||
}
|
||||
})
|
||||
listData.value = JSON.parse(JSON.stringify(formData.value))
|
||||
console.log('%csrc/views/crm/business/components/BusinessProductForm.vue:170 listData', 'color: #007acc;', listData.value);
|
||||
emit('success', formData.value)
|
||||
}
|
||||
// listData.value = JSON.parse(JSON.stringify(data.list))
|
||||
// emit('success', formData.value)
|
||||
|
||||
}
|
||||
const productRef = ref() // 表单 Ref
|
||||
|
|
@ -213,7 +216,6 @@ const validate = () => {
|
|||
};
|
||||
|
||||
const getData = (val) => {
|
||||
|
||||
let newArrList = []
|
||||
for(let i = 0; i < val.length; i++) {
|
||||
let item = val[i]
|
||||
|
|
@ -222,17 +224,13 @@ const getData = (val) => {
|
|||
}
|
||||
formData.value = newArrList
|
||||
|
||||
console.log('%csrc/views/crm/business/components/BusinessProductForm.vue:215 listData.value', 'color: #007acc;',!val.length, listData.value);
|
||||
if(!val.length) {
|
||||
console.log('%csrc/views/crm/business/components/BusinessProductForm.vue:208 121212', 'color: #007acc;', 121212);
|
||||
return formData.value = JSON.parse(JSON.stringify(listData.value))
|
||||
}
|
||||
console.log('%csrc/views/crm/business/components/BusinessProductForm.vue:218 formData.value', 'color: #007acc;', formData.value);
|
||||
};
|
||||
defineExpose({ validate, getData });
|
||||
|
||||
// 初始化
|
||||
onMounted(async () => {
|
||||
|
||||
getList()
|
||||
productList.value = await ProductApi.getProductSimpleList();
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ContentWrap class="mt-10px">
|
||||
<!-- <ContentWrap class="mt-10px">
|
||||
<el-descriptions :column="5" direction="vertical">
|
||||
<el-descriptions-item label="客户名称">{{ business.customerName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="商机金额(元)">
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
{{ formatDate(business.createTime) }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</ContentWrap>
|
||||
</ContentWrap> -->
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import * as BusinessApi from '@/api/crm/business'
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<template>
|
||||
<BusinessDetailsHeader v-loading="loading" :business="business">
|
||||
<!-- <BusinessDetailsHeader v-loading="loading" :business="business"> -->
|
||||
<!-- <el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', business.id)">
|
||||
编辑
|
||||
</el-button> -->
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-if="permissionListRef?.validateWrite"
|
||||
:disabled="business.endStatus"
|
||||
type="success"
|
||||
|
|
@ -13,8 +13,8 @@
|
|||
</el-button>
|
||||
<el-button v-if="permissionListRef?.validateOwnerUser" type="primary" @click="transfer">
|
||||
转移
|
||||
</el-button>
|
||||
</BusinessDetailsHeader>
|
||||
</el-button> -->
|
||||
<!-- </BusinessDetailsHeader> -->
|
||||
<el-col>
|
||||
<!-- <el-tabs> -->
|
||||
<!-- <el-tab-pane label="跟进记录">
|
||||
|
|
|
|||
|
|
@ -68,13 +68,6 @@
|
|||
<el-tab-pane label="下属负责的" name="3" />
|
||||
</el-tabs>
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||
<el-table-column align="center" fixed="left" label="商机名称" prop="name" width="200">
|
||||
<template #default="scope">
|
||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||
{{ scope.row.name }}
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="客户名称" prop="customerName" width="220">
|
||||
<!-- <template #default="scope">
|
||||
<el-link
|
||||
|
|
@ -86,6 +79,14 @@
|
|||
</el-link>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="left" label="商机名称" prop="name" width="200">
|
||||
<template #default="scope">
|
||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||
{{ scope.row.name }}
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:formatter="erpPriceTableColumnFormatter"
|
||||
align="center"
|
||||
|
|
@ -108,8 +109,9 @@
|
|||
prop="contactNextTime"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column align="center" label="负责人" prop="ownerUserName" width="100px" />
|
||||
<el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" />
|
||||
<el-table-column align="center" label="拓展人" prop="clueDeveloperName" width="130px" />
|
||||
<el-table-column align="center" label="维护人" prop="maintainerName" width="130px" />
|
||||
<!-- <el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" /> -->
|
||||
<el-table-column
|
||||
:formatter="dateFormatter"
|
||||
align="center"
|
||||
|
|
|
|||
|
|
@ -124,7 +124,14 @@
|
|||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="生日" prop="birthday">
|
||||
<el-input v-model="formData.birthday" placeholder="请输入生日" />
|
||||
<el-date-picker
|
||||
v-model="formData.birthday"
|
||||
placeholder="请选择生日"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
class="!w-1/1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
|
|
|
|||
|
|
@ -43,9 +43,9 @@
|
|||
<el-table-column align="center" label="手机号" prop="mobile" />
|
||||
<el-table-column align="center" label="职位" prop="post" />
|
||||
<!-- <el-table-column align="center" label="直属上级" prop="parentName" />-->
|
||||
<el-table-column align="center" label="是否关键决策人" min-width="100" prop="master">
|
||||
<el-table-column align="center" label="角色" min-width="100" prop="contactRoleType">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.master" />
|
||||
<dict-tag :type="DICT_TYPE.CRM_CONTACT_ROLE_TYPE" :value="scope.row.contactRoleType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
|
|
|||
|
|
@ -8,29 +8,29 @@
|
|||
<el-descriptions :column="4">
|
||||
<el-descriptions-item label="姓名">{{ contact.name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户名称">{{ contact.customerName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="登记人">{{ contact.ownerUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="角色">
|
||||
<dict-tag :type="DICT_TYPE.CRM_CONTACT_ROLE_TYPE" :value="contact.contactRoleType" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="手机">{{ contact.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="电话">{{ contact.telephone }}</el-descriptions-item>
|
||||
<el-descriptions-item label="职位">{{ contact.post }}</el-descriptions-item>
|
||||
<el-descriptions-item label="邮箱">{{ contact.email }}</el-descriptions-item>
|
||||
<el-descriptions-item label="QQ">{{ contact.qq }}</el-descriptions-item>
|
||||
<el-descriptions-item label="微信">{{ contact.wechat }}</el-descriptions-item>
|
||||
<el-descriptions-item label="地址">
|
||||
{{ contact.areaName }} {{ contact.detailAddress }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="职务">{{ contact.post }}</el-descriptions-item>
|
||||
<el-descriptions-item label="直属上级">{{ contact.parentName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="关键决策人">
|
||||
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="contact.master" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="contact.sex" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="下次联系时间">
|
||||
{{ formatDate(contact.contactNextTime) }}
|
||||
<el-descriptions-item label="生日">
|
||||
{{ contact.birthday }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="爱好">{{ contact.hobby }}</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭地址">{{ contact.detailAddress }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办公地址">{{ contact.registeredAddress }}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间">
|
||||
{{ formatDate(contact.createTime) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">{{ contact.remark }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item name="systemInfo">
|
||||
<!-- <el-collapse-item name="systemInfo">
|
||||
<template #title>
|
||||
<span class="text-base font-bold">系统信息</span>
|
||||
</template>
|
||||
|
|
@ -51,7 +51,7 @@
|
|||
{{ formatDate(contact.updateTime) }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-collapse-item>
|
||||
</el-collapse-item> -->
|
||||
</el-collapse>
|
||||
</ContentWrap>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,21 +1,21 @@
|
|||
<template>
|
||||
<ContactDetailsHeader v-loading="loading" :contact="contact">
|
||||
<el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', contact.id)">
|
||||
<!-- <ContactDetailsHeader v-loading="loading" :contact="contact"> -->
|
||||
<!-- <el-button v-if="permissionListRef?.validateWrite" @click="openForm('update', contact.id)">
|
||||
编辑
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<!-- <el-button v-if="permissionListRef?.validateOwnerUser" type="primary" @click="transfer">
|
||||
转移
|
||||
</el-button> -->
|
||||
</ContactDetailsHeader>
|
||||
<!-- </ContactDetailsHeader> -->
|
||||
<el-col>
|
||||
<el-tabs>
|
||||
<el-tab-pane label="跟进记录">
|
||||
<!-- <el-tabs> -->
|
||||
<!-- <el-tab-pane label="跟进记录">
|
||||
<FollowUpList :biz-id="contactId" :biz-type="BizTypeEnum.CRM_CONTACT" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="详细资料">
|
||||
</el-tab-pane> -->
|
||||
<!-- <el-tab-pane label="详细资料"> -->
|
||||
<ContactDetailsInfo :contact="contact" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="操作日志">
|
||||
<!-- </el-tab-pane> -->
|
||||
<!-- <el-tab-pane label="操作日志">
|
||||
<OperateLogV2 :log-list="logList" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="团队成员">
|
||||
|
|
@ -34,8 +34,8 @@
|
|||
:contact-id="contact.id"
|
||||
:customer-id="contact.customerId"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-tab-pane> -->
|
||||
<!-- </el-tabs> -->
|
||||
</el-col>
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<ContactForm ref="formRef" @success="getContact" />
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
<el-input
|
||||
v-model="queryParams.mobile"
|
||||
class="!w-240px"
|
||||
oninput = "value=value.replace(/[^\d]/g,'')"
|
||||
clearable
|
||||
placeholder="请输入手机号"
|
||||
@keyup.enter="handleQuery"
|
||||
|
|
@ -92,7 +93,7 @@
|
|||
<el-tabs v-model="activeName" @tab-click="handleTabClick">
|
||||
<el-tab-pane label="我负责的" name="1" />
|
||||
<el-tab-pane label="我参与的" name="2" />
|
||||
<!-- <el-tab-pane label="下属负责的" name="3" /> -->
|
||||
<el-tab-pane label="下属负责的" name="3" />
|
||||
</el-tabs>
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||
<el-table-column align="center" fixed="left" label="联系人姓名" prop="name" width="160">
|
||||
|
|
@ -168,7 +169,7 @@
|
|||
width="180px"
|
||||
/>
|
||||
<el-table-column align="center" label="创建人" prop="creatorName" width="120" />
|
||||
<el-table-column align="center" fixed="right" label="操作" width="200">
|
||||
<el-table-column align="center" fixed="right" label="操作" width="200" v-if="activeName == 1">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-hasPermi="['crm:contact:update']"
|
||||
|
|
@ -315,4 +316,7 @@ onMounted(async () => {
|
|||
await getList()
|
||||
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||
})
|
||||
onActivated(()=>{
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -65,9 +65,9 @@
|
|||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协议截止日期" prop="endTime">
|
||||
<el-form-item label="协议截止日期" prop="agreementDeadline">
|
||||
<el-date-picker
|
||||
v-model="formData.endTime"
|
||||
v-model="formData.agreementDeadline"
|
||||
disabled
|
||||
type="date"
|
||||
value-format="x"
|
||||
|
|
@ -198,6 +198,12 @@ const formFields = ref({
|
|||
contractBAuthorizedPersonswechat: 1,
|
||||
contractBAuthorizedPersonsemail: 1,
|
||||
contractBAuthorizedPersonsother2: 1,
|
||||
agreementDeadline: 1,
|
||||
extensionYears: 2,
|
||||
extensionDate: 2,
|
||||
terminationDate: 2,
|
||||
terminationReason: 2,
|
||||
note: 2
|
||||
})
|
||||
const formData = ref({
|
||||
authPerson: [],
|
||||
|
|
@ -210,7 +216,7 @@ const formData = ref({
|
|||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
startTime: undefined,
|
||||
endTime: undefined,
|
||||
agreementDeadline: undefined,
|
||||
penaltyRate: undefined,
|
||||
latePaymentRate: undefined,
|
||||
settleMethod: undefined,
|
||||
|
|
@ -421,7 +427,7 @@ const resetForm = () => {
|
|||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
startTime: undefined,
|
||||
endTime: undefined,
|
||||
agreementDeadline: undefined,
|
||||
penaltyRate: undefined,
|
||||
latePaymentRate: undefined,
|
||||
settleMethod: undefined,
|
||||
|
|
|
|||
|
|
@ -11,15 +11,16 @@
|
|||
基础信息
|
||||
</ContentWrap>
|
||||
<el-row>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="合同名称" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入合同名称" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" :disabled="!!formType" v-model="formData.customerId" @change="onCustomerChange" />
|
||||
<SelectComponent :customerList="customerList" :disabled="!!formType || route.query.bizId" v-model="formData.customerId" @change="onCustomerChange" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="formType">
|
||||
<el-form-item label="合同名称" prop="name">
|
||||
<el-input v-model="formData.name" disabled placeholder="请输入合同名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8" v-if="formType">
|
||||
|
|
@ -416,7 +417,7 @@
|
|||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="维护人" prop="afterSaleUserId">
|
||||
<el-select v-model="formData.afterSaleUserId" placeholder="请选择售后维护人">
|
||||
<el-select v-model="formData.afterSaleUserId" disabled placeholder="请选择售后维护人">
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -431,6 +432,7 @@
|
|||
<el-select
|
||||
class="w-1/1"
|
||||
placeholder="请选择拓展人"
|
||||
disabled
|
||||
v-model="formData.clueDeveloper"
|
||||
filterable
|
||||
>
|
||||
|
|
@ -703,6 +705,9 @@ const formRules = reactive({
|
|||
latePaymentRate: [{ required: true, message: '延期付款利率不能为空', trigger: 'blur' }],
|
||||
collUserId: [{ required: true, message: '协作人不能为空', trigger: 'blur' }],
|
||||
settleMethod: [{ required: true, message: '财务结算方式不能为空', trigger: 'change' }],
|
||||
servicor: [{ required: true, message: '服务对接人不能为空', trigger: 'change' }],
|
||||
technicalLead: [{ required: true, message: '技术对接人不能为空', trigger: 'change' }],
|
||||
settlementLead: [{ required: true, message: '结算对接人不能为空', trigger: 'change' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||
|
|
@ -991,6 +996,10 @@ onMounted(async () => {
|
|||
|
||||
if (formType.value) await open(formType.value)
|
||||
}
|
||||
|
||||
formData.value.customerId = Number(route.query.bizId) || ''
|
||||
|
||||
if(formData.value.customerId) onCustomerChange(formData.value.customerId)
|
||||
// 获得客户列表
|
||||
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||
// 获得用户列表
|
||||
|
|
|
|||
|
|
@ -1,43 +1,45 @@
|
|||
<template>
|
||||
<el-form
|
||||
<processForm
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
:fields="formFields"
|
||||
label-width="130px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<template #terminationDate>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="终止日期" prop="terminationDate">
|
||||
<el-date-picker
|
||||
v-model="formData.terminationDate"
|
||||
type="date"
|
||||
:disabled="!!type"
|
||||
:disabled="formFields.changeAmount !== 2 || isTrue"
|
||||
value-format="x"
|
||||
placeholder="请选择终止日期"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #terminationReason>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="终止原因" prop="terminationReason">
|
||||
<el-radio-group v-model="formData.terminationReason" :disabled="!!type">
|
||||
<el-radio-group v-model="formData.terminationReason" :disabled="formFields.changeAmount !== 2 || isTrue">
|
||||
<el-radio :label="1">合同到期</el-radio>
|
||||
<el-radio :label="2">甲方违反协议</el-radio>
|
||||
<el-radio :label="3">乙方不可抗力</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="终止说明" prop="note">
|
||||
<el-input v-model="formData.note" :disabled="!!type" type="textarea" :row="5" placeholder="必须确保账款已全部回收" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #note>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="终止说明" prop="note">
|
||||
<el-input v-model="formData.note" :disabled="formFields.changeAmount !== 2 || isTrue" type="textarea" :row="5" placeholder="必须确保账款已全部回收" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</processForm>
|
||||
<!-- 子表的表单 -->
|
||||
|
||||
</template>
|
||||
|
|
@ -55,7 +57,10 @@ import { propTypes } from '@/utils/propTypes'
|
|||
|
||||
/** CRM 方案报价 表单 */
|
||||
defineOptions({ name: 'QuotationForm' })
|
||||
|
||||
const props = defineProps<{
|
||||
formFields: {},
|
||||
isTrue: false
|
||||
}>()
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const customerList = ref([]) // 客户列表的数据
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
<template>
|
||||
<el-form
|
||||
<processForm
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
:fields="formFields"
|
||||
label-width="130px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<template #cooperationType>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="cooperationType">
|
||||
<el-select v-model="formData.cooperationType" :disabled="!!type" filterable placeholder="请选择合作类型" class="w-1/1">
|
||||
|
|
@ -19,14 +20,13 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #no>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="企业类型" prop="">
|
||||
<el-input v-model="formData.no" disabled placeholder="自动获取" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="上市情况" prop="customerId">
|
||||
<el-select v-model="formData.customerId" :disabled="!!type" placeholder="请选择上市情况" @change="onCustomerChange">
|
||||
|
|
@ -56,17 +56,22 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</template>
|
||||
<template #actualCapital>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="paidInCapital">
|
||||
<el-input v-model="formData.actualCapital" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #socialEmployeeNum>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="参保人数" prop="insuredCount">
|
||||
<el-input v-model="formData.socialEmployeeNum" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</template>
|
||||
<template #defendantRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被告记录" prop="defendantRecord">
|
||||
<el-radio-group v-model="formData.defendantRecord" :disabled="true">
|
||||
|
|
@ -75,6 +80,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #abnormalService>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经营异常" prop="abnormalService">
|
||||
<el-radio-group v-model="formData.abnormalService" :disabled="true">
|
||||
|
|
@ -83,6 +90,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #equityPledge>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="股权出质" prop="equityPledge">
|
||||
<el-radio-group v-model="formData.equityPledge" :disabled="true">
|
||||
|
|
@ -91,6 +100,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #dishonestyRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="失信记录" prop="dishonestyRecord">
|
||||
<el-radio-group v-model="formData.dishonestyRecord" :disabled="true">
|
||||
|
|
@ -99,6 +110,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #financeRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资记录" prop="financeRecord">
|
||||
<el-radio-group v-model="formData.financeRecord" :disabled="true">
|
||||
|
|
@ -107,6 +120,8 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #judgmentRecord>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被执行记录" prop="judgmentRecord">
|
||||
<el-radio-group v-model="formData.judgmentRecord" :disabled="true">
|
||||
|
|
@ -115,33 +130,36 @@
|
|||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协议截止日" prop="endTime">
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="formData.endTime"
|
||||
type="date"
|
||||
@change="changeYear"
|
||||
value-format="x"
|
||||
placeholder="请选择协议截止日"
|
||||
style="width: 100%"
|
||||
/>
|
||||
|
||||
</template>
|
||||
<template #agreementDeadline>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="协议截止日" prop="agreementDeadline">
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="formData.agreementDeadline"
|
||||
type="date"
|
||||
@change="changeYear"
|
||||
value-format="x"
|
||||
placeholder="请选择协议截止日"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
<template #extensionYears>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="顺延年限" prop="extensionYears">
|
||||
<el-input v-model="formData.extensionYears" :disabled="formFields.extensionYears !== 2 || isTrue" placeholder="请输入顺延年限" @change="changeYear" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="顺延年限" prop="extensionYears">
|
||||
<el-input v-model="formData.extensionYears" :disabled="!!type" placeholder="请输入顺延年限" @change="changeYear" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
</el-col>
|
||||
</template>
|
||||
<template #extensionDate>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="调整金额截止日期" prop="extensionDate">
|
||||
<el-date-picker
|
||||
v-model="formData.extensionDate"
|
||||
:disabled="!!type"
|
||||
:disabled="formFields.extensionDate !== 2 || isTrue"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="调整金额截止日期"
|
||||
|
|
@ -149,13 +167,15 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="延期说明" prop="signEmail">
|
||||
<el-input v-model="formData.signEmail" :disabled="!!type" type="textarea" :row="5" placeholder="请输入延期说明" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #note>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="延期说明" prop="note">
|
||||
<el-input v-model="formData.note" :disabled="formFields.note !== 2 || isTrue" type="textarea" :row="5" placeholder="请输入延期说明" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</processForm>
|
||||
<!-- 子表的表单 -->
|
||||
|
||||
</template>
|
||||
|
|
@ -205,7 +225,7 @@ const formData = ref({
|
|||
pricingUserId: undefined,
|
||||
signUserId: undefined,
|
||||
signPhoneNumber: undefined,
|
||||
signEmail: undefined,
|
||||
note: undefined,
|
||||
signWechat: undefined,
|
||||
paymentTerm: undefined,
|
||||
creditMethod: undefined,
|
||||
|
|
@ -254,7 +274,9 @@ const subTabsName = ref('quotationProduct')
|
|||
const quotationProductFormRef = ref()
|
||||
|
||||
const props = defineProps<{
|
||||
data: undefined
|
||||
data: undefined,
|
||||
formFields: {},
|
||||
isTrue: false
|
||||
}>()
|
||||
|
||||
/** 监听主表的关联字段的变化,加载对应的子表数据 */
|
||||
|
|
@ -336,8 +358,8 @@ const onPartnerChange = async (id: string) => {
|
|||
}
|
||||
|
||||
const changeYear = (val) => {
|
||||
if (formData.value.extensionYears && formData.value.endTime) {
|
||||
let time = new Date(formData.value.endTime)
|
||||
if (formData.value.extensionYears && formData.value.agreementDeadline) {
|
||||
let time = new Date(formData.value.agreementDeadline)
|
||||
let year = time.getFullYear()
|
||||
let month = time.getMonth() + 1
|
||||
let day = time.getDate()
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ const handleQuery = () => {
|
|||
/** 添加 */
|
||||
const formRef = ref()
|
||||
const openForm = () => {
|
||||
push({ name: 'CrmContractAdd' })
|
||||
push({ name: 'CrmContractAdd', query: { bizId: props.bizId } })
|
||||
}
|
||||
|
||||
/** 打开合同详情 */
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@
|
|||
</ContentWrap>
|
||||
<ContractBAuthorizedPersonForm :formFields="formFields" :type="1" ref="ContractBAuthorizedPersonFormRef" :customerId="formData.customerId" :contract-id="formData.id" />
|
||||
</div>
|
||||
<ContracExtension ref="contractExtensionFormRef" :formFields="formFields" v-if="formData.changeItem == 3" :disabled="true" :data="formData" />
|
||||
<ContractStop ref="contractStopFormRef" :formFields="formFields" :formData="formData" :disabled="true" v-if="formData.changeItem == 4" />
|
||||
<ContracExtension ref="contractExtensionFormRef" :isTrue="isTrue" :formFields="formFields" v-if="formData.changeItem == 3" :disabled="true" :data="formData" />
|
||||
<ContractStop ref="contractStopFormRef" :isTrue="isTrue" :formFields="formFields" :formData="formData" :disabled="true" v-if="formData.changeItem == 4" />
|
||||
<ContractAAuthorizedCompanyForm :formFields="formFields" ref="contractAAuthorizedCompanyFormRef1" :type="true" v-if="formData.changeItem == 5" :data="formData.contractAAuthorizedCompanys" />
|
||||
<ContractForm ref="contractFormRef" :type="1" :id="formData.id" v-if="formData.changeItem == 6" />
|
||||
</ContentWrap>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@
|
|||
class="-mb-15px"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同编号" prop="no">
|
||||
<el-input
|
||||
v-model="queryParams.no"
|
||||
|
|
@ -25,25 +28,7 @@
|
|||
placeholder="请输入合同名称"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
||||
<!-- <el-select
|
||||
v-model="queryParams.customerId"
|
||||
class="!w-240px"
|
||||
clearable
|
||||
lable-key="name"
|
||||
placeholder="请选择客户"
|
||||
value-key="id"
|
||||
@keyup.enter="handleQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in customerList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id!"
|
||||
/>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery">
|
||||
|
|
|
|||
|
|
@ -158,9 +158,7 @@ const route = useRouter()
|
|||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
console.log('%csrc/views/crm/customer/detail/ComplaintsSuggestion.vue:159 route', 'color: #007acc;', route);
|
||||
queryParams.customerId = props.bizId
|
||||
console.log('%csrc/views/crm/customer/detail/ComplaintsSuggestion.vue:163 queryParams', 'color: #007acc;', queryParams);
|
||||
const data = await CustomerFeedbackApi.getCustomerFeedbackPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
|
|
@ -208,7 +206,7 @@ const formRef = ref()
|
|||
// }
|
||||
const router = useRouter() // 路由
|
||||
const openFormAdd = () => {
|
||||
router.push({ name: 'CustomerFeedbackCreate' })
|
||||
router.push({ name: 'CustomerFeedbackCreate', query: { bizId: props.bizId } })
|
||||
}
|
||||
|
||||
const openFormEdit = (row: Object) => {
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ import { defaultProps, handleTree } from '@/utils/tree'
|
|||
import * as DeptApi from '@/api/system/dept'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import { getLimitForm } from '@/api/bpm/form'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
|
||||
/** 客户反馈 表单 */
|
||||
defineOptions({ name: 'CustomerFeedbackForm' })
|
||||
|
|
@ -200,7 +201,10 @@ defineOptions({ name: 'CustomerFeedbackForm' })
|
|||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { proxy }: any = getCurrentInstance();
|
||||
|
||||
const props = defineProps({
|
||||
id: propTypes.number.def(undefined),
|
||||
type: propTypes.number.def(undefined),
|
||||
})
|
||||
const isTrue = ref(false)
|
||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||
const userList = ref([]) //用户列表
|
||||
|
|
@ -359,7 +363,7 @@ const getLimit = async () => {
|
|||
const route = useRoute();
|
||||
onMounted(async() => {
|
||||
isTrue.value = !!route.query.isDetail
|
||||
formType.value = route.query.id
|
||||
formType.value = props.id || route.query.id
|
||||
|
||||
if (formType.value) await open(formType.value)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" placeholder="请选择客户名称" v-model="formData.customerId" />
|
||||
<SelectComponent :customerList="customerList" :disabled="route.query.bizId" placeholder="请选择客户名称" v-model="formData.customerId" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
|
@ -301,6 +301,7 @@ const resetForm = () => {
|
|||
|
||||
const route = useRoute();
|
||||
onMounted(async() => {
|
||||
formData.value.customerId = Number(route.query.bizId) || ''
|
||||
formType.value = route.query.id
|
||||
|
||||
if (formType.value) await open(formType.value)
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
v-hasPermi="['crm:customer-feedback:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ const submitForm = async () => {
|
|||
...formData.value,
|
||||
contactIds: formData.value.contacts.map((item) => item.id),
|
||||
businessIds: formData.value.businesses.map((item) => item.id),
|
||||
fileUrls: [formData.value.fileUrls]
|
||||
fileUrls: formData.value.fileUrls ? [formData.value.fileUrls] : []
|
||||
} as unknown as FollowUpRecordVO
|
||||
await FollowUpRecordApi.createFollowUpRecord(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
<el-table-column label="附件" align="center" prop="fileUrls">
|
||||
<template #default="scope">
|
||||
<el-link
|
||||
v-if="scope.row.fileUrls"
|
||||
v-if="scope.row.fileUrls && scope.row.fileUrls.length"
|
||||
:underline="false"
|
||||
type="primary"
|
||||
@click="previewFile(scope.row.fileUrls)"
|
||||
|
|
|
|||
|
|
@ -80,19 +80,19 @@
|
|||
<el-input v-model="formData.listingStatus" placeholder="请输入上市情况" clearable />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="融资信息" prop="financingInfo">
|
||||
<el-input v-model="formData.financingInfo" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实缴资金" prop="actualCapital">
|
||||
<el-input v-model="formData.actualCapital" placeholder="" clearable />
|
||||
<el-input v-model="formData.actualCapital" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
||||
<el-input v-model="formData.socialEmployeeNum" placeholder="" clearable />
|
||||
<el-input v-model="formData.socialEmployeeNum" disabled placeholder="" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -114,7 +114,7 @@
|
|||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被告记录" prop="defendantRecord">
|
||||
<el-radio-group v-model="formData.defendantRecord" >
|
||||
<el-radio-group v-model="formData.defendantRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经营异常" prop="abnormalService">
|
||||
<el-radio-group v-model="formData.abnormalService" >
|
||||
<el-radio-group v-model="formData.abnormalService" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="股权出质" prop="equityPledge">
|
||||
<el-radio-group v-model="formData.equityPledge" >
|
||||
<el-radio-group v-model="formData.equityPledge" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -138,7 +138,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="失信记录" prop="dishonestyRecord">
|
||||
<el-radio-group v-model="formData.dishonestyRecord" >
|
||||
<el-radio-group v-model="formData.dishonestyRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -146,7 +146,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="融资记录" prop="financeRecord">
|
||||
<el-radio-group v-model="formData.financeRecord" >
|
||||
<el-radio-group v-model="formData.financeRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -154,7 +154,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="被执行记录" prop="judgmentRecord">
|
||||
<el-radio-group v-model="formData.judgmentRecord" >
|
||||
<el-radio-group v-model="formData.judgmentRecord" disabled>
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
|
|
@ -166,7 +166,7 @@
|
|||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合作类型" prop="partnerType">
|
||||
<el-select v-model="formData.partnerType" clearable placeholder="请选择合作类型">
|
||||
<el-select v-model="formData.partnerType" @change="changePartnerType" clearable placeholder="请选择合作类型">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE1)"
|
||||
:key="dict.value"
|
||||
|
|
@ -238,8 +238,8 @@
|
|||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商机负责人" prop="ownerUserId">
|
||||
<el-select v-model="formData.ownerUserId" placeholder="请选择商机负责人">
|
||||
<el-form-item label="商机负责人" prop="requestorUserId">
|
||||
<el-select v-model="formData.requestorUserId" disabled placeholder="请选择商机负责人">
|
||||
<el-option
|
||||
v-for="dict in userOptions"
|
||||
:key="dict.id"
|
||||
|
|
@ -303,7 +303,7 @@
|
|||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账期" prop="paymentTerm">
|
||||
<el-select v-model="formData.paymentTerm" placeholder="请选择账期">
|
||||
<el-select v-model="formData.paymentTerm" disabled placeholder="请选择账期">
|
||||
<el-option
|
||||
v-for="dict in getStrDictOptions('payment_term')"
|
||||
:key="dict.value"
|
||||
|
|
@ -315,7 +315,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信方式" prop="creditMethod">
|
||||
<el-select v-model="formData.creditMethod" placeholder="请选择授信方式">
|
||||
<el-select v-model="formData.creditMethod" disabled placeholder="请选择授信方式">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions('credit_method')"
|
||||
:key="dict.value"
|
||||
|
|
@ -505,7 +505,7 @@ const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显
|
|||
bankAccount: 1,
|
||||
legalRepresentative: 1,
|
||||
deptId: 1,
|
||||
ownerUserId: 1,
|
||||
requestorUserId: 1,
|
||||
pricingUserId: 1,
|
||||
paymentTerm: 1,
|
||||
creditMethod: 1,
|
||||
|
|
@ -549,7 +549,7 @@ const formData = ref({
|
|||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
serviceFeeCollectionMethodId: undefined,
|
||||
ownerUserId: undefined,
|
||||
requestorUserId: undefined,
|
||||
expanderUserId: undefined,
|
||||
pricingUserId: undefined,
|
||||
signUserId: undefined,
|
||||
|
|
@ -612,6 +612,7 @@ const formRules = reactive({
|
|||
quotationTimes: [{ required: true, message: '第几次报价不能为空', trigger: 'change' }],
|
||||
serviceFeeCollectionMethodId: [{ required: true, message: '服务费收取方式不能为空', trigger: 'change' }],
|
||||
insuranceId: [{ required: true, message: '保险类型不能为空', trigger: 'change' }],
|
||||
partnerType: [{ required: true, message: '合作类型不能为空', trigger: 'change' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
@ -735,7 +736,7 @@ const onBusinessChange = async (businessId: string) => {
|
|||
const res = await BusinessApi.getBusiness(businessId);
|
||||
formData.value.customerId = res.customerId;
|
||||
// formData.value.creditLimit = res.creditLimit; // 保存详情信息
|
||||
formData.value.ownerUserId = res.ownerUserId; // 保存详情信息
|
||||
formData.value.requestorUserId = res.requestorUserId; // 保存详情信息
|
||||
formData.value.paymentTerm = res.paymentTerm;
|
||||
formData.value.creditMethod = res.creditMethod;
|
||||
formData.value.creditCalcCycle = res.creditCalcCycle;
|
||||
|
|
@ -779,6 +780,12 @@ const onCustomerChange = async (customerId: string) => {
|
|||
formData.value.dishonestRecord = customerRes.dishonestRecord;
|
||||
formData.value.financingRecord = customerRes.financingRecord;
|
||||
formData.value.enforcementRecord = customerRes.enforcementRecord;
|
||||
formData.value.regType = customerRes.regType;
|
||||
formData.value.abnormalService = customerRes.abnormalService;
|
||||
formData.value.dishonestyRecord = customerRes.dishonestyRecord;
|
||||
formData.value.financeRecord = customerRes.financeRecord;
|
||||
formData.value.judgmentRecord = customerRes.judgmentRecord;
|
||||
|
||||
formData.value.creditAmount = customerRes.creditAmount || 0;
|
||||
formData.value.creditLimit = ((formData.value.creditAmount || 0) + (formData.value.creditLimitNum || 0)).toFixed(2)
|
||||
} catch (err) {
|
||||
|
|
@ -888,7 +895,7 @@ const resetForm = () => {
|
|||
invoiceTemplateId: undefined,
|
||||
processInstanceId: undefined,
|
||||
auditStatus: undefined,
|
||||
ownerUserId: undefined,
|
||||
requestorUserId: undefined,
|
||||
expanderUserId: undefined,
|
||||
pricingUserId: undefined,
|
||||
signUserId: undefined,
|
||||
|
|
@ -910,6 +917,15 @@ const resetForm = () => {
|
|||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
const changePartnerType = async (val) => {
|
||||
const org = await ContractApi.getOrg({
|
||||
pageNo: 1,
|
||||
pageSize: 1000,
|
||||
partnerType: val
|
||||
})
|
||||
orgList.value = org.list
|
||||
}
|
||||
|
||||
const route = useRoute();
|
||||
onMounted(async () => {
|
||||
formType.value = props.id || route.query.id;
|
||||
|
|
@ -935,11 +951,6 @@ onMounted(async () => {
|
|||
//服务费收取方式
|
||||
insuranceList.value = await QuotationApi.getInsuranceList()
|
||||
|
||||
const org = await ContractApi.getOrg({
|
||||
pageNo: 1,
|
||||
pageSize: 1000
|
||||
})
|
||||
orgList.value = org.list
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -143,23 +143,23 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="商机负责人" align="center" prop="ownerUserId">
|
||||
<template #default="scope">
|
||||
<el-table-column label="商机负责人" align="center" prop="requestorUserName" width="120">
|
||||
<!-- <template #default="scope">
|
||||
|
||||
{{getName(userOptions, scope.row.creator)}}
|
||||
|
||||
</template>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column label="拓展人" align="center" prop="expandingUserId">
|
||||
<template #default="scope">
|
||||
<el-table-column label="拓展人" align="center" prop="clueDeveloperName">
|
||||
<!-- <template #default="scope">
|
||||
{{getName(userOptions, scope.row.expandingUserId)}}
|
||||
</template>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column label="维护人" align="center" prop="ownerUserId">
|
||||
<template #default="scope">
|
||||
<el-table-column label="维护人" align="center" prop="maintainerName">
|
||||
<!-- <template #default="scope">
|
||||
{{getName(userOptions, scope.row.maintenanceUserId)}}
|
||||
|
||||
</template>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column label="账期" align="center" prop="paymentTerm" width="120">
|
||||
<template #default="scope">
|
||||
|
|
@ -171,14 +171,14 @@
|
|||
<dict-tag :type="'credit_method'" :value="scope.row.creditMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目难度" align="center" prop="projectDifficultyName" width="120" />
|
||||
<el-table-column label="项目难度" align="center" prop="projectDifficultyName" width="180" />
|
||||
<!-- <el-table-column label="授信计算周期" align="center" prop="creditCalcCycle" width="120" /> -->
|
||||
<!-- <template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CREDIT_CALC_CYCLE" :value="scope.row.creditCalcCycle" />
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="授信额度" align="center" prop="creditLimit" width="180" />
|
||||
<el-table-column label="合作主体" align="center" prop="partnerCompanyName" />
|
||||
<el-table-column label="合作主体" align="center" prop="partnerCompanyName" width="150" />
|
||||
<el-table-column label="审批状态" align="center" prop="auditStatus" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.auditStatus" />
|
||||
|
|
|
|||
|
|
@ -48,17 +48,30 @@
|
|||
<el-input v-model="formData.registeredAddress" placeholder="请输入注册地址" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" placeholder="请输入开户行" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input v-model="formData.bankAccount" placeholder="请输入银行账号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合作类型" prop="partnerType">
|
||||
<el-select v-model="formData.partnerType" clearable placeholder="请选择合作类型">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PARTNER_TYPE1)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input v-model="formData.bankName" placeholder="请输入开户行" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="营业执照文件路径" prop="businessLicense">
|
||||
<UploadImg v-model="formData.businessLicense" />
|
||||
|
||||
|
|
@ -75,6 +88,7 @@
|
|||
</template>
|
||||
<script setup lang="ts">
|
||||
import { OrganizationsApi, OrganizationsVO } from '@/api/system/organizations'
|
||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
|
||||
/** 组织机构 表单 */
|
||||
defineOptions({ name: 'OrganizationsForm' })
|
||||
|
|
@ -108,7 +122,8 @@ const formRules = reactive({
|
|||
creditCode: [{ required: true, message: '统一信用代码不能为空', trigger: 'blur' }],
|
||||
legalRepresentative: [{ required: true, message: '法人代表不能为空', trigger: 'blur' }],
|
||||
registeredAddress: [{ required: true, message: '注册地址不能为空', trigger: 'blur' }],
|
||||
bankAccount: [{ required: true, message: '银行账号不能为空', trigger: 'blur' }]
|
||||
bankAccount: [{ required: true, message: '银行账号不能为空', trigger: 'blur' }],
|
||||
partnerType: [{ required: true, message: '合作类型不能为空', trigger: 'blur' }],
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
|
||||
|
|
|
|||
|
|
@ -17,107 +17,7 @@
|
|||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作地址" prop="workplace">
|
||||
<el-input
|
||||
v-model="queryParams.workplace"
|
||||
placeholder="请输入工作地址"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="企业微信凭证" prop="corpId">
|
||||
<el-input
|
||||
v-model="queryParams.corpId"
|
||||
placeholder="请输入企业微信凭证"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="企业微信凭证密钥" prop="corpSecret">
|
||||
<el-input
|
||||
v-model="queryParams.corpSecret"
|
||||
placeholder="请输入企业微信凭证密钥"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="主体名称" prop="subjectName">
|
||||
<el-input
|
||||
v-model="queryParams.subjectName"
|
||||
placeholder="请输入主体名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="统一信用代码" prop="creditCode">
|
||||
<el-input
|
||||
v-model="queryParams.creditCode"
|
||||
placeholder="请输入统一信用代码"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||
<el-input
|
||||
v-model="queryParams.legalRepresentative"
|
||||
placeholder="请输入法人代表"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="注册地址" prop="registeredAddress">
|
||||
<el-input
|
||||
v-model="queryParams.registeredAddress"
|
||||
placeholder="请输入注册地址"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="开户行" prop="bankName">
|
||||
<el-input
|
||||
v-model="queryParams.bankName"
|
||||
placeholder="请输入开户行"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="银行账号" prop="bankAccount">
|
||||
<el-input
|
||||
v-model="queryParams.bankAccount"
|
||||
placeholder="请输入银行账号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="营业执照文件路径" prop="businessLicense">
|
||||
<el-input
|
||||
v-model="queryParams.businessLicense"
|
||||
placeholder="请输入营业执照文件路径"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" prop="createTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createTime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
|
|
@ -129,15 +29,6 @@
|
|||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['system:organizations:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
|
@ -156,7 +47,19 @@
|
|||
<el-table-column label="注册地址" align="center" prop="registeredAddress" />
|
||||
<el-table-column label="开户行" align="center" prop="bankName" />
|
||||
<el-table-column label="银行账号" align="center" prop="bankAccount" />
|
||||
<el-table-column label="营业执照文件路径" align="center" prop="businessLicense" />
|
||||
<el-table-column label="营业执照文件" align="center" prop="businessLicense">
|
||||
<template #default="scope">
|
||||
<el-link
|
||||
v-if="scope.row.businessLicense"
|
||||
:underline="false"
|
||||
type="primary"
|
||||
@click="previewPic(scope.row.businessLicense)"
|
||||
>
|
||||
预览
|
||||
</el-link>
|
||||
<span v-else>无附件</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建者" align="center" prop="creator" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
|
|
@ -202,7 +105,13 @@
|
|||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
<el-image-viewer
|
||||
v-if="show"
|
||||
:url-list="urlList"
|
||||
show-progress
|
||||
@close="show = false"
|
||||
|
||||
/>
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<OrganizationsForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
|
@ -218,7 +127,8 @@ defineOptions({ name: 'Organizations' })
|
|||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const show = ref(false)
|
||||
const urlList = ref([])
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<OrganizationsVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
|
|
@ -271,6 +181,11 @@ const openForm = (type: string, id?: number) => {
|
|||
formRef.value.open(type, id)
|
||||
}
|
||||
|
||||
const previewPic = (val) => {
|
||||
show.value = true
|
||||
urlList.value = [val]
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
|
|
|
|||
Loading…
Reference in New Issue