中航光电热表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.
 
 
 
 

1246 lines
42 KiB

<template>
<el-dialog title="详情" v-model="setCrewShow" :before-close="cancel" fullscreen>
<div class="tabs-container" v-loading="tabLoading">
<div class="content-right">
<span class="version-label" v-if="this.detailsType == 'taskProcessing'"
>工艺版本:{{ version || '-' }}</span
>
<div class="version_select" v-else>
工艺版本:<el-select
v-model="version"
placeholder="请输入"
@change="versionChange()"
style="width: 150px"
>
<el-option
v-for="(item, index) in versionOptions"
:key="index"
:label="item.partVersion"
:value="item.partVersion"
/>
</el-select>
</div>
</div>
<el-tabs v-if="setCrewShow" v-model="activeNameTab">
<el-tab-pane label="零件信息" name="1"> </el-tab-pane>
<el-tab-pane label="工艺编制" name="2"> </el-tab-pane>
</el-tabs>
<div v-show="activeNameTab === '1'">
<el-card class="box-card-info">
<div slot="header" class="clearfix">
<span style="font-size: 20px">基本信息</span>
</div>
<el-form
ref="testForm"
:model="formData"
label-width="80px"
label-position="left"
:validate-on-rule-change="false"
class="vd-form-three"
>
<template v-if="partType == '热表'">
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="零件号:" prop="partCode">
{{ formData.partCode }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="零件名称:" prop="partName">
{{ formData.partName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品型号:" prop="productType">
{{ formData.productType }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否印字:" prop="isPrint">
<el-radio-group v-model="formData.isPrint" disabled>
<el-radio value="2">是</el-radio>
<el-radio value="1">否</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="材料:" prop="material">
{{ formData.material }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="硬度:" prop="hardness">
{{ formData.hardness }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="物料编码:" prop="plateGoodsCode">
<span v-if="formData.plateGoodsCode == '04-05-023'">金钾-04-05-023</span>
<span v-if="formData.plateGoodsCode == '04-05-024'">银板-04-05-024</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="产品应用领域:"
prop="productApplicationArea"
label-width="90px"
>
{{ formData.productApplicationArea }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="镀种1:" prop="plate">
{{ formData.plate }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="镀层代号1:" prop="plateCode">
{{ formData.plateCode }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="面积1(dm²):" prop="area">
{{ formData.area }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="镀层厚度1:" prop="plateThickness">
{{ formData.plateThickness }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="镀种2:" prop="plateTwo">
{{ formData.plateTwo }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="镀层代号2:" prop="plateCodeTwo">
{{ formData.plateCodeTwo }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="面积2(dm²):" prop="areaTwo">
{{ formData.areaTwo }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="镀层厚度2:" prop="plateThickness">
{{ formData.plateThickness }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="16">
<el-form-item label="工艺路线:">
{{ formData.craftWay }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="涂色标个数:" prop="tsbNum">
{{ formData.tsbNum }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="涂色带个数:" prop="tsdNum">
{{ formData.tsdNum }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="涂箭头个数:" prop="tjtNum">
{{ formData.tjtNum }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="14">
<el-form-item label="色标色带:" prop="memo">
{{ formData.memo }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="14">
<el-form-item label="关键信息:" prop="keyInfo">
<el-input
v-model="formData.keyInfo"
type="textarea"
maxlength="150"
show-word-limit
rows="3"
disabled
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="有效期:" prop="periodOfValidity">
<el-radio-group disabled v-model="formData.periodOfValidity">
<el-radio value="1">长期有效</el-radio>
<el-radio value="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="有效周期(天):" prop="expirationPeriod" label-width="100px">
{{ formData.expirationPeriod }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="到期提醒(天):" prop="advanceRemind" label-width="100px">
{{ formData.advanceRemind }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="工艺校验:" prop="sinTer">
<div style="width: 100%">
<el-checkbox v-model="formData.goldMark" disabled>镀金标识</el-checkbox>
<el-checkbox
disabled
v-model="formData.markingsTest"
:true-label="'1'"
:false-label="'0'"
>涂色标</el-checkbox
>
<el-checkbox
disabled
v-model="formData.fluorescenceCheck"
:true-label="'1'"
:false-label="'0'"
>荧光检</el-checkbox
>
<el-checkbox
v-model="formData.hotDispose"
disabled
:true-label="'1'"
:false-label="'0'"
>热处理检验</el-checkbox
>
<el-checkbox
v-model="formData.inkjetPrinting"
disabled
:true-label="'1'"
:false-label="'0'"
>喷码</el-checkbox
>
</div>
</el-form-item>
</el-col>
</el-row>
</template>
<template v-if="partType == '烧结'">
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="零件号:" prop="partCode">
{{ formData.partCode }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="零件名称:" prop="partName">
{{ formData.partName }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="产品型号:" prop="productType">
{{ formData.productType }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否为玻璃饼:" prop="isClassCake">
<el-switch
v-model="formData.isClassCake"
disabled
active-color="#13ce66"
inactive-color="#ff4949"
active-text="是"
inactive-text="否"
active-value="1"
inactive-value="0"
/>
</el-form-item>
</el-col>
<el-col :span="6" v-if="notGlassCake">
<el-form-item label="是否印字:" prop="isPrint">
<el-radio-group v-model="formData.isPrint" disabled>
<el-radio value="2">单</el-radio>
<el-radio value="3">双</el-radio>
<el-radio value="1">否</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer || !notGlassCake">
<el-form-item label="面积(dm²):">
{{ formData.area }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer || !notGlassCake">
<el-form-item label="材料:" prop="material">
{{ formData.material }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="硬度:" prop="hardness">
{{ formData.hardness }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="物料编码:" prop="plateGoodsCode">
<span v-if="formData.plateGoodsCode == '04-05-023'">金钾-04-05-023</span>
<span v-if="formData.plateGoodsCode == '04-05-024'">银板-04-05-024</span>
<span v-else>-</span>
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="镀种:" prop="plate">
{{ formData.plate }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="镀层代号:" prop="plateCode">
{{ formData.plateCode }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="面积(dm²):" prop="area">
{{ formData.area }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="(child || formData.glassCake) && formData.sinTerType != 5">
<el-form-item label="粉重:" prop="powderWeight">
{{ formData.powderWeight }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="镀层厚度:" prop="plateThickness">
{{ formData.plateThickness }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="!notGlassCake">
<el-form-item label="成型厚度:" prop="formingThickness">
{{ formData.formingThickness }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="产品应用领域:"
prop="productApplicationArea"
label-width="90px"
>
{{ formData.productApplicationArea }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="玻璃饼直径" label-width="90px">
{{ formData.blbDiameter }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="壳体最大外径" label-width="90px">
{{ formData.externalDiameter }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="涂色标个数:" prop="tsbNum">
{{ formData.tsbNum }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="涂色带个数:" prop="tsdNum">
{{ formData.tsdNum }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="涂箭头个数:" prop="tjtNum">
{{ formData.tjtNum }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" v-if="notGlassCake || !notSinTer">
<el-col :span="24">
<el-form-item label="工艺路线:">
{{ formData.craftWay }}
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="关键信息:" prop="keyInfo">
<el-input
v-model="formData.keyInfo"
type="textarea"
maxlength="150"
show-word-limit
disabled
rows="3"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="色标色带:" prop="memo">
<el-input
v-model="formData.memo"
:rows="3"
type="textarea"
disabled
maxlength="150"
show-word-limit
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="有效期:" prop="periodOfValidity">
<el-radio-group v-model="formData.periodOfValidity" disabled>
<el-radio value="1">长期有效</el-radio>
<el-radio value="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.periodOfValidity == '2'">
<el-form-item label="有效周期(天):" prop="expirationPeriod" label-width="100px">
{{ formData.expirationPeriod }}
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.periodOfValidity == '2'">
<el-form-item label="到期提醒(天):" prop="advanceRemind">
{{ formData.advanceRemind }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="工艺校验:" prop="sinTer">
<div style="width: 100%">
<el-checkbox v-model="formData.goldMark" disabled>镀金标识</el-checkbox>
<el-checkbox
v-model="formData.markingsTest"
@change="setDataLocal"
:true-label="'1'"
:false-label="'0'"
disbaled
>涂色标</el-checkbox
>
</div>
</el-form-item>
</el-col>
</el-row>
</template>
</el-form>
</el-card>
<el-card class="box-card" v-if="dataTable.length > 0" style="margin-top: 24px">
<div slot="header" class="clearfix">
<span style="font-size: 20px">子件信息</span>
</div>
<avue-crud
:option="option"
:table-loading="loading"
:data="dataTable"
v-model="form"
ref="crud"
>
</avue-crud>
</el-card>
</div>
<div v-show="activeNameTab === '2'" class="box-card box-card-two">
<div class="process-left">
<div class="process-select">
<!-- 工艺级别:-->
<el-form :model="form" label-width="auto">
<el-form-item label="工艺级别:">
<el-select
v-model="rank"
placeholder="请选择"
style="width: 220px"
@change="leavelChange"
clearable
filterable
>
<el-option label="一级工艺" value="1" />
<el-option label="二级工艺" value="2" />
<el-option label="三级工艺" value="3" />
</el-select>
</el-form-item>
</el-form>
</div>
<el-tree
style="width: 240px"
:data="data"
:props="defaultProps"
@node-click="handleNodeClick"
:default-expand-all="true"
:expand-on-click-node="false"
node-key="id"
ref="tree"
:current-node-key="currentNodeKey"
/>
</div>
<div class="process-right">
<el-form :model="form" label-width="auto" v-if="treeLeave == 2">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="重要度:" prop="prority">
<el-select
v-model="treeNodes.rawData.prority"
:placeholder="''"
clearable
filterable
disabled
>
<el-option
v-for="item in priorityList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="流转编号:" prop="roamNo">
<el-input v-model="treeNodes.rawData.roamNo" disabled placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注:" prop="beizhu">
<el-input v-model="treeNodes.rawData.remarks" placeholder="" disabled />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="工艺维护" name="1" v-if="treeLeave == 2"></el-tab-pane>
<el-tab-pane label="项目" name="2" v-if="treeLeave == 3"></el-tab-pane>
<el-tab-pane label="尺寸、量具" name="3" v-if="treeLeave == 3"></el-tab-pane>
<el-tab-pane label="工装、模具表" name="4" v-if="treeLeave == 3"></el-tab-pane>
</el-tabs>
<el-table :data="form1.tableData1" style="width: 100%" v-if="activeName == '1'" border>
<el-table-column prop="processNo" label="工序号"></el-table-column>
<el-table-column prop="processName" label="工序"> </el-table-column>
<el-table-column prop="craftName" label="工艺能力"> </el-table-column>
<el-table-column prop="proDes" label="工序描述"> </el-table-column>
<el-table-column prop="proHours" label="定额工时(分钟)"> </el-table-column>
<el-table-column prop="setoutHours" label="准备工时(分钟)"> </el-table-column>
<el-table-column prop="isMain" label="是否主工序">
<template #default="scope">
{{ scope.row.isMain == '1' ? '是' : '否' }}
</template>
</el-table-column>
</el-table>
<el-table :data="form2.tableData2" style="width: 100%" v-if="activeName == '2'" border>
<el-table-column prop="trialNo" label="项目编号"></el-table-column>
<el-table-column prop="projectName" label="检验项目"> </el-table-column>
<el-table-column prop="projectStandardName" label="检验标准"> </el-table-column>
<el-table-column prop="proHours" label="定额工时(分钟)"> </el-table-column>
<el-table-column prop="prepareHours" label="准备工时(分钟)"></el-table-column>
</el-table>
<el-table :data="form3.tableData3" style="width: 100%" v-if="activeName == '3'" border>
<el-table-column prop="trialNo" label="项目编号"></el-table-column>
<el-table-column prop="testType" label="镀前镀后">
<template #default="scope">
{{ scope.row.testType == 1 ? '镀前' : '镀后' }}
</template>
</el-table-column>
<el-table-column prop="tool" label="量具"> </el-table-column>
<el-table-column prop="toolSize" label="量具尺寸"></el-table-column>
<el-table-column prop="toolInfo" label="图纸尺寸"></el-table-column>
</el-table>
<el-table :data="form4.tableData4" style="width: 100%" v-if="activeName == '4'" border>
<el-table-column prop="moldCode" label="对应工装"> </el-table-column>
<el-table-column prop="moldName" label="工装名称"></el-table-column>
<el-table-column prop="isPrint" label="是否印字"></el-table-column>
<el-table-column prop="printNo" label="印字版编号"></el-table-column>
<el-table-column prop="testFixtureNo" label="测试夹具号"></el-table-column>
</el-table>
</div>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="cancel()">取消</el-button>
<!-- <el-button type="primary" @click="cancel()"> 确认 </el-button> -->
</div>
</template>
</el-dialog>
</template>
<script>
import dsPartBasicInfo from './dsPartBasicInfo.vue';
import processPlanning from './processPlanning.vue';
import {
getPartManagementDetail,
getProcessManagementAuthorized,
getPartDetail,
getProcessAuthorized,
getVersion,
getPlatingList,
getProject,
} from '@/api/processManagement/taskProcessing';
export default {
name: 'DsPartIndex',
components: {
dsPartBasicInfo,
processPlanning,
},
props: {
// partType: {
// type: String,
// default: '',
// },
isOpen: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => ({}),
},
detailsType: {
type: String,
default: '',
},
partId: {
type: String,
default: '',
},
},
data() {
return {
currentNodeKey: '',
showProcessVersion: false,
setCrewShow: false,
activeName: '1',
activeNameTab: '1',
craftData: {},
treeNodes: {},
formData: {},
form: {},
processLevel: '1',
rankList: [],
rank: '2',
priorityList: [
{
label: '本次使用',
value: 1,
},
{
label: '正式工艺',
value: 2,
},
{
label: '临时工艺',
value: 3,
},
],
form1: {
tableData1: [], //工序
},
form2: {
tableData2: [], //项目
},
form3: {
tableData3: [], //量具
},
form4: {
tableData4: [], //工装
},
activeName: '1',
treeLeave: 2, //组织树选中层级
data: [],
dataTable: [],
option: {
tip: false,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
dialogWidth: '60%',
border: true,
selection: false,
viewBtn: true,
menuWidth: 240,
dialogClickModal: false,
excelBtn: true,
viewBtn: false,
editBtnText: '编辑',
refreshBtn: false,
searchShowBtn: false,
gridBtn: false,
menu: false,
header: false,
index: true,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
align: 'center',
column: [
{
label: '零件号',
prop: 'partCode',
search: false,
sortable: true,
overHidden: true,
},
{
label: '零件名称',
prop: 'partName',
search: false,
sortable: true,
overHidden: true,
},
{
label: '产品型号',
prop: 'productType',
search: false,
sortable: true,
overHidden: true,
},
{
label: '面积',
prop: 'area',
search: false,
sortable: true,
overHidden: true,
},
{
label: '数量',
prop: 'quota',
search: false,
sortable: true,
overHidden: true,
},
{
label: '总面积',
prop: 'totalArea',
search: false,
sortable: true,
overHidden: true,
},
{
label: '零件类型',
prop: 'sinTerType',
search: false,
sortable: true,
overHidden: true,
type: 'select',
filterable: true,
clearable: true,
cell: true,
dicData: [
{
label: '插针',
value: '1',
},
{
label: '壳体',
value: '2',
},
{
label: '石墨模',
value: '5',
},
{
label: '自制玻璃饼',
value: '3',
},
{
label: '其他',
value: '4',
},
],
},
{
label: '修改人',
prop: 'updateUserStr',
search: false,
sortable: true,
overHidden: true,
},
{
label: '修改时间',
prop: 'updateTime',
search: false,
sortable: true,
overHidden: true,
},
],
},
loading: false,
defaultProps: {
children: 'children',
label: 'label',
},
version: '', //版本号
versionOptions: [], //
plateList: [], //镀种信息
projectOptions: [],
standardList: [], //检验标准
tabLoading: false, //加载状态
};
},
mounted() {
this.setCrewShow = this.isOpen;
if (this.detailsType == 'processPlanning') {
this.version = this.rowData.partVersion;
this.partChange(this.rowData.id);
}
this.getCcraftInfo();
this.getPartInfo();
this.getPlatingList();
this.getStandardList();
//
},
methods: {
getStandardList() {
getStandardList().then(res => {
this.standardList = res.data.data;
});
},
getProject() {
getProject({ size: 999999, current: 1 }).then(res => {
this.projectOptions = res.data.data.records;
});
},
getPlatingList() {
getPlatingList().then(res => {
this.plateList = res.data.data;
});
},
// 获取零件号的版本号列表
partChange(id) {
getVersion({ partId: id }).then(res => {
this.versionOptions = res.data.data;
});
},
// 切换版本号
versionChange() {
this.tabLoading = true;
this.getCcraftInfo();
this.getPartInfo();
},
// 组织树点击
handleNodeClick(nodes, node, self) {
if (nodes.disabled) {
return false;
}
this.treeNodes = nodes;
this.treeLeave = node.level;
// 清空现有表格数据
this.form1.tableData1 = [];
this.form2.tableData2 = [];
this.form3.tableData3 = [];
this.form4.tableData4 = [];
// 根据节点层级切换标签页
if (this.treeLeave === 2) {
this.activeName = '1';
this.form1.tableData1 = nodes.processList;
console.log('默认点击选中第一个数据', this.treeNodes);
this.treeNodes.rawData.prority = Number(this.treeNodes.rawData.prority);
}
// 根据节点层级加载对应数据
if (this.treeLeave === 3) {
this.activeName = '2';
// 三级节点:工序级,加载工序相关数据
const { processInfo, projectList, measuringToolList, moldToolList } = nodes.rawData;
// 加载项目表格数据
this.form2.tableData2 = projectList.map(item => ({
trialNo: item.trialNo,
projectName: item.projectName,
projectStandard: item.projectStandard,
proHours: item.proHours,
prepareHours: item.prepareHours,
}));
// 加载量具表格数据
this.form3.tableData3 = measuringToolList.map(item => ({
trialNo: item.trialNo,
testType: item.testType,
tool: item.tool,
toolSize: item.toolSize,
toolInfo: item.toolInfo,
}));
// 加载工装表格数据
this.form4.tableData4 = moldToolList.map(item => ({
trialNo: item.trialNo,
moldCode: item.moldCode,
moldName: item.moldName,
isPrint: item.isPrint,
printNo: item.printNo,
testFixtureNo: item.testFixtureNo,
}));
}
},
setDataLocal() {
this.$setItem('零件信息信息验证', this.validateObj);
},
leavelChange(value) {
this.tabLoading = true;
this.getCcraftInfo();
this.getPartInfo();
},
// ✅ 自动选中第一个子节点
autoSelectFirstNode() {
this.$nextTick(() => {
if (!this.$refs || !this.$refs.tree) {
console.warn('el-tree 组件未找到,跳过自动选中');
return;
}
if (!this.data || this.data.length === 0) {
console.log('树数据为空,不自动选中');
return;
}
const rootNode = this.data[0];
if (
!rootNode.children ||
!Array.isArray(rootNode.children) ||
rootNode.children.length === 0
) {
console.warn('根节点无子节点,跳过自动选中');
return;
}
const firstChild = rootNode.children[0];
// 4. 检查节点 ID
if (!firstChild.id) {
console.error('第一个子节点 ID 为空,请检查 generateId 函数');
return;
}
// 5. 设置选中状态
try {
this.$nextTick(() => {
this.currentNodeKey = firstChild.id
this.$refs.tree.setCurrentKey([firstChild.id], false);
});
} catch (error) {
console.error('setCurrentKey 执行失败:', error);
return;
}
// 6. 触发节点点击,加载数据
this.handleNodeClick(firstChild, {
level: firstChild.level,
parent: {
data: rootNode,
isRoot: false,
},
});
});
},
// 获取工艺信息
getCcraftInfo() {
// 零件工艺管理-详情
if (this.detailsType == 'processPlanning') {
let query = {
partCode: this.rowData.partCode,
partVersion: this.version,
rank: this.rank,
};
getProcessManagementAuthorized(query).then(res => {
this.data = this.transformCraftTree(res.data.data);
this.tabLoading = false;
this.autoSelectFirstNode();
});
} else if (this.detailsType === 'taskProcessing') {
let query_ = {};
if (!this.rowData.partVersion) {
query_ = {
partId: this.partId,
rank: this.rank,
taskId: this.rowData.id,
version: this.rowData.version,
};
} else {
query_ = {
version: this.rowData.partVersion,
partCode: this.rowData.partCode,
rank: this.rank,
partId: this.partId,
};
}
getProcessAuthorized(query_).then(res => {
this.craftData = res.data.data;
this.data = this.transformCraftTree(res.data.data);
this.tabLoading = false;
this.autoSelectFirstNode();
});
}
},
// 获取零件信息
getPartInfo() {
// 零件工艺管理-详情
if (this.detailsType == 'processPlanning') {
let query = {
partCode: this.rowData.partCode,
partVersion: this.version,
rank: this.rank,
};
getPartManagementDetail(query).then(res => {
this.formData = res.data.data.dsPartEntity;
// res.data.data.dsPartVOList=null
this.dataTable = res.data.data.dsPartVOList == null ? [] : res.data.data.dsPartVOList;
this.tabLoading = false;
if (this.dataTable.length > 0) {
this.dataTable.forEach(item => {
item.totalArea = (item.quota * item.area).toFixed(5); // 保留5位小数(字符串)
});
}
if (this.formData.isSintering != '1') {
this.partType = '热表';
} else {
this.partType = '烧结';
}
});
} else if (this.detailsType === 'taskProcessing') {
let query_ = {};
if (!this.rowData.partVersion) {
query_ = { taskId: this.rowData.id, version: this.rowData.version };
} else {
query_ = { version: this.rowData.partVersion, partCode: this.rowData.partCode };
}
getPartDetail(query_).then(res => {
this.formData = res.data.data.dsPartEntity;
this.dataTable = res.data.data.dsPartVOList;
this.version = res.data.data.partVersion;
this.tabLoading = false;
if (this.formData.isSintering != '1') {
this.partType = '热表';
} else {
this.partType = '烧结';
}
if (this.dataTable.length > 0) {
this.dataTable.forEach(item => {
item.totalArea = (item.quota * item.area).toFixed(5); // 保留5位小数(字符串)
});
}
});
}
},
// 组织树转换
transformCraftTree(responseData) {
const { partInfo, craftList } = responseData;
const partCode = partInfo.partCode;
const generateId = (prefix, id, fallback) => {
return id;
};
const formatCraftLabel = craftInfo => {
return `${craftInfo.roamNo || '临时工艺'}-${craftInfo.craftNo || '工艺文件'}`;
};
const tree = [
{
id: generateId('part', partInfo.id, partCode),
label: partCode,
disabled: false,
level: 1,
rawData: {
partCode: partInfo.partCode,
partId: partInfo.id,
rank: this.rank,
version: partInfo.version,
craftNo: 'C000000',
},
children: (craftList || []).map(craft => {
const { craftInfo, processList } = craft;
return {
...craftInfo,
id: generateId('craft', craftInfo.id, craftInfo.craftNo),
label: formatCraftLabel(craftInfo),
level: 2,
rawData: craftInfo,
// ✅ 工序列表
processList: (processList || []).map(process => ({
...process.processInfo,
projectList: process.projectList || [],
measuringToolList: process.measuringToolList || [],
moldToolList: process.moldToolList || [],
})),
// ✅ 子节点(工序)
children: (processList || []).map(process => {
const { processInfo, projectList, measuringToolList, moldToolList } = process;
return {
...processInfo,
id: generateId('process', processInfo.id, processInfo.processNo),
label: processInfo.processNo + '-' + processInfo.processName,
level: 3,
rawData: {
processInfo,
projectList: projectList || [],
measuringToolList: measuringToolList || [],
moldToolList: moldToolList || [],
},
// ✅ 子节点(项目)
children: (projectList || []).map(project => ({
id: generateId('project', project.id, project.projectCode),
label: project.trialNo + '-' + project.projectName,
level: 4,
disabled: true,
rawData: project,
})),
};
}),
};
}),
},
];
return tree;
},
handleClick(value) {
console.log(999999, value);
},
partSubRefLoad() {
this.$refs.partSubRef.loadData(this.partId, true);
},
cancelClose(flag, dsPart) {
if (flag) {
this.cancel(true);
} else {
this.partId = dsPart.partId;
}
},
cancel(refresh) {
this.activeName = '1';
this.setCrewShow = false;
this.$emit('cancel', typeof refresh === 'boolean' && refresh);
},
},
};
</script>
<style lang="scss" scoped>
.tabs-container {
position: relative;
}
.content-right {
width: 50%;
position: absolute;
right: 0;
top: 10px;
/* 或者使用 flex: 0 0 200px; 根据需要调整宽度 */
.version-label {
float: right;
}
.version_select {
float: right;
height: 50px;
display: flex;
line-height: 35px;
z-index: 99;
position: relative;
.el-select {
flex: 1;
}
}
}
.box-card-two {
height: calc(100vh - 200px);
}
.box-card {
display: flex;
flex-direction: row;
border: 1px solid #ccc;
.process-left {
// padding: 20px;
width: 240px;
min-width: 240px;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
border-right: 1px solid #ccc;
.process-select {
padding: 12px;
background: #e4e7ed;
:deep(.el-form-item) {
margin-bottom: 0px !important;
}
}
}
.process-right {
padding: 12px;
flex: 1;
border-left: 0;
.table-btn {
width: 100%;
height: 50px;
.table-btn-left {
float: left;
}
.table-btn-right {
float: right;
}
}
}
}
:deep(.el-card__body) {
width: 100%;
}
.clearfix {
margin-bottom: 12px;
}
:deep(.el-table .el-table__body-wrapper .el-table__cell) {
height: 36px !important;
padding: 0 !important;
line-height: 36px !important;
}
:deep(.header_height) {
height: 36px !important; /* 设置你想要的高度 */
line-height: 36px !important;
}
:deep(.el-form-item__label) {
font-weight: 550 !important;
// color: #333;
}
:deep(.el-tree-node.is-current > .el-tree-node__content) {
background-color: rgba(40, 76, 135, 0.9) !important;
.el-tree-node__label {
color: #fff;
}
}
:deep(.el-tree-node__label) {
font-size: 14px;
}
:deep(.el-form-item) {
margin-bottom: 0px !important;
}
</style>