质量模块及计划管理功能修改

dev-scheduling
jinna 3 months ago
parent 6d4de39606
commit fa43af3bae
  1. 2
      src/api/productionManagement/assayedContent.js
  2. 1
      src/api/productionManagement/coatingMaterial.js
  3. 17
      src/api/qualityManagement/periodicTesting/projectCycle.js
  4. 10
      src/api/qualityManagement/periodicTesting/testProject.js
  5. 6
      src/views/periodicTesting/components/addProjectCycleDialog.vue
  6. 100
      src/views/periodicTesting/projectCycle.vue
  7. 20
      src/views/periodicTesting/testProject.vue
  8. 5
      src/views/periodicTesting/testTask.vue
  9. 1
      src/views/productionDisposition/index.vue
  10. 7
      src/views/productionManagement/components/coatingAddDialog.vue
  11. 10
      src/views/productionManagement/components/coatingMater/assayedContent.vue
  12. 32
      src/views/productionManagement/components/coatingMater/assayedContentDialog.vue
  13. 50
      src/views/productionManagement/components/coatingMater/materialRequirements.vue
  14. 30
      src/views/productionManagement/js/coatingColumnData.js
  15. 3
      src/views/productionTesting/InspectionTemplate.vue
  16. 2
      src/views/productionTesting/components/sametankView.vue
  17. 2
      src/views/productionTesting/components/trialItem.vue
  18. 2
      src/views/productionTesting/components/trialStandard.vue
  19. 4
      src/views/qualityManagement/reviewFormMess/index.vue

@ -29,7 +29,7 @@ export const getassayContentDeatils = (params) => {
// 作业中心下拉接口
export const getWorkCenter = () =>{
return request({
url:'/api/blade-desk/BA/WorkCenter/listForSelect',
url:'/api/blade-desk/bsWorkCenter/getList',
method:'get'
})
}

@ -78,6 +78,7 @@ export const getAddRequireList = params => {
});
};
// 作业中心下拉
export const getWorkCenter = () =>{
return request({
url:'/api/blade-desk/bsWorkCenter/getList',

@ -10,15 +10,11 @@ export const getProjectList = (params) => {
};
// 获取列表数据 bsCraftAbility/queryAllCa
export const getList = (current, size, params) => {
export const getList = params => {
return request({
url: '/blade-desk/QA/CycleTest/list',
method: 'get',
params: {
...params,
current,
size,
},
params
});
};
@ -113,4 +109,13 @@ export const setCycleBat = (data) =>{
})
}
// 导出
export const exportExcel = (params) =>{
return request({
url:'/api/blade-desk/QA/CycleTest/export-excel',
method:'get',
params,
responseType: "blob",
})
}

@ -61,4 +61,12 @@ export const getStandardList = () =>{
})
}
// 导出接口
export const exportExcel = (params) =>{
return request({
url:'/api/blade-desk/QA/CycleTestItem/export-excel',
method:'get',
params,
responseType: "blob",
})
}

@ -222,7 +222,7 @@
<div style="font-weight: 550; margin-bottom: 20px">检测信息</div>
<el-row :gutter="20" style="padding: 5px 0">
<el-col :span="6"
>镀种{{projectForm.plateName}}</el-col
>镀种{{projectForm.plateNames}}</el-col
>
<el-col :span="6">试验件{{ projectForm.testTypeName }}</el-col>
<el-col :span="6"><span>试验项目{{projectForm.cycleTestItemName}}</span></el-col>
@ -359,12 +359,14 @@ export default {
},
getRowDetail(id){
getDetail(id).then(res =>{
this.projectForm = {
...res.data.data,
isPutOff:res.data.data.isPutOff == 1 ? true : false,
testType:res.data.data.testType != '' ? res.data.data.testType + '' : '',
processUserIds:res.data.data.processUserId,
jobType:res.data.data.jobType == -1 ? '' : res.data.data.jobType
jobType:res.data.data.jobType == -1 ? '' : res.data.data.jobType,
plateIds:res.data.data.plateIds.split(','),
}
console.log('job---------',this.projectForm.jobType)
if(this.projectForm.jobType == 1){

@ -29,6 +29,7 @@
<el-button type="success" @click="handleUser">人员设置</el-button>
<el-button type="primary" @click="handleCycle">批量设置周期</el-button>
<el-button type="warning" @click="handleExport" plain>导出</el-button>
</template>
<template #menu-right>
<el-button type="primary" @click="handleImport">导入</el-button>
@ -184,7 +185,10 @@
</template>
<script>
import { getList, remove,issueTask,getUserList,setUser,setCycleBat } from '@/api/qualityManagement/periodicTesting/projectCycle.js';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { downloadXls } from '@/utils/util';
import { getList, remove,issueTask,getUserList,setUser,setCycleBat,exportExcel } from '@/api/qualityManagement/periodicTesting/projectCycle.js';
import addProjectCycleDialog from './components/addProjectCycleDialog.vue'
import {dateFormat} from '@/utils/date'
import basicImport from '@/components/basic-import/main.vue'
@ -234,11 +238,13 @@ export default {
cycleYearTags:[],
option: {
tip: false,
align: 'center',
size: 'medium',
height: 'auto',
calcHeight: 32,
columnSort: true,
searchShow: true,
searchMenuSpan: 18,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
@ -260,14 +266,14 @@ export default {
dialogWidth: 600,
dialogClickModal: false,
searchEnter: true,
filterBtn: true,
// filterBtn: true,
searchShowBtn: false,
excelBtn: true,
// excelBtn: true,
showOverflowTooltip: true,
align: 'center',
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
searchGutter:24,
searchSpan:6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
@ -280,6 +286,21 @@ export default {
filter: true,
width: 150,
},
{
label: '镀种',
prop: 'plateId',
type: 'select',
hide: true,
search: true,
sortable: true,
filter: true,
width: 150,
dicUrl:"/api/blade-desk/BA/Plating/listForSelectCycleTest",
props:{
label:'plating',
value:'id'
}
},
{
label: '试验项目',
prop: 'cycleTestItemName',
@ -287,12 +308,13 @@ export default {
type: 'select',
sortable: true,
filter: true,
width: 200,
},
{
label: '试验条件',
prop: 'cycleTestItemCondition',
search: false,
search: true,
sortable: true,
filter: true,
width: 200,
@ -300,17 +322,23 @@ export default {
{
label: '试验标准',
prop: 'cycleTestStandardName',
search: false,
search: true,
sortable: true,
width: 200,
},
{
label: '试验件',
prop: 'testTypeName',
search: false,
prop: 'testType',
search: true,
sortable: true,
filter: true,
width: 120,
type: 'select',
dicUrl:"/blade-system/dict/dictionary?code=testPiece",
props:{
label: 'dictValue',
value: 'dictKey'
}
},
{
label: '试验件材料',
@ -322,11 +350,17 @@ export default {
},
{
label: '工艺员',
prop: 'processUserName',
search: false,
prop: 'processUserId',
search: true,
sortable: true,
filter: true,
width: 160,
type: 'select',
dicUrl:'/blade-system/user/list-process-engineer',
props:{
label:"name",
value:"id"
}
},
{
label: '试验周期',
@ -336,6 +370,20 @@ export default {
filter: true,
width: 120,
},
{
label: '试验周期',
prop: 'jobTypes',
type: 'select',
search: true,
sortable: true,
filter: true,
width: 120,
dicData:[
{ label:"周",value:1 },
{ label:"月",value:2 },
{ label:"年",value:3 },
]
},
{
label: '最小试验数量',
prop: 'minDoTestCount',
@ -348,6 +396,7 @@ export default {
label: '试验项目',
prop: 'cycleTestItemId',
search: true,
searchOrder: 1,
hide:true,
type: 'select',
sortable: true,
@ -479,6 +528,20 @@ export default {
this.cycleDialog = true
}
},
//
handleExport(){
this.$confirm('是否导出周期性试验任务数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
NProgress.start();
exportExcel(this.query).then(res =>{
downloadXls(res.data, `试验周期表${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
NProgress.done();
})
})
},
//
handleDelete(row) {
this.$confirm('确定删除此条数据?', {
@ -661,8 +724,19 @@ export default {
},
onLoad(page, params = {}) {
this.loading = true;
let param = {
...this.query,
jobType:this.query.jobTypes
}
const { jobTypes, ...validData } = param;
console.log('validData----------',validData)
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
getList({
current:this.page.currentPage,
size:this.page.pageSize,
...validData
}).then(res => {
this.data = res.data.data.records;
this.loading = false;

@ -19,6 +19,7 @@
<template #menu-left>
<el-button type="primary" @click="handleAdd">新增</el-button>
<el-button type="danger" @click="handleDeletes">删除</el-button>
<el-button type="warning" @click="handleExport" plain>导出</el-button>
</template>
<template #menu-right>
<el-button type="primary" @click="handleImport">导入</el-button>
@ -53,9 +54,12 @@
</template>
<script>
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { downloadXls } from '@/utils/util';
import addTestProjectDialog from './components/addTestProjectDialog.vue';
import { getList, remove} from '@/api/qualityManagement/periodicTesting/testProject.js';
import { getList, remove,exportExcel} from '@/api/qualityManagement/periodicTesting/testProject.js';
import basicImport from '@/components/basic-import/main.vue'
export default {
@ -244,6 +248,20 @@ export default {
});
}
},
//
handleExport(){
this.$confirm('是否导出周期性试验项目数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
NProgress.start();
exportExcel({...this.query}).then(res =>{
downloadXls(res.data, `试验项目表${this.$dayjs().format('YYYY-MM-DD')}.xlsx`);
NProgress.done();
})
})
},
//
handleImport() {
this.isShowImport = true

@ -199,6 +199,7 @@ export default {
align: 'center',
size: 'medium',
height:'auto',
calcHeight: 32,
searchLabelWidth:120,
simplePage: true,
searchShow: true,
@ -220,9 +221,9 @@ export default {
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
filterBtn: false,
searchShowBtn: false,
excelBtn: true,
excelBtn: false,
index: false,
showOverflowTooltip: true,
searchLabelPosition:'left',

@ -115,6 +115,7 @@ export default {
option: {
tip: false,
align: 'center',
calcHeight:32,
height: 'auto',
simplePage: true,
searchShow: true,

@ -23,7 +23,7 @@
</el-form-item> -->
</el-form>
<el-tag type="primary" style="width: 100%; display: block; line-height: 22px"
>选择XX个订单 合计物料需求量711.00</el-tag
>选择{{selectionList.length}}个订单 合计物料需求量{{this.totalNum}}</el-tag
>
<div style="border: 1px solid #ccc; padding: 20px 0px">
<div>
@ -184,8 +184,9 @@ export default {
strarr.push(Number(this.selectionList[i]['plateSingleQuotaTotal']));
}
var total = eval(strarr.join('+'));
this.totalNum = total;
this.submitForm.goodsQuantity = total;
this.totalNum = total ? total : 0;
console.log('total-----------',total)
this.submitForm.goodsQuantity = total ? total : 0;
},
closeDialog() {
this.$emit('closeDialog');

@ -30,6 +30,8 @@
<assayedContentDialog
v-if="isAddOpen"
:showDialog="isAddOpen"
:id="id"
:type="viewType"
@closeDialog="closeDialog"
></assayedContentDialog>
</div>
@ -55,6 +57,7 @@ export default {
loading: false,
data: [],
form: {},
viewType:"",
addDialog: false,
showDialog: false,
materialDialog: false,
@ -228,8 +231,9 @@ export default {
},
//
handleView(row) {
this.id=row.id
this.addDialog = true;
this.viewType = "view"
this.id = row.id
this.isAddOpen = true;
},
deleteRow(row) {
this.$confirm('确定删除此条数据?', {
@ -247,6 +251,8 @@ export default {
},
//
handleAdd() {
this.id = ''
this.viewType = "add"
this.isAddOpen = true;
},
//

@ -1,6 +1,6 @@
<template>
<el-dialog
title="含量检测"
:title="type == 'add' ? '含量检测' : '详情'"
append-to-body
:modelValue="openShow"
width="40%"
@ -8,7 +8,7 @@
>
<!-- 合并为单个表单避免ref冲突 -->
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="90">
<el-row>
<el-row v-if="type == 'add'">
<el-col :span="12">
<el-form-item label="作业中心" prop="wcId">
<el-select v-model="ruleForm.wcId" placeholder="请选择" @change="changeWork">
@ -36,9 +36,9 @@
</el-row>
<el-table :data="ruleForm.tableData" style="width: 100%">
<el-table-column type="index" label="序号" width="180" />
<el-table-column prop="slotName" label="作业槽" width="180" />
<el-table-column prop="testVal" label="测量值">
<el-table-column type="index" align="center" label="序号" width="80" />
<el-table-column prop="slotName" align="center" label="作业槽" />
<el-table-column prop="testVal" align="center" label="测量值">
<template #header>
<span><i style="color: red">*</i>测量值</span>
</template>
@ -52,6 +52,7 @@
v-model="scope.row.testVal"
controls-position="right"
@change="handleChange"
:disabled="type == 'view'"
style="margin-top:18px;"
/>
</el-form-item>
@ -63,20 +64,28 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
<el-button type="primary" v-if="type == 'add'" @click="submit"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { add,getWorkCenter,getTank } from '@/api/productionManagement/assayedContent';
import { add,getWorkCenter,getTank,getassayContentDeatils } from '@/api/productionManagement/assayedContent';
export default {
props: {
showDialog: {
type: Boolean,
default: false,
},
type:{
type: String,
default: '',
},
id:{
type: String,
default: '',
}
},
data() {
return {
@ -97,8 +106,17 @@ export default {
this.openShow = this.showDialog;
this.ruleForm.tableData = []
this.getWorkCenterList()
if(this.id && this.id != ""){
this.getDetail()
}
},
methods: {
getDetail(){
getassayContentDeatils({id:this.id}).then(res =>{
console.log('res----------',res)
this.ruleForm.tableData = res.data.data.detailList
})
},
//
getWorkCenterList(){
getWorkCenter().then(res =>{

@ -2,6 +2,7 @@
<div>
<!-- 表格数据 -->
<avue-crud
:height="460"
:option="option"
:table-loading="loading"
:data="data"
@ -26,9 +27,9 @@
</template>
<template #menu="{ row }">
<el-button type="text" @click="handleView(row)">详情</el-button>
<el-button type="text" @click="closeRow(row)" v-show="row.status != '3'">关闭</el-button>
<el-button type="text" v-show="row.status == '3'" @click="deleteRow">删除</el-button>
<el-button type="text" v-show="row.status == '1'" @click="approveRow(row)">审核</el-button>
<el-button type="text" @click="closeRow(row)" v-show="row.status != 10006 && (row.status == 10000 || row.status == 10005)">关闭</el-button>
<el-button type="text" v-show="row.status == 10006 || row.status == 10000 || row.status == 10005" @click="deleteRow">删除</el-button>
<el-button type="text" v-show="row.status == 10000" @click="approveRow(row)">审核</el-button>
</template>
</avue-crud>
<coating-add-dialog :show-dialog="showDialog" @closeDialog="closeDialog"></coating-add-dialog>
@ -36,16 +37,16 @@
<!-- <add-quantity :add-quantity="addQuantity" @closeDialog="closeDialog"></add-quantity>
<add-dialog :add-dialog="addDialog" @closeDialog="closeDialog"></add-dialog> -->
<el-dialog append-to-body width="550px" title="审" v-model="approveDialog">
<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">
<el-radio-group v-model="approveForm.approveREsult" @input="changeType">
<el-form-item label="审核结果" prop="approvalStatus">
<el-radio-group v-model="approveForm.approvalStatus" @input="changeType">
<el-radio :label="1">审批通过</el-radio>
<el-radio :label="0">审批不通过</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="审意见" prop="approvalOpinion">
<el-input type="textarea" v-model="approveForm.approvalOpinion"></el-input>
<el-form-item label="审意见" prop="approvalMemo">
<el-input type="textarea" v-model="approveForm.approvalMemo"></el-input>
</el-form-item>
</el-form>
<template #footer>
@ -132,7 +133,8 @@ export default {
column: [],
},
approveRules: {
approveREsult: [{ required: true, message: '请选择审批结果', trigger: 'blur' }],
approvalStatus: [{ required: true, message: '请选择审核结果', trigger: 'blur' }],
approvalMemo: [{ required: true, message: '请输入审核意见', trigger: 'blur' }],
},
approveDialog: false,
page: {
@ -224,11 +226,17 @@ export default {
}
},
approveRow(val) {
this.selectionList = []
this.selectionList.push(val);
this.approveDialog = true;
},
handleApprove() {
if (this.selectionList.length != 0) {
let tmp = this.selectionList.find(item => item.status != 10000)
if(tmp){
this.$message.error("请选择状态为【待审核】的数据")
return
}
this.approveDialog = true;
} else {
this.$message.error('请至少选择一条数据!');
@ -236,17 +244,27 @@ export default {
},
submitApprove() {
this.$refs.approveForm.validate(valid => {
console.log('valid==============', valid);
if (valid) {
const ids = this.selectionList.map(item => item.id).join(',');
confirmBatch({ ...{ ids }, ...this.approveForm }).then(res => {
if (res.code === 200) {
confirmBatch({
ids:ids,
...this.approveForm
}).then(res =>{
if(res.data.code == 200){
this.$message.success('审核成功');
this.approveDialog = false;
this.selectionList = []
this.onLoad()
}
});
this.approveDialog = false;
this.$refs.crud.toggleSelection();
this.onLoad(this.page);
})
// confirmBatch({ ...{ ids }, ...this.approveForm }).then(res => {
// if (res.code === 200) {
// this.$message.success('');
// }
// });
// this.approveDialog = false;
// this.$refs.crud.toggleSelection();
// this.onLoad(this.page);
}
});
},

@ -197,11 +197,18 @@ export default {
},
],
dicData: [
{ label: '待审核', value: '1' },
{ label: '审核不通过', value: '2' },
{ label: '已关闭', value: '3' },
{ label: '审核通过', value: '4' },
{ label: '已过期', value: '5' },
// { label: '待审核', value: '1' },
// { label: '审核不通过', value: '2' },
// { label: '已关闭', value: '3' },
// { label: '审核通过', value: '4' },
// { label: '已过期', value: '5' },
{ label: '待审核', value: 10000 },
{ label: '审核通过', value: 10001 },
{ label: "使用中", value:10002},
{ label: '审核不通过', value: 10005 },
{ label: '已完成',value:10004},
{ label: '已超期', value: 10003 },
{ label: '已关闭', value: 10006 },
]
},
{
@ -415,9 +422,16 @@ export default {
},
],
dicData: [
{ label: '待领取', value: 1 },
{ label: '已领取', value: 2 },
{ label: '已过期', value: 3 },
// { label: '待领取', value: 1 },
// { label: '已领取', value: 2 },
// { label: '已过期', value: 3 },
{ label: '待审核', value: 10000 },
{ label: '审核通过', value: 10001 },
{ label: "使用中", value:10002},
{ label: '审核不通过', value: 10005 },
{ label: '已完成',value:10004},
{ label: '已超期', value: 10003 },
{ label: '已关闭', value: 10006 },
]
},
{

@ -165,9 +165,10 @@ export default {
setData:{},
option:{
tip: false,
height: 'auto',
calcHeight: 32,
align: 'center',
size: 'medium',
height:'auto',
searchLabelWidth:120,
simplePage: true,
searchShow: true,

@ -1,5 +1,5 @@
<template>
<el-dialog title="查看" append-to-body :modelValue="openShow" width="80%" @close="closeDialog">
<el-dialog title="查看" append-to-body :modelValue="openShow" width="80%" @close="closeDialog">
<div style="display: flex; align-items: center; justify-content: space-between">
<el-descriptions title="订单信息" :column="5" border style="width: 100%" :label-width="160">
<el-descriptions-item label="车间订单号" class="fixed-width-item">{{

@ -1,6 +1,6 @@
<template>
<div>
<avue-crud :option="option" v-model:search="search" :table-loading="loading" :data="data" v-model:page="page" :before-open="beforeOpen"
<avue-crud :height="460" :option="option" v-model:search="search" :table-loading="loading" :data="data" v-model:page="page" :before-open="beforeOpen"
v-model="form" ref="crud" @row-update="rowUpdate"
@search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">

@ -1,6 +1,6 @@
<template>
<div>
<avue-crud :option="option" v-model:search="search" :table-loading="loading" :data="data" v-model:page="page"
<avue-crud :height="460" :option="option" v-model:search="search" :table-loading="loading" :data="data" v-model:page="page"
v-model="form" ref="crud" @row-update="rowUpdate"
@search-change="searchChange" @search-reset="searchReset"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">

@ -3,7 +3,7 @@
<basic-container>
<el-tabs v-model="tabPosition" class="demo-tabs" @tab-change="tabPositionChange">
<el-tab-pane label="erp审理" name="erpHear">
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
<avue-crud :height="460" :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">
@ -22,7 +22,7 @@
</avue-crud>
</el-tab-pane>
<el-tab-pane label="内部审理" name="insideHear">
<avue-crud :option="insideOption" :table-loading="loading" :data="insideData" v-model="form" v-model:page="insidePage" ref="crud"
<avue-crud :height="460" :option="insideOption" :table-loading="loading" :data="insideData" v-model="form" v-model:page="insidePage" 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">

Loading…
Cancel
Save