Compare commits

..

No commits in common. 'f5662bf15d95635e6e84291f42dba5e6f68796ee' and '970a7180020ba81b10fca50a22a77824afeca731' have entirely different histories.

  1. 66
      src/api/orderManagement/moldPlan.js
  2. 74
      src/api/productionManagement/coatingMaterial.js
  3. 42
      src/utils/dict.js
  4. 30
      src/utils/dictData.json
  5. 605
      src/views/orderManagement/components/mold/addMoldDailog.vue
  6. 204
      src/views/orderManagement/components/mold/detailsInfoDialog.vue
  7. 269
      src/views/orderManagement/components/mold/moldAddOneDialog.vue
  8. 1490
      src/views/orderManagement/components/mold/moldRecord.vue
  9. 1220
      src/views/orderManagement/components/mold/moldRequire.vue
  10. 51
      src/views/orderManagement/moldPlan.vue
  11. 51
      vite.config.mjs

@ -1,66 +0,0 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/moldPlan/page',
method: 'get',
params: {
...params,
current,
size,
},
});
};
//新增
export const add = row => {
return request({
url: '/blade-desk/order/moldPlan/save',
method: 'post',
data: row,
});
};
// 修改
export const update = row => {
return request({
url: '/blade-desk/order/moldPlan/update',
method: 'post',
data: row,
});
};
// 获取详情
export const getOrderMoldPlanCaDeatils = (params) => {
return request({
url: `/blade-desk/order/moldPlan/detail`,
method: 'get',
params,
});
};
//逻辑删除
export const removeByIds = ids => {
return request({
url: '/blade-desk/order/moldPlan/remove',
method: 'post',
data: ids,
});
};
//批量关闭
export const closeBatchs = ids => {
return request({
url: '/blade-desk/order/moldPlan/closeBatch',
method: 'post',
data: ids,
});
};
//列表接口
export const getListpageNearlyMonth = (current, size, params) => {
return request({
url: '/blade-desk/order/moldPlan/pageNearlyMonth',
method: 'get',
params: {
...params,
current,
size,
},
});
};

@ -1,74 +0,0 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/plateGoodsRecord/page',
method: 'get',
params: {
...params,
current,
size,
},
});
};
//新增
export const add = row => {
return request({
url: '/blade-desk/order/plateGoodsRecord/save',
method: 'post',
data: row,
});
};
// 修改
export const update = row => {
return request({
url: '/blade-desk/order/plateGoodsRecord/update',
method: 'post',
data: row,
});
};
//批量审核
export const confirmBatch = row => {
return request({
url: '/blade-desk/order/plateGoodsRecord/confirmBatch',
method: 'post',
data: row,
});
};
// 获取详情
export const getOrderMoldPlanCaDeatils = (params) => {
return request({
url: `/blade-desk/order/plateGoodsRecord/detail`,
method: 'get',
params,
});
};
//逻辑删除
export const removeByIds = ids => {
return request({
url: '/blade-desk/order/plateGoodsRecord/remove',
method: 'post',
data: ids,
});
};
//批量关闭
export const closeBatchs = ids => {
return request({
url: '/blade-desk/order/plateGoodsRecord/closeBatch',
method: 'post',
data: ids,
});
};
//列表接口
export const getListlistNoFinished = (current, size, params) => {
return request({
url: '/blade-desk//order/plateGoodsRecord/listNoFinished',
method: 'get',
params: {
...params,
current,
size,
},
});
};

@ -1,42 +0,0 @@
import dictData from './dictData.json';
/**
* @param {*} keys
* @returns
* 处理本地文件字典 对应查找
* 使用方法可定义全局变量 简化简化代码工程
* [this.departments, this.materials]= getSelectData(['departments', 'materials']);
*/
export function getSelectData(keys) {
const dict = dictData || {};
if (!keys && keys !== '') return null;
//处理单个字典值
if (typeof keys === 'string') {
return dict[keys] || null;
}
//处理多个本地字典值
if (Array.isArray(keys)) {
return keys.map(k => dict[k] || null);
}
if (typeof keys === 'object') {
const result = {};
for (const [key, value] of Object.entries(keys)) {
const list = dict[key];
if (!Array.isArray(list)) {
result[key] = null;
continue;
}
if (typeof value === 'undefined') {
result[key] = list;
} else if (Array.isArray(value)) {
result[key] = value.map(v => list.find(item => String(item.value) === String(v)) || null);
} else {
result[key] = list.find(item => String(item.value) === String(value)) || null;
}
}
return result;
}
return null;
}

@ -1,30 +0,0 @@
{
"materials": [
{
"label": "钢材",
"value": "steel"
},
{
"label": "塑料",
"value": "plastic"
},
{
"label": "涂料",
"value": "coating"
}
],
"departments": [
{
"label": "生产部",
"value": "production"
},
{
"label": "质检部",
"value": "qc"
},
{
"label": "研发部",
"value": "rd"
}
]
}

@ -1,380 +1,319 @@
<template> <template>
<el-dialog <el-dialog title="新增" append-to-body :modelValue="openShow" width="90%" @close="closeDialog" fullscreen>
title="新增" <div style="margin-bottom: 12px" v-if="moldAddMore">
append-to-body <el-button type="primary" @click="addTable">插入一行</el-button>
:modelValue="openShow" <el-button type="danger" @click="delTable">删除选中行</el-button>
width="90%" </div>
@close="closeDialog"
fullscreen
>
<div style="margin-bottom: 12px" v-if="moldAddMore">
<el-button type="primary" @click="addTable">插入一行</el-button>
<el-button type="danger" @click="delTable">删除选中行</el-button>
</div>
<el-form ref="tableForm" :model="form" :rules="formRules" label-width="0px"> <el-form ref="tableForm" :model="form" :rules="formRules" label-width="0px">
<div v-if="formError" class="error-message" style="color: #f56c6c; margin-bottom: 10px"> <div v-if="formError" class="error-message" style="color: #f56c6c; margin-bottom: 10px;">
{{ formError }} {{ formError }}
</div> </div>
<el-table :data="form.moldPlan" @select="selectChange" style="width: 100%" border> <el-table :data="form.tableData" @select="selectChange" style="width: 100%" border>
<el-table-column type="selection" width="55" v-if="moldAddMore"></el-table-column> <el-table-column type="selection" width="55" v-if="moldAddMore"></el-table-column>
<el-table-column type="index" width="80" label="序号" align="center"></el-table-column> <el-table-column type="index" width="80" label="序号" align="center"></el-table-column>
<el-table-column prop="partCode" label="零件编码" align="center">
<template #header>
<span><i style="color: red">*</i>零件编码</span>
</template>
<template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].partCode`" :rules="formRules.partCode">
<el-select
v-model="scope.row.partCode"
:filterable="true"
allow-create
@change="partCodeChange(scope.row.partCode, scope.$index)"
>
<el-option
v-for="(item, index) in partCodeList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="partName" label="零件名称" align="center"> <el-table-column prop="partCode" label="零件编码" align="center">
<template #default="scope"> <template #header>
<span>{{ scope.row.partName }}</span> <span><i style="color:red">*</i>零件编码</span>
</template> </template>
</el-table-column> <template #default="scope">
<el-form-item :prop="`tableData[${scope.$index}].partCode`" :rules="formRules.partCode">
<el-select v-model="scope.row.partCode" :filterable="true" allow-create
@change="partCodeChange(scope.row)">
<el-option label="零件一" value="1" />
<el-option label="零件二" value="2" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="moCode" label="工装号" align="center"> <el-table-column prop="partName" label="零件名称" align="center">
<template #header> <template #default="scope">
<span><i style="color: red">*</i>工装号</span> <span>{{ scope.row.partName }}</span>
</template> </template>
<template #default="scope"> </el-table-column>
<el-form-item :prop="`moldPlan[${scope.$index}].moCode`" :rules="formRules.moCode">
<el-select
v-model="scope.row.moCode"
:filterable="true"
allow-create
@change="frockChange(scope.row.moCode, scope.$index)"
>
<el-option
v-for="(item, index) in moCodeList"
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="moName" label="工装名称" align="center"> <el-table-column prop="moCode" label="工装号" align="center">
<template #default="scope"> <template #header>
<span>{{ scope.row.moName }}</span> <span><i style="color:red">*</i>工装号</span>
</template> </template>
</el-table-column> <template #default="scope">
<el-form-item :prop="`tableData[${scope.$index}].moCode`" :rules="formRules.moCode">
<el-select v-model="scope.row.moCode" :filterable="true" allow-create
@change="frockChange(scope.row)">
<el-option label="工装一" value="1" />
<el-option label="工装二" value="2" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="quantity" label="数量" align="center"> <el-table-column prop="moName" label="工装名称" align="center">
<template #header> <template #default="scope">
<span><i style="color: red">*</i>数量</span> <span>{{ scope.row.moName }}</span>
</template> </template>
<template #default="scope"> </el-table-column>
<el-form-item :prop="`moldPlan[${scope.$index}].shuliang`" :rules="formRules.shuliang">
<el-input-number
v-model="scope.row.shuliang"
:min="1"
controls-position="right"
style="width: 90%"
@change="handleChange"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="planType" label="计划类型" align="center"> <el-table-column prop="quantity" label="数量" align="center">
<template #header> <template #header>
<span><i style="color: red">*</i>计划类型</span> <span><i style="color:red">*</i>数量</span>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].planType`" :rules="formRules.planType"> <el-form-item :prop="`tableData[${scope.$index}].shuliang`" :rules="formRules.shuliang">
<el-select v-model="scope.row.planType" :filterable="true" allow-create> <el-input-number v-model="scope.row.shuliang" :min="1" controls-position="right"
<el-option label="计划类型一" value="1" /> style="width: 90%;" @change="handleChange" />
<el-option label="计划类型二" value="2" /> </el-form-item>
</el-select> </template>
</el-form-item> </el-table-column>
</template>
</el-table-column>
<el-table-column prop="needDate" label="需求日期" align="center"> <el-table-column prop="planType" label="计划类型" align="center">
<template #header> <template #header>
<span><i style="color: red">*</i>需求日期</span> <span><i style="color:red">*</i>计划类型</span>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].needDate`" :rules="formRules.needDate"> <el-form-item :prop="`tableData[${scope.$index}].planType`" :rules="formRules.planType">
<el-date-picker <el-select v-model="scope.row.planType" :filterable="true" allow-create>
v-model="scope.row.needDate" <el-option label="计划类型一" value="1" />
type="date" <el-option label="计划类型二" value="2" />
format="YYYY-MM-DD" </el-select>
value-format="YYYY-MM-DD" </el-form-item>
placeholder="请选择" </template>
style="width: 80%" </el-table-column>
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="quaLevel" label="生产标识" align="center"> <el-table-column prop="needDate" label="需求日期" align="center">
<template #header> <template #header>
<span><i style="color: red">*</i>生产标识</span> <span><i style="color:red">*</i>需求日期</span>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].quaLevel`" :rules="formRules.quaLevel"> <el-form-item :prop="`tableData[${scope.$index}].needDate`" :rules="formRules.needDate">
<el-input v-model="scope.row.quaLevel" /> <el-date-picker v-model="scope.row.needDate" type="date" placeholder="请选择"
</el-form-item> style="width: 80%;" />
</template> </el-form-item>
</el-table-column> </template>
</el-table-column>
<el-table-column prop="keeper" label="保管员" align="center"> <el-table-column prop="quaLevel" label="生产标识" align="center">
<template #header> <template #header>
<span><i style="color: red">*</i>保管员</span> <span><i style="color:red">*</i>生产标识</span>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].keeper`" :rules="formRules.keeper"> <el-form-item :prop="`tableData[${scope.$index}].quaLevel`" :rules="formRules.quaLevel">
<el-select v-model="scope.row.keeper" :filterable="true" allow-create> <el-input v-model="scope.row.quaLevel" />
<el-option label="人员一" value="1" /> </el-form-item>
<el-option label="人员二" value="2" /> </template>
</el-select> </el-table-column>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="memo" label="备注" align="center"> <el-table-column prop="keeper.userName" label="保管员" align="center">
<template #default="scope"> <template #header>
<el-input v-model="scope.row.memo" /> <span><i style="color:red">*</i>保管员</span>
</template> </template>
</el-table-column> <template #default="scope">
<el-form-item :prop="`tableData[${scope.$index}].userName`" :rules="formRules.userName">
<el-select v-model="scope.row.userName" :filterable="true" allow-create>
<el-option label="人员一" value="1" />
<el-option label="人员二" value="2" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="100" align="left" v-if="moldAddMore"> <el-table-column prop="memo" label="备注" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="text" @click.prevent="delTable(scope.row, scope.$index)" <el-input v-model="scope.row.memo" />
>删除</el-button </template>
> </el-table-column>
</template>
</el-table-column>
</el-table>
</el-form>
<template #footer> <el-table-column fixed="right" label="操作" width="100" align="left" v-if="moldAddMore">
<span class="dialog-footer"> <template #default="scope">
<el-button @click="closeDialog"> </el-button> <el-button type="text" @click.prevent="delTable(scope.row, scope.$index)">删除</el-button>
<el-button type="primary" @click="submitForm"> </el-button> </template>
</span> </el-table-column>
</template> </el-table>
</el-dialog> </el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</span>
</template>
</el-dialog>
</template> </template>
<script> <script>
import { add } from '@/api/orderManagement/moldPlan';
import { index } from '@/views/plugin/workflow/api/statistics';
export default { export default {
props: { props: {
showDialog: { showDialog: {
type: Boolean, type: Boolean,
default: false, default: false
},
moldAddMore: {
type: Boolean,
default: false,
},
},
data() {
return {
moCodeList: [
{ label: '工装一', value: 1 },
{
label: '工装二',
value: 2,
}, },
], moldAddMore: {
partCodeList: [ type: Boolean,
{ label: '零件一', value: 1 }, default: false
{ }
label: '零件二',
value: 2,
},
],
openShow: false,
formError: '',
form: {
moldPlan: [],
},
formRules: {
// moldPlan: [
// {
// required: true,
// message: '',
// trigger: 'submit',
// type: 'array',
// },
// {
// validator: (rule, value, callback) => {
// if (value.length === 0) {
// callback(new Error(''));
// } else {
// callback();
// }
// },
// trigger: 'submit',
// },
// ],
// partCode: [{ required: true, message: '', trigger: ['change', 'submit'] }],
// moCode: [{ required: true, message: '', trigger: ['change', 'submit'] }],
// shuliang: [
// { required: true, message: '', trigger: ['change', 'submit'] },
// { type: 'number', min: 1, message: '1', trigger: ['change', 'submit'] },
// ],
// planType: [{ required: true, message: '', trigger: ['change', 'submit'] }],
// needDate: [{ required: true, message: '', trigger: ['change', 'submit'] }],
// quaLevel: [{ required: true, message: '', trigger: ['blur', 'submit'] }],
// keeper: [{ required: true, message: '', trigger: ['change', 'submit'] }],
},
};
},
mounted() {
this.openShow = this.showDialog;
if (this.moldAddMore && this.form.moldPlan.length === 0) {
this.addTable();
}
},
watch: {
showDialog(newVal) {
this.openShow = newVal;
if (newVal && this.moldAddMore && this.form.moldPlan.length === 0) {
this.addTable();
}
},
},
methods: {
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
this.form.moldPlan = [];
this.formError = '';
this.$refs.tableForm?.resetFields();
},
selectChange(list, row) {
row._select = !row._select;
},
addTable() {
this.form.moldPlan.push({
_select: false,
partCode: '',
partName: '',
moCode: '',
moName: '',
shuliang: 1,
planType: '',
needDate: '',
quaLevel: '',
userName: '',
memo: '',
});
},
delTable(row, index) {
if (index !== undefined) {
this.form.moldPlan.splice(index, 1);
} else {
this.form.moldPlan = this.form.moldPlan.filter(item => !item._select);
}
},
partCodeChange(val, i) {
this.form.moldPlan[i].partName =
this.partCodeList.find(item => item.value === val)?.label || '';
}, },
frockChange(val, i) { data() {
// return {
this.form.moldPlan[i].moName = this.moCodeList.find(item => item.value === val)?.label || ''; openShow: false,
formError: '',
form: {
tableData: []
},
formRules: {
tableData: [
{
required: true,
message: '请至少添加一行数据',
trigger: 'submit',
type: 'array'
},
{
validator: (rule, value, callback) => {
if (value.length === 0) {
callback(new Error('请至少添加一行数据'));
} else {
callback();
}
},
trigger: 'submit'
}
],
partCode: [
{ required: true, message: '请选择零件编码', trigger: ['change', 'submit'] }
],
moCode: [
{ required: true, message: '请选择工装号', trigger: ['change', 'submit'] }
],
shuliang: [
{ required: true, message: '请输入数量', trigger: ['change', 'submit'] },
{ type: 'number', min: 1, message: '数量不能小于1', trigger: ['change', 'submit'] }
],
planType: [
{ required: true, message: '请选择计划类型', trigger: ['change', 'submit'] }
],
needDate: [
{ required: true, message: '请选择需求日期', trigger: ['change', 'submit'] }
],
quaLevel: [
{ required: true, message: '请输入生产标识', trigger: ['blur', 'submit'] }
],
userName: [
{ required: true, message: '请选择保管员', trigger: ['change', 'submit'] }
]
}
};
}, },
handleChange() { mounted() {
// this.openShow = this.showDialog;
if (this.moldAddMore && this.form.tableData.length === 0) {
this.addTable();
}
}, },
submitForm() { methods: {
// closeDialog() {
this.formError = ''; this.openShow = false;
this.$refs.tableForm.validate(isValid => { this.$emit('closeDialog');
if (!isValid) { this.form.tableData = [];
this.formError = '存在未完善的字段,请检查表格中的红色提示'; this.formError = '';
this.$nextTick(() => { this.$refs.tableForm?.resetFields();
const firstError = document.querySelector('.el-form-item.is-error'); },
if (firstError) { selectChange(list, row) {
firstError.scrollIntoView({ behavior: 'smooth', block: 'center' }); row._select = !row._select;
} },
}); addTable() {
return; this.form.tableData.push({
} else { _select: false,
console.log('submitForm after validate', JSON.parse(JSON.stringify(this.form))); partCode: '',
add(JSON.parse(JSON.stringify(this.form))).then(res => { partName: '',
if (res.code === 200) { moCode: '',
this.$message.success('提交成功'); moName: '',
this.closeDialog(); shuliang: 1,
planType: '',
needDate: '',
quaLevel: '',
userName: '',
memo: ''
});
},
delTable(row, index) {
if (index !== undefined) {
this.form.tableData.splice(index, 1);
} else {
this.form.tableData = this.form.tableData.filter(item => !item._select);
} }
}); },
} partCodeChange(row) {
//
// },
// const submitData = this.form.moldPlan.map(row => { frockChange(row) {
// const { _select, ...validData } = row; //
// return validData; },
// }); handleChange() {
//
// 便 },
submitForm() {
this.formError = '';
this.$refs.tableForm.validate((isValid) => {
if (!isValid) {
this.formError = '存在未完善的字段,请检查表格中的红色提示';
this.$nextTick(() => {
const firstError = document.querySelector('.el-form-item.is-error');
if (firstError) {
firstError.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
});
return;
}
// //
const submitData = this.form.tableData.map(row => {
const { _select, ...validData } = row;
return validData;
});
// this.$emit('submitSuccess', submitData); //
}); this.$message.success('提交成功');
}, this.closeDialog();
}, this.$emit('submitSuccess', submitData);
});
}
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-table .el-form-item) { :deep(.el-table .el-form-item) {
margin-bottom: 0; margin-bottom: 0;
} }
:deep(.el-form-item__error) { :deep(.el-form-item__error) {
font-size: 12px; font-size: 12px;
white-space: nowrap; white-space: nowrap;
z-index: 10; z-index: 10;
background: #fff; background: #fff;
padding: 2px 4px; padding: 2px 4px;
border: 1px solid #f56c6c; border: 1px solid #f56c6c;
border-radius: 4px; border-radius: 4px;
} }
.el-table__row { .el-table__row {
height: 80px !important; height: 80px !important;
} }
.el-table__cell { .el-table__cell {
vertical-align: middle !important; vertical-align: middle !important;
} }
.error-message { .error-message {
font-size: 14px; font-size: 14px;
line-height: 1.5; line-height: 1.5;
} }
:deep(.el-table .el-table__cell) { :deep(.el-table .el-table__cell) {
height: 50px !important; height: 50px !important;
padding: 0 !important; padding: 0 !important;
line-height: 50px !important; line-height: 50px !important;
} }
</style> </style>

@ -1,109 +1,119 @@
<template> <template>
<el-dialog <el-dialog title="详情" append-to-body :modelValue="openShow" width="70%" @close="closeDialog" fullscreen>
title="详情" <el-descriptions class="margin-top" :column="4" border title="需求信息" >
append-to-body <el-descriptions-item label="需求编号">9999</el-descriptions-item>
:modelValue="openShow" <el-descriptions-item label="工装编号">9999</el-descriptions-item>
width="70%" <el-descriptions-item label="工装名称">9999</el-descriptions-item>
@close="closeDialog" <el-descriptions-item label="关联订单数">9999</el-descriptions-item>
fullscreen <el-descriptions-item label="订单需求量">9999</el-descriptions-item>
> <el-descriptions-item label="库存数量">9999</el-descriptions-item>
<el-descriptions class="margin-top" :column="4" border title="需求信息"> <el-descriptions-item label="占用数量">9999</el-descriptions-item>
<el-descriptions-item label="需求编号">9999</el-descriptions-item> </el-descriptions>
<el-descriptions-item label="工装编号">{{ form.moCode }}</el-descriptions-item> <el-descriptions class="margin-top" :column="4" border title="工装占用信息"></el-descriptions>
<el-descriptions-item label="工装名称">{{ form.moName}}</el-descriptions-item> <el-table :data="tableData" style="width: 100%">
<el-descriptions-item label="关联订单数">9999</el-descriptions-item>
<el-descriptions-item label="订单需求量">{{ form.quantity || "-" }}</el-descriptions-item> <el-table-column prop="shuliang" label="工作订单号" align="center">
<el-descriptions-item label="库存数量">9999</el-descriptions-item>
<el-descriptions-item label="占用数量">9999</el-descriptions-item> </el-table-column>
</el-descriptions> <el-table-column prop="shuliang" label="占用数" align="center">
<el-descriptions class="margin-top" :column="4" border title="工装占用信息"></el-descriptions>
<el-table :data="tableData" style="width: 100%"> </el-table-column>
<el-table-column prop="shuliang" label="工作订单号" align="center"> </el-table-column> <el-table-column prop="shuliang" label="占用时间" align="center">
<el-table-column prop="shuliang" label="占用数" align="center"> </el-table-column>
<el-table-column prop="shuliang" label="占用时间" align="center"> </el-table-column> </el-table-column>
</el-table> </el-table>
<el-descriptions class="margin-top" :column="4" border title="关联订单"></el-descriptions> <el-descriptions class="margin-top" :column="4" border title="关联订单"></el-descriptions>
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column type="index" width="80" label="序号" align="center"> </el-table-column> <el-table-column type="index" width="80" label="序号" align="center">
<el-table-column prop="id" label="计划单号" align="center"> </el-table-column> </el-table-column>
<el-table-column prop="partCode" label="零件号" align="center"> </el-table-column> <el-table-column prop="shuliang" label="计划单号" align="center">
<el-table-column prop="partName" label="产品名称" align="center"> </el-table-column> </el-table-column>
<el-table-column prop="quantity" label="零件数量" align="center"> </el-table-column> <el-table-column prop="shuliang" label="零件号" align="center">
<el-table-column prop="needDate" label="需求交期" align="center"> </el-table-column> </el-table-column>
<el-table-column prop="shuliang" label="工装需求数量" align="center"> </el-table-column> <el-table-column prop="shuliang" label="产品名称" align="center">
<el-table-column prop="shuliang" label="已交付数量" align="center"> </el-table-column> </el-table-column>
<el-table-column prop="shuliang" label="未交付数量" align="center"> </el-table-column> <el-table-column prop="shuliang" label="零件数量" align="center">
<el-table-column prop="shuliang" label="计划下达时间" align="center"> </el-table-column> </el-table-column>
</el-table> <el-table-column prop="shuliang" label="需求交期" align="center">
<el-descriptions </el-table-column>
class="margin-top" <el-table-column prop="shuliang" label="工装需求数量" align="center">
:column="4" </el-table-column>
border <el-table-column prop="shuliang" label="已交付数量" align="center">
title="申报记录(近一个的记录)" </el-table-column>
></el-descriptions> <el-table-column prop="shuliang" label="未交付数量" align="center">
<el-table :data="tableData" style="width: 100%"> </el-table-column>
<el-table-column prop="partCode" label="零件号" align="center"></el-table-column> <el-table-column prop="shuliang" label="计划下达时间" align="center">
<el-table-column prop="partName" label="零件名称" align="center"></el-table-column> </el-table-column>
<el-table-column prop="moCode" label="对应工装号" align="center"></el-table-column> </el-table>
<el-table-column prop="moName" label="工装名称" align="center"></el-table-column> <el-descriptions class="margin-top" :column="4" border title="申报记录(近一个的记录)"></el-descriptions>
<el-table-column prop="quantity" label="数量" align="center"></el-table-column> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="shuliang" label="计划类型" align="center"></el-table-column>
<el-table-column prop="needDate" label="需求日期" align="center"></el-table-column> <el-table-column prop="shuliang" label="零件号" align="center"></el-table-column>
<el-table-column prop="quaLevel" label="生产标识" align="center"></el-table-column> <el-table-column prop="shuliang" label="零件名称" align="center"></el-table-column>
<el-table-column prop="keeper" label="保管员" align="center"></el-table-column> <el-table-column prop="shuliang" label="对应工装号" align="center"></el-table-column>
<el-table-column prop="releaser" label="下达人" align="center"></el-table-column> <el-table-column prop="shuliang" label="工装名称" align="center"></el-table-column>
<el-table-column prop="createTime" label="建立时间" align="center"></el-table-column> <el-table-column prop="shuliang" label="数量" align="center"></el-table-column>
<el-table-column prop="creatUser" label="建立人员" align="center"></el-table-column> <el-table-column prop="shuliang" label="计划类型" align="center"></el-table-column>
<el-table-column prop="memo" label="备注" align="center"></el-table-column> <el-table-column prop="shuliang" label="需求日期" align="center"></el-table-column>
<el-table-column prop="mafStatusTitle" label="状态" align="center"></el-table-column> <el-table-column prop="shuliang" label="生产标识" align="center"></el-table-column>
</el-table> <el-table-column prop="shuliang" label="保管员" align="center"></el-table-column>
<template #footer> <el-table-column prop="shuliang" label="下达人" align="center"></el-table-column>
<span class="dialog-footer"> <el-table-column prop="shuliang" label="建立时间" align="center"></el-table-column>
<el-button @click="closeDialog"> </el-button> <el-table-column prop="shuliang" label="建立人员" align="center"></el-table-column>
<el-button type="primary" @click="submit"> </el-button> <el-table-column prop="shuliang" label="备注" align="center"></el-table-column>
</span> <el-table-column prop="shuliang" label="状态" align="center"></el-table-column>
</template> </el-table>
</el-dialog> <template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template>
</el-dialog>
</template> </template>
<script> <script>
import { getOrderMoldPlanCaDeatils } from '@/api/orderManagement/moldPlan';
export default { export default {
props: { props: {
showDialog: { showDialog: {
type: Boolean, type: Boolean,
default: false, default: false
},
}, },
id: { data() {
type: String, return {
default: '1', openShow: false,
form: {},
tableData: [],
}
}, },
}, mounted() {
data() { this.openShow = this.showDialog
return {
openShow: false,
form: {},
tableData: [],
};
},
mounted() {
this.openShow = this.showDialog;
getOrderMoldPlanCaDeatils({ id: this.id }).then(res => {
if (res.code == 200) {
this.form = { ...res.data };
}
});
},
methods: {
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
}, },
methods: {
closeDialog() {
this.openShow = false
this.$emit('closeDialog');
},
addTable() {
this.tableData.push({
code: '3',
No: '3',
number: '3',
shuliang: '',
shuliang: 0
}, })
}; },
delTable(row, index) {
this.tableData.splice(index, 1)
},
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.margin-top { .margin-top{
margin-top: 24px; margin-top: 24px;
} }
</style> </style>

@ -1,161 +1,128 @@
<template> <template>
<el-dialog <el-dialog title="模具申报" append-to-body :modelValue="openShow" width="40%" @close="closeDialog">
title="模具申报" <el-form ref="form" :model="form" label-width="100px" :rules="rules">
append-to-body <el-row>
:modelValue="openShow" <el-col :span="12">
width="40%" <el-form-item label="零件编码:">21E8-040-17188-A1</el-form-item>
@close="closeDialog" </el-col>
> <el-col :span="12">
<el-form ref="form" :model="form" label-width="100px" :rules="rules"> <el-form-item label="零件名称:">21E8-040-17188-A1</el-form-item>
<el-row> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="零件编码:">{{ form.partCode }}</el-form-item> <el-form-item label="工装号:">21E8-040-17188-A1</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="零件名称:">{{ form.partName }}</el-form-item> <el-form-item label="工装名称:">21E8-040-17188-A1</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="工装号:">{{ form.moCode }}</el-form-item> <el-form-item label="数量:" prop="shuliang">
</el-col> <el-input-number v-model="form.shuliang" :min="1" controls-position="right" style="width: 80%;"
<el-col :span="12"> @change="handleChange" />
<el-form-item label="工装名称:">{{ form.moName }}</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="数量:" prop="quaLevel"> <el-form-item label="计划类型:" prop="moCode">
<el-input-number <el-select v-model="form.moCode" :filterable="true" allow-create @change="frockChange(form)" style="width: 80%;">
v-model="form.quaLevel" <el-option label="计划类型一" value="1" />
:min="1" <el-option label="计划类型二" value="2" />
controls-position="right" </el-select>
style="width: 80%" </el-form-item>
@change="handleChange" </el-col>
/> <el-col :span="12">
</el-form-item> <el-form-item label="需求日期:" prop="needDate">
</el-col> <el-date-picker v-model="form.needDate" type="date" placeholder="请选择" style="width: 80%;" />
<el-col :span="12"> </el-form-item>
<el-form-item label="计划类型:" prop="moCodes"> </el-col>
<el-select <el-col :span="12">
v-model="form.moCodes" <el-form-item label="生产标识:" prop="quaLevel">
:filterable="true" <el-input v-model="form.quaLevel" style="width: 80%;" />
allow-create </el-form-item>
style="width: 80%" </el-col>
> <el-col :span="12">
<el-option label="计划类型一" value="1" /> <el-form-item label="保管员:" prop="userName">
<el-option label="计划类型二" value="2" /> <el-select v-model="form.userName" :filterable="true" allow-create @change="frockChange(form)" style="width: 80%;">
</el-select> <el-option label="人员一" value="1" />
</el-form-item> <el-option label="人员二" value="2" />
</el-col> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="需求日期:" prop="needDate"> </el-col>
<el-date-picker <el-col :span="24">
v-model="form.needDate" <el-form-item label="备注:">
type="date" <el-input v-model="form.memo" type="textarea" />
placeholder="请选择" </el-form-item>
style="width: 80%" </el-col>
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产标识:" prop="quaLevels">
<el-input v-model="form.quaLevels" style="width: 80%" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保管员:" prop="keeper">
<el-select
v-model="form.keeper"
:filterable="true"
allow-create
style="width: 80%"
>
<el-option label="人员一" value="1" />
<el-option label="人员二" value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注:">
<el-input v-model="form.memo" type="textarea" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer> </el-row>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button> </el-form>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template> <template #footer>
</el-dialog> <span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template>
</el-dialog>
</template> </template>
<script> <script>
import { getOrderMoldPlanCaDeatils,update } from '@/api/orderManagement/moldPlan';
export default { export default {
props: { props: {
showDialog: { showDialog: {
type: Boolean, type: Boolean,
default: false, default: false
},
}, },
id: { data() {
type: String, return {
default: '1', openShow: false,
}, form: {
},
data() { },
return { tableData: [],
openShow: false, rules: {
form: {}, shuliang: [
tableData: [], { required: true, message: '请输入', trigger: 'blur' },
rules: { ],
quaLevel: [{ required: true, message: '请输入数量', trigger: 'blur' }], moCode: [
moCodes: [{ required: true, message: '请选择计划类型', trigger: 'change' }], { required: true, message: '请选择', trigger: 'blur' },
needDate: [{ required: true, message: '请选择需求日期', trigger: 'change' }], ],
keeper: [{ required: true, message: '请输入保管员', trigger: 'change' }], needDate:[
}, { required: true, message: '请选择', trigger: 'blur' },
}; ],
}, quaLevel:[
mounted() { { required: true, message: '请输入', trigger: 'blur' },
this.openShow = this.showDialog; ],
getOrderMoldPlanCaDeatils({ id: this.id }).then(res => { userName:[
if (res.code == 200) { { required: true, message: '请输入', trigger: 'blur' },
this.form = { ...res.data }; ],
}
});
},
methods: {
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
},
submit() {
//
this.$refs.form.validate(valid => {
if (!valid) {
this.$message.error('表单校验未通过,请检查必填项');
return;
}
// //
const submitData = { ...this.form ,...{id:this.id}};
//
update(submitData)
.then(res => {
if (res && res.code === 200) {
this.$message.success('保存成功');
this.closeDialog();
//
this.$emit('updateSuccess', submitData);
} else {
this.$message.error( '保存失败');
} }
})
.catch(() => { }
this.$message.error('请求失败,请稍后重试'); },
}); mounted() {
}); this.openShow = this.showDialog
}, },
}, methods: {
}; closeDialog() {
this.openShow = false
this.$emit('closeDialog');
},
addTable() {
this.tableData.push({
code: '3',
No: '3',
number: '3',
shuliang: '',
shuliang: 0
})
},
delTable(row, index) {
this.tableData.splice(index, 1)
},
}
}
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,35 +1,38 @@
<template> <template>
<basic-container> <basic-container>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="模具需求" name="1"> <el-tab-pane label="模具需求" name="1"></el-tab-pane>
<el-tab-pane label="申报记录" name="2"></el-tab-pane>
</el-tabs>
<moldRequire v-if="activeName == '1'"></moldRequire> <moldRequire v-if="activeName == '1'"></moldRequire>
</el-tab-pane>
<el-tab-pane label="申报记录" name="2">
<moldRecord v-if="activeName == '2'"></moldRecord> <moldRecord v-if="activeName == '2'"></moldRecord>
</el-tab-pane> </basic-container>
</el-tabs>
</basic-container>
</template> </template>
<script> <script>
import moldRequire from './components/mold/moldRequire.vue'; import moldRequire from './components/mold/moldRequire.vue'
import moldRecord from './components/mold/moldRecord.vue'; import moldRecord from './components/mold/moldRecord.vue'
export default { export default {
components: { components: {
moldRequire, moldRequire,
moldRecord, moldRecord
}, },
data() { data() {
return { return {
activeName: '1', activeName: '1',
};
},
};
},
methods: { methods: {
handleClick() { handleClick() {
console.log(9999999, this.activeName); console.log(9999999,this.activeName)
},
}, },
}, mounted() {
mounted() {}, }
}; };
</script> </script>

@ -1,20 +1,20 @@
import { defineConfig, loadEnv } from 'vite'; import { defineConfig, loadEnv } from "vite";
import { resolve } from 'path'; import { resolve } from "path";
import path from 'path'; import path from "path";
import createVitePlugins from './vite/plugins'; import createVitePlugins from "./vite/plugins";
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'; import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default ({ mode, command }) => { export default ({ mode, command }) => {
const env = loadEnv(mode, process.cwd()); const env = loadEnv(mode, process.cwd());
const { VITE_APP_ENV, VITE_APP_BASE } = env; const { VITE_APP_ENV, VITE_APP_BASE } = env;
// 判断是打生产环境包 // 判断是打生产环境包
const isProd = VITE_APP_ENV === 'production'; const isProd = VITE_APP_ENV === "production";
// 根据是否生产环境,动态设置压缩配置 // 根据是否生产环境,动态设置压缩配置
const buildConfig = { const buildConfig = {
target: 'esnext', target: "esnext",
minify: isProd ? 'terser' : 'esbuild', // 根据环境选择压缩工具 minify: isProd ? "terser" : "esbuild", // 根据环境选择压缩工具
}; };
// 如果是生产环境,添加Terser的配置 // 如果是生产环境,添加Terser的配置
@ -31,8 +31,8 @@ export default ({ mode, command }) => {
buildConfig.rollupOptions = { buildConfig.rollupOptions = {
output: { output: {
manualChunks: { manualChunks: {
'element-plus': ['element-plus'], "element-plus": ["element-plus"],
'@smallwei/avue': ['@smallwei/avue'], "@smallwei/avue": ["@smallwei/avue"],
}, },
}, },
}; };
@ -47,50 +47,45 @@ export default ({ mode, command }) => {
server: { server: {
port: 2888, port: 2888,
proxy: { proxy: {
'/api': { "/api": {
// target: 'http://192.168.1.5:82', target: "http://192.168.1.5:82",
// target: "http://192.168.1.4:82", // target: "http://192.168.1.4:82",
// target:'http://49.232.74.228:82', // target:'http://49.232.74.228:82',
// target: "http://192.168.0.120", // target: "http://192.168.0.120",
//target: 'https://saber3.bladex.cn/api', //target: 'https://saber3.bladex.cn/api',
// target: 'http://49.232.74.228:82',
// target: "http:192.168.0.220:80",
// target: 'http:49.232.74.228:49',
target: 'http://49.232.74.228:80', //测试环境的地址
changeOrigin: true, changeOrigin: true,
rewrite: path => path.replace(/^\/api/, ''), rewrite: (path) => path.replace(/^\/api/, ""),
}, },
}, },
}, },
resolve: { resolve: {
alias: { alias: {
'~': resolve(__dirname, './'), "~": resolve(__dirname, "./"),
'@': resolve(__dirname, './src'), "@": resolve(__dirname, "./src"),
components: resolve(__dirname, './src/components'), components: resolve(__dirname, "./src/components"),
styles: resolve(__dirname, './src/styles'), styles: resolve(__dirname, "./src/styles"),
utils: resolve(__dirname, './src/utils'), utils: resolve(__dirname, "./src/utils"),
}, },
}, },
css: { css: {
preprocessorOptions: { preprocessorOptions: {
scss: { scss: {
api: 'modern-compiler', api: "modern-compiler",
additionalData: `@use "@/styles/variables.scss" as *;`, additionalData: `@use "@/styles/variables.scss" as *;`,
}, },
}, },
}, },
plugins: [ plugins: [
createVitePlugins(env, command === 'build'), createVitePlugins(env, command === "build"),
createSvgIconsPlugin({ createSvgIconsPlugin({
iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')], iconDirs: [path.resolve(process.cwd(), "src/assets/svg")],
symbolId: 'icon-[dir]-[name]', symbolId: "icon-[dir]-[name]",
}), }),
], ],
build: buildConfig, build: buildConfig,
optimizeDeps: { optimizeDeps: {
esbuildOptions: { esbuildOptions: {
target: 'esnext', target: "esnext",
}, },
}, },
}); });

Loading…
Cancel
Save