From 8850d55ebadd112b30ef7783e2f6cb382cd130af Mon Sep 17 00:00:00 2001
From: 李喆(开发组) <lzhe@yxqiche.com>
Date: 星期三, 30 七月 2025 16:40:54 +0800
Subject: [PATCH] 1
---
src/views/wel/index.vue | 328 ++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 253 insertions(+), 75 deletions(-)
diff --git a/src/views/wel/index.vue b/src/views/wel/index.vue
index 015fe6f..5d1694e 100644
--- a/src/views/wel/index.vue
+++ b/src/views/wel/index.vue
@@ -4,7 +4,7 @@
:addBtn="false"
:option="option"
:table-loading="loading"
- :data="data"
+ :data="treeData"
ref="crud"
v-model:search="search"
v-model:page="mypage"
@@ -15,6 +15,22 @@
@tree-load="treeLoad"
@row-click="rowClick"
>
+ <template #search>
+ <el-row :gutter="24">
+ <el-col :span="6">
+ <el-input v-model="search.name" placeholder="璇疯緭鍏ヨ妭鐐瑰悕绉�" clearable/>
+ </el-col>
+ <el-col :span="6">
+ <el-select v-model="search.nodeType" placeholder="璇疯緭鍏ヨ妭鐐圭被鍨�" clearable>
+ <el-option v-for="item in nodeTypeList" :key="item.dictValue" :label="item.dictValue" :value="item.dictKey"/>
+ </el-select>
+ </el-col>
+ <el-col :span="6">
+ <el-button type="primary" @click="searchTree"><el-icon class="el-icon--right" style="margin-right: 6px;"><Search /></el-icon>鎼滅储</el-button>
+ <el-button :icon="Delete" @click="setClearTree"><el-icon class="el-icon--right" style="margin-right: 6px;"><Delete /></el-icon>娓呯┖</el-button>
+ </el-col>
+ </el-row>
+ </template>
<template #menu-left>
<el-button :size="size" type="primary" @click="showAdd()">鏂板鏍硅妭鐐�</el-button>
</template>
@@ -23,8 +39,9 @@
<el-button :size="size" text v-if="row.nodeType != 70" icon="el-icon-setting" type="primary" placeholder="淇敼" @click="showEdit(row)" title="淇敼"></el-button>
<el-button :size="size" text icon="el-icon-delete" type="primary" @click="showDel(row)" placeholder="鍒犻櫎" title="鍒犻櫎"></el-button>
<el-button :size="size" text v-if="row.nodeType < 60" icon="el-icon-document-add" type="primary" @click="showAdd(row)" placeholder="鏂板瀛愮骇" title="鏂板瀛愮骇"></el-button>
- <el-button :size="size" text v-if="row.nodeType == 60" icon="el-icon-upload" type="primary" @click="showUpload(row)" placeholder="鏂囦欢涓婁紶" title="鏂囦欢涓婁紶"></el-button>
- <el-button :size="size" text v-if="row.nodeType == 70" icon="el-icon-pie-chart" type="primary" @click="upgrade(row)" placeholder="鍗囩増" title="鍗囩増"></el-button>
+ <el-button :size="size" text v-if="row.nodeType == 60 || row.nodeType == 50" icon="el-icon-upload" type="primary" @click="showUpload(row)" placeholder="鏂囦欢涓婁紶" title="鏂囦欢涓婁紶"></el-button>
+ <!-- 娑夊瘑缃戞墠鏈� -->
+ <el-button :size="size" text v-if="row.nodeType == 70 && isSM" icon="el-icon-pie-chart" type="primary" @click="upgrade(row)" placeholder="鍗囩増" title="鍗囩増"></el-button>
<!-- 宸ユ帶缃戞墠鏈� -->
<el-button :size="size" text v-if="row.nodeType == 70 && !isSM" icon="el-icon-position" type="primary" @click="downsend(row)" placeholder="涓嬪彂" title="涓嬪彂"></el-button>
</template>
@@ -47,7 +64,7 @@
<avue-form v-if="tabsType == 'tab1'" :option="tabsFormOption" v-model="tabsForm"></avue-form>
<span v-else-if="tabsType == 'tab2'">鐗堟湰淇℃伅</span>
<template v-else-if="tabsType == 'tab3'">
- {{fileContent}}
+ <div v-html="convertToHtml(fileContent)"></div>
</template>
<el-dialog title="鍗囩増" append-to-body v-model="upgradeModal" width="500">
<avue-form :option="upgradeModalOption" v-model="upgradeModalForm" @submit="upgradeSubmit" @reset-change="upgradeCancel"></avue-form>
@@ -56,14 +73,15 @@
</template>
<script>
-
+import { ElMessage } from 'element-plus';
export default {
data() {
return {
+ targetRow: {},
upgradeModal: false,
file: null,
fileContent: "",
- isSM: false, //鏄惁鏄秹瀵嗙綉 锛屽伐鎺х綉5涓紝娑夊瘑缃�4涓�
+ isSM: true, //鏄惁鏄秹瀵嗙綉 锛屽伐鎺х綉5涓紝娑夊瘑缃�4涓�
isShowTabs: true,
nodeTypeList: [],
fileList: [],
@@ -73,7 +91,7 @@
emptyText: "鍙栨秷",
menuPosition: "right",
column: [{
- label: '鍗囩増',
+ label: '宸ュ簭鐗堟',
prop: 'processEdition',
labelWidth: "80",
span: 22
@@ -145,6 +163,12 @@
prop: 'updateTime',
disabled: true,
placeholder: " "
+ },
+ {
+ label: '澶囨敞',
+ prop: 'remark',
+ disabled: true,
+ placeholder: " "
}
]
},
@@ -159,7 +183,7 @@
menuPosition: "right",
column: [
{
- label: '鑺傜偣绫诲瀷',
+ label: '鑺傜偣绫诲瀷1',
prop: 'nodeType',
labelWidth: "120",
type: 'select',
@@ -209,8 +233,8 @@
id: "",
parentId:1,
search: {
- keyword: "",
- machineGroupCode: ""
+ name: "",
+ nodeType: ""
},
loading: true,
mypage: {
@@ -219,11 +243,13 @@
total: 0,
},
option: {
+ highlightCurrentRow: true,
rowKey: "id",
treeProps: {
children: "children",
hasChildren: 'hasChildren',
},
+ defaultExpandAll: false,
lazy: true,
rowKey: 'id',
addBtn: false,
@@ -231,6 +257,8 @@
delBtn: false,
fit: true,
menu: false,
+ searchBtn: false,
+ emptyBtn: false,
column: [
{
label: '鐩綍',
@@ -267,7 +295,23 @@
},
{
label: '娴佺▼鐘舵��',
- prop: 'abc'
+ prop: 'flowStatus',
+ formatter: (val, value, label) => {
+ if(val.nodeType != '70'){
+ //闈炵▼搴忚妭鐐�
+ return '';
+ }else{
+ if(value==0||value==null){
+ return '鏈惎鍔�';
+ }else if(value == 1){
+ return '瀹℃壒涓�';
+ }else if(value == 2){
+ return '宸查�氳繃';
+ }else{
+ return '鏈畾涔�';
+ }
+ }
+ },
},
{
label: '娴嬭瘯绋嬪簭',
@@ -280,7 +324,7 @@
}
],
},
- data: [],
+ treeData: [],
upData: []
};
},
@@ -315,25 +359,53 @@
},
dicFormatter(res) {
return res.data.records;
- }
+ },
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ヨ澶囩紪鍙�',
+ trigger: 'blur'
+ }
+ ]
},
{
label: '闆剁粍浠跺彿/鍥惧彿',
prop: 'drawingNo',
- labelWidth: "120"
+ labelWidth: "120",
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ラ浂缁勪欢鍙�/鍥惧彿',
+ trigger: 'blur'
+ }
+ ]
},
{
label: '宸ュ簭',
prop: 'processName',
- labelWidth: "120"
+ labelWidth: "120",
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ュ伐搴�',
+ trigger: 'blur'
+ }
+ ]
},
{
label: '宸ュ簭鐗堟湰',
prop: 'processEdition',
- labelWidth: "120"
+ labelWidth: "120",
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ュ伐搴忕増鏈�',
+ trigger: 'blur'
+ }
+ ]
},
{
- label: '鑺傜偣鍒嗙被',
+ label: '鏂囦欢鍒嗙被',
prop: 'category',
labelWidth: "120",
type: 'select',
@@ -341,7 +413,14 @@
props: {
label: 'dictValue',
value: 'dictKey',
- }
+ },
+ rules: [
+ {
+ required: true,
+ message: '璇烽�夋嫨鏂囦欢鍒嗙被',
+ trigger: 'change'
+ }
+ ]
},
{
label: '閫夋嫨鏂囦欢',
@@ -353,10 +432,22 @@
showFileList: false,
span: 24,
tip: "璇蜂笂浼犳枃浠讹紝灏嗗湪鎻愪氦鏃剁粺涓�澶勭悊",
- action: "/blade-mdm/program/ncfile/upload"
+ action: "/blade-mdm/program/ncfile/upload",
+ rules: [
+ {
+ validator: (rule, value, callback) => {
+ if (this.fileList.length === 0) {
+ callback(new Error('璇蜂笂浼犳枃浠�'));
+ } else {
+ callback();
+ }
+ },
+ trigger: 'blur'
+ }
+ ]
},
{
- label: '鏂囦欢鍒楄〃',
+ label: '宸蹭笂浼犳枃浠�',
prop: 'fileList',
labelWidth: "120"
},
@@ -377,16 +468,79 @@
}
},
methods: {
+ convertToHtml(text) {
+ return text.replace(/\r\n/g, '<br>');
+ },
+ removeHasChildren(treeData) { //鏌ヨ鏃跺�欎娇鐢紝鍒犳帀hasChildren
+ return treeData.map(node => {
+ if (node.children && node.children.length > 0) {
+ node.children = this.removeHasChildren(node.children);
+ }
+ // 鍒犻櫎褰撳墠鑺傜偣鐨� hasChildren 灞炴��
+ const { hasChildren, ...rest } = node;
+ return rest;
+ });
+ },
+ // 閫掑綊鏌ユ壘鐩爣琛岋紙name="鏈哄簥1"锛�
+ findTargetRow(data, targetName) {
+ for (const item of data) {
+ if (item.name === targetName) {
+ return item; // 鎵惧埌鐩爣琛�
+ }
+ if (item.children && item.children.length > 0) {
+ const found = this.findTargetRow(item.children, targetName);
+ if (found) return found; // 鍦ㄥ瓙鑺傜偣涓壘鍒�
+ }
+ }
+ return null; // 鏈壘鍒�
+ },
+ highlightTargetRow() { // 楂樹寒鐩爣琛�
+ const targetName = this.search.name;
+ this.targetRow = this.findTargetRow(this.treeData, targetName);
+ if (this.targetRow && this.$refs.crud) {
+ this.$refs.crud.setCurrentRow(this.targetRow); // 楂樹寒鐩爣琛�
+ }
+ },
+ searchTree() {
+ axios({
+ url: '/blade-mdm/program/node/search-list',
+ method: 'get',
+ params: this.search,
+ }).then(res => {
+ this.option.defaultExpandAll = true;
+ this.treeData = this.removeHasChildren(res.data.data);
+ this.$nextTick(() => {
+ this.highlightTargetRow(); // 璁剧疆褰撳墠琛岄珮浜�
+ this.tabsForm = this.targetRow; //tabs鑺傜偣淇℃伅
+ this.nodeTypeList.forEach(item=> {
+ if(item.dictKey == this.tabsForm.nodeType) {
+ this.tabsForm.nodeTypeName = item.dictValue;
+ }
+ })
+ })
+ if(this.treeData.length == 0) {
+ return;
+ }
+ });
+ },
+ setClearTree() {
+ this.option.defaultExpandAll = false;
+ this.treeData = [];
+ this.$nextTick(()=> {
+ this.onLoad();
+ })
+ },
upgradeSubmit(row,done) { //鍗囩増
axios({
url: '/blade-mdm/program/ncfile/upgrade-process-edition',
method: 'post',
- data: {id:row.id,newProcessEdition: row.processEdition},
+ params: {bindNcNodeId:row.id,newProcessEdition: row.processEdition},
}).then(
res => {
done();
this.upgradeModal = false;
- //this.$message.success('鎿嶄綔鎴愬姛');
+ this.$message.success('鎿嶄綔鎴愬姛');
+ this.addLocalTreeNode(row.parentId);
}
);
},
@@ -394,19 +548,20 @@
this.upgradeModal = false;
},
downsend(row) { //涓嬪彂
- // this.loading = true;
- // axios({
- // url: '/program/ncfile/send-to-machine-by-nodeid',
- // method: 'get',
- // params: {nodeId:id},
- // }).then(
- // res => {
- //this.loading = false;
- // }
- // );
+ this.loading = true;
+ axios({
+ url: '/blade-mdm/program/ncfile/send-to-machine-by-nodeid',
+ method: 'post',
+ params: {nodeId:row.id},
+ }).then(
+ res => {
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛');
+ }
+ );
},
upgrade(row) { //鍗囩増
- this.upgradeModalForm = row;
+ this.upgradeModalForm = {...row};
this.upgradeModal = true;
},
delFile(item) {
@@ -439,6 +594,9 @@
var formData = new FormData();
formData.append('file', this.file);
formData.append('nodeId', this.id);
+ if(this.isRepeatUpload) {
+ formData.append('cofirm','1');
+ }
Object.keys(this.uploadmodalForm).forEach(key => {
formData.append(key, this.uploadmodalForm[key]);
});
@@ -447,11 +605,33 @@
url: '/blade-mdm/program/ncfile/upload',
method: 'post',
data: formData,
- }).then(
- res => {
+ }).then(res => {
this.loading = false;
- this.uploadmodalBox = false;
- this.addLocalTreeNode(row.id); //閲嶆柊鍔犺浇涓嬩竴绾�
+ if(res.data.code == 2) {
+ this.$confirm('鏂囦欢鍚嶅凡瀛樺湪锛岀‘瀹氫笂浼犲悧?', '鎻愮ず', {
+ distinguishCancelAndClose: true,
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.isRepeatUpload = true;
+ this.uploadmodalSubmit(row,done);
+ }).catch(action => {
+ this.isRepeatUpload = false;
+ this.$message({
+ type: 'info',
+ message:'鍙栨秷涓婁紶'
+ })
+ });
+ }else if(res.data.success) {
+ this.isRepeatUpload = false;
+ this.uploadmodalBox = false;
+ this.$message({type: 'success',message: '鎿嶄綔鎴愬姛!'});
+ this.addLocalTreeNode(row.id); //閲嶆柊鍔犺浇涓嬩竴绾�
+ }else {
+ this.isRepeatUpload = false;
+ alert(1)
+ }
done();
}
);
@@ -480,19 +660,18 @@
tabsHandleChange(tabs) {
this.tabsType = tabs.prop;
},
- showUpload(row) {
+ showUpload(row) {//鑾峰彇鏂囦欢鍐呭
this.fileList = [];
this.uploadmodalForm = row;
- //鑾峰彇鏂囦欢鍐呭
this.loading = true;
+ var obj = {parentId: row.id}
axios({
- url: '/blade-mdm/program/ncfile/list-by-node',
+ url: '/blade-mdm/program/node/lazy-list',
method: 'get',
- params: {nodeId: row.id},
+ params: obj,
}).then(
res => {
this.loading = false;
- this.fileList = res.data.data;
this.uploadmodalBox = true;
}
);
@@ -530,9 +709,7 @@
}).then(
res => {
this.loading = false;
- var nodeArr = this.$refs.crud.$refs.table.store.states.lazyTreeNodeMap.value[row.parentId];
- var arr = nodeArr.filter(item => item.id !== row.id);
- this.$refs.crud.$refs.table.store.states.lazyTreeNodeMap.value[row.parentId] = arr;
+ this.addLocalTreeNode(row.parentId);
}
);
})
@@ -573,7 +750,7 @@
this.modalBox = false;
// 淇敼锛屾洿鏂版湰鍦版暟鎹�
if (this.modalTitle === "淇敼") {
- this.updateLocalTreeNode(this.modalForm);
+ this.addLocalTreeNode(row.parentId);
}else {
// 濡傛灉鏄柊澧炴搷浣滐紝鍙兘闇�瑕侀噸鏂板姞杞芥暟鎹�
//this.$refs.crud.refreshTable();
@@ -600,28 +777,14 @@
}).then(
res => {
var children = res.data.data || [];
- this.$refs.crud.$refs.table.store.states.lazyTreeNodeMap.value[parentId] = [...children];
+ if(parentId == 0) {
+ this.treeData = [...children];
+ }else {
+ this.$refs.crud.$refs.table.store.states.lazyTreeNodeMap.value[parentId] = [...children];
+ }
this.loading = false;
}
);
- },
- updateLocalTreeNode(nodeData) { //淇敼鐨勬柟娉�
- const updateNode = (nodes) => {
- for (let i = 0; i < nodes.length; i++) {
- if (nodes[i].id === nodeData.id) {
- // 鏇存柊鑺傜偣鏁版嵁
- Object.assign(nodes[i], nodeData);
- return true;
- }
- if (Array.isArray(nodes[i].children) && nodes[i].children.length > 0) {
- if (updateNode(nodes[i].children)) {
- return true;
- }
- }
- }
- return false;
- };
- updateNode(this.data);
},
modalCancel() {
this.modalBox = false;
@@ -662,13 +825,13 @@
}).then(
res => {
this.loading = false;
- this.data = res.data.data;
- if(this.data.length == 0) {
+ this.treeData = res.data.data;
+ if(this.treeData.length == 0) {
return;
}
this.tabsForm = res.data.data[0]; //鑺傜偣淇℃伅
this.nodeTypeList.forEach(item=> {
- if(item.dictKey == this.data[0].nodeType) {
+ if(item.dictKey == this.treeData[0].nodeType) {
this.tabsForm.nodeTypeName = item.dictValue;
}
})
@@ -683,13 +846,13 @@
this.nodeTypeList = res.data.data;
}
);
- //鍒ゆ柇鐗堟湰 0:娑夊瘑缃戯紝1:宸ユ帶缃戯紱//宸ユ帶缃�5涓紝娑夊瘑缃�4涓�
- axios({url: '/blade-mdm/system/param/getValue?paramKey=networkType',method: 'get'}).then(res => {
- if(res.data.data === "0") {
- this.isSM = true;
- }
- }
- );
+ //鍒ゆ柇鐗堟湰 0:娑夊瘑缃戯紝1:宸ユ帶缃戯紱//宸ユ帶缃�5涓紝娑夊瘑缃�4涓� ,宸ユ帶缃戝彇娑�
+ // axios({url: '/blade-mdm/system/param/getValue?paramKey=networkType',method: 'get'}).then(res => {
+ // if(res.data.data === "0") {
+ // this.isSM = true;
+ // }
+ // }
+ // );
}
};
</script>
@@ -704,4 +867,19 @@
margin-left: 10px;
margin-top: 12px;
}
+.highlight-row {
+ background-color: #f0f7ff !important; /* 娴呰摑鑹茶儗鏅� */
+ font-weight: bold; /* 鍔犵矖鏂囧瓧 */
+}
+
+/* 濡傛灉闇�瑕佹偓鍋滄晥鏋� */
+.highlight-row:hover {
+ background-color: #e6f0ff !important;
+}
+</style>
+<style>
+ .highlight-row {
+ background-color: #f0f7ff;
+ font-weight: bold;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.3