中航光电热表web
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

295 lines
13 KiB

6 months ago
<template>
<basic-container>
<!-- 成本计算配置 -->
<el-tabs v-model="tabPosition" class="demo-tabs" @tab-change="tabPositionChange">
<el-tab-pane label="工序维护" name="processMaintenance"></el-tab-pane>
<el-tab-pane label="物料维护" name="materialMaintenance">
<el-alert
title="维护的物料不进行材料费用计算"
style="margin-bottom: 10px; background: #e6f7ff;border-color: #91d5ff;"
show-icon>
</el-alert>
</el-tab-pane>
</el-tabs>
<avue-crud :option="option" :table-loading="loading" :data="data" v-model="form" v-model:page="page" ref="crud"
@row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left>
<el-button icon="el-icon-plus" type="primary" @click="handleAdd">新增</el-button>
<el-button icon="el-icon-delete" type="danger" @click="handleDelete">删除</el-button>
<el-button icon="el-icon-upload" type="success">导入</el-button>
</template>
<template #menu="scope">
<el-button type="text" v-if="tabPosition == 'processMaintenance'" @click="maintainProcess(scope.row)">维护</el-button>
<el-button type="text" v-if="tabPosition == 'processMaintenance'" @click="deleteRow(scope.row)">删除</el-button>
</template>
</avue-crud>
<el-dialog :title="title" append-to-body v-model="showDialog" width="60%">
<div style="margin-bottom: 10px;">
<el-button type="primary" icon="el-icon-plus" @click="insertEvent()">插入一行</el-button>
<el-button plain type="danger" @click="remove">删除选择行</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</div>
<el-table :data="processData" @select="selectChange">
<el-table-column type="selection" width="55px"></el-table-column>
<el-table-column align="center" label="作业中心" prop="workCenter">
<template #default="scope">
<el-select v-model="scope.row.workCenter">
<el-option label="镀金大批量作业中心" value="1"></el-option>
<el-option label="镀金小批量作业中心" value="2"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" label="工序" prop="process">
<template #default='scope'>
<el-select multiple v-model="scope.row.processVal">
<el-option label="镀金" value="1"></el-option>
<el-option label="滚金" value="2"></el-option>
<el-option label="化学镀镍" value="3"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" label="计算方式" prop="formulaMode">
<template #default="scope">
<el-radio-group v-model="scope.row.formulaMode">
<el-radio label="1">面积</el-radio>
<el-radio label="2">体积</el-radio>
</el-radio-group>
</template>
</el-table-column>
</el-table>
</el-dialog>
<el-dialog :title="title" append-to-body v-model="showMaterial" width="60%">
<div style="margin-bottom: 10px;">
<el-button type="primary" icon="el-icon-plus" @click="insertRow()">插入一行</el-button>
<el-button plain type="danger" @click="removeRow">删除选择行</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</div>
<el-table :data="materialData" @select="selectChange">
<el-table-column type="selection" width="55px"></el-table-column>
<el-table-column align="center" label="物料编号" prop="goodsNo">
<template #default="{row,$index}">
<el-select v-model="row.goodsNo" @change="(event) => changeGoodsNo(event,$index)">
<el-option v-for="item in goodsData" :label="item.label" :value="item.label" :key="item.label"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" label="物料名称" prop="goodsName"></el-table-column>
</el-table>
</el-dialog>
</basic-container>
</template>
<script>
import costColumnData from './js/costColumnData';
export default {
data() {
return {
tabPosition: "processMaintenance",
loading:false,
showDialog:false,
showMaterial:false,
processData:[],
deleteProcessArr:[],
selectionList:[],
materialData:[],
data:[],
goodsData:[
{label:"0399-222-21",value:"物料一"},
{label:"0399-222-22",value:"物料二"},
{label:"0399-222-23",value:"物料三"},
{label:"0399-222-24",value:"物料四"},
],
form:{},
title:'新增',
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
height: 'auto',
calcHeight: 32,
tip: false,
size: 'medium',
simplePage: true,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: true,
viewBtn: false,
delBtn: false,
addBtn: false,
editBtn: false,
editBtnText: '修改',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
viewBtnText: '详情',
labelWidth: 120,
searchLabelWidth: 120,
menuWidth: 220,
dialogWidth: 1200,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
searchShowBtn: false,
columnSort: true,
excelBtn: true,
columnSort: true,
index: false,
showOverflowTooltip: true,
align: 'center',
column: []
}
}
},
mounted(){
this.option.column = costColumnData[this.tabPosition]
},
methods:{
selectionChange(val){
this.selectionList = val
},
changeGoodsNo(event,index){
let tmp = this.goodsData.find(item => item.label == event)
this.materialData[index].goodsName = tmp.value
},
// 点击删除按钮
handleDelete(){
if(this.selectionList.length == 0){
this.$message.error('请先选择数据')
return
}
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(res =>{
})
},
deleteRow(row){
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(res =>{
})
},
tabPositionChange(val){
if(val == 'materialMaintenance'){
this.option.menu = false
this.data = [
{id:1,goodsNo:'0399-222-21',goodsName:'物料一',createUser:'李四',createTime:'2023-08-20 11:23:25'},
{id:2,goodsNo:'0399-222-22',goodsName:'物料二',createUser:'李四',createTime:'2023-08-20 11:23:25'},
]
this.page.total = this.data.length
}else{
this.option.menu = true
this.data = [
{id:1,workCenter:'镀金大批量作业中心',processVal:['1','2','3'], processTitle:'镀金、滚金、化学镀镍',formulaMode:"1",createUser:'张三',createTime:'2023-11-20 11:23:25'},
{id:2,workCenter:'镀金大批量作业中心',processVal:['1','3'], processTitle:'镀金、化学镀镍',formulaMode:"2",createUser:'张三',createTime:'2023-11-20 11:23:25'},
{id:3,workCenter:'镀金大批量作业中心',processVal:['1','2'], processTitle:'镀金、滚金',formulaMode:"1",createUser:'张三',createTime:'2023-11-20 11:23:25'},
]
this.page.total = this.data.length
}
this.option.column = costColumnData[this.tabPosition]
},
maintainProcess(row){
this.title = '维护'
this.processData = [
{...row}
]
this.showDialog = true
},
handleAdd(){
if(this.tabPosition == 'materialMaintenance'){
this.materialData = []
this.showMaterial = true
}else{
this.title = '新增'
this.processData = []
this.showDialog = true
}
},
selectChange(list,row){
row._select = !row._select
},
//插入一行
insertEvent(){
const record = {
_select:false
}
this.processData.push(record)
},
insertRow(){
const record = {
_select:false
}
this.materialData.push(record)
},
//删除所选行
removeRow(){
let arr = this.materialData.filter(item => item._select)
if(arr.length != 0){
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() =>{
if(this.rowId){
let deleteData = this.materialData.filter(item => item._select)
this.deleteProcessArr = deleteData.filter(item => item.tidId)
}
let deleteArr = this.materialData.filter(item => !item._select)
this.materialData = deleteArr
})
}else{
this.$message.error('请至少选择一条数据进行操作!')
}
},
//删除所选行
remove(){
let arr = this.processData.filter(item => item._select)
if(arr.length != 0){
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(() =>{
if(this.rowId){
let deleteData = this.processData.filter(item => item._select)
this.deleteProcessArr = deleteData.filter(item => item.tidId)
}
let deleteArr = this.processData.filter(item => !item._select)
this.processData = deleteArr
})
}else{
this.$message.error('请至少选择一条数据进行操作!')
}
},
handleSave(){
this.showDialog = false
this.showMaterial = false
},
onLoad(){
this.data = [
{id:1,workCenter:'镀金大批量作业中心',processVal:['1','2','3'], processTitle:'镀金、滚金、化学镀镍',formulaMode:"1",createUser:'张三',createTime:'2023-11-20 11:23:25'},
{id:1,workCenter:'镀金大批量作业中心',processVal:['1','3'], processTitle:'镀金、化学镀镍',formulaMode:"2",createUser:'张三',createTime:'2023-11-20 11:23:25'},
{id:1,workCenter:'镀金大批量作业中心',processVal:['1','2'], processTitle:'镀金、滚金',formulaMode:"1",createUser:'张三',createTime:'2023-11-20 11:23:25'},
]
this.page.total = this.data.length
}
}
}
</script>
<style></style>