Compare commits

...

2 Commits

  1. 13
      src/api/orderManagement/allocationMessQuery.js
  2. 39
      src/api/orderManagement/exceptionOrder.js
  3. 72
      src/api/orderManagement/planYieIdOrder.js
  4. 40
      src/api/orderManagement/sinTerPlanOrder.js
  5. 47
      src/api/productionManagement/addRequirements.js
  6. 33
      src/api/productionManagement/assayedContent.js
  7. 5
      src/axios.js
  8. 3560
      src/views/orderManagement/allocationMessQuery.vue
  9. 2948
      src/views/orderManagement/components/exception/dataMissing.vue
  10. 2913
      src/views/orderManagement/components/exception/deliveryDate.vue
  11. 3036
      src/views/orderManagement/components/exception/processMissing.vue
  12. 3003
      src/views/orderManagement/components/exception/resourceMissing.vue
  13. 400
      src/views/orderManagement/components/lookProcess.vue
  14. 480
      src/views/orderManagement/components/orderUpdateDailog.vue
  15. 17
      src/views/orderManagement/components/priorityDialog.vue
  16. 6
      src/views/orderManagement/components/sinTerYieIdDialog.vue
  17. 4097
      src/views/orderManagement/planYieIdOrder.vue
  18. 134
      src/views/orderManagement/plannedOrder.vue
  19. 129
      src/views/orderManagement/sinTerPlanOrder.vue
  20. 4165
      src/views/orderManagement/sinTerYieIdOrder.vue
  21. 18
      src/views/productionManagement/coatingMaterial.vue
  22. 1269
      src/views/productionManagement/components/addDialog.vue
  23. 3
      src/views/productionManagement/components/addQuantity.vue
  24. 155
      src/views/productionManagement/components/assDialog.vue
  25. 333
      src/views/productionManagement/components/coatingAddDialog.vue
  26. 245
      src/views/productionManagement/components/coatingMater/addRequirements.vue
  27. 173
      src/views/productionManagement/components/coatingMater/assayedContent.vue
  28. 226
      src/views/productionManagement/components/coatingMater/assayedContentDialog.vue
  29. 234
      src/views/productionManagement/components/coatingMater/materialRequirements.vue
  30. 425
      src/views/productionManagement/components/materialDetail.vue
  31. 22
      src/views/productionManagement/js/coatingColumnData.js

@ -0,0 +1,13 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/yieldOrder/pageAllocation',
method: 'get',
params: {
...params,
current,
size,
},
});
};

@ -0,0 +1,39 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/yieldOrder/pageException',
method: 'get',
params: {
...params,
current,
size,
},
});
};
//批量关闭
export const closeBatchs = ids => {
return request({
url: '/blade-desk/order/yieldOrder/closeBatch',
method: 'post',
data: ids,
});
};
//批量合格校验
export const confirmBatch = ids => {
return request({
url: '/blade-desk/order/yieldOrder/confirmBatch',
method: 'post',
data: ids,
});
};
//批量合格校验
export const edit = ids => {
return request({
url: '/blade-desk/order/yieldOrder/update',
method: 'post',
data: ids,
});
};

@ -0,0 +1,72 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/yieldOrder/page',
method: 'get',
params: {
...params,
current,
size,
},
});
};
// 修改
export const update = row => {
return request({
url: '/blade-desk/order/yieldOrder/update',
method: 'post',
data: row,
});
};
// 获取详情
export const getassayContentDeatils = (params) => {
return request({
url: `/blade-desk/order/yieldOrder/detail`,
method: 'get',
params,
});
};
//批量关闭
export const closeBatchs = ids => {
return request({
url: '/blade-desk/order/yieldOrder/closeBatch',
method: 'post',
data: ids,
});
};
// 优先级
export const updatePreference = row => {
return request({
url: '/blade-desk/order/yieldOrder/updatePreference',
method: 'post',
data: row,
});
};
//下发玻璃
export const saveGlassCake = data => {
return request({
url: `/blade-desk/order/yieldPlan/saveGlassCake/${data.yieldPlanId}`,
method: 'post',
data: data,
});
};
//工艺路线
export const getFirstProcess = id => {
return request({
url: '/blade-desk/order/yieldPlan/getFirstProcess/'+id,
method: 'get',
});
};

@ -0,0 +1,40 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/yieldPlan/page',
method: 'get',
params: {
...params,
current,
size,
},
});
};
// 修改
export const update = row => {
return request({
url: '/blade-desk/order/yieldPlan/update',
method: 'post',
data: row,
});
};
// 获取详情
export const getassayContentDeatils = (params) => {
return request({
url: `/blade-desk/order/yieldPlan/detail`,
method: 'get',
params,
});
};
//批量关闭
export const closeBatchs = ids => {
return request({
url: '/blade-desk/order/plateGoodsRecord/closeBatch',
method: 'post',
data: ids,
});
};

@ -0,0 +1,47 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/plateGoodsApply/page',
method: 'get',
params: {
...params,
current,
size,
},
});
};
//新增
export const add = row => {
return request({
url: '/blade-desk/order/plateGoodsApply/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/plateGoodsApply/confirmBatch',
method: 'post',
data: row,
});
};
// 获取详情
export const getOrderMoldPlanCaDeatils = (params) => {
return request({
url: `/blade-desk/order/plateGoodsApply/detail`,
method: 'get',
params,
});
};

@ -0,0 +1,33 @@
import request from '@/axios';
//列表接口
export const getList = (current, size, params) => {
return request({
url: '/blade-desk/order/assayContent/page',
method: 'get',
params: {
...params,
current,
size,
},
});
};
//新增
export const add = row => {
return request({
url: '/blade-desk/order/assayContent/save',
method: 'post',
data: row,
});
};
// 获取详情
export const getassayContentDeatils = (params) => {
return request({
url: `/blade-desk/order/assayContent/detail`,
method: 'get',
params,
});
};

@ -110,8 +110,13 @@ axios.interceptors.response.use(
}
//获取状态信息
const status = res.data.error_code || res.data.code || res.status;
const code = res.data.error_code || res.data.code || res.status;
const statusWhiteList = website.statusWhiteList || [];
const message = res.data.msg || res.data.error_description || '系统错误';
//防止项目中使用res.code接入的判断
if (code) {
res.code = code;
}
//如果在白名单里则自行catch逻辑处理
if (statusWhiteList.includes(status)) return Promise.reject(res);

File diff suppressed because it is too large Load Diff

@ -1,194 +1,230 @@
<template>
<el-dialog v-model="setCrewShow" :before-close="cancel" title="查看工艺路线" width="70%" @open="open" @opened="opened">
<el-card>
<el-descriptions :column="1" size="medium" class="margin-top" border>
<el-descriptions-item label="一级工艺路线">
<!-- {{ craftData.primaryCraft }} -->999
</el-descriptions-item>
</el-descriptions>
</el-card>
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
</avue-crud>
</el-dialog>
<el-dialog
v-model="setCrewShow"
:before-close="cancel"
title="查看工艺路线"
width="70%"
@open="open"
@opened="opened"
>
<el-card>
<el-descriptions :column="1" size="medium" class="margin-top" border>
<el-descriptions-item label="一级工艺路线">
<!-- {{ craftData.primaryCraft }} -->{{ primaryCraft }}
</el-descriptions-item>
</el-descriptions>
</el-card>
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
</avue-crud>
</el-dialog>
</template>
<script>
import { getFirstProcess } from '@/api/orderManagement/planYieIdOrder';
export default {
components: {},
props: {
// ID
sourceId: {
type: String,
required: true, //
description: "调用当前组件的父组件标识,用于区分来源"
},
isOpen: {
type: Boolean,
default: false
},
rowItem: {
type: Object,
default: () => { }
}
components: {},
props: {
// ID
sourceId: {
type: String,
required: true, //
description: '调用当前组件的父组件标识,用于区分来源',
},
isOpen: {
type: Boolean,
default: false,
},
data() {
return {
craftData: {},
height: 350,
firseqList: [],
setCrewShow: false,
query: {},
loading: true,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
tip: false,
simplePage: true,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
viewBtn: false,
delBtn: false,
addBtn: false,
editBtnText: '修改',
labelWidth: 120,
// searchLabelWidth: 120,
menuWidth: 330,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: false,
searchShowBtn: false,
excelBtn: false,
index: true,
showOverflowTooltip: true,
menu: false,
// refreshBtn:false,
// columnBtn:false,
// gridBtn :false,
header: false,
searchLabelPosition: 'left',
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
column: [
{
label: '零件号',
prop: 'partCode',
search: false,
width: 150,
},
{
label: '零件名称',
prop: 'partName',
search: false,
width: 170,
},
{
label: '一级工艺计划(A)号',
prop: 'firpp',
search: false,
width: 180,
},
{
label: '一级工艺计划名称',
prop: 'firppName',
search: false,
width: 180,
},
{
label: '一级工序(B)号',
prop: 'firseq',
search: false,
width: 180,
},
{
label: '一级工序名称',
prop: 'firseqName',
search: false,
width: 180,
},
{
label: '一级工序序号',
prop: 'firseqNo',
search: false,
width: 180,
},
],
},
rowItem: {
type: Object,
default: () => {},
},
id: {
type: String,
},
},
data() {
return {
primaryCraft: null,
craftData: {},
height: 350,
firseqList: [],
setCrewShow: false,
query: {},
loading: true,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
tip: false,
simplePage: true,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
viewBtn: false,
delBtn: false,
addBtn: false,
editBtnText: '修改',
labelWidth: 120,
// searchLabelWidth: 120,
menuWidth: 330,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: false,
searchShowBtn: false,
excelBtn: false,
index: true,
showOverflowTooltip: true,
menu: false,
// refreshBtn:false,
// columnBtn:false,
// gridBtn :false,
header: false,
searchLabelPosition: 'left',
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
column: [
{
label: '零件号',
prop: 'partCode',
search: false,
width: 150,
},
{
label: '零件名称',
prop: 'partName',
search: false,
width: 170,
},
{
label: '一级工艺计划(A)号',
prop: 'firpp',
search: false,
width: 180,
},
{
label: '一级工艺计划名称',
prop: 'firppName',
search: false,
width: 180,
},
{
label: '一级工序(B)号',
prop: 'firseq',
search: false,
width: 180,
},
{
label: '一级工序名称',
prop: 'firseqName',
search: false,
width: 180,
},
{
label: '一级工序序号',
prop: 'firseqNo',
search: false,
width: 180,
},
],
},
data: [],
};
data: [],
};
},
methods: {
async open() {
console.log(this.id)
try {
const res = await getFirstProcess(this.id );
if (res.status === 200) {
this.primaryCraft = '一级工艺';
this.data = res.data.records1;
}
} catch (err) {
console.log(err);
}
if (this.sourceId === 'sinTerYieIdOrder') {
console.log('由sinTerYieIdOrder组件打开');
// A
}
if (this.sourceId === 'planYieIdOrder') {
console.log('由planYieIdOrder父组件打开');
// B
}
if (this.sourceId === 'plannedOrder') {
console.log('由plannedOrder111父组件打开');
// B
}
if (this.sourceId === 'sinTerOrder') {
console.log('sinTerOrder');
// B
}
// this.$ajax
// .get('planOrder/getCraftData/' + this.rowItem.poId)
// .then((res) => {
// if (this.$ifAjax(res)) {
// this.craftData = res.data;
// }
// });
// this.$ajax
// .get('planOrder/getFirseqData/' + this.rowItem.partCode)
// .then((res1) => {
// if (this.$ifAjax(res1)) {
// this.firseqList = res1.data;
// }
// });
},
methods: {
open() {
if (this.sourceId === 'sinTerYieIdOrder') {
console.log('由sinTerYieIdOrder组件打开');
// A
} if (this.sourceId === 'planYieIdOrder') {
console.log('由planYieIdOrder父组件打开');
// B
} if (this.sourceId === 'plannedOrder') {
console.log('由plannedOrder111父组件打开');
// B
} if (this.sourceId === 'sinTerOrder') {
console.log('sinTerOrder');
// B
}
// this.$ajax
// .get('planOrder/getCraftData/' + this.rowItem.poId)
// .then((res) => {
// if (this.$ifAjax(res)) {
// this.craftData = res.data;
// }
// });
// this.$ajax
// .get('planOrder/getFirseqData/' + this.rowItem.partCode)
// .then((res1) => {
// if (this.$ifAjax(res1)) {
// this.firseqList = res1.data;
// }
// });
},
cancel() {
this.setCrewShow = false;
// this.$emit('cancel', false);
// sourceId便
this.$emit('cancel', {
isOpen: false,
sourceId: this.sourceId
});
},
onLoad() {
this.loading = false
},
cancel() {
this.setCrewShow = false;
// this.$emit('cancel', false);
// sourceId便
this.$emit('cancel', {
isOpen: false,
sourceId: this.sourceId,
});
},
mounted() {
this.setCrewShow = this.isOpen
console.log(this.isOpen, 90)
console.log(this.setCrewShow, 80)
onLoad() {
this.loading = false;
},
}
},
mounted() {
this.setCrewShow = this.isOpen;
console.log(this.isOpen, 90);
console.log(this.setCrewShow, 80);
},
};
</script>
<style lang="scss" scoped></style>

@ -1,233 +1,269 @@
<template>
<el-dialog title="修改" append-to-body :modelValue="openShow" width="60%" @close="closeDialog">
<el-dialog title="修改" append-to-body :modelValue="openShow" width="60%" @close="closeDialog">
<el-form :model="formData" :rules="rules" ref="formRules" :label-width="120">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="计划单号" prop="ypCode">
<el-input v-model="formData.ypCode" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产单号" prop="yoCode">
<el-input v-model="formData.yoCode" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="零件号" prop="partCode">
<el-select v-model="formData.partCode" placeholder="请输入" disabled>
<el-option label="零件1" value="1" />
<el-option label="零件12" value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批次号" prop="batchNo">
<el-input v-model="formData.batchNo" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="流转编号" prop="roamNo">
<el-select v-model="formData.roamNo" placeholder="请输入">
<el-option label="B090989" value="1" />
<el-option label="B0909889898" value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下级B号" prop="roamNo">
<el-input v-model="formData.roamNo" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="订单类型" prop="yieldType">
<el-select v-model="formData.yieldType" placeholder="请选择">
<el-option :value="1" label="热表订单" />
<el-option :value="2" label="烧结订单" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品型号" prop="productType">
<el-input v-model="formData.productType" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品名称" prop="productName">
<el-input v-model="formData.productName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工艺路线" prop="primaryCraft">
<el-input v-model="formData.primaryCraft" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="镀种" prop="plate">
<el-input v-model="formData.plate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产标识" prop="productIdent">
<el-select v-model="formData.productIdent" placeholder="请选择">
<el-option :value="1" label="JI-JII" />
<el-option :value="2" label="JIII" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="使用部门" prop="useDept">
<el-input v-model="formData.useDept" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数量" prop="ypQty">
<el-input v-model="formData.ypQty" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="面积(d㎡)" prop="ypArea">
<el-input v-model="formData.ypArea" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求交期" prop="demandDate">
<el-date-picker
v-model="formData.demandDate"
placeholder="请选择"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划员" prop="planUser">
<el-input v-model="formData.planUser" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划下达时间" prop="releaseDate">
<el-date-picker
v-model="formData.releaseDate"
placeholder="请选择"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="memo">
<el-input
v-model="formData.memo"
:rows="2"
type="textarea"
minlength="0"
maxlength="200"
show-word-limit
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form :model="formData" :rules="rules" :label-width="120" >
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="计划单号" prop="poCode">
<el-input v-model="formData.poCode" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产单号" prop="yoCode">
<el-input v-model="formData.yoCode" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="零件号" prop="partId">
<el-select v-model="formData.partId" placeholder="请输入" disabled>
<el-option
label="零件1"
value="1"
/>
<el-option
label="零件12"
value="2"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批次号" prop="batchNo">
<el-input v-model="formData.batchNo" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="流转编号" prop="roamNo">
<el-select v-model="formData.roamNo" placeholder="请输入" >
<el-option
label="B090989"
value="1"
/>
<el-option
label="B0909889898"
value="2"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下级B号" prop="nextRoam">
<el-input v-model="formData.nextRoam" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="订单类型" prop="yieldType">
<el-select v-model="formData.yieldType" placeholder="请选择">
<el-option :value="1" label="热表订单" />
<el-option :value="2" label="烧结订单" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品型号" prop="productType">
<el-input v-model="formData.productType" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品名称" prop="partName">
<el-input v-model="formData.partName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工艺路线" prop="primaryCraft">
<el-input v-model="formData.primaryCraft" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="镀种" prop="plate">
<el-input v-model="formData.plate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产标识" prop="pqId">
<el-select v-model="formData.pqId" placeholder="请选择">
<el-option :value="1" label="JI-JII" />
<el-option :value="2" label="JIII" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="使用部门" prop="useDept">
<el-input v-model="formData.useDept" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数量" prop="poQty">
<el-input v-model="formData.poQty" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="面积(d㎡)" prop="poArea">
<el-input v-model="formData.poArea" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求交期" prop="demandDate">
<el-date-picker
v-model="formData.demandDate"
placeholder="请选择"
type="date"
value-format="yyyy-MM-dd"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划员" prop="planUser">
<el-input v-model="formData.planUser" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划下达时间" prop="releaseDate">
<el-date-picker
v-model="formData.releaseDate"
placeholder="请选择"
type="date"
value-format="yyyy-MM-dd"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="memo">
<el-input
v-model="formData.memo"
:rows="2"
type="textarea"
minlength="0"
maxlength="200"
show-word-limit
/>
</el-form-item>
</el-col>
</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 { update } from '@/api/orderManagement/planYieIdOrder';
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
moldAddMore: {
type: Boolean,
default: false
}
props: {
showDialog: {
type: Boolean,
default: false,
},
data() {
return {
openShow: false,
tableData: [],
formData:{
},
rules:{
poCode: [
{ required: true, message: '请输入', trigger: 'blur' }
],
yoCode: [
{ required: true, message: '请输入', trigger: 'blur' },
// { validator: checkYoCode, trigger: 'blur' },
],
partId: [
{ required: true, message: '请输入', trigger: 'blur' }
],
pqId: [
{ required: true, message: '请输入', trigger: 'blur' }
],
useDept: [
{ required: true, message: '请输入', trigger: 'blur' }
],
poQty: [
{ required: true, message: '请输入', trigger: 'blur' }
],
demandDate: [
{ required: true, message: '请输入', trigger: 'blur' }
],
planUser: [
{ required: true, message: '请输入', trigger: 'blur' }
],
releaseDate: [
{ required: true, message: '请输入', trigger: 'blur' }
],
moldAddMore: {
type: Boolean,
default: false,
},
id: {
type: String,
default: false,
},
},
data() {
return {
openShow: false,
tableData: [],
formData: {},
rules: {
ypCode: [{ required: true, message: '请输入', trigger: 'blur' }],
yoCode: [
{ required: true, message: '请输入', trigger: 'blur' },
// { validator: checkYoCode, trigger: 'blur' },
],
partCode: [{ required: true, message: '请输入', trigger: 'blur' }],
productIdent: [{ required: true, message: '请输入', trigger: 'blur' }],
useDept: [{ required: true, message: '请输入', trigger: 'blur' }],
ypQty: [{ required: true, message: '请输入', trigger: 'blur' }],
demandDate: [{ required: true, message: '请输入', trigger: 'blur' }],
planUser: [{ required: true, message: '请输入', trigger: 'blur' }],
releaseDate: [{ required: true, message: '请输入', trigger: 'blur' }],
batchNo: [
{ required: true, message: '请输入', trigger: 'blur' }
],
cardNo: [
{ required: true, message: '请输入', trigger: 'blur' }
],
roamNo: [
{ required: true, message: '请输入', trigger: 'blur' }
],
yieldType: [
{ required: true, message: '请输入', trigger: 'blur' }
],
}
}
batchNo: [{ required: true, message: '请输入', trigger: 'blur' }],
cardNo: [{ required: true, message: '请输入', trigger: 'blur' }],
roamNo: [{ required: true, message: '请输入', trigger: 'blur' }],
yieldType: [{ required: true, message: '请输入', trigger: 'blur' }],
},
};
},
mounted() {
this.openShow = this.showDialog;
this.formData = {
partCode: 1,
yoCode: 'WO-98978789988',
batchNo: 'Y0232511359',
businessType: -1,
businessTypeTitle: null,
cardNo: '1022413231',
craftId: null,
curStatus: 0,
curStatusTitle: '待接收',
custodian: '肖盼盼',
demandDate: '2025-11-18',
dsCraft: { craftId: 59361, craftNo: 'C000000' },
dsPart: { partCode: '21E8-900-363-H1', partCode: 1, partName: 'M2 螺钉' },
entrustDept: '采购与物流中心 (成件)',
failureMan: {
accountId: null,
card: null,
createTime: null,
curStatus: 1,
deleted: false,
deptName: null,
},
failureMemo: null,
failureTime: null,
fatherVoid: null,
keyValue: 4490279,
kitPreparationMan: {
accountId: null,
card: null,
createTime: null,
curStatus: 1,
deleted: false,
deptName: null,
},
kitPreparationTime: null,
manualIncrease: false,
memo: null,
newlevFlag: '采购',
nextRoom: null,
nextRoomName: null,
partCode: '21E8-900-363-H1',
partName: 'M2 螺钉',
pdmUrl: null,
pkDate: null,
pkUsername: null,
planUser: '申强',
plate: 'Ct.P',
ypArea: 0.0170467129,
ypCode: 'WO-N251174111',
poMemo: 'DZ',
poProdLine: 'J303',
ypQty: 22,
primaryCraft: '库 1-1 (机加)-4 (表)- 库 2',
priority: 1,
prodident: 'JII',
produceBool: false,
productType: null,
};
},
methods: {
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
},
mounted() {
this.openShow = this.showDialog
this.formData={
"partId": 1,yoCode:"WO-98978789988","batchNo": "Y0232511359","businessType": -1,"businessTypeTitle": null,"cardNo": "1022413231","craftId": null,"curStatus": 0,"curStatusTitle": "待接收","custodian": "肖盼盼","demandDate": "2025-11-18","dsCraft": {"craftId": 59361, "craftNo": "C000000"},"dsPart": { "partCode": "21E8-900-363-H1", "partId": 1, "partName": "M2 螺钉" },"entrustDept": "采购与物流中心 (成件)","failureMan": { "accountId": null, "card": null, "createTime": null, "curStatus": 1, "deleted": false, "deptName": null },"failureMemo": null,"failureTime": null,"fatherVoid": null,"keyValue": 4490279,"kitPreparationMan": { "accountId": null, "card": null, "createTime": null, "curStatus": 1, "deleted": false, "deptName": null },"kitPreparationTime": null,"manualIncrease": false,"memo": null,"newlevFlag": "采购","nextRoom": null,"nextRoomName": null,"partCode": "21E8-900-363-H1","partName": "M2 螺钉","pdmUrl": null,"pkDate": null,"pkUsername": null,"planUser": "申强","plate": "Ct.P","poArea": 0.0170467129,"poCode": "WO-N251174111","poMemo": "DZ","poProdLine": "J303","poQty": 22,"primaryCraft": "库 1-1 (机加)-4 (表)- 库 2","priority": 1,"prodident": "JII","produceBool": false,"productType": null,
submit() {
this.$refs.formRules.validate(valid => {
if (valid) {
update(this.formData).then(res => {
console.log(res);
if(res.code===200){
this.openShow = false;
this.$emit("closeDialog",true)
}
});
}
});
},
methods: {
closeDialog() {
this.openShow = false
this.$emit('closeDialog');
},
}
}
},
};
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped></style>

@ -1,9 +1,9 @@
<template>
<el-dialog title="优先级调整" append-to-body :modelValue="openShow" width="30%" @close="closeDialog">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="当前优先级:">一级</el-form-item>
<el-form-item label="设置优先级:" prop="value1" required>
<el-select v-model="form.value1" placeholder="请选择" >
<el-form-item label="当前优先级:">{{ priorityName }}</el-form-item>
<el-form-item label="设置优先级:" prop="priority" required>
<el-select v-model="form.priority" placeholder="请选择" >
<el-option
label="一级"
:value="1">
@ -29,18 +29,23 @@
</el-dialog>
</template>
<script>
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
priorityName:{
type:String,
default:""
}
},
data() {
return {
openShow:false,
form:{
value1:''
priority:''
}
}
},
@ -53,12 +58,12 @@ export default {
this.$emit('closeDialog');
},
submit() {
if (!this.form.value1) {
if (!this.form.priority) {
this.$message.warning('请选择优先级');
return;
}
this.$emit('submitPriority', {
priority: this.form.value1
priority: this.form.priority
});
this.closeDialog();
}

@ -1,7 +1,7 @@
<template>
<el-dialog title="优先级调整" append-to-body :modelValue="openShow" width="30%" @close="closeDialog">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="当前优先级:">一级</el-form-item>
<el-form-item label="当前优先级:">{{ priorityName}}</el-form-item>
<el-form-item label="设置优先级:" prop="value1" required>
<el-select v-model="form.value1" placeholder="请选择" >
<el-option
@ -34,7 +34,11 @@ export default {
showDialog: {
type: Boolean,
default: false
},
priorityName:{
type:String
}
},
data() {
return {

File diff suppressed because it is too large Load Diff

@ -71,20 +71,25 @@
@closeDialog="closeDialog"
></batchDialog>
<!-- 导入 -->
<basic-import v-if="isShowImport" title="导入" :isShow="isShowImport"
<!-- 导入 -->
<basic-import
v-if="isShowImport"
title="导入"
:isShow="isShowImport"
templateUrl="/blade-desk/QA/CycleTestItem/download-excel-template"
templateName="试验项目模板.xlsx"
importUrl="/blade-desk/QA/CycleTestItem/import-excel"
@closeDialog="closeDialog"></basic-import>
@closeDialog="closeDialog"
></basic-import>
<!-- 工艺路线弹窗 -->
<lookProcess
:is-open="isOpen"
v-if="isOpen"
@cancel="closeDialog"
:rowData="rowItem"
sourceId="plannedOrder"
></lookProcess>
<lookProcess
:is-open="isOpen"
v-if="isOpen"
@cancel="closeDialog"
:rowData="rowItem"
sourceId="plannedOrder"
:id="id"
></lookProcess>
</basic-container>
</template>
@ -99,23 +104,26 @@ import {
remove,
update,
} from '@/api/system/role';
import { getList,closeBatchs } from '@/api/orderManagement/sinTerPlanOrder';
import { mapGetters } from 'vuex';
import { validatenull } from '@/utils/validate';
import rushDialog from './components/rushDialog.vue';
import batchDialog from './components/batchDialog.vue';
import basicImport from '@/components/basic-import/main.vue';
import lookProcess from './components/lookProcess.vue'
import lookProcess from './components/lookProcess.vue';
export default {
components: {
rushDialog,
batchDialog,
basicImport,
lookProcess
lookProcess,
},
data() {
return {
isShowImport: false,
id:null,
isShowImport: false,
inBatchesOpen: false,
platingSmallOpen: false,
planOrderArr: [],
@ -190,7 +198,7 @@ export default {
column: [
{
label: '计划单号',
prop: 'plannedOrderNo1',
prop: 'ypCode',
search: true,
sortable: true,
width: 150,
@ -200,14 +208,14 @@ export default {
rules: [
{
required: true,
message: '请输入角色名称',
message: '请输入计划单号',
trigger: 'blur',
},
],
},
{
label: '零件号',
prop: 'plannedOrderNo2',
prop: 'partCode',
search: true,
sortable: true,
width: 180,
@ -218,14 +226,14 @@ export default {
rules: [
{
required: true,
message: '请输入角色名称',
message: '请输入零件号',
trigger: 'blur',
},
],
},
{
label: '产品型号',
prop: 'plannedOrderNo3',
prop: 'productType',
search: false,
sortable: true,
disabled: true,
@ -236,14 +244,14 @@ export default {
rules: [
{
required: false,
message: '请输入角色名称',
message: '请输入产品型号',
trigger: 'blur',
},
],
},
{
label: '产品名称',
prop: 'partName',
prop: 'productName',
search: false,
sortable: true,
disabled: true,
@ -331,7 +339,7 @@ export default {
},
{
label: '生产数量',
prop: 'poQty',
prop: 'ypQty',
search: false,
sortable: true,
width: 120,
@ -348,7 +356,7 @@ export default {
},
{
label: '面积(d㎡)',
prop: 'poArea',
prop: 'ypArea',
search: false,
sortable: true,
width: 120,
@ -449,7 +457,7 @@ export default {
},
{
label: '已交付数量',
prop: 'createCount1',
prop: 'deliveryQty',
search: false,
sortable: true,
hide: true,
@ -459,7 +467,7 @@ export default {
},
{
label: '未交付数量',
prop: 'createCount',
prop: 'undeliveredQty',
search: false,
sortable: true,
hide: true,
@ -470,7 +478,7 @@ export default {
{
label: '状态',
prop: 'curStatusText',
prop: 'status',
search: true,
sortable: true,
span: 12,
@ -595,7 +603,7 @@ export default {
methods: {
//
handleImport() {
this.isShowImport = true
this.isShowImport = true;
},
//
batchReceiving() {
@ -615,29 +623,36 @@ export default {
// });
});
},
//
batchClose() {
//
if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据');
return;
//
batchClose() {
//
if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据');
return;
}
this.$confirm('确定将选择数据批量关闭?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const ids = this.selectionList.map(item => item.id).join(',');
closeBatchs({ ...{ ids }, ...this.approveForm }).then(res => {
if (res.code === 200) {
this.$message.success('审核成功');
}
this.$confirm('确定将选择数据批量关闭?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
// return remove(row.id);
})
.then(() => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
});
},
});
this.$refs.crud.toggleSelection();
this.onLoad(this.page); // return remove(row.id);
})
.catch(() => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
});
},
//
rushFn() {
this.isRushOpen = true;
@ -645,7 +660,7 @@ export default {
closeDialog() {
this.isRushOpen = false;
this.isBatchOpen = false;
this.isOpen = false
this.isOpen = false;
},
inBatchesFn(row) {
this.rowItem = row;
@ -655,6 +670,7 @@ export default {
this.platingSmallOpen = true;
},
lookProcessRoute(row) {
this.id=row.id
this.isOpen = true;
this.rowItem = row;
},
@ -847,7 +863,7 @@ export default {
});
},
onLoad(page, params = {}) {
async onLoad(page, params = {}) {
this.loading = true;
this.data = [
{
@ -1907,8 +1923,22 @@ export default {
},
];
this.page.total = this.data.length;
// getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
// this.data = res.data.data.records;
this.query.sureType=1;
try {
const res = await getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.query)
);
if (res.code) {
this.data = res.data.data.records;
this.page.total = res.data.data.total;
this.selectionClear();
}
} catch (err) {
console.log(err);
}
this.loading = false;
// this.page.total = res.data.data.total
// this.selectionClear();

@ -59,27 +59,33 @@
<!-- 加急 -->
<rushDialog :showDialog="isRushOpen" v-if="isRushOpen" @closeDialog="closeDialog"></rushDialog>
<!-- 导入 -->
<basic-import v-if="isShowImport" title="导入" :isShow="isShowImport"
<!-- 导入 -->
<basic-import
v-if="isShowImport"
title="导入"
:isShow="isShowImport"
templateUrl="/blade-desk/QA/CycleTestItem/download-excel-template"
templateName="试验项目模板.xlsx"
importUrl="/blade-desk/QA/CycleTestItem/import-excel"
@closeDialog="closeDialog"></basic-import>
@closeDialog="closeDialog"
></basic-import>
<!-- 工艺路线弹窗 -->
<lookProcess
:is-open="isOpen"
v-if="isOpen"
@cancel="closeDialog"
:rowData="rowItem"
sourceId="sinTerOrder"
></lookProcess>
<lookProcess
:is-open="isOpen"
v-if="isOpen"
@cancel="closeDialog"
:rowData="rowItem"
sourceId="sinTerOrder"
:id="id"
></lookProcess>
</basic-container>
</template>
<script>
import { getList, closeBatchs } from '@/api/orderManagement/sinTerPlanOrder';
import rushDialog from './components/rushDialog.vue';
import basicImport from '@/components/basic-import/main.vue'
import lookProcess from './components/lookProcess.vue'
import basicImport from '@/components/basic-import/main.vue';
import lookProcess from './components/lookProcess.vue';
import {
add,
getRole,
@ -97,11 +103,12 @@ export default {
components: {
rushDialog,
basicImport,
lookProcess
lookProcess,
},
data() {
return {
isShowImport: false,
id: null,
isShowImport: false,
inBatchesOpen: false,
platingSmallOpen: false,
planOrderArr: [],
@ -193,7 +200,7 @@ export default {
// },
{
label: '计划单号',
prop: 'poCode',
prop: 'ypCode',
search: true,
sortable: true,
width: 150,
@ -246,7 +253,7 @@ export default {
},
{
label: '产品名称',
prop: 'partName',
prop: 'productName',
search: false,
sortable: true,
disabled: true,
@ -264,7 +271,7 @@ export default {
},
{
label: '生产标识',
prop: 'prodIdent',
prop: 'productIdent',
search: false,
sortable: true,
width: 120,
@ -299,7 +306,7 @@ export default {
},
{
label: '生产数量',
prop: 'poQty',
prop: 'ypQty',
search: false,
sortable: true,
width: 120,
@ -352,7 +359,7 @@ export default {
// },
{
label: '面积(d㎡)',
prop: 'poArea',
prop: 'ypArea',
search: false,
sortable: true,
width: 120,
@ -479,7 +486,7 @@ export default {
},
{
label: '已交付数量',
prop: 'createName',
prop: 'deliveryQty',
search: false,
sortable: true,
span: 12,
@ -551,7 +558,7 @@ export default {
methods: {
//
handleImport() {
this.isShowImport = true
this.isShowImport = true;
},
glassDisc() {
this.$confirm('确定是否下达玻璃饼?', {
@ -570,29 +577,36 @@ export default {
// });
});
},
//
batchClose() {
//
if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据');
return;
//
batchClose() {
//
if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据');
return;
}
this.$confirm('确定将选择数据批量关闭?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
const ids = this.selectionList.map(item => item.id).join(',');
closeBatchs({ ...{ ids }, ...this.approveForm }).then(res => {
if (res.code === 200) {
this.$message.success('审核成功');
}
this.$confirm('确定将选择数据批量关闭?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
// return remove(row.id);
})
.then(() => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
});
},
});
this.$refs.crud.toggleSelection();
this.onLoad(this.page); // return remove(row.id);
})
.catch(() => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
});
},
//
rushFn() {
this.isRushOpen = true;
@ -600,7 +614,7 @@ export default {
closeDialog() {
this.isRushOpen = false;
this.isBatchOpen = false;
this.isOpen = false
this.isOpen = false;
},
inBatchesFn(row) {
this.rowItem = row;
@ -610,6 +624,7 @@ export default {
this.platingSmallOpen = true;
},
lookProcessRoute(row) {
this.id = row.id;
this.isOpen = true;
this.rowItem = row;
},
@ -802,7 +817,7 @@ export default {
});
},
onLoad(page, params = {}) {
async onLoad(page, params = {}) {
this.loading = true;
this.data = [
{
@ -847,6 +862,7 @@ export default {
wcName: null,
},
{
id: 2,
alreadyBranchQty: 104.0,
bsPlatingSmall: null,
bsProcedureQua: null,
@ -886,7 +902,7 @@ export default {
wcName: null,
},
{
id: 2,
id: 3,
alreadyBranchQty: 19.0,
bsPlatingSmall: null,
bsProcedureQua: null,
@ -927,12 +943,23 @@ export default {
},
];
this.page.total = this.data.length;
// getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
// this.data = res.data.data.records;
this.query.sureType = '';
try {
const res = await getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.query)
);
if (res.code) {
this.data = res.data.data.records;
this.page.total = res.data.data.total;
this.selectionClear();
}
} catch (err) {
console.log(err);
}
this.loading = false;
// this.page.total = res.data.data.total
// this.selectionClear();
// });
},
},
mounted() {},

File diff suppressed because it is too large Load Diff

@ -1,13 +1,19 @@
<template>
<basic-container>
<el-tabs v-model="tabPosition" class="demo-tabs" @tab-change="tabPositionChange">
<el-tab-pane label="物料需求申报" name="1"></el-tab-pane>
<el-tab-pane label="化验含量" name="2"></el-tab-pane>
<el-tab-pane label="添加量申报" name="3"></el-tab-pane>
<el-tab-pane label="物料需求申报" name="1">
<materialRequirements v-if="tabPosition=='1'"></materialRequirements>
</el-tab-pane>
<el-tab-pane label="化验含量" name="2">
<assayedContent v-if="tabPosition=='2'"></assayedContent>
</el-tab-pane>
<el-tab-pane label="添加量申报" name="3">
<addRequirements v-if="tabPosition=='3'"></addRequirements>
</el-tab-pane>
</el-tabs>
<materialRequirements v-if="tabPosition=='1'"></materialRequirements>
<assayedContent v-if="tabPosition=='2'"></assayedContent>
<addRequirements v-if="tabPosition=='3'"></addRequirements>
</basic-container>
</template>

File diff suppressed because it is too large Load Diff

@ -16,7 +16,7 @@
<el-radio :value="3">3</el-radio>
<el-radio :value="6">7</el-radio>
<el-radio :value="9">30</el-radio>
<el-radio :value="9">全部</el-radio>
<el-radio :value=" '' ">全部</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@ -85,6 +85,7 @@ export default {
},
data() {
return {
radio:3,
addForm: {},
tableData: [],
ruleForm: {

@ -0,0 +1,155 @@
<template>
<el-dialog
title="详情"
append-to-body
:modelValue="addDialog"
width="90%"
@close="closeDialog"
@open="open"
>
<el-descriptions :column="4" border title="物料需求信息" :label-width="150">
<el-descriptions-item label="作业中心">{{
addForm.bsWorkCenter?.wcName
}}</el-descriptions-item>
<el-descriptions-item label="建立人员">{{ addForm.createUser }}</el-descriptions-item>
<el-descriptions-item label="建立时间">{{ addForm.createTime }}</el-descriptions-item>
<el-descriptions-item label="物料编码">{{ addForm.goodsCode }}</el-descriptions-item>
<el-descriptions-item label="班组实际消耗(克)">{{
addForm.teamActualConsumption
}}</el-descriptions-item>
<el-descriptions-item label="班组预添加(克)">{{
addForm.teamPreAddGram
}}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ addForm.goodsName }}</el-descriptions-item>
<el-descriptions-item label="可使用定额(克)">{{
addForm.usableQuotaGram
}}</el-descriptions-item>
<el-descriptions-item label="累计结余(克)">{{
addForm.accumulatedBalanceGram
}}</el-descriptions-item>
<el-descriptions-item label="本次添加涉及单号">{{
addForm.involveCode
}}</el-descriptions-item>
<el-descriptions-item label="本次剩余单号余量">{{
addForm.involveCode
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions
class="margin-top"
:column="4"
border
title="审批信息"
v-if="addForm.bsWorkCenter"
>
<template v-for="(item,index) in addForm.bsWorkCenter" :key="index">
<el-descriptions-item label="审批人">{{
item.approvalMan
}}</el-descriptions-item>
<el-descriptions-item label="审批时间">{{
item.approvalTime
}}</el-descriptions-item>
<el-descriptions-item label="审批结果">{{
item.approvalStatus
}}</el-descriptions-item>
<el-descriptions-item label="审批意见">{{
item.approvalMemo
}}</el-descriptions-item>
</template>
</el-descriptions>
<el-descriptions class="margin-top" :column="4" border title="订单信息"> </el-descriptions>
<el-table :data="tableData">
<el-table-column label="槽号" prop="slot" align="center"></el-table-column>
<el-table-column label="化验值" prop="testVal" align="center"></el-table-column>
<el-table-column label="申报添加金钾(克)" prop="saveGoldVal" align="center"></el-table-column>
<el-table-column
label="申报添加银钾(克)"
prop="saveSilverVal"
align="center"
></el-table-column>
<el-table-column label="理论值" prop="saveBoardVal" align="center"></el-table-column>
</el-table>
</el-dialog>
</template>
<script>
import { getassayContentDeatils } from '@/api/productionManagement/assayedContent';
export default {
props: {
addDialog: {
type: Boolean,
default: false,
},
id: {
type: String,
},
},
data() {
return {
addForm: {},
sumAvailable: '0.0',
tableData: [],
};
},
mounted() {},
methods: {
async open() {
//
console.log(this.id, 'zz');
try {
const res = await getassayContentDeatils({ id: this.id });
if (res.code == 200) {
this.detailForm = res.data.detailForm;
this.tableData = res.data.list;
}
} catch (err) {
console.log(err);
}
this.addForm = {
bsWorkCenter:[ {
wcName: '电镀作业中心A区',
approvalMan: '张三(车间主管)',
approvalTimeFirst: '2025-12-01 09:30:25',
approvalResultFirst: '通过',
approvalOpinionFirst: '物料消耗数据核对无误,预添加量在定额范围内,同意审批',
approverSecond: '李四(生产经理)',
approvalTime: '2025-12-01 14:15:40',
approvalMemo: '通过',
approvalOpinionSecond: '同意车间主管意见,按计划执行物料添加',
approvalStatus:""
}],
createUser: '王五(统计员)',
createTime: '2025-11-30 16:20:10',
goodsCode: 'WL-DJ-001-2025',
teamActualConsumption: 1856.7,
teamPreAddGram: 2000.0,
goodsName: '氰化金钾溶液(20%)',
usableQuotaGram: 4500.5,
accumulatedBalanceGram: 987.2,
currentAddRelatedOrderNo: 'OD-202512001',
currentRemainingOrderQuota: 1560.8,
};
this.tableData = [
{ slot: 5, testVal: 1.85, saveGoldVal: 0.0, saveSilverVal: 850.2, saveBoardVal: 848.5 },
{ slot: 6, testVal: 1.88, saveGoldVal: 0.0, saveSilverVal: 880.7, saveBoardVal: 879.2 },
{ slot: 7, testVal: 1.82, saveGoldVal: 0.0, saveSilverVal: 820.4, saveBoardVal: 819.0 },
{ slot: 8, testVal: 1.86, saveGoldVal: 0.0, saveSilverVal: 860.9, saveBoardVal: 859.3 },
];
},
closeDialog() {
this.$emit('closeDialog');
},
},
};
</script>
<style lang="scss" scoped>
.margin-top {
margin-top: 24px;
}
:deep(.is-bordered-content) {
width: 280px;
}
</style>

@ -1,180 +1,189 @@
<template>
<el-dialog title="需求申报" append-to-body :modelValue="showDialog" width="80%" @close="closeDialog" @open="open" fullscreen>
<el-form :inline="true" v-model="submitForm">
<el-form-item label="银钾系数" prop="coefficient" v-if="searchForm.goodsType == 6">
<el-input placeholder="请输入银钾系数" v-model="submitForm.coefficient"></el-input>
</el-form-item>
<el-form-item :label="labelValue + '需求量'" prop="" v-if="searchForm.goodsType == 3">
<el-input placeholder="请输入需求量" v-model="submitForm.goodsQuantity"></el-input>
</el-form-item>
<el-form-item label="银钾需求量" prop="saveBoardVal" v-if="searchForm.goodsType == 6">
<el-input placeholder="请输入银钾需求量" v-model="submitForm.saveBoardVal" ></el-input>
</el-form-item>
<!-- <el-form-item>
<el-dialog
title="需求申报"
append-to-body
:modelValue="showDialog"
width="80%"
@close="closeDialog"
@open="open"
fullscreen
>
<el-form :inline="true" v-model="submitForm">
<el-form-item label="银钾系数" prop="coefficient" v-if="searchForm.goodsType == 6">
<el-input placeholder="请输入银钾系数" v-model="submitForm.coefficient"></el-input>
</el-form-item>
<el-form-item :label="labelValue + '需求量'" prop="" v-if="searchForm.goodsType == 3">
<el-input placeholder="请输入需求量" v-model="submitForm.goodsQuantity"></el-input>
</el-form-item>
<el-form-item label="银钾需求量" prop="saveBoardVal" v-if="searchForm.goodsType == 6">
<el-input placeholder="请输入银钾需求量" v-model="submitForm.saveBoardVal"></el-input>
</el-form-item>
<!-- <el-form-item>
<el-button type="primary" @click="onSubmit"> </el-button>
</el-form-item> -->
</el-form>
<el-tag type="primary" style="width: 100%; display: block; line-height: 22px"
>选择XX个订单 合计物料需求量711.00</el-tag
>
<div style="border: 1px solid #ccc; padding: 20px 0px">
<div>
<el-form :inline="true" v-model="searchForm" label-width="90px">
<el-form-item label="作业中心" prop="wcId">
<el-select style="width: 182px" v-model="searchForm.wcId" placeholder="请选择作业中心">
<el-option label="作业中心一" value="1"></el-option>
<el-option label="作业中心二" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="物料类型" prop="goodsType">
<el-radio-group v-model="searchForm.goodsType" @input="changeType">
<el-radio :label="3">金钾</el-radio>
<el-radio :label="6">银钾</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-checkbox v-model="searchForm.checked">允许使用半月以上的数据</el-checkbox>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSearch" :loading="loading"> </el-button>
</el-form-item>
</el-form>
<el-tag type="primary" style="width:100%;display:block;line-height:22px">选择XX个订单 合计物料需求量711.00</el-tag>
<div style="border: 1px solid #ccc; padding: 20px 0px;">
<div>
<el-form :inline="true" v-model="searchForm" label-width="90px">
<el-form-item label="作业中心" prop="workCenter">
<el-select style="width: 182px;" v-model="searchForm.workCenter" placeholder="请选择作业中心">
<el-option label="作业中心一" value="1"></el-option>
<el-option label="作业中心二" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="物料类型" prop="goodsType">
<el-radio-group v-model="searchForm.goodsType" @input="changeType">
<el-radio :label="3">金钾</el-radio>
<el-radio :label="6">银钾</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-checkbox v-model="searchForm.checked">允许使用半月以上的数据</el-checkbox>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSearch"> </el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection"></el-table-column>
<el-table-column label="计划单号" prop="pjYieldOrder.poCode" align="center"></el-table-column>
<el-table-column label="生产订单号" prop="orderWoCode" align="center"></el-table-column>
<el-table-column label="零件号" prop="pjYieldOrder.partCode" align="center"></el-table-column>
<el-table-column label="零件名称" prop="pjYieldOrder.partName" align="center"></el-table-column>
<el-table-column label="物料编码" prop="plateGoodsCode" align="center"></el-table-column>
<el-table-column label="生产标识" prop="pjYieldOrder.prodIdent" align="center"></el-table-column>
<el-table-column label="生产数量" prop="pjYieldOrder.poQty" align="center"></el-table-column>
<el-table-column label="物料需求量(克)" prop="plateSingleQuotaTotal" align="center"></el-table-column>
<el-table-column label="计划下达时间" prop="createTime" align="center"></el-table-column>
<el-table :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :loading="loading">
<el-table-column type="selection"></el-table-column>
<el-table-column
label="计划单号"
prop="pjYieldOrder.poCode"
align="center"
></el-table-column>
<el-table-column label="生产订单号" prop="orderWoCode" align="center"></el-table-column>
<el-table-column
label="零件号"
prop="pjYieldOrder.partCode"
align="center"
></el-table-column>
<el-table-column
label="零件名称"
prop="pjYieldOrder.partName"
align="center"
></el-table-column>
<el-table-column label="物料编码" prop="plateGoodsCode" align="center"></el-table-column>
<el-table-column
label="生产标识"
prop="pjYieldOrder.prodIdent"
align="center"
></el-table-column>
<el-table-column
label="生产数量"
prop="pjYieldOrder.poQty"
align="center"
></el-table-column>
<el-table-column
label="物料需求量(克)"
prop="plateSingleQuotaTotal"
align="center"
></el-table-column>
<el-table-column label="计划下达时间" prop="createTime" align="center"></el-table-column>
<!-- <el-table-column label="计划生产时间" prop="createTime" align="center"></el-table-column> -->
</el-table>
<div v-show="totalNum"
style="display: flex;justify-content: flex-end;align-items: center; margin: 20px 20px 0 0;">合计{{
totalNum }}</div>
</div>
<!-- <el-table-column label="计划生产时间" prop="createTime" align="center"></el-table-column> -->
</el-table>
<div
v-show="totalNum"
style="
display: flex;
justify-content: flex-end;
align-items: center;
margin: 20px 20px 0 0;
"
>
合计{{ totalNum }}
</div>
</div>
</div>
<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 { getListlistNoFinished } from '@/api/productionManagement/coatingMaterial';
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
props: {
showDialog: {
type: Boolean,
default: false,
},
},
data() {
return {
loading: false,
submitForm: {},
searchForm: {
goodsType: 3,
},
labelValue: '金钾',
tableData: [],
totalNum: null,
selectionList: [],
};
},
mounted() {},
methods: {
// /
changeType(val) {
console.log('val-------------');
if (val.target.value == 3) {
this.labelValue = '金钾';
} else {
this.labelValue = '银钾';
}
},
data() {
return {
submitForm: {},
searchForm: {
goodsType:3
},
labelValue: '金钾',
tableData: [],
totalNum: null,
selectionList: []
//
async onSearch() {
this.loading = true;
try {
const params = { ...this.submitForm, ...this.query };
const res = await getListlistNoFinished(1, 1000, params);
if (res && res.code === 200) {
this.data = res.data?.data?.records || [];
this.$refs?.multipleTable?.clearSelection();
} else {
console.warn('查询失败:', '未知错误');
}
} finally {
this.loading = false;
}
},
mounted() {
//
handleSelectionChange(val) {
this.selectionList = val;
console.log('lisy-------------', this.selectionList);
var strarr = [];
for (let i in this.selectionList) {
strarr.push(Number(this.selectionList[i]['plateSingleQuotaTotal']));
}
var total = eval(strarr.join('+'));
this.totalNum = total;
this.submitForm.goodsQuantity = total;
},
methods: {
// /
changeType(val) {
console.log('val-------------',)
if (val.target.value == 3) {
this.labelValue = '金钾'
} else {
this.labelValue = '银钾'
}
},
//
onSearch() {
this.tableData = [
{
pjYieldOrder: {
poCode: "WO-220245431",
partCode: "21E8-950-1378-H1",
partName: 'XXX',
prodIdent: 'JII',
poQty: 50,
},
orderWoCode: "WO-220245431",
plateGoodsCode: 'XXXX(名称)',
createTime: "2023-05-17 10:50:08",
plateSingleQuotaTotal: '120.00'
},
{
pjYieldOrder: {
poCode: "WO-220245432",
partCode: "21E8-950-1378-H1",
partName: 'XXX',
prodIdent: 'JII',
poQty: 50,
},
orderWoCode: "WO-220245432",
plateGoodsCode: 'XXXX(名称)',
createTime: "2023-05-17 10:50:08",
plateSingleQuotaTotal: '25.32'
},
{
pjYieldOrder: {
poCode: "WO-220245433",
partCode: "21E8-950-1378-H1",
partName: 'XXX',
prodIdent: 'JII',
poQty: 50,
},
orderWoCode: "WO-220245433",
plateGoodsCode: 'XXXX(名称)',
createTime: "2023-05-17 10:50:08",
plateSingleQuotaTotal: '100.00'
},
{
pjYieldOrder: {
poCode: "WO-220245434",
partCode: "21E8-950-1378-H1",
partName: 'XXX',
prodIdent: 'JII',
poQty: 50,
},
orderWoCode: "WO-220245434",
plateGoodsCode: 'XXXX(名称)',
createTime: "2023-05-17 10:50:08",
plateSingleQuotaTotal: '200.00'
}
]
},
//
handleSelectionChange(val) {
this.selectionList = val;
console.log('lisy-------------', this.selectionList)
var strarr = [];
for (let i in this.selectionList) {
strarr.push(Number(this.selectionList[i]['plateSingleQuotaTotal']))
}
var total = eval(strarr.join('+'));
this.totalNum = total
this.submitForm.goodsQuantity = total
},
closeDialog() {
this.$emit('closeDialog');
}
}
}
closeDialog() {
this.$emit('closeDialog');
},
submit() {
// this.submitForm
//this.selectionList
const form = {
data: this.submitForm,
list: this.selectionList,
};
console.log(form);
},
},
};
</script>
<style></style>
<style></style>

@ -1,26 +1,36 @@
<template>
<div>
<!-- 表格数据 -->
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left="row">
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left="row">
<!-- <el-button type="primary" @click="handleAdd">需求申报</el-button>-->
<el-button type="primary" @click="addQuantityClick">添加量申报</el-button>
<el-button type="primary" @click="handleApprove">批量审核</el-button>
<el-button type="primary" @click="addQuantityClick">添加量申报</el-button>
<el-button type="primary" @click="handleApprove">批量审核</el-button>
</template>
<template #menu-right>
<el-button type="warning" @click="pendingReviewFn()" plain>待审核</el-button>
<el-button type="warning" @click="pendingReviewFn()" :loading="loading">待审核</el-button>
</template>
<template #menu="{ row }">
<el-button type="text" @click="handleView(row)">详情</el-button>
</template>
</avue-crud>
<add-quantity :add-quantity="addQuantity" @closeDialog="closeDialog"></add-quantity>
<add-dialog :add-dialog="addDialog" @closeDialog="closeDialog"></add-dialog>
<add-dialog :add-dialog="addDialog" @closeDialog="closeDialog" :id="id"></add-dialog>
<el-dialog append-to-body width="550px" title="审批" v-model="approveDialog">
<el-form ref="approveForm" :model="approveForm" :rules="approveRules">
<el-form-item label="审批结果" prop="approveREsult">
@ -44,16 +54,18 @@
</template>
<script>
import { getList, confirmBatch } from '@/api/productionManagement/addRequirements';
import coatingColumnData from '../../js/coatingColumnData';
import addQuantity from '../addQuantity.vue';
import addDialog from '../addDialog.vue';
export default {
components: {
addQuantity,
addDialog
addDialog,
},
data() {
return {
id:null,
searchForm: {},
tabPosition: 'addRequirements',
loading: false,
@ -104,10 +116,10 @@ export default {
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
column: []
column: [],
},
approveRules: {
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }]
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }],
},
approveDialog: false,
page: {
@ -115,124 +127,225 @@ export default {
currentPage: 1,
total: 0,
},
selectionList: []
}
selectionList: [],
};
},
mounted() {
this.option.column = coatingColumnData[this.tabPosition]
this.option.column = coatingColumnData[this.tabPosition];
},
methods: {
//
pendingReviewFn() {
this.$message.success('操作成功')
this.onLoad(this.page, { type: '2' });
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
//
selectionChange(list) {
this.selectionList = list;
},
//
handleView(row) {
this.addDialog = true
this.id=row.id
this.addDialog = true;
},
deleteRow(row) {
this.$confirm('确定删除此条数据?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
}).then(() => {});
},
closeRow() {
this.$confirm('确定删除此条数据?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
}).then(() => {});
},
//
handleAdd() {
this.showDialog = true
this.showDialog = true;
},
//
closeDialog() {
this.showDialog = false
this.addQuantity = false
this.addDialog = false
this.showDialog = false;
this.addQuantity = false;
this.addDialog = false;
},
addQuantityClick() {
// if (this.selectionList.length == 0) {
// this.$message.error('!')
// } else {
this.addQuantity = true
this.addQuantity = true;
// }
},
approveRow() {
this.approveDialog = true
this.approveDialog = true;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
handleApprove() {
if (this.selectionList.length != 0) {
this.approveDialog = true
this.approveDialog = true;
} else {
this.$message.error('请至少选择一条数据!')
this.$message.error('请至少选择一条数据!');
}
},
submitApprove() {
this.$refs.approveForm.validate(valid => {
console.log('valid==============', valid)
console.log('valid==============', valid);
if (valid) {
this.approveDialog = false
const ids = this.selectionList.map(item => item.id).join(',');
confirmBatch({ ...{ ids }, ...this.approveForm }).then(res => {
if (res.code === 200) {
this.$message.success('审核成功');
}
});
this.approveDialog = false;
this.$refs.crud.toggleSelection();
this.onLoad(this.page);
}
})
});
},
onLoad() {
async onLoad(page, params = {}) {
this.data = [
{
id: 1,
requiredCode: "001", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 1,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32', saveGoldVal: 10,usedGoldVal: 20,
saveSilverVal: 20, saveBoardVal: 0, createUser: '张三'
requiredCode: '001',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 1,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
saveGoldVal: 10,
usedGoldVal: 20,
saveSilverVal: 20,
saveBoardVal: 0,
createUser: '张三',
},
{
id: 2,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_002', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 2,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32', saveGoldVal: 10,usedGoldVal: 20,
saveSilverVal: 20, saveBoardVal: 0, createUser: '张三'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_002',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 2,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
saveGoldVal: 10,
usedGoldVal: 20,
saveSilverVal: 20,
saveBoardVal: 0,
createUser: '张三',
},
{
id: 3,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 3,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32', saveGoldVal: 10,usedGoldVal: 20,
saveSilverVal: 20, saveBoardVal: 0, createUser: '张三'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 3,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
saveGoldVal: 10,
usedGoldVal: 20,
saveSilverVal: 20,
saveBoardVal: 0,
createUser: '张三',
},
{
id: 4,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 4,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32', saveGoldVal: 10,usedGoldVal: 20,
saveSilverVal: 20, saveBoardVal: 0, createUser: '张三'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 4,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
saveGoldVal: 10,
usedGoldVal: 20,
saveSilverVal: 20,
saveBoardVal: 0,
createUser: '张三',
},
{
id: 5,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 5,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32', saveGoldVal: 10,usedGoldVal: 20,
saveSilverVal: 20, saveBoardVal: 0, createUser: '张三'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 5,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
saveGoldVal: 10,
usedGoldVal: 20,
saveSilverVal: 20,
saveBoardVal: 0,
createUser: '张三',
},
]
this.page.total = this.data.length
];
this.page.total = this.data.length;
try {
this.loading = true;
const res = await getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.query)
);
if (res.code) {
this.data = res.data.data.records;
this.page.total = res.data.data.total;
this.selectionClear();
}
} catch (err) {
console.log(err);
}
this.loading = false;
},
}
}
},
};
</script>
<style></style>
<style></style>

@ -1,35 +1,55 @@
<template>
<div>
<!-- 表格数据 -->
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left="row">
<el-button type="primary" @click="handleAdd">新增</el-button>
</template>
<template #menu-right>
</template>
<template #menu-right> </template>
<template #menu="{ row }">
<el-button type="text" @click="handleView(row)">详情</el-button>
</template>
</avue-crud>
<add-dialog :add-dialog="addDialog" @closeDialog="closeDialog"></add-dialog>
<assDialog :add-dialog="addDialog" @closeDialog="closeDialog" :id="id"></assDialog>
<!-- 新增 -->
<assayedContentDialog v-if="isAddOpen" :showDialog="isAddOpen" @closeDialog="closeDialog"></assayedContentDialog>
<assayedContentDialog
v-if="isAddOpen"
:showDialog="isAddOpen"
@closeDialog="closeDialog"
></assayedContentDialog>
</div>
</template>
<script>
import addDialog from '../addDialog.vue';
import { getList } from '@/api/productionManagement/assayedContent';
// import addDialog from '../addDialog.vue';
import coatingColumnData from '../../js/coatingColumnData';
import assayedContentDialog from './assayedContentDialog.vue'
import assayedContentDialog from './assayedContentDialog.vue';
import assDialog from '../assDialog.vue';
export default {
components: {
addDialog,
assayedContentDialog
assayedContentDialog,
assDialog
},
data() {
return {
id:null,
searchForm: {},
tabPosition: 'assayedContent',
loading: false,
@ -82,10 +102,10 @@ export default {
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
column: []
column: [],
},
approveRules: {
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }]
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }],
},
approveDialog: false,
page: {
@ -94,17 +114,26 @@ export default {
total: 0,
},
selectionList: [],
isAddOpen:false,
}
isAddOpen: false,
};
},
mounted() {
this.option.column = coatingColumnData[this.tabPosition]
this.option.column = coatingColumnData[this.tabPosition];
},
methods: {
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
//
pendingReviewFn() {
this.$message.success('操作成功')
this.$message.success('操作成功');
},
//
@ -113,108 +142,98 @@ export default {
},
//
handleView(row) {
this.addDialog = true
this.id=row.id
this.addDialog = true;
},
deleteRow(row) {
this.$confirm('确定删除此条数据?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
}).then(() => {});
},
closeRow() {
this.$confirm('确定删除此条数据?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
}).then(() => {});
},
//
handleAdd() {
this.isAddOpen = true
this.isAddOpen = true;
},
//
closeDialog() {
this.showDialog = false
this.materialDialog = false
this.addQuantity = false
this.addDialog = false
this.isAddOpen = false
this.showDialog = false;
this.materialDialog = false;
this.addQuantity = false;
this.addDialog = false;
this.isAddOpen = false;
},
addQuantityClick() {
if (this.selectionList.length == 0) {
this.$message.error('请至少选择一条数据!')
this.$message.error('请至少选择一条数据!');
} else {
this.addQuantity = true
this.addQuantity = true;
}
},
approveRow() {
this.approveDialog = true
this.approveDialog = true;
},
handleApprove() {
if (this.selectionList.length != 0) {
this.approveDialog = true
this.approveDialog = true;
} else {
this.$message.error('请至少选择一条数据!')
this.$message.error('请至少选择一条数据!');
}
},
submitApprove() {
this.$refs.approveForm.validate(valid => {
console.log('valid==============', valid)
console.log('valid==============', valid);
if (valid) {
this.approveDialog = false
this.approveDialog = false;
}
})
});
},
onLoad() {
async onLoad(page, params = {}) {
this.data = [
{
id: 1,
requiredCode: "001", assayer: '张三', workCenter: '2025-10-20 11:20:32', status: 4,
requiredCode: '001',
assayer: '张三',
workCenter: '2025-10-20 11:20:32',
status: 4,
},
{
id: 2,
requiredCode: "002", assayer: '李四', workCenter: '2025-10-21 11:20:32', status: 3,
requiredCode: '002',
assayer: '李四',
workCenter: '2025-10-21 11:20:32',
status: 3,
},
// {
// id: 1,
// requiredCode: "001", workCenter: 1, goodsCode: 'wl_001', goodsName: "1111", goldPotassium: 20,
// silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 4,
// ordersNumber: 15, assayer: '', createTime: '2025-10-20 11:20:32'
// },
// {
// id: 2,
// requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "", goldPotassium: 20,
// silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 3,
// ordersNumber: 15, createMan: '', createTime: '2025-10-20 11:20:32'
// },
// {
// id: 3,
// requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "", goldPotassium: 20,
// silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 3,
// ordersNumber: 15, createMan: '', createTime: '2025-10-20 11:20:32'
// },
// {
// id: 4,
// requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "", goldPotassium: 20,
// silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 4,
// ordersNumber: 15, createMan: '', createTime: '2025-10-20 11:20:32'
// },
// {
// id: 5,
// requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "", goldPotassium: 20,
// silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 5,
// ordersNumber: 15, createMan: '', createTime: '2025-10-20 11:20:32'
// },
]
this.page.total = this.data.length
];
this.loading = true;
try {
const res = await getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.query)
);
if (res.code) {
this.data = res.data.data.records;
this.page.total = res.data.data.total;
this.selectionClear();
}
} catch (err) {
console.log(err);
}
this.loading = false;
// this.page.total = this.data.length;
},
}
}
},
};
</script>
<style></style>
<style></style>

@ -1,118 +1,130 @@
<template>
<el-dialog title="含量检测" append-to-body :modelValue="openShow" width="40%" @close="closeDialog">
<!-- 合并为单个表单避免ref冲突 -->
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="90">
<el-row>
<el-col :span="12">
<el-form-item label="作业中心" prop="zuoyezhongxin">
<el-select v-model="ruleForm.zuoyezhongxin" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="化验时间" prop="huayanshijian">
<!-- 修复日期选择器v-model绑定错误 -->
<el-date-picker
v-model="ruleForm.huayanshijian"
type="date"
placeholder="请选择"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
</el-row>
<el-dialog
title="含量检测"
append-to-body
:modelValue="openShow"
width="40%"
@close="closeDialog"
>
<!-- 合并为单个表单避免ref冲突 -->
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="90">
<el-row>
<el-col :span="12">
<el-form-item label="作业中心" prop="zuoyezhongxin">
<el-select v-model="ruleForm.zuoyezhongxin" placeholder="请选择" @change="handelchange">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="化验时间" prop="huayanshijian">
<!-- 修复日期选择器v-model绑定错误 -->
<el-date-picker
v-model="ruleForm.huayanshijian"
type="date"
placeholder="请选择"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="handelchange"
/>
</el-form-item>
</el-col>
</el-row>
<el-table :data="ruleForm.tableData" style="width: 100%">
<el-table-column type="index" label="序号" width="180" />
<el-table-column prop="name" label="作业槽" width="180" />
<el-table-column prop="address" label="测量值">
<template #header>
<span><i style="color:red">*</i>测量值</span>
</template>
<template #default="scope">
<!-- 将输入框放入form-item内部避免校验时的更新冲突 -->
<el-form-item
:prop="'tableData.' + scope.$index + '.address'"
:rules="[{ required: true, message: '请输入测量值', trigger: ['blur', 'change'] }]"
>
<el-input-number
v-model="scope.row.address"
controls-position="right"
@change="handleChange"
/>
</el-form-item>
</template>
</el-table-column>
</el-table>
</el-form>
<el-table :data="ruleForm.tableData" style="width: 100%">
<el-table-column type="index" label="序号" width="180" />
<el-table-column prop="slot" label="作业槽" width="180" />
<el-table-column prop="testVal" label="测量值">
<template #header>
<span><i style="color: red">*</i>测量值</span>
</template>
<template #default="scope">
<!-- 将输入框放入form-item内部避免校验时的更新冲突 -->
<el-form-item
:prop="'tableData.' + scope.$index + '.testVal'"
:rules="[{ required: true, message: '请输入测量值', trigger: ['blur', 'change'] }]"
>
<el-input-number
v-model="scope.row.testVal"
controls-position="right"
@change="handleChange"
/>
</el-form-item>
</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="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 { add } from '@/api/productionManagement/assayedContent';
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
props: {
showDialog: {
type: Boolean,
default: false,
},
data() {
return {
openShow: false,
ruleForm: {
huayanshijian: '',
zuoyezhongxin: '',
tableData: [
{ address: null, name: '#16' },
{ address: null, name: '#15' },
{ address: null, name: '#14' },
{ address: null, name: '#13' },
{ address: null, name: '#12' }
]
},
rules: {
huayanshijian: [
{ required: true, message: '请选择化验时间', trigger:[ 'change', 'blur'] }
],
zuoyezhongxin: [
{ required: true, message: '请选择作业中心', trigger: ['change', 'blur'] }
]
},
options: [
{ label: '作业中心一1', value: '1' },
{ label: '作业中心二', value: '2' }
]
}
},
data() {
return {
openShow: false,
ruleForm: {
huayanshijian: '',
zuoyezhongxin: '',
tableData: [
{ testVal: null, slot: '#16' },
{ testVal: null, slot: '#15' },
],
},
rules: {
huayanshijian: [{ required: true, message: '请选择化验时间', trigger: ['change', 'blur'] }],
zuoyezhongxin: [{ required: true, message: '请选择作业中心', trigger: ['change', 'blur'] }],
},
options: [
{ label: '作业中心一1', value: '1' },
{ label: '作业中心二', value: '2' },
],
};
},
mounted() {
this.openShow = this.showDialog;
},
methods: {
//
handelchange(){
console.log(this.ruleForm,22222)
},
mounted() {
this.openShow = this.showDialog
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
},
methods: {
closeDialog() {
this.openShow = false
this.$emit('closeDialog');
},
submit() {
this.$refs.ruleFormRef.validate((valid) => {
if (valid) {
console.log('提交数据:', this.ruleForm)
//
}
})
},
handleChange(value) {
// change
console.log('测量值变化:', value)
async submit() {
this.$refs.ruleFormRef.validate(valid => {
if (valid) {
const res= add()
console.log('提交数据:', this.ruleForm);
//
}
}
}
</script>
});
},
handleChange(value) {
// change
console.log('测量值变化:', value);
},
},
};
</script>

@ -1,15 +1,28 @@
<template>
<div>
<!-- 表格数据 -->
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-del="rowDel" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left="row">
<el-button type="primary" @click="handleAdd">需求申报</el-button>
<el-button type="primary" @click="handleApprove">批量审核</el-button>
</template>
<template #menu-right>
<el-button type="warning" @click="pendingReviewFn()" plain>待审核</el-button>
<el-button type="warning" @click="pendingReviewFn()" :loading="loading">待审核</el-button>
</template>
<template #menu="{ row }">
<el-button type="text" @click="handleView(row)">详情</el-button>
@ -19,7 +32,7 @@
</template>
</avue-crud>
<coating-add-dialog :show-dialog="showDialog" @closeDialog="closeDialog"></coating-add-dialog>
<material-detail :material-dialog="materialDialog" @closeDialog="closeDialog"></material-detail>
<material-detail :material-dialog="materialDialog" @closeDialog="closeDialog" :id="id"></material-detail>
<!-- <add-quantity :add-quantity="addQuantity" @closeDialog="closeDialog"></add-quantity>
<add-dialog :add-dialog="addDialog" @closeDialog="closeDialog"></add-dialog> -->
@ -46,6 +59,12 @@
</template>
<script>
import {
getList,
confirmBatch,
closeBatchs,
removeByIds,
} from '@/api/productionManagement/coatingMaterial';
import coatingAddDialog from '../coatingAddDialog.vue';
import coatingColumnData from '../../js/coatingColumnData';
import materialDetail from '../materialDetail.vue';
@ -56,6 +75,7 @@ export default {
},
data() {
return {
id:null,
searchForm: {},
tabPosition: 'materialRequirements',
loading: false,
@ -108,10 +128,10 @@ export default {
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
column: []
column: [],
},
approveRules: {
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }]
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }],
},
approveDialog: false,
page: {
@ -119,19 +139,28 @@ export default {
currentPage: 1,
total: 0,
},
selectionList: []
}
selectionList: [],
confirmBatchId: null,
};
},
mounted() {
this.option.column = coatingColumnData[this.tabPosition]
this.option.column = coatingColumnData[this.tabPosition];
},
methods: {
//
pendingReviewFn() {
this.$message.success('操作成功')
this.onLoad(this.page, { type: '2' });
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
//
selectionChange(list) {
this.selectionList = list;
@ -139,8 +168,9 @@ export default {
//
handleView(row) {
if (this.tabPosition == 'materialRequirements') {
this.materialDialog = true
}
this.id=row.id
this.materialDialog = true;
}
},
deleteRow(row) {
this.$confirm('确定删除此条数据?', {
@ -148,91 +178,183 @@ export default {
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
const ids = row.id;
removeByIds({ ids }).then(res => {
if (res.code === 200) {
this.$message.success('删除成功');
this.$refs.crud.toggleSelection();
this.onLoad(this.page);
}
});
});
},
closeRow() {
this.$confirm('确定删除此条数据?', {
closeRow(row) {
this.$confirm('确定关闭此条数据?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
})
const ids = row.id;
closeBatchs({ ids }).then(res => {
if (res.code === 200) {
this.$message.success('关闭成功');
this.$refs.crud.toggleSelection();
this.onLoad(this.page);
}
});
});
},
//
handleAdd() {
this.showDialog = true
this.showDialog = true;
},
//
closeDialog() {
this.showDialog = false
this.materialDialog = false
this.addQuantity = false
this.addDialog = false
this.showDialog = false;
this.materialDialog = false;
this.addQuantity = false;
this.addDialog = false;
},
addQuantityClick() {
if (this.selectionList.length == 0) {
this.$message.error('请至少选择一条数据!')
this.$message.error('请至少选择一条数据!');
} else {
this.addQuantity = true
this.addQuantity = true;
}
},
approveRow() {
this.approveDialog = true
approveRow(val) {
this.selectionList.push(val);
this.approveDialog = true;
},
handleApprove() {
if (this.selectionList.length != 0) {
this.approveDialog = true
this.approveDialog = true;
} else {
this.$message.error('请至少选择一条数据!')
this.$message.error('请至少选择一条数据!');
}
},
submitApprove() {
this.$refs.approveForm.validate(valid => {
console.log('valid==============', valid)
console.log('valid==============', valid);
if (valid) {
this.approveDialog = false
const ids = this.selectionList.map(item => item.id).join(',');
confirmBatch({ ...{ ids }, ...this.approveForm }).then(res => {
if (res.code === 200) {
this.$message.success('审核成功');
}
});
this.approveDialog = false;
this.$refs.crud.toggleSelection();
this.onLoad(this.page);
}
})
});
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
onLoad() {
async onLoad(page, params = {}) {
this.loading = true;
this.data = [
{
id: 1,
requiredCode: "001", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 1,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32'
requiredCode: '001',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称22',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 1,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
},
{
id: 2,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 2,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 2,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
},
{
id: 3,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 3,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 3,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
},
{
id: 4,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 4,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 4,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
},
{
id: 5,
requiredCode: "002", workCenter: 1, goodsCode: 'wl_001', goodsName: "物料名称", goldPotassium: 20,
silverPotassium: 30, coefficient: 2, usageAmount: 20, goodsDemandResidue: 20, status: 5,
ordersNumber: 15, createMan: '张三', createTime: '2025-10-20 11:20:32'
requiredCode: '002',
workCenter: 1,
goodsCode: 'wl_001',
goodsName: '物料名称',
goldPotassium: 20,
silverPotassium: 30,
coefficient: 2,
usageAmount: 20,
goodsDemandResidue: 20,
status: 5,
ordersNumber: 15,
createMan: '张三',
createTime: '2025-10-20 11:20:32',
},
]
this.page.total = this.data.length
];
try {
const res = await getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.query)
);
if (res.code) {
this.data = res.data.data.records;
this.page.total = res.data.data.total;
this.selectionClear();
}
} catch (err) {
console.log(err);
}
this.loading = false;
},
}
}
},
};
</script>
<style></style>
<style></style>

@ -1,131 +1,322 @@
<template>
<el-dialog title="详情" append-to-body :modelValue="materialDialog" width="90%" @close="closeDialog" @open="open">
<div style="height: 600px;overflow-y: auto;overflow-x:hidden ;">
<div style="font-weight: 550;margin-bottom: 10px;">物料需求信息</div>
<el-descriptions :column="4" border :label-width="130">
<el-descriptions-item style="width:25%" label="需求编号:">{{ detailForm.requiredCode }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="物料编号:">{{ detailForm.goodsCode }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="物料名称:">{{ detailForm.goodsName }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="相关订单数:">{{ detailForm.ordersNumber }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="物料需求量(克):">{{ detailForm.plateSingleQuotaTotal }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="物料使用量(克):">{{ detailForm.usageAmount }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="物料剩余量(克):">{{ detailForm.goodsDemandResidue }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="银钾系数:">{{ detailForm.coefficient }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="提报人:">{{ detailForm.createUser }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="提报时间:">{{ detailForm.createTime }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="需求状态:">{{ detailForm.statusTitle }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="审批意见:">{{ detailForm.approvalOpinion }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="审批人:">{{ detailForm.approvalUser }}</el-descriptions-item>
<el-descriptions-item style="width:25%" label="审批时间:">{{ detailForm.approvalTime }}</el-descriptions-item>
</el-descriptions>
<div style="margin-top:30px;padding-top: 30px;">
<div style="font-weight: 550;margin-bottom: 10px;">关联订单</div>
<el-table :data="tableData" style="margin-top: 20px;" @selection-change="handleSelectionChange">
<el-table-column label="计划单号" prop="pjYieldOrder.poCode" align="center"></el-table-column>
<el-table-column label="车间订单号" prop="orderWoCode" align="center"></el-table-column>
<el-table-column label="零件号" prop="pjYieldOrder.partCode" align="center"></el-table-column>
<el-table-column label="零件名称" prop="pjYieldOrder.partName" align="center"></el-table-column>
<el-table-column label="物料编码" prop="plateGoodsCode" align="center"></el-table-column>
<el-table-column label="计划下达时间" prop="createTime" align="center" width="170"></el-table-column>
<el-table-column label="生产标识" prop="pjYieldOrder.prodIdent" align="center"></el-table-column>
<el-table-column label="生产数量" prop="pjYieldOrder.poQty" align="center"></el-table-column>
<el-table-column label="物料需求量(克)" prop="plateSingleQuotaTotal" align="center"></el-table-column>
</el-table>
</div>
<el-dialog
title="详情"
append-to-body
:modelValue="materialDialog"
width="90%"
@close="closeDialog"
@open="open"
>
<div style="height: 600px; overflow-y: auto; overflow-x: hidden">
<div style="font-weight: 550; margin-bottom: 10px">物料需求信息</div>
<el-descriptions :column="4" border :label-width="130">
<el-descriptions-item style="width: 25%" label="需求编号:">{{
detailForm.demandCode
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="物料编号:">{{
detailForm.plateGoodsCode
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="物料名称:">{{
detailForm.goodsName
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="相关订单数:">{{
detailForm.ordersNumber
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="物料需求量(克):">{{
detailForm.goodsDemand
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="物料使用量(克):">{{
detailForm.usageAmount
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="物料剩余量(克):">{{
detailForm.surplus
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="银钾系数:">{{
detailForm.coefficient
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="上报银钾:">{{
detailForm.silverPotassium
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="上报银钾剩余量:">{{
detailForm.silverPotassiumResidue
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="提报人:">{{
detailForm.createUser
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="提报时间:">{{
detailForm.createTime
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="需求状态:">{{
detailForm.statusTitle
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="审批意见:">{{
detailForm.approvalMemo
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="审批人:">{{
detailForm.approvalMan
}}</el-descriptions-item>
<el-descriptions-item style="width: 25%" label="审批时间:">{{
detailForm.approvalTime
}}</el-descriptions-item>
</el-descriptions>
<div style="margin-top: 30px; padding-top: 30px">
<div style="font-weight: 550; margin-bottom: 10px">关联订单</div>
<el-table
:data="tableData"
style="margin-top: 20px"
@selection-change="handleSelectionChange"
>
<el-table-column
label="计划单号"
prop="pjYieldOrder.poCode"
align="center"
></el-table-column>
<el-table-column label="车间订单号" prop="orderWoCode" align="center"></el-table-column>
<el-table-column
label="零件号"
prop="pjYieldOrder.partCode"
align="center"
></el-table-column>
<el-table-column
label="零件名称"
prop="pjYieldOrder.partName"
align="center"
></el-table-column>
<el-table-column label="物料编码" prop="plateGoodsCode" align="center"></el-table-column>
<el-table-column
label="计划下达时间"
prop="createTime"
align="center"
width="170"
></el-table-column>
<el-table-column
label="生产标识"
prop="pjYieldOrder.prodIdent"
align="center"
></el-table-column>
<el-table-column
label="生产数量"
prop="pjYieldOrder.poQty"
align="center"
></el-table-column>
<el-table-column
label="物料需求量(克)"
prop="plateSingleQuotaTotal"
align="center"
></el-table-column>
</el-table>
</div>
</div>
</el-dialog>
</el-dialog>
</template>
<script>
import { getOrderMoldPlanCaDeatils } from '@/api/productionManagement/coatingMaterial';
export default {
props:{
materialDialog:{
type: Boolean,
default: false
}
props: {
materialDialog: {
type: Boolean,
default: false,
},
data(){
return{
detailForm:{},
tableData:[]
}
id: {
type: String,
},
mounted(){
},
data() {
return {
detailForm: {},
tableData: [],
};
},
mounted() {},
methods: {
async open() {
// this.detailForm = {
// //
// id: 1,
// demandCode: 'DMD-0001',
// pgrCode: 'PGR-001',
},
methods:{
open(){
this.detailForm = {
requiredCode:"001",workCenter:1,goodsCode:'wl_001',goodsName:"物料名称",goldPotassium:20,
silverPotassium:30,coefficient:2,usageAmount:20,goodsDemandResidue:20,status:1,statusTitle:'审批通过',
ordersNumber:15,createMan:'张三',createTime:'2025-10-20 11:20:32',plateSingleQuotaTotal:'445.32',
approvalOpinion:'XXXXX',usageAmount:'200.32',goodsDemandResidue:'245.00',coefficient:0.54,createUser:"XXX",
createTime:'2023-05-17 10:50:08',approvalTime:'2023-05-22 12:21:32',approvalUser:'XXXXX'
}
this.tableData = [
{
pjYieldOrder:{
poCode:"WO-220245431",
partCode:"21E8-950-1378-H1",
partName:'XXX',
prodIdent:'JII',
poQty:50,
},
orderWoCode:"WO-220245431",
plateGoodsCode:'XXXX(名称)',
createTime:"2023-05-17 10:50:08",
plateSingleQuotaTotal:'120.00'
},
{
pjYieldOrder:{
poCode:"WO-220245432",
partCode:"21E8-950-1378-H1",
partName:'XXX',
prodIdent:'JII',
poQty:50,
},
orderWoCode:"WO-220245432",
plateGoodsCode:'XXXX(名称)',
createTime:"2023-05-17 10:50:08",
plateSingleQuotaTotal:'25.32'
},
{
pjYieldOrder:{
poCode:"WO-220245433",
partCode:"21E8-950-1378-H1",
partName:'XXX',
prodIdent:'JII',
poQty:50,
},
orderWoCode:"WO-220245433",
plateGoodsCode:'XXXX(名称)',
createTime:"2023-05-17 10:50:08",
plateSingleQuotaTotal:'100.00'
},
{
pjYieldOrder:{
poCode:"WO-220245434",
partCode:"21E8-950-1378-H1",
partName:'XXX',
prodIdent:'JII',
poQty:50,
},
orderWoCode:"WO-220245434",
plateGoodsCode:'XXXX(名称)',
createTime:"2023-05-17 10:50:08",
plateSingleQuotaTotal:'200.00'
}
]
},
closeDialog(){
this.$emit('closeDialog');
// // &
// wcId: 100,
// plateGoodsCode: 'PLATE-001',
// goodsBoId: 456,
// coefficientBoId: 789,
// //
// goodsDemand: 445.32,
// declaredQuota: 200.32,
// declaredSilver: 50.0,
// declaredStatus: 2,
// surplus: 245.0,
// silverPotassiumResidue: 10.0,
// //
// silverPotassium: 30.0,
// coefficient: 0.54,
// declaredSilver: 50.0,
// //
// approvalMan: 123,
// approvalUser: '',
// approvalTime: '2023-05-22 12:21:32',
// approvalStatus: 1,
// approvalMemo: '',
// approvalOpinion: '',
// // 使
// requiredCode: '001',
// workCenter: 1,
// goodsCode: 'wl_001',
// goodsName: '',
// ordersNumber: 15,
// createUser: 'XXX',
// createTime: '2025-10-20 11:20:32',
// plateSingleQuotaTotal: '445.32',
// };
// this.tableData = [
// {
// id: 1001,
// demandCode: 'DMD-0001',
// pgrCode: 'PGR-001',
// wcId: 100,
// plateGoodsCode: 'PLATE-001',
// goodsBoId: 456,
// coefficientBoId: 789,
// goodsDemand: 120.0,
// declaredQuota: 50.0,
// declaredSilver: 10.0,
// declaredStatus: 1,
// surplus: 20.0,
// silverPotassium: 5.0,
// silverPotassiumResidue: 2.0,
// coefficient: 0.12,
// approvalMan: 123,
// approvalTime: '2023-05-18 09:00:00',
// approvalStatus: 1,
// approvalMemo: '',
// pjYieldOrder: {
// poCode: 'WO-220245431',
// partCode: '21E8-950-1378-H1',
// partName: 'XXX',
// prodIdent: 'JII',
// poQty: 50,
// },
// orderWoCode: 'WO-220245431',
// createTime: '2023-05-17 10:50:08',
// plateSingleQuotaTotal: '120.00',
// },
// {
// id: 1002,
// demandCode: 'DMD-0002',
// pgrCode: 'PGR-002',
// wcId: 101,
// plateGoodsCode: 'PLATE-002',
// goodsBoId: 457,
// coefficientBoId: 790,
// goodsDemand: 25.32,
// declaredQuota: 10.0,
// declaredSilver: 2.5,
// declaredStatus: 2,
// surplus: 5.0,
// silverPotassium: 1.2,
// silverPotassiumResidue: 0.8,
// coefficient: 0.08,
// approvalMan: 124,
// approvalTime: '2023-05-19 10:00:00',
// approvalStatus: 0,
// approvalMemo: '',
// pjYieldOrder: {
// poCode: 'WO-220245432',
// partCode: '21E8-950-1378-H1',
// partName: 'XXX',
// prodIdent: 'JII',
// poQty: 50,
// },
// orderWoCode: 'WO-220245432',
// createTime: '2023-05-17 10:50:08',
// plateSingleQuotaTotal: '25.32',
// },
// {
// id: 1003,
// demandCode: 'DMD-0003',
// pgrCode: 'PGR-003',
// wcId: 102,
// plateGoodsCode: 'PLATE-003',
// goodsBoId: 458,
// coefficientBoId: 791,
// goodsDemand: 100.0,
// declaredQuota: 40.0,
// declaredSilver: 8.0,
// declaredStatus: 1,
// surplus: 30.0,
// silverPotassium: 3.5,
// silverPotassiumResidue: 1.5,
// coefficient: 0.15,
// approvalMan: 125,
// approvalTime: '2023-05-20 11:00:00',
// approvalStatus: 1,
// approvalMemo: '',
// pjYieldOrder: {
// poCode: 'WO-220245433',
// partCode: '21E8-950-1378-H1',
// partName: 'XXX',
// prodIdent: 'JII',
// poQty: 50,
// },
// orderWoCode: 'WO-220245433',
// createTime: '2023-05-17 10:50:08',
// plateSingleQuotaTotal: '100.00',
// },
// {
// id: 1004,
// demandCode: 'DMD-0004',
// pgrCode: 'PGR-004',
// wcId: 103,
// plateGoodsCode: 'PLATE-004',
// goodsBoId: 459,
// coefficientBoId: 792,
// goodsDemand: 200.0,
// declaredQuota: 150.0,
// declaredSilver: 25.0,
// declaredStatus: 3,
// surplus: 50.0,
// silverPotassium: 6.0,
// silverPotassiumResidue: 4.0,
// coefficient: 0.2,
// approvalMan: 126,
// approvalTime: '2023-05-21 12:00:00',
// approvalStatus: 2,
// approvalMemo: '',
// pjYieldOrder: {
// poCode: 'WO-220245434',
// partCode: '21E8-950-1378-H1',
// partName: 'XXX',
// prodIdent: 'JII',
// poQty: 50,
// },
// orderWoCode: 'WO-220245434',
// createTime: '2023-05-17 10:50:08',
// plateSingleQuotaTotal: '200.00',
// },
// ];
try {
const ref = await getOrderMoldPlanCaDeatils({ id: this.id });
if (res.code == 200) {
this.detailForm = res.data.detailForm;
this.tableData = res.data.list;
}
}
}
} catch (err) {console.log(err)}
},
closeDialog() {
this.$emit('closeDialog');
},
},
};
</script>
<style lang="scss" scoped>
:deep(.is-bordered-content) {
width: 280px
}
</style>
width: 280px;
}
</style>

@ -2,7 +2,7 @@ export default {
'materialRequirements': [
{
label: '需求单号',
prop: 'requiredCode',
prop: 'demandCode',
span: 24,
width: 150,
overflow: true,
@ -20,7 +20,7 @@ export default {
},
{
label: '作业中心',
prop: 'workCenter',
prop: 'wcId',
span: 24,
type: 'select',
width: 150,
@ -44,7 +44,7 @@ export default {
},
{
label: '物料编号',
prop: 'goodsCode',
prop: 'plateGoodsCode',
span: 24,
width: 150,
overflow: true,
@ -112,7 +112,7 @@ export default {
// },
{
label: '物料需求量(克)',
prop: 'silverPotassium',
prop: 'goodsDemand',
span: 24,
width: 150,
overflow: true,
@ -163,7 +163,7 @@ export default {
},
{
label: '剩余量(克)',
prop: 'goodsDemandResidue',
prop: 'surplus',
span: 24,
width: 150,
overflow: true,
@ -259,7 +259,7 @@ export default {
'addRequirements': [
{
label: '需求单号',
prop: 'requiredCode',
prop: 'demandCode',
span: 24,
overflow: true,
search: true,
@ -276,7 +276,7 @@ export default {
},
{
label: '作业中心',
prop: 'workCenter',
prop: 'wcId',
span: 24,
type: 'select',
width: 150,
@ -383,7 +383,7 @@ export default {
},
{
label: '剩余量(克)',
prop: 'saveBoardVal',
prop: 'surplus',
span: 24,
overflow: true,
search: false,
@ -422,7 +422,7 @@ export default {
},
{
label: '创建人',
prop: 'createUser',
prop: 'createMan',
span: 24,
overflow: true,
search: false,
@ -456,7 +456,7 @@ export default {
'assayedContent': [
{
label: '作业中心',
prop: 'workCenter',
prop: 'wcId',
span: 24,
type: 'select',
overflow: true,
@ -479,7 +479,7 @@ export default {
},
{
label: '化验人',
prop: 'assayer',
prop: 'assayMan',
span: 24,
overflow: true,
search: false,

Loading…
Cancel
Save