parent
93aa57e0a5
commit
36dde39630
19 changed files with 1189 additions and 584 deletions
@ -1,73 +1,71 @@ |
||||
<template> |
||||
<el-dialog title="审核" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> |
||||
<avue-form :option="option"></avue-form> |
||||
<el-dialog title="审核" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> |
||||
<avue-form :option="option"></avue-form> |
||||
|
||||
<template #footer> |
||||
<span class="dialog-footer"> |
||||
<el-button type="danger" @click="approveDialog = false">不通过</el-button> |
||||
<el-button type="primary" @click="submitApprove">通过</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> |
||||
export default { |
||||
props: { |
||||
showDialog: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
props: { |
||||
showDialog: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
data() { |
||||
return { |
||||
openShow: false, |
||||
option: { |
||||
submitBtn: false, |
||||
emptyBtn: false, |
||||
column: [ |
||||
{ |
||||
label: '审批结果', |
||||
prop: 'input', |
||||
span: 24, |
||||
type: 'radio', |
||||
dicData: [ |
||||
{ label: '审批通过', value: 0 }, |
||||
{ label: '审批不通过', value: 1 }, |
||||
], |
||||
rules: [ |
||||
{ required: true, message: '请输入姓名', trigger: 'blur' } |
||||
] |
||||
}, |
||||
{ |
||||
label: '驳回原因', |
||||
prop: 'input2', |
||||
// type: 'select', |
||||
type:'textarea', |
||||
span: 24, |
||||
// dicData: [ |
||||
// { |
||||
// label: '不需要结算', |
||||
// value: '1', |
||||
// }, |
||||
// { |
||||
// label: '基础数据有误', |
||||
// value: '2', |
||||
// } |
||||
// ] |
||||
} |
||||
] |
||||
} |
||||
} |
||||
}, |
||||
data() { |
||||
return { |
||||
openShow: false, |
||||
option: { |
||||
submitBtn: false, |
||||
emptyBtn: false, |
||||
column: [ |
||||
{ |
||||
label: '审批结果', |
||||
prop: 'input', |
||||
span: 24, |
||||
type: 'radio', |
||||
dicData: [ |
||||
{ label: '审批通过', value: 0 }, |
||||
{ label: '审批不通过', value: 1 }, |
||||
], |
||||
rules: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
||||
}, |
||||
{ |
||||
label: '驳回原因', |
||||
prop: 'input2', |
||||
// type: 'select', |
||||
type: 'textarea', |
||||
span: 24, |
||||
// dicData: [ |
||||
// { |
||||
// label: '不需要结算', |
||||
// value: '1', |
||||
// }, |
||||
// { |
||||
// label: '基础数据有误', |
||||
// value: '2', |
||||
// } |
||||
// ] |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog; |
||||
}, |
||||
methods: { |
||||
closeDialog() { |
||||
this.openShow = false; |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog |
||||
}, |
||||
methods: { |
||||
closeDialog() { |
||||
this.openShow = false |
||||
this.$emit('closeDialog'); |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped></style> |
||||
<style lang="scss" scoped></style> |
||||
|
||||
@ -0,0 +1,304 @@ |
||||
<template> |
||||
<el-dialog title="新增" append-to-body :modelValue="openShow" width="70%" @close="closeDialog"> |
||||
<div style="margin-bottom: 12px" v-if="moldAddMore"> |
||||
<el-button type="primary" @click="addTable">插入一行</el-button> |
||||
<el-button type="danger" @click="delTable">删除选中行</el-button> |
||||
</div> |
||||
|
||||
<!-- 单个 Form 包裹整个表格 --> |
||||
<el-form ref="tableForm" :model="form" :rules="formRules" label-width="0px"> |
||||
<!-- 全局错误提示 --> |
||||
<div v-if="formError" class="error-message" style="color: #f56c6c; margin-bottom: 10px"> |
||||
{{ formError }} |
||||
</div> |
||||
|
||||
<el-table :data="form.tableData" @select="selectChange" border> |
||||
<el-table-column type="selection" width="55"></el-table-column> |
||||
|
||||
<!-- 作业中心(绑定数组字段) --> |
||||
<el-table-column align="center" label="作业中心" width="200"> |
||||
<template #header> |
||||
<span><i style="color: red">*</i>作业中心</span> |
||||
</template> |
||||
<template #default="scope"> |
||||
<!-- prop 格式:数组名[索引].字段名 --> |
||||
<el-form-item :prop="`tableData[${scope.$index}].wcId`" :rules="formRules.wcId"> |
||||
<el-select v-model="scope.row.wcId" placeholder="请选择" style="width: 100%"> |
||||
<el-option |
||||
v-for="item in wcData" |
||||
:key="item.id" |
||||
:value="item.id" |
||||
:label="item.wcName" |
||||
></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</template> |
||||
</el-table-column> |
||||
|
||||
<!-- 设备检查项/槽号槽名 --> |
||||
<el-table-column |
||||
align="center" |
||||
label="槽号槽名" |
||||
width="200" |
||||
> |
||||
<template #header> |
||||
<span |
||||
><i style="color: red">*</i |
||||
>槽号槽名</span |
||||
> |
||||
</template> |
||||
<template #default="scope"> |
||||
<el-form-item :prop="`tableData[${scope.$index}].batchNo`" :rules="formRules.batchNo"> |
||||
|
||||
<el-select |
||||
v-model="scope.row.batchNo" |
||||
placeholder="请选择" |
||||
style="width: 100%" |
||||
> |
||||
<el-option label="#21" value="1"></el-option> |
||||
<el-option label="11" value="11"></el-option> |
||||
<el-option label="#22" value="3"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</template> |
||||
</el-table-column> |
||||
|
||||
<!-- 添加量 --> |
||||
<el-table-column align="center" label="添加量"> |
||||
<template #header> |
||||
<span><i style="color: red">*</i>添加量</span> |
||||
</template> |
||||
<template #default="scope"> |
||||
<el-form-item :prop="`tableData[${scope.$index}].addValue`" :rules="formRules.addValue"> |
||||
<el-input |
||||
v-model="scope.row.addValue" |
||||
placeholder="请输入" |
||||
style="width: 100%" |
||||
></el-input> |
||||
</el-form-item> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column align="center" label="添加日期" prop="addTime"> |
||||
<template #header> |
||||
<span><i style="color: red">*</i>添加日期</span> |
||||
</template> |
||||
<template #default="scope"> |
||||
<el-form-item :prop="`tableData[${scope.$index}].addValue`" :rules="formRules.addTime"> |
||||
<el-date-picker |
||||
v-model="scope.row.addTime" |
||||
type="datetime" |
||||
placeholder="选择日期时间" |
||||
> |
||||
</el-date-picker> |
||||
</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="submitForm">确 定</el-button> |
||||
</span> |
||||
</template> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import { getWorkCenterList } from '@/api/processManagement/addQuantity.js'; |
||||
// import { submitBatchData } from '@/api/processManagement/periodical.js'; // 实际提交接口 |
||||
|
||||
export default { |
||||
props: { |
||||
showDialog: { type: Boolean, default: false }, |
||||
moldAddMore: { type: Boolean, default: false }, |
||||
tabPosition: { type: String, default: '' }, |
||||
}, |
||||
data() { |
||||
return { |
||||
openShow: false, |
||||
wcData: [], |
||||
formError: '', // 全局错误提示 |
||||
|
||||
// 单个表单模型:包含表格所有行数据 |
||||
form: { |
||||
tableData: [], // 表格数据数组(直接绑定到 Form 模型) |
||||
}, |
||||
|
||||
// 统一校验规则:支持数组项校验 |
||||
formRules: { |
||||
// 表格数据数组的整体校验(可选:如最少1行数据) |
||||
tableData: [ |
||||
{ |
||||
required: true, |
||||
message: '请至少添加一行数据', |
||||
trigger: 'submit', |
||||
type: 'array', // 明确类型为数组 |
||||
}, |
||||
{ |
||||
validator: (rule, value, callback) => { |
||||
if (value.length === 0) { |
||||
callback(new Error('请至少添加一行数据')); |
||||
} else { |
||||
callback(); |
||||
} |
||||
}, |
||||
trigger: 'submit', |
||||
}, |
||||
], |
||||
|
||||
// 数组中每一项的 wcId 字段校验 |
||||
wcId: [{ required: true, message: '请选择作业中心', trigger: ['change', 'submit'] }], |
||||
|
||||
// 数组中每一项的 batchNo 字段校验 |
||||
batchNo: [ |
||||
{ |
||||
required: true, |
||||
message: `请${this.tabPosition === 'bathInspection' ? '选择' : '输入'}${ |
||||
this.tabPosition === 'bathInspection' ? '槽号槽名' : '设备检查项' |
||||
}`, |
||||
trigger: ['change', 'submit'], |
||||
}, |
||||
], |
||||
|
||||
// 数组中每一项的 preserveContent 字段校验 |
||||
addTime: [ |
||||
{ required: true, message: '请选择', trigger: ['blur', 'submit'] }, |
||||
], |
||||
addValue: [ |
||||
{ required: true, message: '请输入', trigger: ['blur', 'submit'] }, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog; |
||||
this.getWorkCenterList(); |
||||
// 初始添加一行(可选) |
||||
if (this.moldAddMore && this.form.tableData.length === 0) { |
||||
this.addTable(); |
||||
} |
||||
}, |
||||
methods: { |
||||
getWorkCenterList() { |
||||
getWorkCenterList().then(res => { |
||||
this.wcData = res.data.data || []; |
||||
}); |
||||
}, |
||||
|
||||
selectChange(list, row) { |
||||
row._select = !row._select; |
||||
}, |
||||
|
||||
// 新增一行(直接push到表单模型的 tableData 中) |
||||
addTable() { |
||||
this.form.tableData.push({ |
||||
_select: false, // 选择状态 |
||||
wcId: '', // 作业中心ID |
||||
batchNo: '', // 槽号/检查项 |
||||
preserveContent: '', // 维护内容 |
||||
}); |
||||
}, |
||||
|
||||
// 删除选中行 |
||||
delTable() { |
||||
this.form.tableData = this.form.tableData.filter(row => !row._select); |
||||
}, |
||||
|
||||
closeDialog() { |
||||
this.openShow = false; |
||||
this.$emit('closeDialog'); |
||||
// 重置表单 |
||||
this.form.tableData = []; |
||||
this.formError = ''; |
||||
this.$refs.tableForm?.resetFields(); |
||||
}, |
||||
|
||||
// 提交表单(单次校验所有行) |
||||
submitForm() { |
||||
this.formError = ''; |
||||
|
||||
// 调用单个 Form 的校验方法 |
||||
this.$refs.tableForm.validate((isValid, invalidFields) => { |
||||
if (!isValid) { |
||||
// 校验失败:显示提示并滚动到第一个错误字段 |
||||
this.formError = '存在未完善的字段,请检查表格中的红色提示'; |
||||
|
||||
this.$nextTick(() => { |
||||
// 找到第一个错误字段并滚动到视图 |
||||
const firstError = document.querySelector('.el-form-item.is-error'); |
||||
if (firstError) { |
||||
firstError.scrollIntoView({ behavior: 'smooth', block: 'center' }); |
||||
} |
||||
}); |
||||
return; |
||||
} |
||||
|
||||
// 校验通过:准备提交数据(过滤无用字段) |
||||
const submitData = this.form.tableData.map(row => { |
||||
const { _select, ...validData } = row; // 剔除选择状态字段 |
||||
return validData; |
||||
}); |
||||
|
||||
// 调用接口提交(实际项目替换) |
||||
try { |
||||
// const res = await submitBatchData(submitData); |
||||
// if (res.code === 200) { |
||||
// this.$message.success('提交成功'); |
||||
// this.closeDialog(); |
||||
// this.$emit('submitSuccess', submitData); |
||||
// } else { |
||||
// this.$message.error(res.msg || '提交失败'); |
||||
// } |
||||
|
||||
// 演示用 |
||||
this.$message.success('提交成功'); |
||||
this.closeDialog(); |
||||
this.$emit('submitSuccess', submitData); |
||||
} catch (err) { |
||||
this.$message.error('网络错误,请稍后重试'); |
||||
console.error('提交失败:', err); |
||||
} |
||||
}); |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
// 优化表单字段样式 |
||||
:deep(.el-table .el-form-item) { |
||||
margin-bottom: 0; // 去掉默认边距 |
||||
} |
||||
|
||||
// 错误提示样式优化 |
||||
:deep(.el-form-item__error) { |
||||
font-size: 12px; |
||||
white-space: nowrap; |
||||
z-index: 10; |
||||
background: #fff; |
||||
padding: 2px 4px; |
||||
border: 1px solid #f56c6c; |
||||
border-radius: 4px; |
||||
} |
||||
|
||||
// 表格行高适配 textarea |
||||
.el-table__row { |
||||
height: 80px !important; |
||||
} |
||||
|
||||
.el-table__cell { |
||||
vertical-align: middle !important; |
||||
} |
||||
|
||||
.error-message { |
||||
font-size: 14px; |
||||
line-height: 1.5; |
||||
} |
||||
:deep(.el-table .el-table__cell) { |
||||
height: 50px !important; |
||||
padding: 0 !important; |
||||
line-height: 50px !important; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,90 @@ |
||||
<template> |
||||
<el-dialog title="审核" append-to-body :modelValue="showAudit" width="80%" @close="closeDialog"> |
||||
<div style="margin-bottom: 10px; display: flex; align-items: center"> |
||||
<div style="display: flex; align-items: center; margin-right: 10px"> |
||||
<div style="width: 100px">审核结果:</div> |
||||
<el-radio v-model="auditStatus" :label="1">通过</el-radio> |
||||
<el-radio v-model="auditStatus" :label="2">不通过</el-radio> |
||||
</div> |
||||
<div style="display: flex; align-items: center; margin-right: 10px"> |
||||
<div style="width: 100px">审核意见:</div> |
||||
<el-input type="textarea" v-model="auditDescribe"></el-input> |
||||
</div> |
||||
<el-button type="primary" @click="handleSet">批量设置</el-button> |
||||
<el-button type="primary" @click="auditValue">保存</el-button> |
||||
</div> |
||||
<el-table :data="auditData"> |
||||
<el-table-column |
||||
align="center" |
||||
label="作业中心" |
||||
prop="dsBatchPreservePlan.bsWorkCenter.wcName" |
||||
></el-table-column> |
||||
<el-table-column |
||||
align="center" |
||||
label="作业槽" |
||||
prop="dsBatchPreservePlan.batchNo" |
||||
></el-table-column> |
||||
<el-table-column |
||||
align="center" |
||||
label="维护内容" |
||||
prop="dsBatchPreservePlan.preserveContent" |
||||
></el-table-column> |
||||
<el-table-column align="center" label="合格/不合格" prop="qualifiedTitle"> </el-table-column> |
||||
<el-table-column align="center" label="添加量/实测值" prop="actualValue"></el-table-column> |
||||
<el-table-column align="center" label="审核结果" prop="auditStatus"> |
||||
<template #default="scope"> |
||||
<el-radio v-model="scope.row.auditStatus" :label="1">通过</el-radio> |
||||
<el-radio v-model="scope.row.auditStatus" :label="2">不通过</el-radio> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column align="center" label="审核意见" prop="auditDescribe"> |
||||
<template #default="scope"> |
||||
<el-input type="textarea" v-model="scope.row.auditDescribe"></el-input> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import { dsBatchReview } from '@/api/processManagement/bathRefineTask.js'; |
||||
export default { |
||||
props: { |
||||
showAudit: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
auditData: { |
||||
type: Object, |
||||
default: [], |
||||
}, |
||||
}, |
||||
data() { |
||||
return { |
||||
auditStatus: null, |
||||
auditDescribe: '', |
||||
}; |
||||
}, |
||||
mounted() {}, |
||||
methods: { |
||||
auditValue() { |
||||
this.closeDialog(); |
||||
}, |
||||
handleSet() { |
||||
if (this.auditStatus == null) { |
||||
this.$message.error('请先选择审核结果'); |
||||
return; |
||||
} |
||||
this.auditData.map(item => { |
||||
item.auditStatus = this.auditStatus; |
||||
item.auditDescribe = this.auditDescribe; |
||||
}); |
||||
}, |
||||
closeDialog() { |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style></style> |
||||
@ -1,84 +1,84 @@ |
||||
<template> |
||||
<el-dialog title="审核" append-to-body :modelValue="showAudit" width="80%" @close="closeDialog"> |
||||
<div style="margin-bottom: 10px;display: flex;align-items: center;"> |
||||
<div style="display: flex;align-items: center;margin-right: 10px;"> |
||||
<div style="width: 100px;">审核结果:</div> |
||||
<el-radio v-model="auditStatus" :label="1">通过</el-radio> |
||||
<el-radio v-model="auditStatus" :label="2">不通过</el-radio> |
||||
</div> |
||||
<div style="display: flex;align-items: center;margin-right: 10px;"> |
||||
<div style="width: 100px;">审核意见:</div> |
||||
<el-input type="textarea" v-model="auditDescribe"></el-input> |
||||
</div> |
||||
<el-button type="primary" @click="handleSet">批量设置</el-button> |
||||
<el-button type="primary" @click="auditValue">保存</el-button> |
||||
</div> |
||||
<el-table :data="auditData"> |
||||
<el-table-column align="center" label="作业中心" prop="dsBatchPreservePlan.bsWorkCenter.wcName"></el-table-column> |
||||
<el-table-column align="center" label="作业槽" prop="dsBatchPreservePlan.batchNo"></el-table-column> |
||||
<el-table-column align="center" label="维护内容" prop="dsBatchPreservePlan.preserveContent"></el-table-column> |
||||
<el-table-column align="center" label="合格/不合格" prop="qualifiedTitle"> |
||||
<!-- <template #default=scope> |
||||
<el-radio v-model="scope.row.isQualified" :label="true">合格</el-radio> |
||||
<el-radio v-model="scope.row.isQualified" :label="false">不合格</el-radio> |
||||
</template> --> |
||||
</el-table-column> |
||||
<el-table-column align="center" label="添加量/实测值" prop="actualValue"></el-table-column> |
||||
<el-table-column align="center" label="审核结果" prop="auditStatus"> |
||||
<template #default=scope> |
||||
<el-radio v-model="scope.row.auditStatus" :label="1">通过</el-radio> |
||||
<el-radio v-model="scope.row.auditStatus" :label="2">不通过</el-radio> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column align="center" label="审核意见" prop="auditDescribe"> |
||||
<template #default="scope"> |
||||
<el-input type="textarea" v-model="scope.row.auditDescribe"></el-input> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</el-dialog> |
||||
</template> |
||||
<el-dialog title="审核" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> |
||||
<avue-form v-model="obj" :option="option" ref="form"></avue-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> |
||||
<script> |
||||
// dsBatchReview |
||||
import { dsBatchReview } from '@/api/processManagement/bathRefineTask.js'; |
||||
export default { |
||||
props: { |
||||
showAudit: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
auditData:{ |
||||
type:Object, |
||||
default:[] |
||||
} |
||||
props: { |
||||
showDialog: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
data(){ |
||||
return{ |
||||
auditStatus:null, |
||||
auditDescribe:'', |
||||
auditData: { |
||||
type: Array, |
||||
default: [], |
||||
}, |
||||
}, |
||||
data() { |
||||
return { |
||||
obj: {}, |
||||
openShow: false, |
||||
option: { |
||||
submitBtn: false, |
||||
emptyBtn: false, |
||||
column: [ |
||||
{ |
||||
label: '检查结果', |
||||
prop: 'isQualified', |
||||
span: 24, |
||||
type: 'radio', |
||||
dicData: [ |
||||
|
||||
{ label: '审批通过', value: 0 }, |
||||
{ label: '审批不通过', value: 1 }, |
||||
], |
||||
rules: [{ required: true, message: '请选择', trigger: 'blur' }], |
||||
}, |
||||
{ |
||||
label: '驳回原因', |
||||
prop: 'auditDescribe', |
||||
type: 'textarea', |
||||
span: 24, |
||||
}, |
||||
|
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog; |
||||
console.log(9999, this.auditData); |
||||
}, |
||||
methods: { |
||||
submit() { |
||||
this.$refs.form.validate((valid, done, msg) => { |
||||
if (valid) { |
||||
let ids = this.auditData.map(item => item.id); |
||||
dsBatchReview({ ...this.obj, bptIdList: ids }).then(res => { |
||||
this.$message({ |
||||
type: 'success', |
||||
message: '操作成功!', |
||||
}); |
||||
this.closeDialog(); |
||||
}); |
||||
} |
||||
}); |
||||
}, |
||||
mounted(){ |
||||
|
||||
closeDialog() { |
||||
this.openShow = false; |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
methods:{ |
||||
auditValue(){ |
||||
this.closeDialog() |
||||
}, |
||||
handleSet(){ |
||||
if(this.auditStatus == null){ |
||||
this.$message.error('请先选择审核结果') |
||||
return |
||||
} |
||||
this.auditData.map(item =>{ |
||||
item.auditStatus = this.auditStatus |
||||
item.auditDescribe = this.auditDescribe |
||||
}) |
||||
}, |
||||
closeDialog() { |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
} |
||||
} |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style></style> |
||||
<style lang="scss" scoped></style> |
||||
|
||||
@ -0,0 +1,87 @@ |
||||
<template> |
||||
<el-dialog |
||||
title="批量维护" |
||||
append-to-body |
||||
:modelValue="showMaintain" |
||||
width="80%" |
||||
@close="closeDialog" |
||||
> |
||||
<div style="margin-bottom: 10px; display: flex; align-items: center"> |
||||
<div style="display: flex; align-items: center; margin-right: 10px"> |
||||
检查结果: |
||||
<el-radio v-model="isQualified" :label="true">合格</el-radio> |
||||
<el-radio v-model="isQualified" :label="false">不合格</el-radio> |
||||
</div> |
||||
<el-button type="primary" @click="handleSet">批量设置</el-button> |
||||
<!-- <el-button type="primary" @click="maintainValue">保存</el-button> --> |
||||
</div> |
||||
<el-table :data="maintainData"> |
||||
<el-table-column align="center" label="作业中心" prop="wcName"></el-table-column> |
||||
<el-table-column align="center" label="作业槽" prop="batchNo"></el-table-column> |
||||
<el-table-column align="center" label="维护内容" prop="preserveContent"></el-table-column> |
||||
<el-table-column align="center" label="合格/不合格" prop="isQualified"> |
||||
<template #default="scope"> |
||||
<el-radio v-model="scope.row.isQualified" :label="true">合格</el-radio> |
||||
<el-radio v-model="scope.row.isQualified" :label="false">不合格</el-radio> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column align="center" label="添加量/实测值" prop="actualValue"> |
||||
<template #default="scope"> |
||||
<el-input v-model="scope.row.actualValue"></el-input> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<template #footer> |
||||
<span class="dialog-footer"> |
||||
<el-button @click="closeDialog">取 消</el-button> |
||||
<el-button type="primary" @click="submitForm">确 定</el-button> |
||||
</span> |
||||
</template> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import { dsBatchTask } from '@/api/processManagement/bathRefineTask.js'; |
||||
export default { |
||||
props: { |
||||
showMaintain: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
maintainData: { |
||||
type: Object, |
||||
default: [], |
||||
}, |
||||
}, |
||||
data() { |
||||
return { |
||||
isQualified: null, |
||||
}; |
||||
}, |
||||
mounted() {}, |
||||
methods: { |
||||
closeDialog() { |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
handleSet() { |
||||
if (this.isQualified == null) { |
||||
this.$message.error('请先选择检查结果'); |
||||
return; |
||||
} |
||||
this.maintainData.map(item => { |
||||
item.isQualified = this.isQualified; |
||||
}); |
||||
}, |
||||
maintainValue() { |
||||
this.closeDialog(); |
||||
}, |
||||
// 保存 |
||||
submitForm(){ |
||||
|
||||
} |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style></style> |
||||
@ -1,70 +1,82 @@ |
||||
<template> |
||||
<el-dialog title="批量维护" append-to-body :modelValue="showMaintain" width="80%" @close="closeDialog"> |
||||
<div style="margin-bottom: 10px;display: flex;align-items: center;"> |
||||
<div style="display: flex;align-items: center;margin-right: 10px;">检查结果: |
||||
<el-radio v-model="isQualified" :label="true">合格</el-radio> |
||||
<el-radio v-model="isQualified" :label="false">不合格</el-radio> |
||||
</div> |
||||
<el-button type="primary" @click="handleSet">批量设置</el-button> |
||||
<el-button type="primary" @click="maintainValue">保存</el-button> |
||||
</div> |
||||
<el-table :data="maintainData"> |
||||
<el-table-column align="center" label="作业中心" prop="bsWorkCenter.wcName"></el-table-column> |
||||
<el-table-column align="center" label="作业槽" prop="batchNo"></el-table-column> |
||||
<el-table-column align="center" label="维护内容" prop="preserveContent"></el-table-column> |
||||
<el-table-column align="center" label="合格/不合格" prop="isQualified"> |
||||
<template #default=scope> |
||||
<el-radio v-model="scope.row.isQualified" :label="true">合格</el-radio> |
||||
<el-radio v-model="scope.row.isQualified" :label="false">不合格</el-radio> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column align="center" label="添加量/实测值" prop="actualValue"> |
||||
<template #default="scope"> |
||||
<el-input v-model="scope.row.actualValue"></el-input> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</el-dialog> |
||||
</template> |
||||
<el-dialog title="维护" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> |
||||
<avue-form v-model="obj" :option="option" ref="form"></avue-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> |
||||
<script> |
||||
// dsBatchTask |
||||
import { dsBatchTask } from '@/api/processManagement/bathRefineTask.js'; |
||||
export default { |
||||
props: { |
||||
showMaintain: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
maintainData:{ |
||||
type:Object, |
||||
default:[] |
||||
} |
||||
props: { |
||||
showDialog: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
maintainData: { |
||||
type: Array, |
||||
default: [], |
||||
}, |
||||
data(){ |
||||
return{ |
||||
isQualified:null, |
||||
}, |
||||
data() { |
||||
return { |
||||
obj: {}, |
||||
openShow: false, |
||||
option: { |
||||
submitBtn: false, |
||||
emptyBtn: false, |
||||
column: [ |
||||
{ |
||||
label: '审批结果', |
||||
prop: 'auditStatus', |
||||
span: 24, |
||||
type: 'radio', |
||||
dicData: [ |
||||
{ label: '合格', value: 0 }, |
||||
{ label: '不合格', value: 1 }, |
||||
], |
||||
rules: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
||||
}, |
||||
{ |
||||
label: '实测值/添加量', |
||||
prop: 'actualValue', |
||||
span: 24, |
||||
labelWidth:120, |
||||
rules: [{ required: true, message: '请输入', trigger: 'blur' }], |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog; |
||||
}, |
||||
methods: { |
||||
submit() { |
||||
this.$refs.form.validate((valid, done, msg) => { |
||||
if (valid) { |
||||
let ids = this.maintainData.map(item => item.id); |
||||
dsBatchTask({ ...this.obj, bptIdList: ids }).then(res => { |
||||
this.$message({ |
||||
type: 'success', |
||||
message: '操作成功!', |
||||
}); |
||||
this.closeDialog(); |
||||
}); |
||||
} |
||||
}); |
||||
}, |
||||
mounted(){ |
||||
|
||||
closeDialog() { |
||||
this.openShow = false; |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
methods:{ |
||||
closeDialog() { |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
handleSet(){ |
||||
if(this.isQualified == null){ |
||||
this.$message.error('请先选择检查结果') |
||||
return |
||||
} |
||||
this.maintainData.map(item =>{ |
||||
item.isQualified = this.isQualified |
||||
}) |
||||
}, |
||||
maintainValue(){ |
||||
this.closeDialog() |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style></style> |
||||
<style lang="scss" scoped></style> |
||||
|
||||
@ -1,73 +1,97 @@ |
||||
<template> |
||||
<el-dialog title="审核" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> |
||||
<avue-form :option="option"></avue-form> |
||||
<el-dialog title="审核" append-to-body :modelValue="openShow" width="30%" @close="closeDialog"> |
||||
<avue-form v-model="obj" :option="option" ref="form"></avue-form> |
||||
|
||||
<template #footer> |
||||
<span class="dialog-footer"> |
||||
<el-button type="danger" @click="approveDialog = false">不通过</el-button> |
||||
<el-button type="primary" @click="submitApprove">通过</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 { directorApproval, factoryApproval } from '@/api/processManagement/planClass.js'; |
||||
|
||||
export default { |
||||
props: { |
||||
showDialog: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
props: { |
||||
showDialog: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
data() { |
||||
return { |
||||
openShow: false, |
||||
option: { |
||||
submitBtn: false, |
||||
emptyBtn: false, |
||||
column: [ |
||||
{ |
||||
label: '审批结果', |
||||
prop: 'input', |
||||
span: 24, |
||||
type: 'radio', |
||||
dicData: [ |
||||
{ label: '审批通过', value: 0 }, |
||||
{ label: '审批不通过', value: 1 }, |
||||
], |
||||
rules: [ |
||||
{ required: true, message: '请输入姓名', trigger: 'blur' } |
||||
] |
||||
}, |
||||
{ |
||||
label: '驳回原因', |
||||
prop: 'input2', |
||||
// type: 'select', |
||||
type:'textarea', |
||||
span: 24, |
||||
// dicData: [ |
||||
// { |
||||
// label: '不需要结算', |
||||
// value: '1', |
||||
// }, |
||||
// { |
||||
// label: '基础数据有误', |
||||
// value: '2', |
||||
// } |
||||
// ] |
||||
} |
||||
] |
||||
} |
||||
} |
||||
rowItem: { |
||||
type: Object, |
||||
default: {}, |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog |
||||
}, |
||||
data() { |
||||
return { |
||||
obj: {}, |
||||
openShow: false, |
||||
option: { |
||||
submitBtn: false, |
||||
emptyBtn: false, |
||||
column: [ |
||||
{ |
||||
label: '审批结果', |
||||
prop: 'isPass', |
||||
span: 24, |
||||
type: 'radio', |
||||
dicData: [ |
||||
{ label: '审批通过', value: 1 }, |
||||
{ label: '审批不通过', value: 2 }, |
||||
], |
||||
rules: [{ required: true, message: '请选择', trigger: 'blur' }], |
||||
}, |
||||
{ |
||||
label: '驳回原因', |
||||
prop: 'approvalOpinions', |
||||
type: 'textarea', |
||||
span: 24, |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
mounted() { |
||||
this.openShow = this.showDialog; |
||||
}, |
||||
methods: { |
||||
closeDialog() { |
||||
this.openShow = false; |
||||
this.$emit('closeDialog'); |
||||
}, |
||||
methods: { |
||||
closeDialog() { |
||||
this.openShow = false |
||||
this.$emit('closeDialog'); |
||||
submit() { |
||||
this.$refs.form.validate((valid, done, msg) => { |
||||
if (valid) { |
||||
// 室主任审核 |
||||
if (this.rowItem.approvalStatus == '-1') { |
||||
directorApproval({...this.obj,id:this.rowItem.id}).then(res => { |
||||
this.$message({ |
||||
type: 'success', |
||||
message: '操作成功!', |
||||
}); |
||||
this.closeDialog(); |
||||
}); |
||||
} |
||||
// 厂长审核 |
||||
if (this.rowItem.approvalStatus == '2') { |
||||
factoryApproval({...this.obj,id:this.rowItem.id}).then(res=>{ |
||||
this.$message({ |
||||
type: 'success', |
||||
message: '操作成功!', |
||||
}); |
||||
this.closeDialog() |
||||
}) |
||||
} |
||||
done(); |
||||
} else { |
||||
console.log('error submit!!'); |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
}); |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped></style> |
||||
<style lang="scss" scoped></style> |
||||
|
||||
@ -0,0 +1,175 @@ |
||||
<template> |
||||
<basic-container> |
||||
<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> </template> |
||||
<template #menu-right> </template> |
||||
<template #menu="{ row }"> </template> |
||||
</avue-crud> |
||||
</basic-container> |
||||
</template> |
||||
|
||||
<script> |
||||
|
||||
|
||||
export default { |
||||
components: {}, |
||||
data() { |
||||
return { |
||||
form: {}, |
||||
query: {}, |
||||
loading: true, |
||||
page: { |
||||
pageSize: 10, |
||||
currentPage: 1, |
||||
total: 0, |
||||
}, |
||||
option: { |
||||
columnSort: true, |
||||
tip: false, |
||||
height: 'auto', |
||||
calcHeight: 32, |
||||
simplePage: false, |
||||
searchShow: true, |
||||
searchMenuSpan: 6, |
||||
searchIcon: true, |
||||
searchIndex: 3, |
||||
tree: false, |
||||
border: true, |
||||
index: true, |
||||
selection: false, |
||||
addBtn: false, |
||||
editBtn: false, |
||||
viewBtn: false, |
||||
delBtn: false, |
||||
editBtnText: '修改', |
||||
labelWidth: 120, |
||||
menuWidth: 80, |
||||
dialogWidth: 900, |
||||
dialogClickModal: false, |
||||
searchEnter: true, |
||||
excelBtn: false, |
||||
filterBtn: true, |
||||
searchShowBtn: false, |
||||
excelBtn: true, |
||||
showOverflowTooltip: true, |
||||
addBtnIcon: ' ', |
||||
viewBtnIcon: ' ', |
||||
delBtnIcon: ' ', |
||||
editBtnIcon: ' ', |
||||
gridBtn: false, |
||||
searchLabelPosition: 'left', |
||||
searchGutter: 24, |
||||
searchSpan: 6, |
||||
menuAlign: 'left', |
||||
gridBtn: false, |
||||
searchMenuPosition: 'right', |
||||
align: 'center', |
||||
menu: false, |
||||
column: [ |
||||
{ |
||||
label: '班组', |
||||
prop: '班组', |
||||
search: true, |
||||
sortable: true, |
||||
span: 12, |
||||
hide:true, |
||||
}, |
||||
{ |
||||
label: '设备', |
||||
prop: '设备', |
||||
search: true, |
||||
sortable: true, |
||||
span: 12, |
||||
hide:true, |
||||
}, |
||||
{ |
||||
label: '生成订单项数', |
||||
prop: 'partCode', |
||||
search: false, |
||||
sortable: true, |
||||
span: 12, |
||||
}, |
||||
{ |
||||
label: 'MES排产项数', |
||||
prop: '自动排产率', |
||||
search: false, |
||||
sortable: true, |
||||
span: 12, |
||||
}, |
||||
{ |
||||
label: '自动排产率', |
||||
prop: '自动排产率', |
||||
search: false, |
||||
sortable: true, |
||||
span: 12, |
||||
}, |
||||
{ |
||||
label: '排产时间', |
||||
prop: 'cycledate', |
||||
search: true, |
||||
sortable: true, |
||||
span: 12, |
||||
hide:true, |
||||
type: "date", |
||||
searchRange: true, |
||||
startPlaceholder: "开始时间", |
||||
endPlaceholder: "结束时间", |
||||
|
||||
}, |
||||
], |
||||
}, |
||||
|
||||
data: [], |
||||
}; |
||||
}, |
||||
methods: { |
||||
searchReset() { |
||||
this.query = {}; |
||||
this.onLoad(this.page); |
||||
}, |
||||
searchChange(params, done) { |
||||
this.query = params; |
||||
this.page.currentPage = 1; |
||||
this.onLoad(this.page, params); |
||||
done(); |
||||
}, |
||||
currentChange(currentPage) { |
||||
this.page.currentPage = currentPage; |
||||
}, |
||||
sizeChange(pageSize) { |
||||
this.page.pageSize = pageSize; |
||||
}, |
||||
refreshChange() { |
||||
this.onLoad(this.page, this.query); |
||||
}, |
||||
|
||||
onLoad(page, params = {}) { |
||||
this.loading = true; |
||||
this.data = []; |
||||
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.loading = false; |
||||
// this.page.total = res.data.data.total |
||||
// this.selectionClear(); |
||||
// }); |
||||
}, |
||||
}, |
||||
mounted() {}, |
||||
}; |
||||
</script> |
||||
Loading…
Reference in new issue