fix: 移动端新增客户表单与后端字段对齐

- 新增联系人(contact)字段,设为必填
- 客户编码(customerCode)设为必填
- 移除后端不支持的字段:简称、客户等级、所属行业
- 表单字段与后端CustomerCreateDTO保持一致
This commit is contained in:
zhangjf 2026-02-23 13:14:17 +08:00
parent 965d98cab5
commit 011a6bfb3f

View File

@ -9,6 +9,8 @@
name="customerCode"
label="客户编码"
placeholder="请输入客户编码"
:rules="[{ required: true, message: '请输入客户编码' }]"
required
/>
<van-field
@ -21,10 +23,12 @@
/>
<van-field
v-model="form.customerShort"
name="customerShort"
label="简称"
placeholder="请输入客户简称"
v-model="form.contact"
name="contact"
label="联系人"
placeholder="请输入联系人"
:rules="[{ required: true, message: '请输入联系人' }]"
required
/>
<van-field
@ -43,23 +47,6 @@
placeholder="请输入邮箱"
/>
<van-field
v-model="levelText"
is-link
readonly
name="level"
label="客户等级"
placeholder="请选择等级"
@click="showLevelPicker = true"
/>
<van-field
v-model="form.industry"
name="industry"
label="所属行业"
placeholder="请输入所属行业"
/>
<van-field
v-model="form.address"
name="address"
@ -84,73 +71,50 @@
</van-button>
</div>
</van-form>
<!-- 等级选择器 -->
<van-popup v-model:show="showLevelPicker" position="bottom" round>
<van-picker
:columns="levelOptions"
@confirm="onLevelConfirm"
@cancel="showLevelPicker = false"
/>
</van-popup>
</div>
</template>
<script setup lang="ts">
import { ref, computed } from 'vue'
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { showFailToast, showSuccessToast } from 'vant'
import { createCustomer } from '@/api'
const router = useRouter()
const submitting = ref(false)
const showLevelPicker = ref(false)
const form = ref({
customerCode: '',
customerName: '',
customerShort: '',
contact: '',
phone: '',
email: '',
level: 'C',
industry: '',
address: '',
remark: ''
})
const levelOptions = [
{ text: 'A类重点客户', value: 'A' },
{ text: 'B类一般客户', value: 'B' },
{ text: 'C类普通客户', value: 'C' },
{ text: 'D类潜在客户', value: 'D' }
]
const levelText = computed(() => {
const item = levelOptions.find(l => l.value === form.value.level)
return item?.text || ''
})
const onLevelConfirm = ({ selectedOptions }: any) => {
form.value.level = selectedOptions[0].value
showLevelPicker.value = false
}
const onSubmit = async () => {
if (!form.value.customerCode) {
showFailToast('请输入客户编码')
return
}
if (!form.value.customerName) {
showFailToast('请输入客户名称')
return
}
if (!form.value.contact) {
showFailToast('请输入联系人')
return
}
submitting.value = true
try {
await createCustomer({
customerCode: form.value.customerCode,
customerName: form.value.customerName,
customerShort: form.value.customerShort,
contact: form.value.contact,
phone: form.value.phone,
email: form.value.email,
level: form.value.level,
industry: form.value.industry,
address: form.value.address,
remark: form.value.remark
})