feat 接口对接 字段维护

dev-scheduling
zzq731706 4 days ago
parent b37a6e2447
commit 0e76d4d07b
  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. 607
      src/views/orderManagement/components/mold/addMoldDailog.vue
  6. 206
      src/views/orderManagement/components/mold/detailsInfoDialog.vue
  7. 271
      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>
<el-dialog title="新增" append-to-body :modelValue="openShow" 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-dialog
title="新增"
append-to-body
:modelValue="openShow"
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">
<div v-if="formError" class="error-message" style="color: #f56c6c; margin-bottom: 10px;">
{{ formError }}
</div>
<el-form ref="tableForm" :model="form" :rules="formRules" label-width="0px">
<div v-if="formError" class="error-message" style="color: #f56c6c; margin-bottom: 10px">
{{ formError }}
</div>
<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="index" width="80" label="序号" align="center"></el-table-column>
<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="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">
<template #header>
<span><i style="color:red">*</i>零件编码</span>
</template>
<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="partName" label="零件名称" align="center">
<template #default="scope">
<span>{{ scope.row.partName }}</span>
</template>
</el-table-column>
<el-table-column prop="partName" label="零件名称" align="center">
<template #default="scope">
<span>{{ scope.row.partName }}</span>
</template>
</el-table-column>
<el-table-column prop="moCode" label="工装号" align="center">
<template #header>
<span><i style="color: red">*</i>工装号</span>
</template>
<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">
<template #header>
<span><i style="color:red">*</i>工装号</span>
</template>
<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="moName" label="工装名称" align="center">
<template #default="scope">
<span>{{ scope.row.moName }}</span>
</template>
</el-table-column>
<el-table-column prop="moName" label="工装名称" align="center">
<template #default="scope">
<span>{{ scope.row.moName }}</span>
</template>
</el-table-column>
<el-table-column prop="quantity" label="数量" align="center">
<template #header>
<span><i style="color: red">*</i>数量</span>
</template>
<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">
<template #header>
<span><i style="color:red">*</i>数量</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData[${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">
<template #header>
<span><i style="color: red">*</i>计划类型</span>
</template>
<template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].planType`" :rules="formRules.planType">
<el-select v-model="scope.row.planType" :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="planType" label="计划类型" align="center">
<template #header>
<span><i style="color:red">*</i>计划类型</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData[${scope.$index}].planType`" :rules="formRules.planType">
<el-select v-model="scope.row.planType" :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="needDate" label="需求日期" align="center">
<template #header>
<span><i style="color: red">*</i>需求日期</span>
</template>
<template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].needDate`" :rules="formRules.needDate">
<el-date-picker
v-model="scope.row.needDate"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
placeholder="请选择"
style="width: 80%"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="needDate" label="需求日期" align="center">
<template #header>
<span><i style="color:red">*</i>需求日期</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData[${scope.$index}].needDate`" :rules="formRules.needDate">
<el-date-picker v-model="scope.row.needDate" type="date" placeholder="请选择"
style="width: 80%;" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="quaLevel" label="生产标识" align="center">
<template #header>
<span><i style="color: red">*</i>生产标识</span>
</template>
<template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].quaLevel`" :rules="formRules.quaLevel">
<el-input v-model="scope.row.quaLevel" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="quaLevel" label="生产标识" align="center">
<template #header>
<span><i style="color:red">*</i>生产标识</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData[${scope.$index}].quaLevel`" :rules="formRules.quaLevel">
<el-input v-model="scope.row.quaLevel" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="keeper" label="保管员" align="center">
<template #header>
<span><i style="color: red">*</i>保管员</span>
</template>
<template #default="scope">
<el-form-item :prop="`moldPlan[${scope.$index}].keeper`" :rules="formRules.keeper">
<el-select v-model="scope.row.keeper" :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="keeper.userName" label="保管员" align="center">
<template #header>
<span><i style="color:red">*</i>保管员</span>
</template>
<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 prop="memo" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.memo" />
</template>
</el-table-column>
<el-table-column prop="memo" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.memo" />
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="100" align="left" v-if="moldAddMore">
<template #default="scope">
<el-button type="text" @click.prevent="delTable(scope.row, scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-form>
<el-table-column fixed="right" label="操作" width="100" align="left" v-if="moldAddMore">
<template #default="scope">
<el-button type="text" @click.prevent="delTable(scope.row, scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
</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 #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { add } from '@/api/orderManagement/moldPlan';
import { index } from '@/views/plugin/workflow/api/statistics';
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
moldAddMore: {
type: Boolean,
default: false
}
props: {
showDialog: {
type: Boolean,
default: false,
},
data() {
return {
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'] }
]
}
};
},
mounted() {
this.openShow = this.showDialog;
if (this.moldAddMore && this.form.tableData.length === 0) {
this.addTable();
}
moldAddMore: {
type: Boolean,
default: false,
},
methods: {
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
this.form.tableData = [];
this.formError = '';
this.$refs.tableForm?.resetFields();
},
data() {
return {
moCodeList: [
{ label: '工装一', value: 1 },
{
label: '工装二',
value: 2,
},
selectChange(list, row) {
row._select = !row._select;
],
partCodeList: [
{ label: '零件一', value: 1 },
{
label: '零件二',
value: 2,
},
addTable() {
this.form.tableData.push({
_select: false,
partCode: '',
partName: '',
moCode: '',
moName: '',
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);
],
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) {
//
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) {
//
},
frockChange(row) {
//
},
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;
}
});
return;
} else {
console.log('submitForm after validate', JSON.parse(JSON.stringify(this.form)));
add(JSON.parse(JSON.stringify(this.form))).then(res => {
if (res.code === 200) {
this.$message.success('提交成功');
this.closeDialog();
}
});
}
//
const submitData = this.form.tableData.map(row => {
const { _select, ...validData } = row;
return validData;
});
//
// const submitData = this.form.moldPlan.map(row => {
// const { _select, ...validData } = row;
// return validData;
// });
//
this.$message.success('提交成功');
this.closeDialog();
this.$emit('submitSuccess', submitData);
});
}
}
// 便
//
// this.$emit('submitSuccess', submitData);
});
},
},
};
</script>
<style lang="scss" scoped>
:deep(.el-table .el-form-item) {
margin-bottom: 0;
margin-bottom: 0;
}
:deep(.el-form-item__error) {
font-size: 12px;
white-space: nowrap;
z-index: 10;
background: #fff;
padding: 2px 4px;
border: 1px solid #f56c6c;
border-radius: 4px;
font-size: 12px;
white-space: nowrap;
z-index: 10;
background: #fff;
padding: 2px 4px;
border: 1px solid #f56c6c;
border-radius: 4px;
}
.el-table__row {
height: 80px !important;
height: 80px !important;
}
.el-table__cell {
vertical-align: middle !important;
vertical-align: middle !important;
}
.error-message {
font-size: 14px;
line-height: 1.5;
font-size: 14px;
line-height: 1.5;
}
:deep(.el-table .el-table__cell) {
height: 50px !important;
padding: 0 !important;
line-height: 50px !important;
height: 50px !important;
padding: 0 !important;
line-height: 50px !important;
}
</style>
</style>

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

@ -1,128 +1,161 @@
<template>
<el-dialog title="模具申报" append-to-body :modelValue="openShow" width="40%" @close="closeDialog">
<el-form ref="form" :model="form" label-width="100px" :rules="rules">
<el-row>
<el-col :span="12">
<el-form-item label="零件编码:">21E8-040-17188-A1</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="零件名称:">21E8-040-17188-A1</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工装号:">21E8-040-17188-A1</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工装名称:">21E8-040-17188-A1</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数量:" prop="shuliang">
<el-input-number v-model="form.shuliang" :min="1" controls-position="right" style="width: 80%;"
@change="handleChange" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划类型:" prop="moCode">
<el-select v-model="form.moCode" :filterable="true" allow-create @change="frockChange(form)" style="width: 80%;">
<el-option label="计划类型一" value="1" />
<el-option label="计划类型二" value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求日期:" prop="needDate">
<el-date-picker v-model="form.needDate" type="date" placeholder="请选择" style="width: 80%;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产标识:" prop="quaLevel">
<el-input v-model="form.quaLevel" style="width: 80%;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保管员:" prop="userName">
<el-select v-model="form.userName" :filterable="true" allow-create @change="frockChange(form)" 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-dialog
title="模具申报"
append-to-body
:modelValue="openShow"
width="40%"
@close="closeDialog"
>
<el-form ref="form" :model="form" label-width="100px" :rules="rules">
<el-row>
<el-col :span="12">
<el-form-item label="零件编码:">{{ form.partCode }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="零件名称:">{{ form.partName }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工装号:">{{ form.moCode }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工装名称:">{{ form.moName }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数量:" prop="quaLevel">
<el-input-number
v-model="form.quaLevel"
:min="1"
controls-position="right"
style="width: 80%"
@change="handleChange"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划类型:" prop="moCodes">
<el-select
v-model="form.moCodes"
: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="12">
<el-form-item label="需求日期:" prop="needDate">
<el-date-picker
v-model="form.needDate"
type="date"
placeholder="请选择"
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>
</el-form>
<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 #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { getOrderMoldPlanCaDeatils,update } from '@/api/orderManagement/moldPlan';
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
props: {
showDialog: {
type: Boolean,
default: false,
},
data() {
return {
openShow: false,
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' },
],
}
}
id: {
type: String,
default: '1',
},
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: {
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)
},
}
}
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('请求失败,请稍后重试');
});
});
},
},
};
</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>
<basic-container>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="模具需求" name="1"></el-tab-pane>
<el-tab-pane label="申报记录" name="2"></el-tab-pane>
</el-tabs>
<basic-container>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="模具需求" name="1">
<moldRequire v-if="activeName == '1'"></moldRequire>
</el-tab-pane>
<el-tab-pane label="申报记录" name="2">
<moldRecord v-if="activeName == '2'"></moldRecord>
</basic-container>
</el-tab-pane>
</el-tabs>
</basic-container>
</template>
<script>
import moldRequire from './components/mold/moldRequire.vue'
import moldRecord from './components/mold/moldRecord.vue'
import moldRequire from './components/mold/moldRequire.vue';
import moldRecord from './components/mold/moldRecord.vue';
export default {
components: {
moldRequire,
moldRecord
},
data() {
return {
activeName: '1',
};
},
components: {
moldRequire,
moldRecord,
},
data() {
return {
activeName: '1',
};
},
methods: {
handleClick() {
console.log(9999999,this.activeName)
},
methods: {
handleClick() {
console.log(9999999, this.activeName);
},
mounted() {
}
},
mounted() {},
};
</script>

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

Loading…
Cancel
Save