<template>
|
<div class="material-edit-container">
|
<div class="layui-fluid">
|
<div class="layui-row layui-col-space15">
|
<div class="layui-col-md12">
|
<div class="layui-card">
|
<el-form
|
id="form0"
|
class="layui-form"
|
:model="formData"
|
ref="materialForm"
|
label-width="85px"
|
>
|
<div class="layui-card-header">
|
<div class="layui-btn-group">
|
<el-button
|
type="primary"
|
class="layui-btn layui-btn-normal layui-btn-radius"
|
@click="handleCopy"
|
:disabled="!canCopy"
|
>
|
复制
|
</el-button>
|
<el-button
|
type="primary"
|
class="layui-btn layui-btn-normal layui-btn-radius"
|
@click="handleSave"
|
>
|
保存
|
</el-button>
|
<el-button
|
type="primary"
|
class="layui-btn layui-btn-normal layui-btn-radius"
|
@click="handleExit"
|
>
|
退出
|
</el-button>
|
</div>
|
</div>
|
<div class="layui-card-body">
|
<el-tabs v-model="activeTab" type="border-card">
|
<el-tab-pane label="基本信息" name="basic">
|
<h1 style="text-align:center;"><b>物料设置</b></h1>
|
|
<!-- 基本信息表单 -->
|
<div class="form-section">
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="物料代码*" prop="HNumber">
|
<el-input
|
v-model="formData.HNumber"
|
placeholder="请输入物料代码"
|
:readonly="operationType === 4"
|
></el-input>
|
<input type="hidden" v-model="formData.HItemID" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="物料名称*" prop="HName">
|
<el-input
|
v-model="formData.HName"
|
placeholder="请输入物料名称"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="规格型号*" prop="HModel">
|
<el-input
|
v-model="formData.HModel"
|
placeholder="请输入规格型号"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="助记码">
|
<el-input
|
v-model="formData.HHelpCode"
|
placeholder="请输入助记码"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="圆机代码">
|
<el-input
|
v-model="formData.HCircularKnittingMachineCode"
|
placeholder="请输入圆机代码"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="主计量单位*" prop="HUnitID">
|
<el-input
|
v-model="formData.HUnitName"
|
placeholder="请选择主计量单位"
|
readonly
|
style="width: calc(100% - 50px); float: left;"
|
></el-input>
|
<el-button
|
type="primary"
|
style="width: 40px;"
|
@click="openUnitDialog"
|
>
|
<i class="el-icon-search"></i>
|
</el-button>
|
<input type="hidden" v-model="formData.HUnitID" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="克重">
|
<el-input
|
v-model="formData.HWeight"
|
placeholder="请输入数字"
|
type="number"
|
min="0"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="默认仓库">
|
<el-input
|
v-model="formData.HWhName"
|
placeholder="请选择默认仓库"
|
readonly
|
style="width: calc(100% - 50px); float: left;"
|
></el-input>
|
<el-button
|
type="primary"
|
style="width: 40px;"
|
@click="openWarehouseDialog"
|
>
|
<i class="el-icon-search"></i>
|
</el-button>
|
<input type="hidden" v-model="formData.HWhID" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="染色要求">
|
<el-input
|
v-model="formData.HColorRemark"
|
placeholder="请输入染色要求"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="颜色">
|
<el-input
|
v-model="formData.HColor"
|
placeholder="请输入颜色"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="幅宽">
|
<el-input
|
v-model="formData.HWidth"
|
placeholder="请输入数字"
|
type="number"
|
min="0"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="物料分类">
|
<el-input
|
v-model="formData.HMaterClsName"
|
placeholder="请选择物料分类"
|
readonly
|
style="width: calc(100% - 50px); float: left;"
|
></el-input>
|
<el-button
|
type="primary"
|
style="width: 40px;"
|
@click="openMaterialTypeDialog"
|
>
|
<i class="el-icon-search"></i>
|
</el-button>
|
<input type="hidden" v-model="formData.HMaterTypeID" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="物料属性">
|
<el-select v-model="formData.HMaterClsID" style="width: 100%;">
|
<el-option value="1" label="外购"></el-option>
|
<el-option value="2" label="自制"></el-option>
|
<el-option value="3" label="委外"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- 检验方案部分 -->
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="首件检验方案">
|
<el-input
|
v-model="formData.HQCSchemeName_Fst"
|
placeholder="请选择首件检验方案"
|
readonly
|
style="width: calc(100% - 50px); float: left; background-color: #efefef4d;"
|
></el-input>
|
<el-button
|
type="primary"
|
style="width: 40px;"
|
@click="openQCSchemeDialog('fst')"
|
>
|
<i class="el-icon-search"></i>
|
</el-button>
|
<input type="hidden" v-model="formData.HQCSchemeID_Fst" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="转序检验方案">
|
<el-input
|
v-model="formData.HQCSchemeName_Proc"
|
placeholder="请选择转序检验方案"
|
readonly
|
style="width: calc(100% - 50px); float: left; background-color: #efefef4d;"
|
></el-input>
|
<el-button
|
type="primary"
|
style="width: 40px;"
|
@click="openQCSchemeDialog('proc')"
|
>
|
<i class="el-icon-search"></i>
|
</el-button>
|
<input type="hidden" v-model="formData.HQCSchemeID_Proc" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="巡检检验方案">
|
<el-input
|
v-model="formData.HQCSchemeName_Patrol"
|
placeholder="请选择巡检检验方案"
|
readonly
|
style="width: calc(100% - 50px); float: left; background-color: #efefef4d;"
|
></el-input>
|
<el-button
|
type="primary"
|
style="width: 40px;"
|
@click="openQCSchemeDialog('patrol')"
|
>
|
<i class="el-icon-search"></i>
|
</el-button>
|
<input type="hidden" v-model="formData.HQCSchemeID_Patrol" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- 物料公式部分 -->
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="物料公式">
|
<el-select v-model="formData.HMaterRuleType" style="width: 100%;">
|
<el-option value="其他" label="其他"></el-option>
|
<el-option value="染料" label="染料"></el-option>
|
<el-option value="助剂" label="助剂"></el-option>
|
<el-option value="助剂(按布算)" label="助剂(按布算)"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="物料公式(羊毛)" style="display: flex; flex-direction: row;">
|
<el-select v-model="formData.HMaterRuleExternType" style="width: 100%;">
|
<el-option value="其他" label="其他"></el-option>
|
<el-option value="染料" label="染料"></el-option>
|
<el-option value="助剂" label="助剂"></el-option>
|
<el-option value="助剂(按布算)" label="助剂(按布算)"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="物料公式(毛尖)" style="display: flex; flex-direction: row;">
|
<el-select v-model="formData.HMaterRuleExternType1" style="width: 100%;">
|
<el-option value="其他" label="其他"></el-option>
|
<el-option value="染料" label="染料"></el-option>
|
<el-option value="助剂" label="助剂"></el-option>
|
<el-option value="助剂(按浆重算)" label="助剂(按浆重算)"></el-option>
|
<el-option value="软剂" label="软剂"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- 颜色色号和合格率 -->
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="颜色色号">
|
<el-input
|
v-model="formData.HColorNo"
|
placeholder="请选择颜色"
|
readonly
|
style="width: 70%; float: left; background-color: #efefef4d;"
|
></el-input>
|
<el-color-picker
|
v-model="formData.HColorNo"
|
style="width: 30%;"
|
></el-color-picker>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="一次合格率标准值">
|
<el-input
|
v-model="formData.HOnceRightRate"
|
placeholder="请输入合格率"
|
type="number"
|
min="0"
|
max="100"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="白坯要求">
|
<el-input
|
type="textarea"
|
v-model="formData.HRemark"
|
placeholder="请输入白坯要求"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="禁用标志">
|
<el-checkbox
|
v-model="formData.HStopflag"
|
:disabled="true"
|
>是否禁用</el-checkbox>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</div>
|
</el-tab-pane>
|
|
<el-tab-pane label="补充信息" name="supplement">
|
<!-- 羊毛信息 -->
|
<div class="form-section">
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="毛高">
|
<el-input v-model="formData.HHeight_M"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="寸数组织">
|
<el-input v-model="formData.HInches_M"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="全毛长">
|
<el-input v-model="formData.HAl1Long_M"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="坯布密度">
|
<el-input v-model="formData.HDensity_M"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="毛纱名称及规格">
|
<el-input v-model="formData.HTela_M"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="底丝">
|
<el-input v-model="formData.HUnderTela_M"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="定型浆料">
|
<el-input v-model="formData.HSizing_M"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</div>
|
</el-tab-pane>
|
|
<el-tab-pane label="其他信息" name="other">
|
<!-- 其他信息 -->
|
<div class="form-section">
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="默认仓位组">
|
<el-input v-model="formData.HSPGroupID" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="默认仓位">
|
<el-input v-model="formData.HSPID" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="默认bom">
|
<el-input v-model="formData.HBomID" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="换算率">
|
<el-input v-model="formData.HSecUnitRate" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="默认打印模板">
|
<el-input v-model="formData.HBarCodePrintName"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- 库存相关 -->
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="最高库存">
|
<el-input v-model="formData.HHighStock" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="最低库存">
|
<el-input v-model="formData.HLowStock" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="安全库存">
|
<el-input v-model="formData.HSafeStock" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- 价格相关 -->
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="采购单价">
|
<el-input v-model="formData.HOrderPrice" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="销售单价">
|
<el-input v-model="formData.HSalePrice" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="计划单价">
|
<el-input v-model="formData.HPlanPrice" type="number" min="0"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- 更多字段可以根据需要继续添加 -->
|
</div>
|
</el-tab-pane>
|
|
<el-tab-pane label="制单信息" name="order">
|
<!-- 制单信息 -->
|
<div class="form-section">
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="制单人">
|
<el-input v-model="formData.HMakeEmp" readonly style="background-color:#efefef4d;"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="审核人">
|
<el-input v-model="formData.HCheckEmp" readonly style="background-color:#efefef4d;"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="禁用人">
|
<el-input v-model="formData.HStopEmp" readonly style="background-color:#efefef4d;"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item label="制单日期">
|
<el-input v-model="formData.HMakeDate" readonly style="background-color:#efefef4d;"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="审核日期">
|
<el-input v-model="formData.HCheckDate" readonly style="background-color:#efefef4d;"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="禁用日期">
|
<el-input v-model="formData.HStopDate" readonly style="background-color:#efefef4d;"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</div>
|
</el-tab-pane>
|
|
<el-tab-pane label="附件信息" name="attachment">
|
<!-- 附件信息 -->
|
<div class="form-section">
|
<el-upload
|
class="upload-demo"
|
action="#"
|
:on-preview="handlePreview"
|
:on-remove="handleRemove"
|
:before-remove="beforeRemove"
|
multiple
|
:limit="10"
|
:on-exceed="handleExceed"
|
:file-list="fileList"
|
>
|
<el-button size="small" type="primary">选择文件</el-button>
|
<div slot="tip" class="el-upload__tip">只能上传jpg/png/pdf文件,且不超过500kb</div>
|
</el-upload>
|
|
<el-table :data="fileList" style="width: 100%">
|
<el-table-column prop="name" label="文件名"></el-table-column>
|
<el-table-column label="图片">
|
<template slot-scope="scope">
|
<img
|
v-if="scope.row.type === 'image'"
|
:src="scope.row.url"
|
style="width: 150px; margin:10px;cursor:pointer;"
|
@click="previewImg(scope.row.url)"
|
/>
|
</template>
|
</el-table-column>
|
<el-table-column prop="size" label="大小"></el-table-column>
|
<el-table-column prop="status" label="状态"></el-table-column>
|
<el-table-column label="操作">
|
<template slot-scope="scope">
|
<el-button
|
size="mini"
|
@click="handleUpload(scope.$index, scope.row)"
|
>上传</el-button>
|
<el-button
|
size="mini"
|
type="danger"
|
@click="handleDelete(scope.$index, scope.row)"
|
>删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
</el-form>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<!-- 各种弹窗组件 - 暂时留空 -->
|
<el-dialog
|
title="选择计量单位"
|
:visible.sync="unitDialogVisible"
|
width="80%"
|
append-to-body
|
>
|
<!-- 计量单位选择组件预留位置 -->
|
<div style="text-align: center; padding: 50px;">
|
<h2>计量单位选择功能</h2>
|
<p>计量单位选择功能待后续开发</p>
|
<el-button type="primary" @click="unitDialogVisible = false">关闭</el-button>
|
</div>
|
</el-dialog>
|
|
<el-dialog
|
title="选择仓库"
|
:visible.sync="warehouseDialogVisible"
|
width="80%"
|
append-to-body
|
>
|
<!-- 仓库选择组件预留位置 -->
|
<div style="text-align: center; padding: 50px;">
|
<h2>仓库选择功能</h2>
|
<p>仓库选择功能待后续开发</p>
|
<el-button type="primary" @click="warehouseDialogVisible = false">关闭</el-button>
|
</div>
|
</el-dialog>
|
|
<el-dialog
|
title="选择物料分类"
|
:visible.sync="materialTypeDialogVisible"
|
width="80%"
|
append-to-body
|
>
|
<!-- 物料分类选择组件预留位置 -->
|
<div style="text-align: center; padding: 50px;">
|
<h2>物料分类选择功能</h2>
|
<p>物料分类选择功能待后续开发</p>
|
<el-button type="primary" @click="materialTypeDialogVisible = false">关闭</el-button>
|
</div>
|
</el-dialog>
|
|
<el-dialog
|
title="选择检验方案"
|
:visible.sync="qcSchemeDialogVisible"
|
width="80%"
|
append-to-body
|
>
|
<!-- 检验方案选择组件预留位置 -->
|
<div style="text-align: center; padding: 50px;">
|
<h2>检验方案选择功能</h2>
|
<p>检验方案选择功能待后续开发</p>
|
<el-button type="primary" @click="qcSchemeDialogVisible = false">关闭</el-button>
|
</div>
|
</el-dialog>
|
|
<!-- 图片预览弹窗 -->
|
<el-dialog
|
:visible.sync="previewVisible"
|
width="80%"
|
top="5vh"
|
:before-close="handlePreviewClose"
|
>
|
<img :src="previewImage" style="width: 100%;" />
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import axios from "axios";
|
|
export default {
|
name: "MaterialEdit",
|
props: {
|
hID: { type: [String, Number], default: 0 },
|
OperationType: { type: [String, Number], default: 1 }, // 1 新增 2复制 3编辑 4流水号新增
|
HMaterTypeID: { type: [String, Number], default: 0 }
|
},
|
data() {
|
return {
|
// 标签页激活状态
|
activeTab: 'basic',
|
|
// 表单数据
|
formData: {
|
HItemID: 0,
|
HNumber: '',
|
HName: '',
|
HModel: '',
|
HHelpCode: '',
|
HCircularKnittingMachineCode: '',
|
HUnitID: 0,
|
HUnitName: '',
|
HWeight: 0,
|
HWhID: 0,
|
HWhName: '',
|
HColorRemark: '',
|
HColor: '',
|
HWidth: 0,
|
HMaterTypeID: 0,
|
HMaterClsName: '',
|
HMaterClsID: '1',
|
HQCSchemeID_Fst: 0,
|
HQCSchemeName_Fst: '',
|
HQCSchemeID_Proc: 0,
|
HQCSchemeName_Proc: '',
|
HQCSchemeID_Patrol: 0,
|
HQCSchemeName_Patrol: '',
|
HMaterRuleType: '其他',
|
HMaterRuleExternType: '其他',
|
HMaterRuleExternType1: '其他',
|
HColorNo: '',
|
HOnceRightRate: 0,
|
HRemark: '',
|
HStopflag: false,
|
|
// 补充信息
|
HHeight_M: '',
|
HInches_M: '',
|
HAl1Long_M: '',
|
HDensity_M: '',
|
HTela_M: '',
|
HUnderTela_M: '',
|
HSizing_M: '',
|
|
// 其他信息
|
HSPGroupID: 0,
|
HSPID: 0,
|
HBomID: 0,
|
HSecUnitRate: 0,
|
HBarCodePrintName: '',
|
HHighStock: 0,
|
HLowStock: 0,
|
HSafeStock: 0,
|
HOrderPrice: 0,
|
HSalePrice: 0,
|
HPlanPrice: 0,
|
|
// 制单信息
|
HMakeEmp: '',
|
HMakeDate: '',
|
HCheckEmp: '',
|
HCheckDate: '',
|
HStopEmp: '',
|
HStopDate: ''
|
},
|
|
// 附件列表
|
fileList: [],
|
|
// 弹窗控制
|
unitDialogVisible: false,
|
warehouseDialogVisible: false,
|
materialTypeDialogVisible: false,
|
qcSchemeDialogVisible: false,
|
previewVisible: false,
|
previewImage: '',
|
|
// 其他数据
|
canCopy: false,
|
qcSchemeType: 'fst', // fst, proc, patrol
|
|
baseURL: process.env.VUE_APP_BASE_URL || "http://47.96.97.237/API/",
|
user: "admin"
|
};
|
},
|
computed: {
|
operationType() {
|
return parseInt(this.OperationType);
|
},
|
materialTypeID() {
|
return parseInt(this.HMaterTypeID);
|
},
|
materialID() {
|
return parseInt(this.hID);
|
}
|
},
|
created() {
|
this.initData();
|
},
|
methods: {
|
// 初始化数据
|
initData() {
|
// 设置当前用户和日期
|
this.formData.HMakeEmp = this.user;
|
this.formData.HMakeDate = this.formatDate(new Date());
|
|
// 根据操作类型初始化
|
if (this.materialID === 0 || this.materialID === null) {
|
// 新增
|
this.formData.HItemID = 0;
|
this.readConfigFile();
|
} else if (this.operationType === 2) {
|
// 复制
|
this.loadMaterialData(this.materialID);
|
this.formData.HItemID = 0;
|
this.formData.HMakeEmp = this.user;
|
this.formData.HMakeDate = this.formatDate(new Date());
|
this.formData.HCheckEmp = '';
|
this.formData.HCheckDate = '';
|
this.formData.HStopEmp = '';
|
this.formData.HStopDate = '';
|
} else if (this.operationType === 3) {
|
// 编辑
|
this.formData.HItemID = this.materialID;
|
this.loadMaterialData(this.materialID);
|
}
|
|
// 流水号新增
|
if (this.operationType === 4) {
|
this.getMaxNumber(this.materialTypeID);
|
}
|
|
// 初始化附件
|
this.initFileUpload();
|
},
|
|
// 读取配置文件
|
readConfigFile() {
|
// 从本地存储读取配置
|
const config = localStorage.getItem("Add_Edit_Gy_Material");
|
if (config) {
|
const configData = JSON.parse(config);
|
this.formData.HWhID = configData.HWhID || 0;
|
this.formData.HWhName = configData.HWhName || '';
|
this.formData.HMaterClsID = configData.HMaterClsID || '1';
|
this.formData.HUnitID = configData.HUnitID || 0;
|
this.formData.HUnitName = configData.HUnitName || '';
|
}
|
},
|
|
// 写入配置文件
|
writeConfigFile() {
|
const configData = {
|
HWhID: this.formData.HWhID,
|
HWhName: this.formData.HWhName,
|
HMaterClsID: this.formData.HMaterClsID,
|
HUnitID: this.formData.HUnitID,
|
HUnitName: this.formData.HUnitName
|
};
|
localStorage.setItem("Add_Edit_Gy_Material", JSON.stringify(configData));
|
},
|
|
// 加载物料数据
|
loadMaterialData(id) {
|
this.$modal.loading("加载中...");
|
axios
|
.get(this.baseURL + "/Gy_Material/GetGy_MaterialDetail", {
|
params: { HID: id }
|
})
|
.then(response => {
|
this.$modal.closeLoading();
|
if (response.data.code === 1) {
|
const data = response.data.data.h_v_Edit_Gy_MaterialList[0];
|
this.populateFormData(data);
|
|
// 如果是复制操作,清空物料代码
|
if (this.operationType === 2) {
|
this.formData.HNumber = '';
|
}
|
|
// 加载附件
|
this.loadFiles();
|
} else {
|
this.$modal.msgError(response.data.msg || "加载数据失败");
|
}
|
})
|
.catch(error => {
|
this.$modal.closeLoading();
|
this.$modal.msgError("接口请求失败!");
|
});
|
},
|
|
// 填充表单数据
|
populateFormData(data) {
|
// 基本信息
|
this.formData.HNumber = data.物料代码 || '';
|
this.formData.HName = data.物料名称 || '';
|
this.formData.HModel = data.规格型号 || '';
|
this.formData.HHelpCode = data.助记码 || '';
|
this.formData.HUnitID = data.主计量单位 || 0;
|
this.formData.HUnitName = data.主计量单位名称 || '';
|
this.formData.HColor = data.颜色 || '';
|
this.formData.HMaterTypeID = data.HMaterTypeID || 0;
|
this.formData.HMaterClsName = data.物料分类 || '';
|
this.formData.HMaterClsID = data.物料属性 === "0" ? "1" : (data.物料属性 || "1");
|
this.formData.HWhID = data.默认仓库 || 0;
|
this.formData.HWhName = data.仓库名称 || '';
|
this.formData.HWidth = data.HWidth || 0;
|
this.formData.HWeight = data.HWeight || 0;
|
this.formData.HColorRemark = data.染色要求 || '';
|
this.formData.HQCSchemeID_Fst = data.HQCSchemeID_Fst || 0;
|
this.formData.HQCSchemeName_Fst = data.首件检验方案 || '';
|
this.formData.HQCSchemeID_Proc = data.HQCSchemeID_Proc || 0;
|
this.formData.HQCSchemeName_Proc = data.转序检验方案 || '';
|
this.formData.HQCSchemeID_Patrol = data.HQCSchemeID_Patrol || 0;
|
this.formData.HQCSchemeName_Patrol = data.巡检检验方案 || '';
|
this.formData.HMaterRuleType = data.物料公式 || '其他';
|
this.formData.HMaterRuleExternType = data.羊毛物料公式 || '其他';
|
this.formData.HMaterRuleExternType1 = data.毛尖物料公式 || '其他';
|
this.formData.HColorNo = data.颜色色号 || '';
|
this.formData.HOnceRightRate = data.一次合格率标准值 || 0;
|
this.formData.HRemark = data.备注 || '';
|
this.formData.HStopflag = data.禁用标记 === "true";
|
|
// 补充信息
|
this.formData.HHeight_M = data.毛高 || '';
|
this.formData.HInches_M = data.寸数组织 || '';
|
this.formData.HAl1Long_M = data.全毛长 || '';
|
this.formData.HDensity_M = data.坏布密度 || '';
|
this.formData.HTela_M = data.毛纱名称及规格 || '';
|
this.formData.HUnderTela_M = data.底丝 || '';
|
this.formData.HSizing_M = data.定型浆料 || '';
|
|
// 其他信息
|
this.formData.HBarCodePrintName = data.默认打印模板 || '';
|
|
// 制单信息
|
this.formData.HMakeEmp = data.创建人 || '';
|
this.formData.HMakeDate = data.创建日期 ? this.formatDate(new Date(data.创建日期)) : '';
|
this.formData.HCheckEmp = data.审核人 || '';
|
this.formData.HCheckDate = data.审核日期 ? this.formatDate(new Date(data.审核日期)) : '';
|
this.formData.HStopEmp = data.禁用人 || '';
|
this.formData.HStopDate = data.禁用日期 ? this.formatDate(new Date(data.禁用日期)) : '';
|
},
|
|
// 获取最大编号(流水号新增)
|
getMaxNumber(typeID) {
|
axios
|
.get(this.baseURL + "/Gy_Material/getMaxNum", {
|
params: {
|
HMaterTypeID: typeID,
|
user: this.user,
|
Organization: "default"
|
}
|
})
|
.then(response => {
|
if (response.data.data) {
|
this.formData.HNumber = response.data.data;
|
} else {
|
this.$modal.msgError(response.data.Message || "获取编号失败");
|
}
|
})
|
.catch(error => {
|
this.$modal.msgError("接口请求失败!");
|
});
|
},
|
|
// 保存物料
|
handleSave() {
|
// 表单验证
|
if (!this.validateForm()) {
|
return;
|
}
|
|
this.$modal.loading("保存中...");
|
|
// 准备数据
|
const formData = { ...this.formData };
|
|
// 发送请求
|
axios
|
.post(this.baseURL + "Gy_Material/SaveGy_MaterialList", {
|
msg: JSON.stringify(formData) + ';' + this.user + ';' + "default"
|
})
|
.then(response => {
|
this.$modal.closeLoading();
|
if (response.data.count === 1) {
|
this.$modal.msgSuccess(response.data.Message);
|
this.writeConfigFile();
|
// 保存成功后禁用保存按钮
|
this.canCopy = true;
|
} else {
|
this.$modal.msgError(response.data.Message);
|
}
|
})
|
.catch(error => {
|
this.$modal.closeLoading();
|
this.$modal.msgError("接口请求失败!");
|
});
|
},
|
|
// 表单验证
|
validateForm() {
|
if (!this.formData.HNumber) {
|
this.$modal.msgWarning("请输入物料代码!");
|
return false;
|
}
|
if (!this.formData.HName) {
|
this.$modal.msgWarning("请输入物料名称!");
|
return false;
|
}
|
if (!this.formData.HWhID) {
|
this.$modal.msgWarning("请选择默认仓库!");
|
return false;
|
}
|
if (!this.formData.HUnitID) {
|
this.$modal.msgWarning("请选择主计量单位!");
|
return false;
|
}
|
|
// 数字字段验证
|
const numberFields = [
|
{ field: 'HWeight', name: '克重' },
|
{ field: 'HWidth', name: '幅宽' },
|
{ field: 'HSecUnitRate', name: '换算率' },
|
{ field: 'HHighStock', name: '最高库存' },
|
{ field: 'HLowStock', name: '最低库存' },
|
{ field: 'HSafeStock', name: '安全库存' },
|
{ field: 'HOrderPrice', name: '采购单价' },
|
{ field: 'HSalePrice', name: '销售单价' },
|
{ field: 'HPlanPrice', name: '计划单价' },
|
{ field: 'HOnceRightRate', name: '一次合格率标准值' }
|
];
|
|
for (const item of numberFields) {
|
if (this.formData[item.field] && !this.isValidNumber(this.formData[item.field])) {
|
this.$modal.msgWarning(`${item.name}请输入正确的数字!`);
|
return false;
|
}
|
}
|
|
return true;
|
},
|
|
// 验证数字
|
isValidNumber(value) {
|
return /^[0-9]+\.?[0-9]*$/.test(value);
|
},
|
|
// 复制
|
handleCopy() {
|
this.formData.HItemID = 0;
|
this.formData.HNumber = '';
|
this.canCopy = false;
|
this.$modal.msgSuccess("已重置表单,可以开始复制操作");
|
},
|
|
// 退出
|
handleExit() {
|
this.$emit('close');
|
},
|
|
// 打开计量单位选择弹窗
|
openUnitDialog() {
|
this.unitDialogVisible = true;
|
},
|
|
// 打开仓库选择弹窗
|
openWarehouseDialog() {
|
this.warehouseDialogVisible = true;
|
},
|
|
// 打开物料分类选择弹窗
|
openMaterialTypeDialog() {
|
this.materialTypeDialogVisible = true;
|
},
|
|
// 打开检验方案选择弹窗
|
openQCSchemeDialog(type) {
|
this.qcSchemeType = type;
|
this.qcSchemeDialogVisible = true;
|
},
|
|
// 初始化文件上传
|
initFileUpload() {
|
// 文件上传初始化逻辑
|
},
|
|
// 加载文件列表
|
loadFiles() {
|
if (!this.formData.HNumber) return;
|
|
axios
|
.get(this.baseURL + "/Gy_Mater/Filelist", {
|
params: { HNumber: this.formData.HNumber }
|
})
|
.then(response => {
|
if (response.data.count === 1) {
|
this.fileList = response.data.data.map(item => ({
|
name: item.HFileName,
|
url: item.HFilePath,
|
size: (item.HFileSize / 1014).toFixed(1) + 'kb',
|
status: '上传成功',
|
type: this.getFileType(item.HFileType)
|
}));
|
}
|
})
|
.catch(error => {
|
this.$modal.msgError("获取文件列表失败!");
|
});
|
},
|
|
// 获取文件类型
|
getFileType(fileType) {
|
if (fileType === '.jpeg' || fileType === '.jpg' || fileType === '.png') {
|
return 'image';
|
} else if (fileType === '.pdf') {
|
return 'pdf';
|
}
|
return 'other';
|
},
|
|
// 文件上传相关方法
|
handleRemove(file, fileList) {
|
console.log(file, fileList);
|
},
|
|
handlePreview(file) {
|
console.log(file);
|
},
|
|
handleExceed(files, fileList) {
|
this.$modal.msgWarning(`当前限制选择 10 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
|
},
|
|
beforeRemove(file, fileList) {
|
return this.$confirm(`确定移除 ${file.name}?`);
|
},
|
|
handleUpload(index, file) {
|
// 文件上传逻辑
|
this.$modal.msgInfo("文件上传功能待开发");
|
},
|
|
handleDelete(index, file) {
|
this.$confirm('确认要删除这个文件吗?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
this.fileList.splice(index, 1);
|
this.$modal.msgSuccess("删除成功");
|
});
|
},
|
|
// 图片预览
|
previewImg(url) {
|
this.previewImage = url;
|
this.previewVisible = true;
|
},
|
|
handlePreviewClose() {
|
this.previewVisible = false;
|
this.previewImage = '';
|
},
|
|
// 工具方法
|
formatDate(date) {
|
const year = date.getFullYear();
|
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
const day = date.getDate().toString().padStart(2, '0');
|
return `${year}-${month}-${day}`;
|
}
|
}
|
};
|
</script>
|
|
<style scoped>
|
.material-edit-container {
|
padding: 10px;
|
}
|
|
.layui-fluid {
|
width: 100%;
|
}
|
|
.layui-card {
|
margin-bottom: 15px;
|
border-radius: 2px;
|
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
}
|
|
.layui-card-header {
|
padding: 10px 15px;
|
border-bottom: 1px solid #f6f6f6;
|
background-color: #f8f8f8;
|
}
|
|
.layui-card-body {
|
padding: 15px;
|
}
|
|
.layui-btn-group {
|
margin-bottom: 0;
|
}
|
|
.form-section {
|
margin-top: 20px;
|
}
|
|
.el-form-item {
|
margin-bottom: 18px;
|
}
|
|
.el-row {
|
margin-bottom: 10px;
|
}
|
|
.upload-demo {
|
margin-bottom: 20px;
|
}
|
|
/* 响应式调整 */
|
@media (max-width: 768px) {
|
.el-col {
|
margin-bottom: 15px;
|
}
|
}
|
</style>
|