From 1dbb5bb85691cc48a0f6f64c999e91729d4ad22d Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 19 九月 2025 00:17:04 +0800
Subject: [PATCH] 优化审批界面

---
 src/views/flow/components/TodolistLeft.vue |  126 +++++++++++++++++++++++++++++------------
 src/views/flow/todolist.vue                |    4 
 2 files changed, 91 insertions(+), 39 deletions(-)

diff --git a/src/views/flow/components/TodolistLeft.vue b/src/views/flow/components/TodolistLeft.vue
index 227abca..8f60b2b 100644
--- a/src/views/flow/components/TodolistLeft.vue
+++ b/src/views/flow/components/TodolistLeft.vue
@@ -10,9 +10,9 @@
         <div class="tool" v-show="['programmingTask','cureProgramTask', 'replaceProgrammingTask','appendProgrammingTask'].includes(row.taskDefinitionKey)">
            
             <!--鏃犲浐鍖栫殑鎯呭喌鎵嶆樉绀鸿寮�鍏�-->
-            <el-switch v-if="row.variables.hasCuredProgram!=='Y'" v-model="programOnMachine" active-text="鐜板満缂栧埗" inactive-text="宸ヨ壓鍛樼紪鍒�" />
+            <el-switch v-if="row.variables.hasCuredProgram!=='Y'" v-model="programOnMachine" active-text="鐜板満缂栧埗" inactive-text="宸ヨ壓缂栧埗" />
             &nbsp;
-            <el-button type="primary" :disabled="programOnMachine" plain @click="addApp">娣诲姞鏂囦欢
+            <el-button type="primary" :disabled="programOnMachine" plain @click="addProgram">娣诲姞绋嬪簭
             </el-button>
         </div>
          <el-text type="danger" v-if="row.variables.curedLocked === 'Y'">鍥哄寲绋嬪簭宸查攣瀹氾紝璇疯皑鎱庝娇鐢ㄣ�傞攣瀹氬師鍥狅細{{ remark }}<br/></el-text>
@@ -21,25 +21,55 @@
          <el-text type="warning">{{row.variables.unlockReason}}</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-text type="danger" v-if="row.variables.programOnMachine=='Y'">鐜板満缂栧埗</el-text>
-        <el-table :data="tableData" border @row-click="showContent" :row-style="{height:'20px'}" :cell-style="{padding:'0px'}" max-height="380" highlight-current-row>
-           
+        <el-table :data="tableDataProgram" border @row-click="showContent" :row-style="{height:'20px'}" :cell-style="{padding:'0px'}" max-height="380" 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 style="margin-right: 8px;">{{ row.name }}</span>
-                        <el-icon v-if="row.fileType === 'other'">
-                            <el-tooltip class="box-item" effect="light" content="鍏朵粬鏂囦欢"  placement="right">
-                            <FolderOpened />
-                            </el-tooltip>
-                        </el-icon>
-                        <el-icon v-if="row.fileType === 'program'">
+                        <!--
+                        <el-icon>
                             <el-tooltip class="box-item" effect="light" content="绋嬪簭鏂囦欢"  placement="right">
                                 <Tickets/>
                             </el-tooltip>
                         </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">
+                    <!--'cureProgramTask', 鍥哄寲缂栧埗锛屼笉鑳藉垹闄ゅ拰涓婁紶-->
+                    <a style="color: blue;margin-right: 4px;cursor: pointer;font-size: 12px;"
+                        v-show="['programmingTask', 'replaceProgrammingTask','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-divider></el-divider>
+        <div class="tool" v-show="['programmingTask','cureProgramTask', 'replaceProgrammingTask','appendProgrammingTask'].includes(row.taskDefinitionKey)">
+           
+            <el-button type="primary" :disabled="programOnMachine" plain @click="addOtherFile">娣诲姞鏂囦欢
+            </el-button>
+        </div>
+        <el-table :data="tableDataAttatch" border @row-click="showContent" :row-style="{height:'20px'}" :cell-style="{padding:'0px'}" max-height="380" 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 style="margin-right: 8px;">{{ row.name }}</span>
+                        <!--
+                        <el-icon>
+                            <el-tooltip class="box-item" effect="light" content="鍏朵粬鏂囦欢"  placement="right">
+                            <FolderOpened />
+                            </el-tooltip>
+                        </el-icon>
+                        -->
                     </div>
                 </template>
             </el-table-column>
@@ -82,14 +112,14 @@
         <h5>绋嬪簭鍐呭</h5>
         <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>
-            <!-- <div slot="footer" class="dialog-footer">
-                <el-button @click="appDialog = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="add">纭� 瀹�</el-button>
-            </div> -->
+        <el-dialog title="涓婁紶绋嬪簭鏂囦欢" v-model="programDialog" width="400" v-if="programDialog">
+            <avue-form :option="programOption" v-model="attForm" :upload-after="uploadAfter" class="att-box"></avue-form>
         </el-dialog>
-        <el-dialog title="绋嬪簭閫夋嫨" v-model="diffDialog" width="80%">
+        <el-dialog title="涓婁紶鍏朵粬鏂囦欢" v-model="otherFileDialog" width="400" v-if="otherFileDialog">
+            <avue-form :option="otherFileOption" v-model="attForm" :upload-after="uploadAfter" class="att-box"></avue-form>
+        </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>
@@ -129,22 +159,12 @@
                 att: '',
                 fileType: 'program'
             }, //绋嬪簭涓婁紶琛ㄥ崟
-            attOption: {
+            programOption: {//绋嬪簭鏂囦欢涓婁紶
                 submitBtn: false,
                 emptyBtn: false,
                 menu: false,
                 column: [
-                    {
-                        label: '鏂囦欢绫诲瀷',
-                        prop: 'fileType',
-                        type: 'select',
-                        span: 24,
-                        clearable: false,
-                        dicData: [
-                            { label: '绋嬪簭鏂囦欢', value: 'program' },
-                            { label: '鍏朵粬鏂囦欢', value: 'other' },
-                        ],
-                    },
+                    
                     {
                         label: '娣诲姞鏂囦欢',
                         prop: 'att',
@@ -158,10 +178,35 @@
                         },
                     }
                 ]
-            }, //绋嬪簭涓婁紶
+            }, 
+            otherFileOption: {//鍏朵粬鏂囦欢涓婁紶
+                submitBtn: false,
+                emptyBtn: false,
+                menu: false,
+                column: [
+                    
+                    {
+                        label: '娣诲姞鏂囦欢',
+                        prop: 'att',
+                        type: 'upload',
+                        multiple: true,
+                        action: '/api/blade-mdm/flow/mgr/ncupload',
+                        span: 24,
+                        data: {
+                            processInstanceId: this.row.processInstanceId,
+                            fileType: 'other',
+                        },
+                    }
+                ]
+            },
             tableData: [],//宸查�夌▼搴�
+            tableDataProgram:[], //绋嬪簭鏂囦欢锛歵ableData瀛愰泦
+            tableDataAttatch:[], //鍏朵粬鏂囦欢锛歵ableData瀛愰泦
             appContent: '',//绋嬪簭鍐呭
-            appDialog: false,
+            //appDialog: false,
+            programDialog: false, //绋嬪簭鏂囦欢涓婁紶瀵硅瘽妗唌odel
+            otherFileDialog: false, //鍏朵粬鏂囦欢涓婁紶瀵硅瘽妗唌odel
+
             form: {},
             page: {
                 page: 1,
@@ -277,10 +322,13 @@
         getAttList() {
             getSelectedAppList(this.row.processInstanceId).then(res => {
                 if (res.data.code !== 200) {
-                    this.$message.error('鑾峰彇宸查�夌▼搴忓け璐�');
+                    this.$message.error('鑾峰彇绋嬪簭鍒楄〃澶辫触');
                     return;
                 } else {
-                    this.tableData = this.sortTable(res.data.data || []);
+                    this.tableData = res.data.data;//this.sortTable(res.data.data || []);
+
+                    this.tableDataProgram = this.sortTable(this.tableData.filter(f => f.program==true));
+                    this.tableDataAttatch = this.sortTable(this.tableData.filter(f => f.program==false));
                 }
                 // this.$emit('selection-change',this.tableData)
             })
@@ -296,8 +344,12 @@
             });
             return data;
         },
-        addApp() {
-            this.appDialog = true;
+        
+        addProgram() {
+            this.programDialog = true;
+        },
+        addOtherFile() {
+            this.otherFileDialog = true;
         },
         currentChange(currentPage) {
             this.page.currentPage = currentPage;
diff --git a/src/views/flow/todolist.vue b/src/views/flow/todolist.vue
index 576535d..f149360 100644
--- a/src/views/flow/todolist.vue
+++ b/src/views/flow/todolist.vue
@@ -208,7 +208,7 @@
                         emptyValues :["1",'2'],
                         dicData: [
                             {
-                                label: '杞﹀簥',
+                                label: '鏁版帶杞﹀簥',
                                 value: '1',
                             },
                             {
@@ -892,7 +892,7 @@
 
                 let atts = this.$refs.todolistLeft.tableData;
                 let otherFileCOunt = atts.filter(att => att.program === false).length;
-                if(otherFileCOunt == 0){
+                if(otherFileCOunt == 0 && programOnMachine != 'Y'){
                     let confirResult = await this.$confirm('鏂囦欢鍒楄〃涓棤鍏朵粬鏂囦欢锛岀‘璁よ鎻愪氦鍚楋紵', '', {
                         confirmButtonText: this.$t('submitText'),
                         cancelButtonText: this.$t('cancelText'),

--
Gitblit v1.9.3