修改
客户/供应商 子表分开,id改回自增
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="customerName">
|
||||
<el-input
|
||||
@@ -158,13 +159,19 @@
|
||||
<dict-tag :options="sys_normal_disable" :value="scope.row.isEnable" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="业务员用户ID" align="center" prop="salesUserId" />
|
||||
<!-- <el-table-column label="业务员用户ID" align="center" prop="salesUserId" /> -->
|
||||
<el-table-column label="业务员姓名" align="center" prop="salesUser" />
|
||||
|
||||
<el-table-column label="资金额度" align="center" prop="ed" />
|
||||
<el-table-column label="回款账期" align="center" prop="zq" />
|
||||
<el-table-column label="结算员用户ID" align="center" prop="settlementUserId" />
|
||||
<!-- <el-table-column label="结算员用户ID" align="center" prop="settlementUserId" /> -->
|
||||
<el-table-column label="结算员姓名" align="center" prop="settlementUser" />
|
||||
<el-table-column label="客服用户ID" align="center" prop="serviceUserId" />
|
||||
<!-- <el-table-column label="结算员" align="center">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ getUserName(scope.row.settlementUserId) }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column label="客服用户ID" align="center" prop="serviceUserId" /> -->
|
||||
<el-table-column label="客服姓名" align="center" prop="serviceUser" />
|
||||
<el-table-column label="结算方式" align="center" prop="settlementType" />
|
||||
<el-table-column label="临时额度" align="center" prop="tempEd" />
|
||||
@@ -198,6 +205,7 @@
|
||||
<el-form ref="customerRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
|
||||
<el-form-item label="客户编码" prop="customerCode">
|
||||
<el-input v-model="form.customerCode" placeholder="请输入客户编码" />
|
||||
</el-form-item>
|
||||
@@ -238,6 +246,25 @@
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="联系人" prop="contactList">
|
||||
<div style="margin-bottom: 8px;">
|
||||
<el-button type="primary" plain icon="Plus" size="small" @click="handleAddContact">新增联系人</el-button>
|
||||
</div>
|
||||
<el-table :data="form.contactList" border size="small" :max-height="240">
|
||||
<el-table-column label="序号" type="index" width="55" align="center" />
|
||||
<el-table-column label="联系人" align="center" prop="contactName" show-overflow-tooltip />
|
||||
<el-table-column label="职位" align="center" prop="position" show-overflow-tooltip />
|
||||
<el-table-column label="手机号" align="center" prop="phone" show-overflow-tooltip />
|
||||
<el-table-column label="操作" align="center" width="160">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" size="small" @click="handleEditContact(scope.row, scope.$index)">编辑</el-button>
|
||||
<el-button link type="danger" size="small" @click="handleDeleteContact(scope.$index)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="启用状态" prop="isEnable">
|
||||
<el-select
|
||||
@@ -595,6 +622,118 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 联系人编辑对话框 -->
|
||||
<el-dialog :title="contactDialogTitle" v-model="contactDialogVisible" width="800px" append-to-body>
|
||||
<el-form ref="contactRef" :model="contactForm" :rules="contactRules" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人姓名" prop="contactName">
|
||||
<el-input v-model="contactForm.contactName" placeholder="请输入联系人姓名" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="职位" prop="position">
|
||||
<el-input v-model="contactForm.position" placeholder="如 采购经理/财务总监" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="手机号" prop="phone">
|
||||
<el-input v-model="contactForm.phone" placeholder="请输入手机号" maxlength="20" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属部门" prop="department">
|
||||
<el-input v-model="contactForm.department" placeholder="如 采购部/财务部" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="座机" prop="landline">
|
||||
<el-input v-model="contactForm.landline" placeholder="含区号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="电子邮箱" prop="email">
|
||||
<el-input v-model="contactForm.email" placeholder="请输入电子邮箱" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="微信号" prop="wechat">
|
||||
<el-input v-model="contactForm.wechat" placeholder="请输入微信号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="QQ号" prop="qq">
|
||||
<el-input v-model="contactForm.qq" placeholder="请输入QQ号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="国家/地区" prop="country" label-width="90px">
|
||||
<el-input v-model="contactForm.country" placeholder="中国" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="省份" prop="province" label-width="60px">
|
||||
<el-input v-model="contactForm.province" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="城市" prop="city" label-width="60px">
|
||||
<el-input v-model="contactForm.city" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="区/县" prop="district" label-width="60px">
|
||||
<el-input v-model="contactForm.district" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮政编码" prop="postalCode">
|
||||
<el-input v-model="contactForm.postalCode" placeholder="请输入邮政编码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="详细地址" prop="contactAddress">
|
||||
<el-input v-model="contactForm.contactAddress" placeholder="街道、门牌号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系人类型" prop="contactType">
|
||||
<el-select v-model="contactForm.contactType" placeholder="请选择" clearable>
|
||||
<el-option label="业务联系人" value="0" />
|
||||
<el-option label="财务联系人" value="1" />
|
||||
<el-option label="紧急联系人" value="2" />
|
||||
<el-option label="其他" value="3" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="是否默认" prop="isDefault">
|
||||
<el-radio-group v-model="contactForm.isDefault">
|
||||
<el-radio label="0">否</el-radio>
|
||||
<el-radio label="1">是</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="排序" prop="sortOrder">
|
||||
<el-input-number v-model="contactForm.sortOrder" :min="0" controls-position="right" style="width: 100%;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="contactForm.remark" type="textarea" :rows="2" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitContactForm">确 定</el-button>
|
||||
<el-button @click="contactDialogVisible = false">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -602,7 +741,7 @@
|
||||
import { listCustomer, getCustomer, delCustomer, addCustomer, updateCustomer } from "@/api/customersuppliermanagement/customerinfo/customer.js"
|
||||
import { listUser } from "@/api/system/user"
|
||||
import { getToken } from "@/utils/auth"
|
||||
|
||||
// import customerSelect from "@/components/customerSelect/index.vue"
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
@@ -796,6 +935,7 @@ function reset() {
|
||||
productIds: null,
|
||||
attachmentList: [],
|
||||
companyList: [],
|
||||
contactList: [],
|
||||
remark: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
@@ -844,6 +984,9 @@ function handleUpdate(row) {
|
||||
if (!form.value.companyList) {
|
||||
form.value.companyList = []
|
||||
}
|
||||
if (!form.value.contactList) {
|
||||
form.value.contactList = []
|
||||
}
|
||||
open.value = true
|
||||
title.value = "修改客户"
|
||||
})
|
||||
@@ -1000,6 +1143,93 @@ function submitCompanyForm() {
|
||||
proxy.$modal.msgSuccess(companyEditingIndex.value >= 0 ? "修改成功" : "新增成功")
|
||||
}
|
||||
|
||||
/* ============ 联系人子表 ============ */
|
||||
const contactDialogVisible = ref(false)
|
||||
const contactDialogTitle = ref("")
|
||||
const contactForm = ref({})
|
||||
const contactEditingIndex = ref(-1)
|
||||
const contactRules = {
|
||||
contactName: [{ required: true, message: '联系人姓名不能为空', trigger: 'blur' }],
|
||||
phone: [{ required: true, message: '手机号不能为空', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
/** 重置联系人表单 */
|
||||
function resetContactForm() {
|
||||
contactForm.value = {
|
||||
contactId: null,
|
||||
customerId: form.value.customerId || null,
|
||||
contactName: '',
|
||||
position: '',
|
||||
department: '',
|
||||
phone: '',
|
||||
landline: '',
|
||||
email: '',
|
||||
wechat: '',
|
||||
qq: '',
|
||||
country: '中国',
|
||||
province: '',
|
||||
city: '',
|
||||
district: '',
|
||||
contactAddress: '',
|
||||
postalCode: '',
|
||||
isDefault: '0',
|
||||
contactType: '0',
|
||||
sortOrder: 0,
|
||||
remark: ''
|
||||
}
|
||||
proxy.resetForm("contactRef")
|
||||
}
|
||||
|
||||
function getUserName(userId) {
|
||||
if (!userId) return ''
|
||||
const user = this.userOptions.find(u => String(u.userId) === String(userId))
|
||||
return user ? user.nickName : userId
|
||||
}
|
||||
|
||||
/** 新增联系人(本地子表,跟随主表一起提交) */
|
||||
function handleAddContact() {
|
||||
resetContactForm()
|
||||
contactEditingIndex.value = -1
|
||||
contactDialogTitle.value = "新增联系人"
|
||||
contactDialogVisible.value = true
|
||||
}
|
||||
|
||||
/** 编辑联系人 */
|
||||
function handleEditContact(row, index) {
|
||||
resetContactForm()
|
||||
contactForm.value = { ...row }
|
||||
contactEditingIndex.value = index
|
||||
contactDialogTitle.value = "修改联系人"
|
||||
contactDialogVisible.value = true
|
||||
}
|
||||
|
||||
/** 删除联系人(仅从子表移除;未入库的不调后端,已入库的在主表保存后由后端增量处理) */
|
||||
function handleDeleteContact(index) {
|
||||
proxy.$modal.confirm('是否确认删除该条联系人记录?').then(() => {
|
||||
form.value.contactList.splice(index, 1)
|
||||
proxy.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
/** 提交联系人表单(本地保存,跟随主表提交一起入库) */
|
||||
function submitContactForm() {
|
||||
if (!contactForm.value.contactName) {
|
||||
proxy.$modal.msgWarning("联系人姓名不能为空")
|
||||
return
|
||||
}
|
||||
if (!Array.isArray(form.value.contactList)) {
|
||||
form.value.contactList = []
|
||||
}
|
||||
if (contactEditingIndex.value >= 0) {
|
||||
form.value.contactList.splice(contactEditingIndex.value, 1, { ...contactForm.value })
|
||||
} else {
|
||||
form.value.contactList.push({ ...contactForm.value })
|
||||
}
|
||||
contactDialogVisible.value = false
|
||||
proxy.$modal.msgSuccess(contactEditingIndex.value >= 0 ? "修改成功" : "新增成功")
|
||||
}
|
||||
|
||||
|
||||
getUserList()
|
||||
getList()
|
||||
</script>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
clearable
|
||||
@change="handleQuery"
|
||||
>
|
||||
<el-option label="正常" :value="0" />
|
||||
<el-option label="停用" :value="1" />
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="停用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
@@ -101,7 +101,6 @@
|
||||
plain
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['customersupplier:supplierinfo:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -143,7 +142,9 @@
|
||||
<el-table-column label="供应商名称" align="center" prop="supplierName" />
|
||||
<el-table-column label="对外代码" align="center" prop="supplierCodeDw" />
|
||||
<el-table-column label="统一社会信用代码" align="center" prop="creditCode" />
|
||||
<el-table-column label="供应商类型" align="center" prop="supplierType" />
|
||||
<el-table-column label="供应商类型" align="center" prop="supplierType">
|
||||
<template #default="scope">{{ formatOption(supplierTypeOptions, scope.row.supplierType) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="启用状态" align="center" prop="isEnable">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_normal_disable" :value="scope.row.isEnable" />
|
||||
@@ -154,15 +155,21 @@
|
||||
<el-table-column label="应付账期" align="center" prop="zq" />
|
||||
<el-table-column label="结算员姓名" align="center" prop="settlementUser" />
|
||||
<el-table-column label="跟单员姓名" align="center" prop="serviceUser" />
|
||||
<el-table-column label="结算方式" align="center" prop="settlementType" />
|
||||
<el-table-column label="结算方式" align="center" prop="settlementType">
|
||||
<template #default="scope">{{ formatOption(settlementTypeOptions, scope.row.settlementType) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="临时额度" align="center" prop="tempEd" />
|
||||
<el-table-column label="应付余额" align="center" prop="accountBalance" />
|
||||
<el-table-column label="外币应付余额" align="center" prop="foreignCurrencyBalance" />
|
||||
<el-table-column label="信用额度" align="center" prop="creditEd" />
|
||||
<el-table-column label="重量阈值" align="center" prop="weightThreshold" />
|
||||
<el-table-column label="抛比" align="center" prop="throwRatio" />
|
||||
<el-table-column label="合作开始日期" align="center" prop="cooperationStartDate" />
|
||||
<el-table-column label="合作状态" align="center" prop="cooperationStatus" />
|
||||
<el-table-column label="合作开始日期" align="center" prop="cooperationStartDate">
|
||||
<template #default="scope">{{ formatDateOnly(scope.row.cooperationStartDate) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合作状态" align="center" prop="cooperationStatus">
|
||||
<template #default="scope">{{ formatOption(cooperationStatusOptions, scope.row.cooperationStatus) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="绑定渠道ID" align="center" prop="channelIds" />
|
||||
<el-table-column label="备注说明" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
@@ -659,6 +666,36 @@ const attachmentTypeOptions = ref([
|
||||
{ value: "2", label: "合同文件" },
|
||||
{ value: "3", label: "其他" }
|
||||
])
|
||||
const supplierTypeOptions = ref([
|
||||
{ value: "0", label: "生产商" },
|
||||
{ value: "1", label: "代理商" },
|
||||
{ value: "2", label: "个人" },
|
||||
{ value: "3", label: "物流商" },
|
||||
{ value: "4", label: "其他" }
|
||||
])
|
||||
const settlementTypeOptions = ref([
|
||||
{ value: "0", label: "月结" },
|
||||
{ value: "1", label: "周结" },
|
||||
{ value: "2", label: "日结" },
|
||||
{ value: "3", label: "票结" }
|
||||
])
|
||||
const cooperationStatusOptions = ref([
|
||||
{ value: "0", label: "正常" },
|
||||
{ value: "1", label: "暂停" },
|
||||
{ value: "2", label: "终止" }
|
||||
])
|
||||
|
||||
function formatOption(options, value) {
|
||||
if (value === null || value === undefined || value === '') return ''
|
||||
const opt = options.find(o => String(o.value) === String(value))
|
||||
return opt ? opt.label : value
|
||||
}
|
||||
|
||||
function formatDateOnly(value) {
|
||||
if (!value) return ''
|
||||
const s = String(value)
|
||||
return s.length > 10 ? s.substring(0, 10) : s
|
||||
}
|
||||
const ATTACHMENT_SIZE_LIMIT = 50
|
||||
const ATTACHMENT_EXTENSIONS = ["pdf", "jpg", "jpeg", "png", "doc", "docx", "xls", "xlsx", "zip", "rar"]
|
||||
|
||||
@@ -696,7 +733,7 @@ function handleAttachmentUploadSuccess(res, file) {
|
||||
if (res.code === 200) {
|
||||
form.value.attachmentList.push({
|
||||
attachmentId: null,
|
||||
customerId: form.value.supplierId || null,
|
||||
supplierId: form.value.supplierId || null,
|
||||
fileName: file.name,
|
||||
filePath: res.fileName,
|
||||
fileSize: file.size,
|
||||
@@ -913,7 +950,7 @@ const companyEditingIndex = ref(-1)
|
||||
function resetCompanyForm() {
|
||||
companyForm.value = {
|
||||
companyId: null,
|
||||
customerId: null,
|
||||
supplierId: null,
|
||||
companyNameFull: '',
|
||||
englishName: '',
|
||||
creditCode: '',
|
||||
|
||||
Reference in New Issue
Block a user