Browse Source

fix(forms): 统一表单验证消息并优化界面布局

- 将多个表单验证消息统一设置为空字符串,保持一致性
- 移除导出功能按钮,使用注释方式禁用
- 调整对话框宽度、输入框样式和表单项布局
- 优化供应商列表页面的消息提示为中文
- 简化付款条款表单的验证逻辑并改进错误处理
- 调整表单分组间距和文本域行数设置
- 优化供应商货币和税率页面的验证规则配置
master
qiankanghui 15 hours ago
parent
commit
886ae8247c
  1. 10
      src/views/modules/srmBaseInformation/srmDeliveryTerm.vue
  2. 88
      src/views/modules/srmBaseInformation/srmPaymentTerm.vue
  3. 13
      src/views/modules/srmBaseInformation/srmSupplierCurrency.vue
  4. 6
      src/views/modules/srmBaseInformation/srmSupplierGroup.vue
  5. 12
      src/views/modules/srmBaseInformation/srmTax.vue
  6. 5
      src/views/modules/srmSupplier/com_srmSupplier_Address.vue
  7. 59
      src/views/modules/srmSupplier/srmSupplierAddress.vue
  8. 63
      src/views/modules/srmSupplier/supplierList.vue

10
src/views/modules/srmBaseInformation/srmDeliveryTerm.vue

@ -16,7 +16,7 @@
<el-form-item label=" ">
<el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
<el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>
<!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>-->
</el-form-item>
</el-form>
@ -69,7 +69,7 @@
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<el-dialog title="交货条款" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="415px">
<el-dialog title="交货条款" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="350px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;" ref="modalForm">
<el-form-item label="交货条款编码" prop="deliveryTermId">
<el-input v-model="modalData.deliveryTermId" :disabled="modalDisableFlag" style="width: 100px"></el-input>
@ -83,7 +83,7 @@
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;" ref="modalForm">
<el-form-item label="交货条款描述" prop="deliveryTerm">
<el-input v-model="modalData.deliveryTerm" style="width: 325px"></el-input>
<el-input v-model="modalData.deliveryTerm" style="width: 300px"></el-input>
</el-form-item>
</el-form>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
@ -194,14 +194,14 @@
deliveryTermId: [
{
required: true,
message: '请输入交货条款编码',
message: ' ',
trigger: 'blur'
}
],
deliveryTerm: [
{
required: true,
message: '请输入交货条款描述',
message: ' ',
trigger: 'blur'
}
]

88
src/views/modules/srmBaseInformation/srmPaymentTerm.vue

@ -16,7 +16,7 @@
<el-form-item label=" ">
<el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
<el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>
<!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>-->
</el-form-item>
</el-form>
@ -83,7 +83,7 @@
</el-select>
</el-form-item>
<el-form-item label="天数" prop="days">
<el-input v-model="modalData.days" style="width: 80px"></el-input>
<el-input v-model.number="modalData.days" style="width: 80px"></el-input>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-input v-model="modalData.type" style="width: 80px"></el-input>
@ -284,7 +284,7 @@ export default {
methods: {
validateField(rule, value, callback) {
if (!value || value.trim() === '') {
callback(new Error());
callback(new Error(' '));
} else {
callback();
}
@ -292,7 +292,7 @@ export default {
validateDays(rule, value, callback) {
if (!value || value.trim() === '') {
callback(new Error('请输入天数'));
callback(new Error(' '));
return;
}
const numberPattern = /^\d+$/;
@ -402,7 +402,7 @@ export default {
paymentTerm: row.paymentTerm,
site: row.site,
active: row.active,
days: row.days,
days: row.days != null ? parseInt(row.days, 10) : '',
type: row.type,
createBy: row.createBy,
updateBy: this.$store.state.user.name,
@ -454,64 +454,28 @@ export default {
},
saveData () {
//
let valid = true;
if (!this.modalData.paymentTermId || this.modalData.paymentTermId.trim() === '') {
valid = false;
}
if (!this.modalData.paymentTerm || this.modalData.paymentTerm.trim() === '') {
valid = false;
}
if (!this.modalData.days || this.modalData.days.trim() === '') {
valid = false;
}
this.$refs.modalForm.validate(valid => {
if (!valid) return
if (valid) {
if (this.modalData.flag === '1') {
savePaymentTerm(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.modalFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
}).catch(error => {
console.error('保存付款条款失败:', error)
this.$message.error('保存失败: ' + (error.message || '网络错误'))
})
} else {
updatePaymentTerm(this.modalData).then(({data}) => {
if (data && data.code === 0) {
this.getDataList()
this.modalFlag = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
} else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
}).catch(error => {
console.error('更新付款条款失败:', error)
this.$message.error('更新失败: ' + (error.message || '网络错误'))
})
}
} else {
//
this.$refs.modalForm.validate(() => {});
}
this.modalData.days = parseInt(this.modalData.days, 10)
const api = this.modalData.flag === '1'
? savePaymentTerm
: updatePaymentTerm
api(this.modalData).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('操作成功')
this.modalFlag = false
this.getDataList()
} else {
this.$alert(data.msg || '操作失败', '错误')
}
}).catch(err => {
console.error(err)
this.$message.error('请求失败')
})
})
},
//

13
src/views/modules/srmBaseInformation/srmSupplierCurrency.vue

@ -17,7 +17,7 @@
<el-form-item label=" ">
<el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
<el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>
<!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>-->
</el-form-item>
</el-form>
@ -236,19 +236,16 @@ export default {
],
rules: {
currency: [
{ required: true, message: '请输入货币编码', trigger: 'blur' }
{ required: true, message: ' ', trigger: 'blur' }
],
currencyDesc: [
{ required: true, message: '请输入货币描述', trigger: 'blur' }
],
site: [
{ required: true, message: '请输入站点', trigger: 'blur' }
{ required: true, message: ' ', trigger: 'blur' }
],
active: [
{ required: true, message: '请选择状态', trigger: 'change' }
{ required: true, message: ' ', trigger: 'change' }
],
baseCurrency: [
{ required: true, message: '请选择是否基础货币', trigger: 'change' }
{ required: true, message: ' ', trigger: 'change' }
]
},
authSearch: false,

6
src/views/modules/srmBaseInformation/srmSupplierGroup.vue

@ -16,7 +16,7 @@
<el-form-item label=" ">
<el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
<el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>
<!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>-->
</el-form-item>
</el-form>
@ -232,14 +232,14 @@
supplierGroup: [
{
required: true,
message: '请输入供应商分组代码',
message: ' ',
trigger: ['blur','change']
}
],
groupDesc: [
{
required: true,
message: '请输入供应商分组描述',
message: ' ',
trigger: ['blur','change']
}
]

12
src/views/modules/srmBaseInformation/srmTax.vue

@ -16,7 +16,7 @@
<el-form-item label=" ">
<el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
<el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>
<!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>-->
</el-form-item>
</el-form>
@ -69,10 +69,10 @@
<el-dialog title="税率" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="415px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;" ref="modalForm">
<el-form-item label="税率编码" prop="taxCode">
<el-input v-model="modalData.taxCode" :disabled="modalDisableFlag" style="width: 120px"></el-input>
<el-input v-model="modalData.taxCode" :disabled="modalDisableFlag" style="width: 100px"></el-input>
</el-form-item>
<el-form-item label="是否激活" prop="active">
<el-select v-model="modalData.active" style="width: 120px">
<el-select v-model="modalData.active" style="width: 100px">
<el-option label="Yes" value="Y"></el-option>
<el-option label="No" value="N"></el-option>
</el-select>
@ -80,7 +80,7 @@
<el-form-item label="税率(%)" prop="taxRate">
<el-input
v-model="modalData.taxRate"
style="width: 120px"
style="width: 100px"
@input="validateTaxRateInput"
></el-input>
</el-form-item>
@ -219,6 +219,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -226,12 +227,15 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
taxRate: [
{
required: true,
validator: this.validateTaxRate,
message: ' ',
trigger: 'blur'
}
]

5
src/views/modules/srmSupplier/com_srmSupplier_Address.vue

@ -420,6 +420,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -427,6 +428,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -434,6 +436,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -441,6 +444,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -448,6 +452,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
]

59
src/views/modules/srmSupplier/srmSupplierAddress.vue

@ -16,7 +16,7 @@
<el-form-item label=" ">
<el-button v-if="authSearch" type="primary" @click="getDataList()">查询</el-button>
<el-button v-if="authSave" type="primary" @click="addModal()">新增</el-button>
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>
<!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">导出</el-button>-->
</el-form-item>
</el-form>
@ -68,49 +68,44 @@
<el-dialog title="供应商地址" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="500px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;" ref="modalForm">
<el-row :gutter="20">
<el-col :span="12">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="供应商ID" prop="supplierId">
<el-input v-model="modalData.supplierId" :disabled="modalDisableFlag" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Site" prop="site">
<el-input v-model="modalData.site" :disabled="modalDisableFlag || modalData.flag === '1'" style="width: 100%"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-col :span="8">
<el-form-item label="地址ID" prop="addressId">
<el-input v-model="modalData.addressId" :disabled="modalDisableFlag" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item label="公司名称" prop="companyName">
<el-input v-model="modalData.companyName" style="width: 100%"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="联系人" prop="contact">
<el-input v-model="modalData.contact" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item label="联系电话" prop="phoneNo">
<el-input v-model="modalData.phoneNo" style="width: 100%"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-col :span="8">
<el-form-item label="地址类型" prop="addressType">
<el-input v-model="modalData.addressType" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="是否激活" prop="active">
<el-select v-model="modalData.active" style="width: 100%">
<el-option label="Yes" value="Y"></el-option>
@ -118,26 +113,24 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-col :span="8">
<el-form-item label="邮箱" prop="email">
<el-input v-model="modalData.email" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item label="原产国" prop="originCountry">
<el-input v-model="modalData.originCountry" style="width: 100%"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="装运港" prop="portOfLoading">
<el-input v-model="modalData.portOfLoading" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="14">
<el-form-item label="地址" prop="address">
<el-input v-model="modalData.address" style="width: 100%"></el-input>
</el-form-item>
@ -145,11 +138,11 @@
</el-row>
</el-form>
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;" ref="modalForm">
<el-form-item label="备注" prop="memo" style="width: 100%">
<el-input v-model="modalData.memo" :rows="3" style="width: 100%"></el-input>
<el-form-item label="备注" prop="memo" style="width: 100%" >
<el-input v-model="modalData.memo" type="textarea" :rows="2" style="width: 100%"></el-input>
</el-form-item>
</el-form>
<el-footer style="height:40px;margin-top: 20px;text-align:center">
<el-footer style="height:40px;margin-top: 30px;text-align:center">
<el-button type="primary" @click="saveData()">保存</el-button>
<el-button type="primary" @click="modalFlag = false">关闭</el-button>
</el-footer>
@ -447,7 +440,7 @@ export default {
supplierId: [
{
required: true,
message: '供应商ID不能为空',
message: ' ',
trigger: 'blur'
}
],
@ -455,7 +448,7 @@ export default {
addressId: [
{
required: true,
message: '地址ID不能为空',
message: ' ',
trigger: 'blur'
}
],
@ -463,6 +456,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -470,6 +464,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -477,6 +472,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
],
@ -484,6 +480,7 @@ export default {
{
required: true,
validator: this.validateField,
message: ' ',
trigger: 'blur'
}
]

63
src/views/modules/srmSupplier/supplierList.vue

@ -305,37 +305,11 @@
</el-col>
</el-row>
</div>
<div class="form-section">
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="创建日期">
<el-input v-model="currentSupplier.createDate" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="创建者">
<el-input v-model="currentSupplier.createBy" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="更新日期">
<el-input v-model="currentSupplier.updateDate" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="更新者">
<el-input v-model="currentSupplier.updateBy" :disabled="true"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
<div class="form-section">
<el-row :gutter="24">
<el-col :span="16">
<el-col :span="20">
<el-form-item label="备注">
<el-input v-model="currentSupplier.memo" type="textarea" :rows="2" resize="none"></el-input>
<el-input v-model="currentSupplier.memo" type="textarea" :rows="2" resize="none" ></el-input>
</el-form-item>
</el-col>
</el-row>
@ -1101,14 +1075,11 @@ export default {
site: this.$store.state.user.site,
},
supplierRules: {
site: [
{ required: true, message: 'Site is required', trigger: 'blur' }
],
supplierNo: [
{ required: true, message: 'Supplier No is required', trigger: 'blur' }
{ required: true, message: ' ', trigger: 'blur' }
],
supplierName: [
{ required: true, message: 'Supplier Name is required', trigger: 'blur' }
{ required: true, message: ' ', trigger: 'blur' }
]
}
}
@ -1347,7 +1318,7 @@ export default {
//
editSupplier() {
if (!this.currentRow) {
this.$message.warning('Please select a supplier to edit')
this.$message.warning('请选择一个供应商修改')
return
}
this.isAdd = false
@ -1362,37 +1333,37 @@ export default {
apiCall.then(({data}) => {
if (data && data.code === 0) {
this.$message.success(this.isAdd ? 'Supplier added successfully' : 'Supplier updated successfully')
this.$message.success(this.isAdd ? '新增供应商成功' : '修改供应商成功')
this.supplierDialogVisible = false
this.getMainData() //
} else {
this.$message.error(data.msg || 'Operation failed')
this.$message.error(data.msg || '操作失败')
}
}).catch(error => {
this.$message.error('Operation failed: ' + error.message)
this.$message.error('操作失败: ' + error.message)
})
} else {
this.$message.warning('Please fill in the required fields')
this.$message.warning('请填写必填字段')
}
})
},
//
deleteSupplier(row) {
this.$confirm('Are you sure you want to delete this supplier?', 'Confirm Delete', {
confirmButtonText: 'Confirm',
cancelButtonText: 'Cancel',
this.$confirm('你确定删除该供应商?', '确认删除', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteSrmSupplier(row.id).then(({data}) => {
if (data && data.code === 0) {
this.$message.success('Supplier deleted successfully')
this.$message.success('供应商删除成功')
this.getMainData() //
} else {
this.$message.error(data.msg || 'Delete failed')
this.$message.error(data.msg || '删除失败')
}
}).catch(error => {
this.$message.error('Delete failed: ' + error.message)
this.$message.error('删除失败: ' + error.message)
})
})
}
@ -1460,11 +1431,11 @@ export default {
/* 表单分组样式 */
.form-section {
margin-bottom: 10px;
margin-bottom: 5px;
}
.form-section:last-child {
margin-bottom: 10px;
margin-bottom: 5px;
}
/* 输入框样式 */

Loading…
Cancel
Save