From 2781142ab67deba83925da706ca26b7f8ea1a759 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 04 九月 2025 15:42:24 +0800
Subject: [PATCH] 审批用户列表改为树形
---
src/views/flow/components/TodolistLeft.vue | 165 +++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 130 insertions(+), 35 deletions(-)
diff --git a/src/views/flow/components/TodolistLeft.vue b/src/views/flow/components/TodolistLeft.vue
index 9b62418..6016d67 100644
--- a/src/views/flow/components/TodolistLeft.vue
+++ b/src/views/flow/components/TodolistLeft.vue
@@ -1,52 +1,90 @@
<!--
* @Date: 2025-07-01 20:45:15
* @LastEditors: gaoshp
- * @LastEditTime: 2025-08-13 23:18:26
+ * @LastEditTime: 2025-08-27 20:48:41
* @FilePath: /mdmweb/src/views/flow/components/TodolistLeft.vue
-->
<template>
<basic-container>
- <div class="tool" v-show="['programmingTask','cureProgramTask','repalceProgrammingTask'].includes(row.taskDefinitionKey)">
- <el-button type="primary" plain @click="addApp">娣诲姞鏂囦欢
- </el-button>
+ <!--'cureProgramTask', 鍥哄寲缂栧埗涓嶈兘娣诲姞鏂囦欢-->
+ <div class="tool" v-show="['programmingTask', 'repalceProgrammingTask','appendProgrammingTask'].includes(row.taskDefinitionKey)">
+ <el-button type="primary" plain @click="addApp">娣诲姞鏂囦欢
+ </el-button>
</div>
- <el-table :data="tableData" border @row-click="showContent" max-height="200">
+ <el-text type="danger" v-if="row.variables.curedLocked === 'Y'">鍥哄寲绋嬪簭宸查攣瀹氾紝璇疯皑鎱庝娇鐢ㄣ�傞攣瀹氬師鍥狅細{{ remark }}</el-text>
+ <el-text type="danger" v-if="row.processDefinitionKey === 'program-unlock'">绋嬪簭宸查攣瀹氾紝閿佸畾鍘熷洜锛歿{ remark }}</el-text>
+ <el-text type="danger" v-if="row.variables.hasCuredProgram==='Y' && row.variables.isProcessEditionSame=='N' && row.variables.cureProgramUseable==undefined">宸插浐鍖栫▼搴忓伐搴忕増娆′笉涓�鑷达紝娲惧伐鐗堟:{{row.variables.processEdition}},宸插浐鍖栫増娆★細{{row.variables.curedProcessEdition}}</el-text>
+ <el-table :data="tableData" border @row-click="showContent" :row-style="{height:'20px'}" :cell-style="{padding:'0px'}" max-height="240" highlight-current-row>
<!-- <el-table-column prop="machineCode" label="鍔犲伐鏈哄簥">
</el-table-column> -->
- <el-table-column type="index" label="#" width="40" align="center"/>
+
+ <el-table-column type="index" label="#" width="40" align="center" />
<el-table-column prop="name" label="绋嬪簭鍚嶇О">
<template #default="{ row }">
<div style="display: flex;align-items: center;">
<span style="margin-right: 8px;">{{ row.name }}</span>
- <el-icon v-if="row.fileType ==='other'"><FolderOpened /></el-icon>
+ <el-icon v-if="row.fileType === 'other'">
+ <FolderOpened />
+ </el-icon>
<img v-else src="./app.jpg" alt="" width="16" height="16">
</div>
</template>
</el-table-column>
<el-table-column fixed="right" label="鎿嶄綔" width="150" align="center">
- <template #default="scope" >
- <el-button v-show="['programmingTask','cureProgramTask','repalceProgrammingTask'].includes(row.taskDefinitionKey)" type="text" size="small" @click.stop="del(scope.$index,scope.row)">鍒犻櫎</el-button>
- <el-button type="text" size="small" @click.stop="downloadFile(scope.$index,scope.row)">涓嬭浇</el-button>
- </template>
+ <template #default="scope">
+ <!--'cureProgramTask', 鍥哄寲缂栧埗锛屼笉鑳藉垹闄ゅ拰涓婁紶-->
+ <a style="color: blue;margin-right: 4px;cursor: pointer;font-size: 12px;"
+ v-show="['programmingTask', 'repalceProgrammingTask','appendProgrammingTask'].includes(row.taskDefinitionKey)"
+ type="text" size="small" @click.stop="del(scope.$index, scope.row)">鍒犻櫎</a>
+ <a style="color: blue;cursor: pointer;font-size: 12px;margin-right: 4px;" type="text" size="small"
+ @click.stop="downloadFile(scope.$index, scope.row)">涓嬭浇</a>
+ <a style="color: blue;cursor: pointer;font-size: 12px;" type="text" size="small"
+ v-show="['program-cure'].includes(row.processDefinitionKey)"
+ @click.stop="diffFile(scope.$index, scope.row)">姣斿</a>
+ </template>
</el-table-column>
</el-table>
+ <!--
+ <el-collapse>
+ <el-collapse-item :title="`鍥哄寲鏃х増鏈�: 闆剁粍浠跺彿: ${row.variables.drawingNo} 宸ュ簭鍙�: ${row.variables.processNo } 宸ュ簭鐗堟: ${ row.variables.processEdition }`" name="1">
+ <el-table :data="fileData" border @row-click="showContent" max-height="200" highlight-current-row>
+ <el-table-column type="index" label="#" width="40" align="center" />
+ <el-table-column prop="name" label="鏂囦欢鍚�">
+ <template #default="{ row }">
+ <div style="display: flex;align-items: center;">
+ <span>{{ row.name }}</span>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="150" align="center">
+ <template #default="scope">
+ <a style="color: blue;cursor: pointer;font-size: 12px;margin-right: 4px;" type="text" size="small"
+ @click.stop="downloadFile(scope.$index, scope.row)">涓嬭浇</a>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-collapse-item>
+ </el-collapse>
+ -->
<h4>绋嬪簭鍐呭</h4>
<div v-html="appContent" class="app-content">
</div>
<el-dialog title="绋嬪簭閫夋嫨" v-model="appDialog" width="400" v-if="appDialog">
- <avue-form :option="attOption"
- v-model="attForm"
- :upload-after="uploadAfter" class="att-box"></avue-form>
+ <avue-form :option="attOption" v-model="attForm" :upload-after="uploadAfter" class="att-box"></avue-form>
<!-- <div slot="footer" class="dialog-footer">
<el-button @click="appDialog = false">鍙� 娑�</el-button>
<el-button type="primary" @click="add">纭� 瀹�</el-button>
</div> -->
</el-dialog>
+ <el-dialog title="绋嬪簭閫夋嫨" v-model="diffDialog" width="80%">
+ <code-diff :old-string="this.content1" :new-string="this.content2" output-format="side-by-side"
+ :hideStat="true" :filename="codeDiffFileName1" :newFilename="codeDiffFileName2" />
+ </el-dialog>
</basic-container>
</template>
<script>
-import { getAppList,getSelectedAppList,getContent,removeAtt} from '@/api/flow/todolist';
+import { getAppList,getFileData, getSelectedAppList, getContent, removeAtt,queryLockRemark } from '@/api/flow/todolist';
import { exportBlob } from '@/api/common';
import { getToken } from '@/utils/auth';
import NProgress from 'nprogress';
@@ -67,6 +105,11 @@
},
data() {
return {
+ diffDialog: false,
+ content1: '',
+ content2: '',
+ codeDiffFileName1: '鍥炰紶鐗堟湰',
+ codeDiffFileName2: '涓嬪彂鐗堟湰',
showContentId: '',
attForm: {
att: '',
@@ -113,6 +156,7 @@
},
appData: [],
selectionList: [],
+ fileData: [],//宸查�夋枃浠�
optionApp: {
menu: false,
gridBtn: false,
@@ -145,13 +189,63 @@
// },
],
},
+
+ remark:'',//閿佸畾鍘熷洜
}
},
mounted() {
this.getAttList();
+ this.getFileData();
+ this.getLockRemark();//鑾峰彇閿佸畾鍘熷洜
this.onLoad(this.page);
+
},
methods: {
+ getFileData () {
+ getFileData(this.row.processInstanceId).then(res => {
+ if (res.data.code !== 200) {
+ this.$message.error(res.data.msg || '鑾峰彇鏂囦欢澶辫触');
+ return;
+ } else {
+ this.fileData = res.data.data || [];
+ }
+ })
+ },
+ getLockRemark () {
+ //鑾峰彇閿佸畾鍘熷洜
+ let nodeId = this.row.variables.nodeId;
+ if(!nodeId){
+ nodeId = this.row.variables.curedNodeId;
+ }
+ if(nodeId){
+ queryLockRemark(nodeId).then(res => {
+ if (res.data.code == 200) {
+ this.remark = res.data.data || '';
+ } else {
+ this.remark = '';
+ }
+ });
+ }
+ },
+ diffFile(index, row) {
+ console.log(row)
+ axios({
+ url: '/blade-mdm/blade-mdm/flow/file/compare-with-try',
+ method: 'get',
+ params: { fileId: row.id },
+ }).then(
+ res => {
+ if(res.data.success) {
+ this.diffDialog = true;
+ this.content1 = res.data.data.content1;
+ this.content2 = res.data.data.content2;
+ } else {
+ this.$message.error(res.data.msg || '姣斿澶辫触');
+ }
+
+ }
+ );
+ },
uploadAfter(res, done, loading, column) {
if (res.code === 200) {
this.getAttList();
@@ -166,7 +260,7 @@
done()
}
},
- getAttList () {
+ getAttList() {
getSelectedAppList(this.row.processInstanceId).then(res => {
if (res.data.code !== 200) {
this.$message.error('鑾峰彇宸查�夌▼搴忓け璐�');
@@ -197,35 +291,35 @@
this.appData = data.records;
});
},
- add () {
+ add() {
console.log('add')
this.tableData = this.tableData.concat(this.selectionList.filter(item => {
return !this.tableData.some(existingItem => existingItem.id === item.id);
}));
this.appDialog = false;
- this.$emit('selection-change',this.tableData)
+ this.$emit('selection-change', this.tableData)
},
- showContent (row, column, event) {
- if(!row?.id) {
+ showContent(row, column, event) {
+ if (!row?.id) {
this.showContentId = ''
return this.appContent = '';
}
this.showContentId = row.id
getContent(row.id).then(res => {
- if(res.data.code === 200) {
+ if (res.data.code === 200) {
this.appContent = res.data.data
} else {
this.appContent = '绋嬪簭鍐呭鍔犺浇澶辫触'
}
})
},
- del (index,row) {
- if(row.id === this.showContentId) {
+ del(index, row) {
+ if (row.id === this.showContentId) {
this.showContentId = '';
this.showContent(null, null, null);
}
removeAtt(row.id).then(res => {
- if(res.data.code === 200) {
+ if (res.data.code === 200) {
this.$message.success('鍒犻櫎鎴愬姛');
this.getAttList();
} else {
@@ -233,15 +327,15 @@
}
})
},
- downloadFile(index,row) {
+ downloadFile(index, row) {
NProgress.start();
exportBlob(
`/blade-mdm/flow/mgr/down-flow-file?id=${row.id}`
).then(res => {
console.log(res)
- if(res.status !== 200) {
+ if (res.status !== 200) {
return this.$message.error(res.msg);
- }
+ }
downloadXls(res.data, `${row.name}`);
NProgress.done();
});
@@ -259,6 +353,7 @@
.dialog-footer {
text-align: center;
}
+
.app-content {
background-color: #fffee1;
padding: 10px 30px;
@@ -267,15 +362,15 @@
max-height: 400px;
white-space: pre-wrap;
}
-
</style>
<style lang="scss">
- .att-box {
- .el-form-item--default {
- margin-bottom: 0;
- }
- .avue-form__menu--center {
- display: none;
- }
+.att-box {
+ .el-form-item--default {
+ margin-bottom: 0;
}
+
+ .avue-form__menu--center {
+ display: none;
+ }
+}
</style>
\ No newline at end of file
--
Gitblit v1.9.3