feat(customer): 新增客户相关配卷和财务信息查询接口 fix(base.vue): 修复发货单时间条件显示问题 refactor(CustomerEdit): 替换地址选择组件为普通输入框 feat(CoilSelector): 增加入场卷号查询条件并调整对话框宽度 style(OrderEdit): 调整客户名称和销售员选择框宽度 refactor(ChinaAreaSelect): 优化地址解析逻辑并支持空对象处理 feat(FileUpload/FileList): 新增文件预览功能组件 refactor(KLPService/CustomerSelect): 优化客户选择组件并支持自定义字段绑定 fix(AbnormalForm): 修复异常位置校验逻辑并保留当前卷号 feat(ContractTabs): 新增合同附件展示功能 refactor(warehouse/record): 重构操作记录统计展示方式 feat(contract): 集成客户选择组件并优化合同信息填充 refactor(order): 调整订单表单布局并集成合同信息 feat(FilePreview): 新增文件预览组件 feat(customer): 新增财务状态和发货配卷展示 refactor(CustomerOrder): 移除冗余代码并优化布局 feat(PlanDetailForm): 新增合同附件查看功能 feat(dict): 新增字典管理页面
152 lines
4.9 KiB
Vue
152 lines
4.9 KiB
Vue
<template>
|
|
<el-form ref="form" :model="formData" :rules="rules" label-width="80px">
|
|
<el-form-item label="钢卷ID" prop="coilId" v-if="!formData.abnormalId && showCoilSelector">
|
|
<coil-selector v-model="formData.coilId"></coil-selector>
|
|
</el-form-item>
|
|
<el-form-item label="位置" prop="position">
|
|
<el-radio-group v-model="formData.position">
|
|
<el-radio-button v-for="dict in dict.type.coil_abnormal_position" :key="dict.value" :label="dict.value">{{
|
|
dict.label }}</el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-alert title="异常位置为内圈算起" type="info" :closable="false" show-icon size="small" />
|
|
</el-form-item>
|
|
<el-form-item label="异常位置" required>
|
|
<div style="display: flex; align-items: center;">
|
|
<el-form-item prop="startPosition">
|
|
<el-input v-model="formData.startPosition" type="number" placeholder="请输入开始位置" />
|
|
</el-form-item>
|
|
<el-form-item prop="endPosition">
|
|
<el-input v-model="formData.endPosition" type="number" placeholder="请输入结束位置" />
|
|
</el-form-item>
|
|
</div>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="缺陷代码" prop="defectCode">
|
|
<el-radio-group v-model="formData.defectCode">
|
|
<el-radio-button v-for="dict in dict.type.coil_abnormal_code" :key="dict.value" :label="dict.value">{{
|
|
dict.label }}</el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="程度" prop="degree">
|
|
<el-radio-group v-model="formData.degree">
|
|
<el-radio-button v-for="dict in dict.type.coil_abnormal_degree" :key="dict.value" :label="dict.value">{{
|
|
dict.label }}</el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="产线" prop="productionLine">
|
|
<el-select v-model="formData.productionLine" placeholder="请选择产线">
|
|
<el-option v-for="dict in dict.type.sys_lines" :key="dict.value" :label="dict.label"
|
|
:value="dict.value"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="备注" prop="remark">
|
|
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
|
|
</el-form-item>
|
|
</el-form>
|
|
</template>
|
|
|
|
<script>
|
|
import CoilSelector from '@/components/CoilSelector'
|
|
|
|
export default {
|
|
name: "AbnormalForm",
|
|
components: {
|
|
CoilSelector
|
|
},
|
|
props: {
|
|
value: {
|
|
type: Object,
|
|
default: () => ({})
|
|
},
|
|
showCoilSelector: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
},
|
|
dicts: ['coil_abnormal_code', 'coil_abnormal_position', 'coil_abnormal_degree', 'sys_lines'],
|
|
data() {
|
|
return {
|
|
rules: {
|
|
position: [
|
|
{ required: true, message: '请选择位置', trigger: 'change' }
|
|
],
|
|
startPosition: [
|
|
{ required: true, message: '请输入开始位置', trigger: ['blur', 'change'] },
|
|
{ validator: this.validateStartPosition, trigger: ['blur', 'change'] }
|
|
],
|
|
endPosition: [
|
|
{ required: true, message: '请输入结束位置', trigger: ['blur', 'change'] },
|
|
{ validator: this.validateEndPosition, trigger: ['blur', 'change'] }
|
|
],
|
|
defectCode: [
|
|
{ required: true, message: '请选择缺陷代码', trigger: 'change' }
|
|
],
|
|
degree: [
|
|
{ required: true, message: '请选择程度', trigger: 'change' }
|
|
]
|
|
}
|
|
};
|
|
},
|
|
computed: {
|
|
formData: {
|
|
get() {
|
|
return this.value || {};
|
|
},
|
|
set(newVal) {
|
|
this.$emit('input', { ...newVal });
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
/** 表单验证 */
|
|
validate(callback) {
|
|
if (this.formData.startPosition > this.formData.endPosition) {
|
|
this.$message.error('开始位置必须小于结束位置');
|
|
return false;
|
|
}
|
|
return this.$refs.form.validate(callback);
|
|
},
|
|
/** 重置表单 */
|
|
resetFields() {
|
|
this.$refs.form.resetFields();
|
|
const currentCoilId = this.formData.coilId;
|
|
this.formData = {
|
|
abnormalId: undefined,
|
|
coilId: currentCoilId,
|
|
position: undefined,
|
|
startPosition: undefined,
|
|
endPosition: undefined,
|
|
length: undefined,
|
|
defectCode: undefined,
|
|
degree: undefined,
|
|
remark: undefined
|
|
};
|
|
},
|
|
/** 计算缺陷长度 */
|
|
calculateLength() {
|
|
if (this.formData.startPosition && this.formData.endPosition) {
|
|
this.formData.length = this.formData.endPosition - this.formData.startPosition;
|
|
}
|
|
},
|
|
/** 校验开始位置 */
|
|
validateStartPosition(rule, value, callback) {
|
|
if (value <= 0) {
|
|
callback(new Error('开始位置必须为正数'));
|
|
} else {
|
|
callback();
|
|
}
|
|
},
|
|
/** 校验结束位置 */
|
|
validateEndPosition(rule, value, callback) {
|
|
if (value <= 0) {
|
|
callback(new Error('结束位置必须为正数'));
|
|
} else {
|
|
callback();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
</script>
|