金蝶工序计划

This commit is contained in:
tzy 2026-04-12 10:08:34 +08:00
parent 55a32a3831
commit 44e8afaacb
12 changed files with 1970 additions and 1267 deletions

View File

@ -65,3 +65,11 @@ export function delProPlan(id) {
method: 'delete'
})
}
// 设计人项目汇总(周/月/年)
export function getDesignerSummary() {
return request({
url: '/system/proPlan/summary/designer',
method: 'get'
})
}

View File

@ -148,6 +148,23 @@ export function generatePDFs(rooteProdet) {
});
}
// 更新生产订单仓库字段(推送工序计划单入库)
export function updateProductionOrders(rooteProdet, cangKuNum) {
return request({
url: '/system/route/updateProductionOrders',
method: 'post',
params: { rooteProdet, cangKuNum },
});
}
export function updateCgOrders(rooteProdet, cangKuNum) {
return request({
url: '/system/route/updateCgOrders',
method: 'post',
params: { rooteProdet, cangKuNum },
});
}
// 获取物料BOM信息后端返回物料BOM信息集合
export function getBomInfo(materialCode, materialName, productionOrderNo) {

View File

@ -37,8 +37,16 @@ export function updateSafetyStock(data) {
// 删除安全库存
export function delSafetyStock(id) {
const ids = Array.isArray(id) ? id.join(',') : id
// 优先尝试 REST 风格 DELETE不支持则回退到 POST /remove
return request({
url: '/system/safetyStock/' + id,
url: '/system/safetyStock/' + ids,
method: 'delete'
}).catch(() => {
return request({
url: '/system/safetyStock/remove',
method: 'post',
data: { ids }
})
})
}

View File

@ -65,12 +65,14 @@
</el-form>
<el-table v-loading="loading" :data="materialList" >
<el-table v-loading="loading" :data="materialList" class="material-table">
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="ID" width="60" align="center" prop="id" v-if="true"/>
<el-table-column label="物料编号" align="center" prop="materialCode">
<template slot-scope="scope">
<span @click="handleClick(scope.row)"> {{ scope.row.materialCode }} </span>
<el-link type="primary" :underline="true" class="material-code-link" @click="handleClick(scope.row)">
{{ scope.row.materialCode }}
</el-link>
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="materialName">
@ -111,20 +113,32 @@
@pagination="getList"
/>
<transition name="fade">
<el-dialog :visible="dialogVisible" @close="dialogVisible = false" width="30%">
<el-dialog :visible="dialogVisible" @close="dialogVisible = false" width="36%">
<el-card class="box-card" v-loading="dialogLoading" element-loading-text="加载中..." element-loading-background="rgba(255, 255, 255, 0.8)">
<div slot="header" class="clearfix">
<div slot="header" class="clearfix header-bar">
<span class="dialog-title">库存信息</span>
<span class="material-title">{{ inventoryData.materialCode }}</span>
</div>
<div class="dialog-body">
<p class="dialog-item"><strong>物料编号</strong>{{ inventoryData.materialCode }}</p>
<p class="dialog-item"><strong>库存</strong>{{ inventoryData.kucun }}</p>
<p class="dialog-item"><strong>子项未领料量</strong>{{ inventoryData.inventory }}</p>
<p class="dialog-item"><strong>生产订单未入库</strong>{{ inventoryData.stockName }}</p>
<p class="dialog-item"><strong>采购订单未入库</strong>{{ inventoryData.materialName }}</p>
<p class="dialog-item"><strong>预计可用库存</strong>{{ inventoryData.stockUnit }}</p>
</div>
<el-descriptions :column="2" border class="inventory-desc" size="small">
<el-descriptions-item label="库存">
<span :class="['val', inventoryData.kucun > 0 ? 'val-pos' : (inventoryData.kucun < 0 ? 'val-neg' : 'val-zero')]">{{ inventoryData.kucun }}</span>
</el-descriptions-item>
<el-descriptions-item label="子项未领料量">
<span class="val">{{ inventoryData.inventory }}</span>
</el-descriptions-item>
<el-descriptions-item label="生产订单未入库">
<span class="val">{{ inventoryData.stockName }}</span>
</el-descriptions-item>
<el-descriptions-item label="采购订单未入库">
<span class="val">{{ inventoryData.materialName }}</span>
</el-descriptions-item>
<el-descriptions-item label="销售订单未出库">
<span class="val">{{ inventoryData.salesOrder }}</span>
</el-descriptions-item>
<el-descriptions-item label="预计可用库存">
<span :class="['val', inventoryData.stockUnit > 0 ? 'val-pos' : (inventoryData.stockUnit < 0 ? 'val-neg' : 'val-zero')]">{{ inventoryData.stockUnit }}</span>
</el-descriptions-item>
</el-descriptions>
</el-card>
</el-dialog>
</transition>
@ -186,6 +200,7 @@ export default {
unitPrice: undefined,
unit: undefined,
flag: undefined,
salesOrder:undefined
},
//
form: {},
@ -210,6 +225,7 @@ export default {
this.inventoryData.stockName = response.data.stockName;
this.inventoryData.stockUnit = response.data.stockUnit;
this.inventoryData.kucun = response.data.kucun;
this.inventoryData.salesOrder = response.data.salesOrder;
this.dialogVisible = true;
})
.catch(error => {
@ -342,4 +358,52 @@ export default {
text-align: center;
margin-bottom: 10px;
}
.header-bar {
display: flex;
align-items: center;
justify-content: space-between;
}
.material-title {
font-size: 16px;
font-weight: 600;
color: #409EFF;
}
.material-table .el-table__header .cell {
font-size: 16px;
font-weight: 700;
color: #303133;
}
.material-table .el-table__body .cell {
font-size: 14px;
font-weight: 600;
}
.material-code-link {
font-size: 16px;
font-weight: 700;
}
.inventory-desc {
--label-bg: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
--label-color: #409EFF;
}
.inventory-desc .el-descriptions__label {
background: var(--label-bg);
color: var(--label-color);
font-weight: 600;
}
.inventory-desc .el-descriptions__content {
color: #303133;
font-size: 13px;
}
.val {
font-weight: 600;
}
.val-pos {
color: #67C23A;
}
.val-neg {
color: #F56C6C;
}
.val-zero {
color: #909399;
}
</style>

View File

@ -194,7 +194,7 @@
</template>
<script>
import { listProPlan2, listProPlanOverdue ,listProPlanExpirys} from '@/api/system/proPlan'
import { listProPlan2, listProPlanOverdue ,listProPlanExpirys, getDesignerSummary } from '@/api/system/proPlan'
import dayjs from 'dayjs';
export default {
data () {
@ -222,7 +222,8 @@ export default {
hoverPause: false
}
,
timeGranularity: 'month'
timeGranularity: 'month',
designerSummary: []
}
},
async created() {
@ -232,8 +233,10 @@ export default {
await this.fetchOverdue();
//
await this.ExpiryOverdue();
//
//
this.fetchProPlanList();
//
await this.fetchDesignerSummary();
},
mounted() {
//
@ -242,6 +245,7 @@ export default {
await this.ExpiryOverdue();
this.fetchProPlanList();
this.initProjects();
await this.fetchDesignerSummary();
}, 60 * 1000); // 1
// 3
@ -374,29 +378,19 @@ export default {
};
},
capsuleConfig() {
const designers = this.getUniqueDesigners();
const timeLabels = this.getTimeLabels(this.timeGranularity);
const latestLabel = timeLabels[timeLabels.length - 1];
const countsByDesigner = new Map();
designers.forEach(d => countsByDesigner.set(d, 0));
(this.tableConfig.data || []).forEach(row => {
// HTML
const designer = row[1] ? row[1].replace(/<[^>]*>/g, '') : '';
const dateStr = row[4] ? row[4].replace(/<[^>]*>/g, '') : '';
if (!designer || !dateStr || designer === '-') return;
const label = this.formatTimeLabel(dateStr, this.timeGranularity);
if (label === latestLabel && countsByDesigner.has(designer)) {
countsByDesigner.set(designer, countsByDesigner.get(designer) + 1);
}
});
const data = Array.from(countsByDesigner.entries())
.map(([name, value]) => ({ name, value }))
const list = Array.isArray(this.designerSummary) ? this.designerSummary : [];
const key =
this.timeGranularity === 'week'
? 'weeklyCount'
: this.timeGranularity === 'year'
? 'yearlyCount'
: 'monthlyCount';
const data = list
.map(item => ({
name: item.designer || item.name || '-',
value: Number(item[key] ?? 0)
}))
.sort((a, b) => b.value - a.value);
return {
data,
colors: ['#ef4444', '#f59e0b', '#22c55e', '#3b82f6', '#8b5cf6', '#06b6d4', '#ea580c'],
@ -676,6 +670,17 @@ export default {
console.error('fetchProPlanList error:', e);
}
},
//
async fetchDesignerSummary() {
try {
const res = await getDesignerSummary();
const rows = res?.rows || res?.data || res || [];
this.designerSummary = Array.isArray(rows) ? rows : [];
} catch (e) {
console.error('fetchDesignerSummary error:', e);
this.designerSummary = [];
}
},
getUniqueDesigners() {
const set = new Set();

View File

@ -228,6 +228,7 @@
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
:pageSizes="[50, 100, 1000, 5000]"
@pagination="getList"
/>
@ -362,7 +363,7 @@ export default {
//
queryParams: {
pageNum: 1,
pageSize: 100,
pageSize: 1000,
partNumber: undefined,
fname: undefined,
fnumber: undefined,

File diff suppressed because it is too large Load Diff

View File

@ -39,6 +39,7 @@
<el-select v-model="queryParams.processStatus" placeholder="请选择方案状态" clearable>
<el-option label="未开始" value="0" />
<el-option label="已完成" value="1" />
<el-option label="已取消" value="2" />
</el-select>
</el-form-item>
@ -100,7 +101,14 @@
<el-table-column label="方案编码" align="center" prop="projectCode" />
<el-table-column label="设计人" align="center" prop="designer">
<template slot-scope="scope">
<dict-tag :options="dict.type.plan_proer" :value="scope.row.designer"/>
<div>
<el-tag
v-for="n in getDesignerLabels(scope.row.designer)"
:key="n"
size="mini"
style="margin-right:4px"
>{{ n }}</el-tag>
</div>
</template>
</el-table-column>
<el-table-column label="方案备注" align="center" prop="remark" />
@ -156,13 +164,13 @@
<el-input v-model="form.projectCode" placeholder="请输入方案编码" />
</el-form-item>
<el-form-item label="设计人" prop="designer">
<el-select v-model="form.designer" placeholder="请选择设计人">
<el-select v-model="form.designer" multiple collapse-tags placeholder="请选择设计人" clearable>
<el-option
v-for="dict in dict.type.plan_proer"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
/>
</el-select>
</el-form-item>
<el-form-item label="方案备注" prop="remark">
@ -188,6 +196,7 @@
<el-select v-model="form.processStatus" placeholder="请选择方案状态">
<el-option label="未开始" value="0" />
<el-option label="已完成" value="1" />
<el-option label="已取消" value="2" />
</el-select>
</el-form-item>
</el-form>
@ -330,7 +339,8 @@ export default {
const id = row.id || this.ids
getProPlan(id).then(response => {
this.loading = false;
this.form = response.data;
this.form = response.data || {};
this.form.designer = this.parseDesignerArray(this.form.designer);
this.open = true;
this.title = "修改方案管理";
});
@ -341,7 +351,13 @@ export default {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateProPlan(this.form).then(response => {
const payload = {
...this.form,
designer: Array.isArray(this.form.designer)
? this.form.designer.join(",")
: this.form.designer
};
updateProPlan(payload).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
@ -349,7 +365,13 @@ export default {
this.buttonLoading = false;
});
} else {
addProPlan(this.form).then(response => {
const payload = {
...this.form,
designer: Array.isArray(this.form.designer)
? this.form.designer.join(",")
: this.form.designer
};
addProPlan(payload).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
@ -380,6 +402,25 @@ export default {
this.download('system/proPlan/export', {
...this.queryParams
}, `proPlan_${new Date().getTime()}.xlsx`)
},
parseDesignerArray(v) {
if (!v) return [];
if (Array.isArray(v)) return v.filter(Boolean).map(x => String(x));
if (typeof v === "string") {
return v.split(",").map(s => s.trim()).filter(s => s.length > 0);
}
return [];
},
getDesignerLabels(value) {
const opts = (this.dict && this.dict.type && this.dict.type.plan_proer) || [];
const codes = this.parseDesignerArray(value);
return codes.map(c => {
const m = opts.find(o =>
String(o.value) === String(c) ||
String((o.dictValue || "")) === String(c)
) || null;
return m ? (m.label || m.dictLabel || c) : c;
});
}
}
};

View File

@ -84,6 +84,7 @@
:model="n"
ref="ruleForm"
size="mini"
:key="i"
:rules="rules"
>
<el-form-item prop="key1">

View File

@ -13,29 +13,13 @@
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:route:add']">新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['system:route:edit']">修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['system:route:remove']">删除
</el-button>
</el-col>-->
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleExport"
@ -58,12 +42,7 @@
</el-button>
</el-col>
<el-col :span="3">
<el-input
v-model="routeGroupName"
placeholder="请输入推送分组"
size="mini"
clearable
/>
<el-input v-model="routeGroupName" placeholder="请输入推送分组" size="mini" clearable />
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-edit" size="mini" :disabled="multiple" @click="updateProcessPlan"
@ -95,9 +74,8 @@
<el-form :inline="true" :model="form" ref="ruleForm" size="mini" :rules="rules">
<el-table v-if="showtable" v-loading="loading" row-key="id" ref="tree" v-drag:[config]="form.routeList"
:tree-props="{ children: 'children' }" :data="form.routeList" stripe :row-class-name="tableRowClassName"
border max-height="680px" @cell-click="cellhand" :default-expand-all="true"
@selection-change="handleSelectionChange">
:tree-props="{ children: 'children' }" :data="form.routeList" stripe :row-class-name="tableRowClassName" border
max-height="680px" @cell-click="cellhand" :default-expand-all="true" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键ID" align="center" prop="id" v-if="true"/>-->
@ -111,7 +89,7 @@
</el-table-column>
<!-- <el-table-column label="项目令号" align="center">
<template slot-scope="scope">
<template slot-scope="scope">升降台
<router-link :to="'/route1/' + scope.row.routeDescription" type="primary" :underline="false">{{
scope.row.routeDescription }}</router-link>
</template>
@ -132,12 +110,8 @@
</template>
</el-table-column>
<el-table-column label="本批数" width="60" align="center" prop="batchQuantity" />
<el-table-column label="重要程度" width="80" align="center" prop="stateImportance" />
<!--
<el-table-column label="材料BOM物料编码" width="220"align="center" prop="ra wMaterialCode" />
<el-table-column label="材料BOM物料名称"width="220" align="center" prop="rawMaterialName" />
<el-table-column label="用量"width="60"align="center" prop="discUsage" />
<el-table-column label="单位"width="60" align="center" prop="bomUnit" />-->
<el-table-column label="工序号" width="60" align="center" prop="processNo" />
<el-table-column label="工作中心" width="96" align="center">
<template slot-scope="scope">
@ -158,8 +132,7 @@
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
:prop="'routeList.' + scope.$index + '.processName'">
<el-select v-model="scope.row.processName" filterable remote :remote-method="handleQuery3"
placeholder="请输入工序名称" clearable :loading="loading"
@change="handleProcessNameChange(scope)">
placeholder="请输入工序名称" clearable :loading="loading" @change="handleProcessNameChange(scope)">
<el-option v-for="item in processName" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
@ -217,16 +190,13 @@
<template slot-scope="scope">
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
:prop="'routeList.' + scope.$index + '.xuEndTime'">
<el-date-picker v-model="scope.row.xuEndTime" type="date" placeholder="选择序结束时间"
value-format="yyyy-MM-dd"
<el-date-picker v-model="scope.row.xuEndTime" type="date" placeholder="选择序结束时间" value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<span v-else>{{ parseTime(scope.row.xuEndTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- //<el-table-column label="" align="center" prop="bomUnit" /> -->
<!-- <el-table-column label="单台数量" align="center" prop="unitQuantity" /> -->
<el-table-column label="计划开始时间" align="center" prop="planStartTime" width="180">
<template slot-scope="scope">
@ -400,16 +370,14 @@
<el-row>
<el-col :span="12">
<el-form-item label="序开始时间" prop="xuStartTime">
<el-date-picker v-model="form.xuStartTime" type="date" placeholder="选择序开始时间"
value-format="yyyy-MM-dd"
<el-date-picker v-model="form.xuStartTime" type="date" placeholder="选择序开始时间" value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="序结束时间" prop="xuEndTime">
<el-date-picker v-model="form.xuEndTime" type="date" placeholder="选择序结束时间"
value-format="yyyy-MM-dd"
<el-date-picker v-model="form.xuEndTime" type="date" placeholder="选择序结束时间" value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
@ -461,7 +429,8 @@
</div>
</el-dialog>
<!-- 抽屉 -->
<el-drawer title="BOM信息" :visible.sync="BOMpop" :before-close="bomClose" :size="1100" :destroy-on-close="true" :modal="false">
<el-drawer title="BOM信息" :visible.sync="BOMpop" :before-close="bomClose" :size="1100" :destroy-on-close="true"
:modal="false">
<div style="padding: 20px;">
<!-- BOM信息头部 -->
<div class="bom-header">
@ -514,8 +483,7 @@
<el-table-column label="操作" align="center" width="150">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleBomEdit(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete"
@click="handleBomDelete(scope.row)">删除
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleBomDelete(scope.row)">删除
</el-button>
</template>
</el-table-column>
@ -530,8 +498,7 @@
<!-- 物料名称 - 支持搜索或手动输入 -->
<el-form-item label="物料名称" prop="materialName">
<el-autocomplete v-model="bomForm.materialName" :fetch-suggestions="handleMaterialSearch"
:trigger-on-focus="false" @select="handleMaterialSelect" placeholder="请输入物料名称"
clearable
:trigger-on-focus="false" @select="handleMaterialSelect" placeholder="请输入物料名称" clearable
popper-class="material-autocomplete-dropdown">
<template slot-scope="{ item }">
<div class="material-suggestion-item">
@ -571,14 +538,12 @@
<!-- 当前库存 - 允许手动输入 -->
<el-form-item label="当前库存" prop="stock">
<el-input-number v-model="bomForm.stock" :min="0" :precision="2"
placeholder="请输入库存"></el-input-number>
<el-input-number v-model="bomForm.stock" :min="0" :precision="2" placeholder="请输入库存"></el-input-number>
</el-form-item>
<!-- 用量 -->
<el-form-item label="用量" prop="quantity">
<el-input-number v-model="bomForm.quantity" :min="0" :precision="2"
placeholder="请输入用量"></el-input-number>
<el-input-number v-model="bomForm.quantity" :min="0" :precision="2" placeholder="请输入用量"></el-input-number>
</el-form-item>
</el-form>
@ -599,9 +564,7 @@
<el-table-column label="物料名称" prop="materialName" fixed="left" min-width="140" align="center" />
<el-table-column label="操作" width="120" align="center">
<template slot-scope="scope">
<el-button
type="text"
@click="handleViewRoute(scope.row)"
<el-button @click="handleViewRoute(scope.row)"
:type="selectedRouteId === scope.row.id ? 'success' : 'primary'">
{{ selectedRouteId === scope.row.id ? '查看中' : '查看' }}
</el-button>
@ -738,6 +701,7 @@ export default {
routeDescription: [],
materialCode: undefined,
materialName: undefined,
stateImportance: undefined,
bomUnit: undefined,
processNo: undefined,
workCenter: undefined,
@ -1592,8 +1556,8 @@ export default {
//
this.$notify({
title: '推送失败',
message: error.message || '推送失败,请重试!',
title: '推送工艺失败',
message: error.message || '推送工艺失败,请重试!',
type: 'error',
duration: 0,
showClose: true

View File

@ -132,15 +132,21 @@
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="材质" prop="wlMaterial">
<el-input v-model="form.wlMaterial" placeholder="请输入材质" />
</el-form-item>
<el-form-item label="最低安全库存" prop="minSafetyStock">
<el-input v-model="form.minSafetyStock" placeholder="请输入最低安全库存" />
<el-input v-model="form.minSafetyStock" placeholder="请输入最低安全库存" type="number" />
</el-form-item>
<el-form-item label="最高安全库存" prop="maxSafetyStock">
<el-input v-model="form.maxSafetyStock" placeholder="请输入最高安全库存" />
<el-input v-model="form.maxSafetyStock" placeholder="请输入最高安全库存" type="number" />
</el-form-item>
<el-form-item label="类型" prop="type">
<el-input v-model="form.type" placeholder="请输入类型" />
</el-form-item>
<el-form-item label="即时库存" prop="currentStock">
<el-input v-model="form.currentStock" placeholder="请输入即时库存" type="number" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
@ -180,7 +186,7 @@ export default {
//
queryParams: {
pageNum: 1,
pageSize: 100,
pageSize: 10,
materialCode: undefined,
materialName: undefined,
minSafetyStock: undefined,
@ -191,32 +197,23 @@ export default {
form: {},
//
rules: {
id: [
{ required: true, message: "主键ID不能为空", trigger: "blur" }
],
materialCode: [
{ required: true, message: "物料编码不能为空", trigger: "blur" }
],
materialName: [
{ required: true, message: "物料名称不能为空", trigger: "blur" }
],
wlMaterial: [
{ required: true, message: "材质不能为空", trigger: "blur" }
],
minSafetyStock: [
{ required: true, message: "最低安全库存不能为空", trigger: "blur" }
],
maxSafetyStock: [
{ required: true, message: "最高安全库存不能为空", trigger: "blur" }
],
createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" }
],
updateTime: [
{ required: true, message: "更新时间不能为空", trigger: "blur" }
],
createBy: [
{ required: true, message: "创建人不能为空", trigger: "blur" }
],
updateBy: [
{ required: true, message: "更新人不能为空", trigger: "blur" }
type: [
{ required: true, message: "类型不能为空", trigger: "blur" }
]
}
};
@ -245,13 +242,11 @@ export default {
id: undefined,
materialCode: undefined,
materialName: undefined,
wlMaterial: undefined,
minSafetyStock: undefined,
maxSafetyStock: undefined,
currentStock: undefined,
createTime: undefined,
updateTime: undefined,
createBy: undefined,
updateBy: undefined
type: undefined
};
this.resetForm("form");
},