Merge branch 'dev-scheduling' of http://42.192.7.176:3000/suojin/jonhon-mes-web into dev-scheduling

dev-scheduling
zhangdi 4 months ago
commit 58d187c8d4
  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

@ -0,0 +1,66 @@
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,
},
});
};

@ -0,0 +1,74 @@
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,
},
});
};

@ -0,0 +1,42 @@
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;
}

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

@ -1,319 +1,380 @@
<template> <template>
<el-dialog title="新增" append-to-body :modelValue="openShow" width="90%" @close="closeDialog" fullscreen> <el-dialog
<div style="margin-bottom: 12px" v-if="moldAddMore"> title="新增"
<el-button type="primary" @click="addTable">插入一行</el-button> append-to-body
<el-button type="danger" @click="delTable">删除选中行</el-button> :modelValue="openShow"
</div> width="90%"
@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.tableData" @select="selectChange" style="width: 100%" border> <el-table :data="form.moldPlan" @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="partCode" 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="`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="partName" label="零件名称" align="center"> <el-table-column prop="moCode" 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="`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="moCode" 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="`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="moName" label="工装名称" align="center"> <el-table-column prop="quantity" 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="`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="quantity" 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="`tableData[${scope.$index}].shuliang`" :rules="formRules.shuliang"> <el-form-item :prop="`moldPlan[${scope.$index}].planType`" :rules="formRules.planType">
<el-input-number v-model="scope.row.shuliang" :min="1" controls-position="right" <el-select v-model="scope.row.planType" :filterable="true" allow-create>
style="width: 90%;" @change="handleChange" /> <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="planType" 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="`tableData[${scope.$index}].planType`" :rules="formRules.planType"> <el-form-item :prop="`moldPlan[${scope.$index}].needDate`" :rules="formRules.needDate">
<el-select v-model="scope.row.planType" :filterable="true" allow-create> <el-date-picker
<el-option label="计划类型一" value="1" /> v-model="scope.row.needDate"
<el-option label="计划类型二" value="2" /> type="date"
</el-select> format="YYYY-MM-DD"
</el-form-item> value-format="YYYY-MM-DD"
</template> placeholder="请选择"
</el-table-column> style="width: 80%"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="needDate" 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="`tableData[${scope.$index}].needDate`" :rules="formRules.needDate"> <el-form-item :prop="`moldPlan[${scope.$index}].quaLevel`" :rules="formRules.quaLevel">
<el-date-picker v-model="scope.row.needDate" type="date" placeholder="请选择" <el-input v-model="scope.row.quaLevel" />
style="width: 80%;" /> </el-form-item>
</el-form-item> </template>
</template> </el-table-column>
</el-table-column>
<el-table-column prop="quaLevel" label="生产标识" align="center"> <el-table-column prop="keeper" 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="`tableData[${scope.$index}].quaLevel`" :rules="formRules.quaLevel"> <el-form-item :prop="`moldPlan[${scope.$index}].keeper`" :rules="formRules.keeper">
<el-input v-model="scope.row.quaLevel" /> <el-select v-model="scope.row.keeper" :filterable="true" allow-create>
</el-form-item> <el-option label="人员一" value="1" />
</template> <el-option label="人员二" value="2" />
</el-table-column> </el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="keeper.userName" label="保管员" align="center"> <el-table-column prop="memo" label="备注" align="center">
<template #header> <template #default="scope">
<span><i style="color:red">*</i>保管员</span> <el-input v-model="scope.row.memo" />
</template> </template>
<template #default="scope"> </el-table-column>
<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 prop="memo" label="备注" align="center"> <el-table-column fixed="right" label="操作" width="100" align="left" v-if="moldAddMore">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.memo" /> <el-button type="text" @click.prevent="delTable(scope.row, scope.$index)"
</template> >删除</el-button
</el-table-column> >
</template>
</el-table-column>
</el-table>
</el-form>
<el-table-column fixed="right" label="操作" width="100" align="left" v-if="moldAddMore"> <template #footer>
<template #default="scope"> <span class="dialog-footer">
<el-button type="text" @click.prevent="delTable(scope.row, scope.$index)">删除</el-button> <el-button @click="closeDialog"> </el-button>
</template> <el-button type="primary" @click="submitForm"> </el-button>
</el-table-column> </span>
</el-table> </template>
</el-form> </el-dialog>
<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() { moldAddMore: {
return { type: Boolean,
openShow: false, default: 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'] }
]
}
};
},
mounted() {
this.openShow = this.showDialog;
if (this.moldAddMore && this.form.tableData.length === 0) {
this.addTable();
}
}, },
methods: { },
closeDialog() { data() {
this.openShow = false; return {
this.$emit('closeDialog'); moCodeList: [
this.form.tableData = []; { label: '工装一', value: 1 },
this.formError = ''; {
this.$refs.tableForm?.resetFields(); label: '工装二',
}, value: 2,
selectChange(list, row) {
row._select = !row._select;
}, },
addTable() { ],
this.form.tableData.push({ partCodeList: [
_select: false, { label: '零件一', value: 1 },
partCode: '', {
partName: '', label: '零件二',
moCode: '', value: 2,
moName: '',
shuliang: 1,
planType: '',
needDate: '',
quaLevel: '',
userName: '',
memo: ''
});
}, },
delTable(row, index) { ],
if (index !== undefined) { openShow: false,
this.form.tableData.splice(index, 1); formError: '',
} else { form: {
this.form.tableData = this.form.tableData.filter(item => !item._select); 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) {
//
this.form.moldPlan[i].moName = this.moCodeList.find(item => item.value === val)?.label || '';
},
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' });
} }
}, });
partCodeChange(row) { return;
// } else {
}, console.log('submitForm after validate', JSON.parse(JSON.stringify(this.form)));
frockChange(row) { add(JSON.parse(JSON.stringify(this.form))).then(res => {
// if (res.code === 200) {
}, this.$message.success('提交成功');
handleChange() { this.closeDialog();
// }
}, });
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 submitData = this.form.moldPlan.map(row => {
const { _select, ...validData } = row; // const { _select, ...validData } = row;
return validData; // return validData;
}); // });
// // 便
this.$message.success('提交成功');
this.closeDialog();
this.$emit('submitSuccess', submitData); //
});
} // 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,119 +1,109 @@
<template> <template>
<el-dialog title="详情" append-to-body :modelValue="openShow" width="70%" @close="closeDialog" fullscreen> <el-dialog
<el-descriptions class="margin-top" :column="4" border title="需求信息" > title="详情"
<el-descriptions-item label="需求编号">9999</el-descriptions-item> 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> <el-descriptions-item label="需求编号">9999</el-descriptions-item>
<el-descriptions class="margin-top" :column="4" border title="工装占用信息"></el-descriptions> <el-descriptions-item label="工装编号">{{ form.moCode }}</el-descriptions-item>
<el-table :data="tableData" style="width: 100%"> <el-descriptions-item label="工装名称">{{ form.moName}}</el-descriptions-item>
<el-descriptions-item label="关联订单数">9999</el-descriptions-item>
<el-table-column prop="shuliang" label="工作订单号" align="center"> <el-descriptions-item label="订单需求量">{{ form.quantity || "-" }}</el-descriptions-item>
<el-descriptions-item label="库存数量">9999</el-descriptions-item>
</el-table-column> <el-descriptions-item label="占用数量">9999</el-descriptions-item>
<el-table-column prop="shuliang" label="占用数" align="center"> </el-descriptions>
<el-descriptions class="margin-top" :column="4" border title="工装占用信息"></el-descriptions>
</el-table-column> <el-table :data="tableData" style="width: 100%">
<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-column prop="shuliang" label="占用时间" align="center"> </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 type="index" width="80" label="序号" align="center"> </el-table-column>
</el-table-column> <el-table-column prop="id" label="计划单号" align="center"> </el-table-column>
<el-table-column prop="shuliang" label="计划单号" align="center"> <el-table-column prop="partCode" label="零件号" align="center"> </el-table-column>
</el-table-column> <el-table-column prop="partName" label="产品名称" align="center"> </el-table-column>
<el-table-column prop="shuliang" label="零件号" align="center"> <el-table-column prop="quantity" label="零件数量" align="center"> </el-table-column>
</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 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-column prop="shuliang" label="计划下达时间" align="center"> </el-table-column>
<el-table-column prop="shuliang" label="需求交期" align="center"> </el-table>
</el-table-column> <el-descriptions
<el-table-column prop="shuliang" label="工装需求数量" align="center"> class="margin-top"
</el-table-column> :column="4"
<el-table-column prop="shuliang" label="已交付数量" align="center"> border
</el-table-column> title="申报记录(近一个的记录)"
<el-table-column prop="shuliang" label="未交付数量" align="center"> ></el-descriptions>
</el-table-column> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="shuliang" label="计划下达时间" align="center"> <el-table-column prop="partCode" label="零件号" align="center"></el-table-column>
</el-table-column> <el-table-column prop="partName" label="零件名称" align="center"></el-table-column>
</el-table> <el-table-column prop="moCode" label="对应工装号" align="center"></el-table-column>
<el-descriptions class="margin-top" :column="4" border title="申报记录(近一个的记录)"></el-descriptions> <el-table-column prop="moName" label="工装名称" align="center"></el-table-column>
<el-table :data="tableData" style="width: 100%"> <el-table-column prop="quantity" label="数量" align="center"></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> <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> </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 } from '@/api/orderManagement/moldPlan';
export default { export default {
props: { props: {
showDialog: { showDialog: {
type: Boolean, type: Boolean,
default: false default: false,
},
}, },
data() { id: {
return { type: String,
openShow: false, default: '1',
form: {},
tableData: [],
}
}, },
mounted() { },
this.openShow = this.showDialog data() {
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,128 +1,161 @@
<template> <template>
<el-dialog title="模具申报" append-to-body :modelValue="openShow" width="40%" @close="closeDialog"> <el-dialog
<el-form ref="form" :model="form" label-width="100px" :rules="rules"> title="模具申报"
<el-row> append-to-body
<el-col :span="12"> :modelValue="openShow"
<el-form-item label="零件编码:">21E8-040-17188-A1</el-form-item> width="40%"
</el-col> @close="closeDialog"
<el-col :span="12"> >
<el-form-item label="零件名称:">21E8-040-17188-A1</el-form-item> <el-form ref="form" :model="form" label-width="100px" :rules="rules">
</el-col> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="工装号:">21E8-040-17188-A1</el-form-item> <el-form-item label="零件编码:">{{ form.partCode }}</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="工装名称:">21E8-040-17188-A1</el-form-item> <el-form-item label="零件名称:">{{ form.partName }}</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="数量:" prop="shuliang"> <el-form-item label="工装号:">{{ form.moCode }}</el-form-item>
<el-input-number v-model="form.shuliang" :min="1" controls-position="right" style="width: 80%;" </el-col>
@change="handleChange" /> <el-col :span="12">
</el-form-item> <el-form-item label="工装名称:">{{ form.moName }}</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="计划类型:" prop="moCode"> <el-form-item label="数量:" prop="quaLevel">
<el-select v-model="form.moCode" :filterable="true" allow-create @change="frockChange(form)" style="width: 80%;"> <el-input-number
<el-option label="计划类型一" value="1" /> v-model="form.quaLevel"
<el-option label="计划类型二" value="2" /> :min="1"
</el-select> controls-position="right"
</el-form-item> style="width: 80%"
</el-col> @change="handleChange"
<el-col :span="12"> />
<el-form-item label="需求日期:" prop="needDate"> </el-form-item>
<el-date-picker v-model="form.needDate" type="date" placeholder="请选择" style="width: 80%;" /> </el-col>
</el-form-item> <el-col :span="12">
</el-col> <el-form-item label="计划类型:" prop="moCodes">
<el-col :span="12"> <el-select
<el-form-item label="生产标识:" prop="quaLevel"> v-model="form.moCodes"
<el-input v-model="form.quaLevel" style="width: 80%;" /> :filterable="true"
</el-form-item> allow-create
</el-col> style="width: 80%"
<el-col :span="12"> >
<el-form-item label="保管员:" prop="userName"> <el-option label="计划类型一" value="1" />
<el-select v-model="form.userName" :filterable="true" allow-create @change="frockChange(form)" style="width: 80%;"> <el-option label="计划类型二" value="2" />
<el-option label="人员一" value="1" /> </el-select>
<el-option label="人员二" value="2" /> </el-form-item>
</el-select> </el-col>
</el-form-item> <el-col :span="12">
</el-col> <el-form-item label="需求日期:" prop="needDate">
<el-col :span="24"> <el-date-picker
<el-form-item label="备注:"> v-model="form.needDate"
<el-input v-model="form.memo" type="textarea" /> type="date"
</el-form-item> placeholder="请选择"
</el-col> style="width: 80%"
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>
</el-row> <template #footer>
<span class="dialog-footer">
</el-form> <el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
<template #footer> </template>
<span class="dialog-footer"> </el-dialog>
<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,
},
}, },
data() { id: {
return { type: String,
openShow: false, default: '1',
form: {
},
tableData: [],
rules: {
shuliang: [
{ required: true, message: '请输入', trigger: 'blur' },
],
moCode: [
{ required: true, message: '请选择', trigger: 'blur' },
],
needDate:[
{ required: true, message: '请选择', trigger: 'blur' },
],
quaLevel:[
{ required: true, message: '请输入', trigger: 'blur' },
],
userName:[
{ required: true, message: '请输入', trigger: 'blur' },
],
}
}
}, },
mounted() { },
this.openShow = this.showDialog data() {
return {
openShow: false,
form: {},
tableData: [],
rules: {
quaLevel: [{ required: true, message: '请输入数量', trigger: 'blur' }],
moCodes: [{ required: true, message: '请选择计划类型', trigger: 'change' }],
needDate: [{ required: true, message: '请选择需求日期', trigger: 'change' }],
keeper: [{ required: true, message: '请输入保管员', trigger: 'change' }],
},
};
},
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: { submit() {
closeDialog() { //
this.openShow = false this.$refs.form.validate(valid => {
this.$emit('closeDialog'); if (!valid) {
}, this.$message.error('表单校验未通过,请检查必填项');
addTable() { return;
this.tableData.push({ }
code: '3', // //
No: '3', const submitData = { ...this.form ,...{id:this.id}};
number: '3', //
shuliang: '', update(submitData)
shuliang: 0 .then(res => {
if (res && res.code === 200) {
}) this.$message.success('保存成功');
}, this.closeDialog();
delTable(row, index) { //
this.tableData.splice(index, 1) this.$emit('updateSuccess', submitData);
}, } else {
} this.$message.error( '保存失败');
} }
})
.catch(() => {
this.$message.error('请求失败,请稍后重试');
});
});
},
},
};
</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,38 +1,35 @@
<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> <el-tab-pane label="模具需求" name="1">
<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>
</basic-container> </el-tab-pane>
</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,45 +47,50 @@ 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