<template>
|
<div class="record_content">
|
<div class="title">
|
<el-row>
|
<el-col :span="12" style="line-height: 32px;">生产工艺维护</el-col>
|
<el-col :span="12" style="text-align: right;">
|
<el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">新增</el-button>
|
<!-- <el-button icon="el-icon-edit-outline" @click="modify">修改</el-button> -->
|
<el-button icon="el-icon-delete" @click="dels" >删除</el-button>
|
</el-col>
|
</el-row>
|
</div>
|
|
<div>
|
<!-- 编辑弹窗 -->
|
<div>
|
<el-dialog
|
title="技术指标编辑"
|
:visible.sync="modifyevent"
|
width="40%">
|
<el-form ref="form" :model="form" label-width="80px">
|
<el-form-item label="类型">
|
<template>
|
<el-select v-model="edit.type" disabled placeholder="请选择" style="width: 560px;">
|
<el-option v-for="(a, ai) in bigType" :key="ai" :value="a"></el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
<el-row>
|
<el-col :span="11">
|
<el-form-item label="工序">
|
<template>
|
<el-select v-model="edit.techFather" disabled
|
placeholder="请选择" >
|
<el-option
|
v-for="item in process"
|
:key="item.name"
|
:label="item.name"
|
:value="item.name">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
<el-col :span="11" :offset="2">
|
<el-form-item label="工艺">
|
<el-input v-model="edit.techName" :disabled="true" placeholder="请选择"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="11">
|
<el-form-item label="设备">
|
<el-input v-model="edit.dname" disabled placeholder="请选择"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="11" :offset="2">
|
<el-form-item label="项目">
|
<!-- <el-input v-model="edit.father" :disabled="true" placeholder="请输入项目"></el-input> -->
|
<template>
|
<el-select v-model="edit.father" @change="projectApi" placeholder="请选择" >
|
<el-option
|
v-for="item in project"
|
:key="item.name"
|
:label="item.name"
|
:value="item.name">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="11">
|
<el-form-item label="指标">
|
<template>
|
<el-select v-model="edit.name" @change="scale" placeholder="请选择" >
|
<el-option
|
v-for="item in quota"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</template>
|
|
</el-form-item>
|
</el-col>
|
<el-col :span="11" :offset="2">
|
<el-form-item label="单位">
|
<el-input v-model="unitrow" :value="unitrow" :disabled="true" placeholder="请输入项目"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="modifyevent = false">取 消</el-button>
|
<el-button type="primary" @click="editApi">确 定</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
<!-- 新增弹窗 -->
|
<div>
|
<el-dialog
|
title="生产工艺新增"
|
:visible.sync="dialogVisible"
|
width="40%">
|
<el-form ref="form" :model="form" label-width="80px">
|
<el-form-item label="类型">
|
<template>
|
<el-select v-model="form.type" placeholder="请选择" @change="edittype" style="width: 100%;">
|
<el-option v-for="(a, ai) in bigType" :key="ai" :value="a"></el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
<el-row>
|
<el-col :span="11">
|
<el-form-item label="工序">
|
<template>
|
<el-select v-model="form.father" @change="workevent"
|
placeholder="请选择" >
|
<el-option
|
v-for="item in process"
|
:key="item.name"
|
:label="item.name"
|
:value="item.name">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
<el-col :span="11" :offset="2">
|
<el-form-item label="工艺名称">
|
<template>
|
<el-select v-model="form.craft" @change="carftapi" placeholder="请选择" >
|
<el-option
|
v-for="item in craftapi"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="11">
|
<el-form-item label="设备">
|
<template>
|
<el-select v-model="form.work" placeholder="请选择" >
|
<el-option
|
v-for="item in higherlevel"
|
:key="item.devId"
|
:label="item.name"
|
:value="item.devId">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
<el-col :span="11" :offset="2">
|
<el-form-item label="项目">
|
<template>
|
<el-select v-model="form.ee" @change="projectApi" placeholder="请选择" >
|
<el-option
|
v-for="item in project"
|
:key="item.name"
|
:label="item.name"
|
:value="item.name">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="11">
|
<el-form-item label="指标">
|
<template>
|
<el-select v-model="form.aa" @change="scale" placeholder="请选择" >
|
<el-option
|
v-for="item in quota"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</template>
|
</el-form-item>
|
</el-col>
|
<el-col :span="11" :offset="2">
|
<el-form-item label="单位">
|
<template>
|
<el-input v-model="unitrow" :disabled="true" placeholder="请输入单位" style="width: 100%;"></el-input>
|
</template>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<!-- <el-form-item label="单位">
|
<el-input v-model="form.unit" placeholder="请输入单位" style="width: 220px;"></el-input>
|
</el-form-item> -->
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button type="primary" @click="add">确 定</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</div>
|
|
|
<div class="choose">
|
<span>类型:</span>
|
<el-select v-model="search.type" size="small" @change="TYpe" placeholder="请选择" style="width: 224px;margin-right: 30px;">
|
<el-option v-for="(a, ai) in bigType" :key="ai" :value="a"></el-option>
|
</el-select>
|
<!-- <span>工序:</span>
|
<el-select v-model="search.name" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
|
<el-option v-for="(a, ai) in process" key="ai" :label="a.name" :value="a.id"></el-option>
|
</el-select>
|
<el-button size="mini"><span>重 置</span></el-button>
|
<el-button size="mini" type="primary" style="background: #004EA2;"><span>查询</span></el-button> -->
|
</div>
|
<div class="thing">
|
<!-- 主体左 -->
|
<div class="left">
|
<el-input v-model="search.technology"
|
@input="query"
|
suffix-icon="el-icon-search"
|
placeholder="请输入搜索内容"
|
size="small" clearable ></el-input>
|
<el-tree :data="list" ref="tree"
|
:props="{children: 'children',label: 'name'}" highlight-current node-key="name" default-expand-all
|
|
@node-click="handleNodeClick"
|
>
|
<div class="custom-tree-node" slot-scope="{ node, data }">
|
<span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
|
{{data.code}} {{ data.name }}</span>
|
<!-- <el-button type="text" size="mini" @click.stop="remove(node, data)">
|
<i class="el-icon-delete"></i>
|
</el-button> -->
|
</div>
|
</el-tree>
|
</div>
|
<!-- 主体右 -->
|
<div class="right">
|
<el-table
|
height="calc(90vh - 200px)"
|
:data="tableData"
|
row-key="rowId"
|
border
|
@select-all="selectAll"
|
@select="selectTr"
|
@selection-change="handleSelectionChange"
|
default-expand-all
|
ref="multipleTable"
|
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
|
<el-table-column
|
type="selection"
|
width="55">
|
</el-table-column>
|
<el-table-column
|
type="index"
|
width="50">
|
</el-table-column>
|
<el-table-column
|
label="设备名称"
|
sortable
|
prop="dname"
|
width="300px">
|
<template slot-scope="scope">
|
<!-- <el-tag>
|
<div class="firstDiv" :style="`color: ${scope.row.children ? '#16a7ff' : '#58c173'}`">
|
{{ scope.row.children ? "01" : "02" }}
|
</div>
|
</el-tag>
|
<span style="children: black">{{ scope.row.name }}</span> -->
|
<el-tag v-if="scope.row.children" type="primary">01</el-tag>
|
<span style="color: black" v-if="scope.row.children">
|
{{ scope.row.dname }}
|
</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="项目"
|
sortable
|
width="300px">
|
<template slot-scope="scope">
|
<el-tag type="success" v-if="!scope.row.children">02</el-tag>
|
<span style="color: black" v-if="!scope.row.children">{{ scope.row.father }}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="unit"
|
label="单位">
|
</el-table-column>
|
<el-table-column
|
prop="name"
|
label="指标">
|
</el-table-column>
|
<el-table-column
|
prop="address"
|
label="操作"
|
width="200px">
|
<template slot-scope="scope" style="text-align: center;">
|
<div v-if="!scope.row.children">
|
<!-- <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button> -->
|
<el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button>
|
</div>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
</div>
|
</template>
|
<script>
|
export default {
|
data() {
|
return {
|
bigType: [],
|
search: {
|
type: 0,
|
technology: null
|
},
|
value:{},
|
typeselect:0,
|
options:[],
|
process:[],
|
list: [],
|
selects:'',
|
process:{},
|
options:{},
|
craftapi:{},
|
project:{},
|
edit:{},
|
upData:{
|
|
},
|
|
checkTreeNode:{
|
id:1,
|
},
|
form:{
|
type:'',
|
father:'',
|
work:'',
|
name:'',
|
unit:'',
|
|
|
},
|
|
modifyevent:false,
|
dialogVisible:false,
|
tableData: [],
|
higherlevel:{},
|
quota:{},
|
carftrow:"",
|
unitrow:'',
|
}
|
|
},
|
mounted() {
|
this.chooseType()
|
this.selectAllleft()
|
this.selectAllTeque()
|
},
|
methods:{
|
chooseType() {
|
this.$axios.get(this.$api.url.chooseType).then(res => {
|
this.bigType = res.data
|
this.typeselect = res.data[0]
|
console.log(this.typeselect);
|
this.search.type = res.data[0]
|
})
|
},
|
selectDataList() {
|
this.list.forEach(a => {
|
a.code = '[1]'
|
if (a.children != undefined) {
|
a.children.forEach(b => {
|
b.code = '[2]'
|
if (b.children != undefined) {
|
b.children.forEach(c => {
|
c.code = '[3]'
|
})
|
}
|
})
|
}
|
})
|
this.upIndex++
|
},
|
elForm() {},
|
// //新增
|
choosePro() {//项目
|
this.$axios.get(this.$api.url.choosePro,{
|
params:{techTemId:this.carftrow}
|
}).then(res => {
|
this.project = res.data;
|
console.log(this.process);
|
})
|
},
|
carftapi(val) {
|
console.log(val);
|
this.carftrow = val
|
this.chooseDeiv()
|
this.choosePro()
|
},
|
chooseDeiv() {//设备
|
this.$axios.get(this.$api.url.chooseDeiv,{
|
params:{techTemId:this.carftrow}
|
}).then(res => {
|
this.higherlevel = res.data;
|
console.log(this.process);
|
})
|
},
|
//新增
|
edittype(val) {
|
this.typeselect = val
|
this.chooseTechFath()
|
},
|
projectApi(val) {
|
console.log(val);
|
let idx = this.project.findIndex(el => el.name === val)
|
this.quota = this.project[idx].children
|
console.log( this.quota);
|
},
|
scale(val) {
|
console.log(val);
|
let cc = this.quota.findIndex(el => el.id === val)
|
console.log(cc);
|
this.unitrow = this.quota[cc].unit
|
console.log(this.unitrow);
|
},
|
workevent(val){
|
console.log(val);
|
let idx = this.process.findIndex(el => el.name === val)
|
this.craftapi = this.process[idx].children
|
console.log( this.craftapi);
|
},
|
chooseTechFath() {
|
this.$axios.get(this.$api.url.chooseTechFath,{
|
params:{type:this.typeselect}
|
}).then(res => {
|
this.process = res.data;
|
console.log(this.process);
|
}, {
|
headers: {
|
"Content-Type": "application/json"
|
}
|
}).then(res =>{
|
|
})
|
},
|
//新增
|
event(){
|
this.dialogVisible = true
|
this.choosePro()
|
this.chooseDeiv()
|
},
|
//确认
|
add() {
|
this.dialogVisible = false
|
this.addQeMode()
|
},
|
addQeMode(){
|
this.$axios.post(this.$api.url.addQeMode,{
|
devId:this.form.work,
|
techTemId:this.form.craft,
|
technicalModelId:this.form.aa,
|
}, {headers: {"Content-Type": "application/json"}
|
}).then(res =>{
|
this.selectAllTeque()
|
this.form = {}
|
this.unitrow = ""
|
})
|
},
|
|
//编辑
|
childrenClick(ob) {
|
this.modifyevent=true
|
this.upData = ob
|
this.selecQueById()
|
this.choosePro()
|
},
|
//编辑 selecQueById
|
selecQueById() {
|
this.$axios.get(this.$api.url.selecQueById,{
|
params:{id:this.upData.id}
|
}).then(res => {
|
console.log(res);
|
this.edit = res.data[0]
|
console.log(this.edit);
|
this.unitrow = this.edit.unit
|
})
|
},
|
editApi() {
|
this.modifyevent = false
|
this.writeQueById()
|
},
|
writeQueById() {
|
this.$axios.post(this.$api.url.writeQueById,{
|
devId:this.edit.did,
|
techTemId:this.edit.tid,
|
technicalModelId:this.edit.name,
|
}, {headers: {"Content-Type": "application/json"}
|
}).then(res =>{
|
})
|
},
|
//========================
|
TYpe(val) {
|
this.typeselect = val
|
this.selectAllleft()
|
},
|
handleNodeClick(data){
|
this.checkTreeNode = data
|
console.log(this.checkTreeNode.id);
|
this.selectAllTeque()
|
|
},
|
//查询
|
query(val) {
|
this.selectAllleft()
|
},
|
//主体左
|
selectAllleft() {
|
this.$axios.get(this.$api.url.selectAllleft,{
|
params:{type:this.typeselect,message:this.search.technology}
|
}).then(res => {
|
this.list = res.data;
|
console.log(this.list);
|
this.selectDataList()
|
this.$nextTick(() => {
|
this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个
|
})
|
let one=this.list.filter(item=>{
|
return item.children.length>0
|
})[0]
|
console.log(one);
|
let name=one.children[0].id
|
console.log(name);
|
this.checkTreeNode.id = name
|
this.selectAllTequeStart(name)
|
this.selectDataList();
|
})
|
},
|
selectAllTequeStart(name) {
|
this.$axios.get(this.$api.url.selectAllTeque,{
|
params:{id:this.checkTreeNode.id}
|
}).then(res => {
|
this.tableData = res.data;
|
console.log(this.tableData);
|
this.formatData(res.data)
|
})
|
},
|
//主体右
|
selectAllTeque() {
|
this.$axios.get(this.$api.url.selectAllTeque,{
|
params:{id:this.checkTreeNode.id}
|
}).then(res => {
|
this.tableData = res.data;
|
console.log(this.tableData);
|
this.formatData(res.data)
|
})
|
},
|
modify(){
|
this.modifyevent = true
|
},
|
formatData(data){
|
let arr = data;
|
for(var i=0;i<arr.length;i++){
|
arr[i].rowId = Math.random();
|
if(arr[i].children != undefined){
|
this.formatData(arr[i].children);
|
}
|
}
|
},
|
//delQueById
|
delQueById() {
|
this.$axios.post(this.$api.url.delQueById,{
|
id:this.upData.id
|
}).then(res =>{
|
this.selectAllTeque()
|
this.$message.success('删除完成')
|
})
|
},
|
deleteRow(index, row) {
|
this.tableData.splice(index,1)
|
this.upData.id = row.id
|
console.log(this.upData.id);
|
this.delQueById()
|
},
|
//批量删除
|
delAllQue() {
|
this.$axios.post(this.$api.url.delAllQue,{
|
ids:this.delete
|
}).then(res =>{
|
this.selectAllTeque()
|
this.$message.success('删除完成')
|
})
|
},
|
|
dels() {
|
let ee = []
|
console.log(this.selects);
|
this.selects.forEach(el =>{
|
if(el.children){
|
el.children.forEach(ele =>{
|
ee.push(ele.id)
|
})
|
}
|
})
|
console.log(ee);
|
this.delete = ee.join(',')
|
console.log(this.delete);
|
this.delAllQue()
|
this.$message.success('删除完成')
|
},
|
// handleClose(){
|
// // this.$confirm('确认关闭?')
|
// // .then(_ => {
|
// // done();
|
// // })
|
// // .catch(_ => {})
|
// // },
|
// // filterNode(){
|
|
// },
|
handleSelectionChange(val) {
|
this.selects = val
|
// console.log(this.selects);
|
this.deleteList = [];
|
val.forEach((v) => {
|
if (v.id !== undefined) {
|
this.deleteList.push(v.id);
|
}
|
});
|
},
|
// 全选/取消选操作
|
selectAll(val) {
|
// console.log(val);
|
this.isAllSelect = !this.isAllSelect;
|
let data = this.tableData;
|
this.$nextTick(() =>{
|
this.toggleSelect(data, this.isAllSelect, "all");
|
})
|
},
|
//选择某行
|
selectTr(selection, row) {
|
console.log(selection,row);
|
this.$set(row, "isChecked", !row.isChecked);
|
this.$nextTick(() => {
|
this.isAllSelect = row.isChecked;
|
this.toggleSelect(row, row.isChecked, "tr");
|
});
|
|
},
|
toggleSelection(row, flag) {
|
this.$set(row, "isChecked", flag);
|
this.$nextTick(() => {
|
if (flag) {
|
this.$refs.multipleTable.toggleRowSelection(row, flag);
|
} else {
|
this.$refs.multipleTable.clearSelection();
|
}
|
});
|
},
|
//递归子级
|
toggleSelect(data, flag, type) {
|
if (type === "all") {
|
if (data.length > 0) {
|
data.forEach((item) => {
|
this.toggleSelection(item, flag);
|
if (item.children && item.children.length > 0) {
|
this.toggleSelect(item.children, flag, type);
|
}
|
});
|
}
|
} else {
|
if (data.children && data.children.length > 0) {
|
data.children.forEach((item) => {
|
item.isChecked = !item.isChecked;
|
this.$refs.multipleTable.toggleRowSelection(item, flag);
|
this.toggleSelect(item, flag, type);
|
});
|
}
|
}
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
.title .el-button {
|
height: 32px;
|
border: 1px solid rgba(190, 190, 190, 0.44);
|
box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
|
padding: 0 12px;
|
}
|
|
.title {
|
margin-bottom: 10px;
|
padding: 0 20px;
|
}
|
|
.title * {
|
font-size: 16px;
|
}
|
|
.choose {
|
padding: 21px 24px;
|
display: flex;
|
align-items: center;
|
background-color: #fff;
|
border-bottom: 3px solid rgb(245, 247, 251);
|
}
|
|
.choose * {
|
font-size: 14px;
|
}
|
|
.choose .el-button {
|
height: 32px;
|
border: 1px solid rgba(190, 190, 190, 0.44);
|
box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
|
padding: 0 12px;
|
}
|
|
.thing {
|
width: 100%;
|
height: calc(100% - 120px);
|
background-color: #fff;
|
display: flex;
|
}
|
|
.thing .left {
|
width: 295px;
|
height: calc(100% - 20px);
|
border-right: 3px solid rgb(245, 247, 251);
|
padding: 16px;
|
overflow-y: auto;
|
}
|
|
.thing .left .custom-tree-node span {
|
font-size: 14px;
|
}
|
|
.thing .left .custom-tree-node {
|
flex: 1;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
font-size: 14px;
|
padding-right: 8px;
|
}
|
|
.node_i {
|
color: orange;
|
}
|
|
.el-icon-delete {
|
display: none;
|
color: #004EA2;
|
}
|
|
.custom-tree-node:hover .el-icon-delete {
|
display: inline;
|
}
|
|
.thing .right {
|
width: calc(100% - 305px);
|
height: calc(100% - 25px);
|
/* overflow: hidden; */
|
overflow-y: scroll;
|
overflow-x: scroll;
|
padding: 10px;
|
}
|
|
.table_do {
|
color: #004ea0;
|
cursor: pointer;
|
}
|
.firstDiv {
|
/* float: left;
|
width: 20px;
|
height: 20px;
|
border-radius: 60px; */
|
/* background-color: #eff5ff;
|
margin-top: 5px;
|
justify-content: center;
|
display: flex;
|
align-items: center;
|
margin-right: 8px; */
|
}
|
</style>
|
<style>
|
.record_content .title .el-button * {
|
font-size: 14px;
|
}
|
|
.record_content .title .el-button--default {
|
color: #004EA2;
|
}
|
|
.record_content .thing .left .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
|
background: rgba(58, 124, 253, 0.2);
|
color: #004EA2;
|
}
|
|
.record_content .el-tree-node__content {
|
height: 30px;
|
border-radius: 2px;
|
}
|
</style>
|