From 33ddacef2daa93cf982fb70d372619dcf32e6391 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 09 二月 2026 16:11:07 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/apkBuild/apkBuild.html |   85 +++++++++++++++++++++++++++++++++++-------
 1 files changed, 71 insertions(+), 14 deletions(-)

diff --git a/src/main/webapp/views/apkBuild/apkBuild.html b/src/main/webapp/views/apkBuild/apkBuild.html
index baa8889..d580fba 100644
--- a/src/main/webapp/views/apkBuild/apkBuild.html
+++ b/src/main/webapp/views/apkBuild/apkBuild.html
@@ -224,7 +224,7 @@
                     <el-table-column label="鎿嶄綔" width="180" align="center" fixed="right">
                         <template slot-scope="scope">
                             <el-button type="text" size="small" @click="showDetail(scope.row)">璇︽儏</el-button>
-                            <el-button type="text" size="small" v-if="scope.row.status === 2 && !scope.row.apkPath"
+                            <el-button type="text" size="small" v-if="scope.row.status === 2 && scope.row.apkPath"
                                 @click="downloadApk(scope.row)" :loading="scope.row.downloading">涓嬭浇</el-button>
                             <el-button type="text" size="small" style="color: #67c23a;"
                                 v-if="scope.row.status === 2 && scope.row.apkPath"
@@ -252,12 +252,22 @@
                         <el-radio label="debug">Debug</el-radio>
                     </el-radio-group>
                 </el-form-item>
+                <el-form-item label="鐩爣绫诲瀷" prop="android_target">
+                    <el-select v-model="buildForm.android_target" placeholder="璇烽�夋嫨鐩爣绫诲瀷" style="width: 100%;">
+                        <el-option label="TV" value="tv"></el-option>
+                        <el-option label="PDA" value="pda"></el-option>
+                    </el-select>
+                </el-form-item>
                 <el-form-item label="浠撳簱鍒悕" prop="repoAlias">
                     <el-input v-model="buildForm.repoAlias" placeholder="璇疯緭鍏ヤ粨搴撳埆鍚�"></el-input>
                 </el-form-item>
                 <el-form-item label="鍒嗘敮鍚嶇О" prop="branch">
                     <el-input v-model="buildForm.branch" placeholder="璇疯緭鍏ュ垎鏀悕绉�"></el-input>
                     <div class="form-tip">榛樿涓� master 鍒嗘敮</div>
+                </el-form-item>
+                <el-form-item label="鏈嶅姟鍣ㄥ湴鍧�" prop="server_url">
+                    <el-input v-model="buildForm.server_url" placeholder="璇疯緭鍏� server_url"></el-input>
+                    <div class="form-tip">TV 鍖呭繀濉�</div>
                 </el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
@@ -399,10 +409,13 @@
                 buildSubmitting: false,
                 buildForm: {
                     buildType: 'release',
+                    android_target: 'tv',
                     repoAlias: 'zy-monitor',
-                    branch: 'master'
+                    branch: 'master',
+                    server_url: ''
                 },
                 buildRules: {
+                    android_target: [{ required: true, message: '璇烽�夋嫨鐩爣绫诲瀷', trigger: 'change' }],
                     repoAlias: [{ required: true, message: '璇疯緭鍏ヤ粨搴撳埆鍚�', trigger: 'blur' }]
                 },
 
@@ -419,6 +432,7 @@
 
             created() {
                 this.loadData();
+                this.buildForm.server_url = this.getServerUrl();
             },
 
             beforeDestroy() {
@@ -429,6 +443,10 @@
                 // 鑾峰彇璇锋眰澶�
                 getHeaders() {
                     return { 'token': localStorage.getItem('token') };
+                },
+                getServerUrl() {
+                    const { protocol, host } = window.location;
+                    return `${protocol}//${host}/monitor`;
                 },
 
                 // 鍔犺浇鏁版嵁
@@ -590,8 +608,10 @@
                 showBuildDialog() {
                     this.buildForm = {
                         buildType: 'release',
+                        android_target: 'tv',
                         repoAlias: 'zy-monitor',
-                        branch: 'master'
+                        branch: 'master',
+                        server_url: this.getServerUrl()
                     };
                     this.buildDialogVisible = true;
                 },
@@ -638,21 +658,58 @@
                 downloadApk(row) {
                     this.$set(row, 'downloading', true);
                     $.ajax({
-                        url: baseUrl + '/apkBuildTask/download/' + row.id + '/auth',
+                        url: baseUrl + '/apkBuildTask/downloadFile/' + row.id + '/auth',
                         headers: this.getHeaders(),
-                        method: 'POST',
-                        success: (res) => {
+                        method: 'GET',
+                        xhrFields: { responseType: 'blob' },
+                        success: (data, status, xhr) => {
                             this.$set(row, 'downloading', false);
-                            if (res.code === 200) {
-                                this.$message.success('APK涓嬭浇瀹屾垚: ' + res.data.apkPath);
-                                this.loadData();
-                            } else {
-                                this.$message.error(res.msg || '涓嬭浇澶辫触');
+                            const contentType = xhr.getResponseHeader('Content-Type') || '';
+                            if (contentType.indexOf('application/json') !== -1) {
+                                const reader = new FileReader();
+                                reader.onload = () => {
+                                    try {
+                                        const res = JSON.parse(reader.result);
+                                        this.$message.error(res.msg || '涓嬭浇澶辫触');
+                                    } catch (e) {
+                                        this.$message.error('涓嬭浇澶辫触');
+                                    }
+                                };
+                                reader.readAsText(data);
+                                return;
                             }
+                            const disposition = xhr.getResponseHeader('Content-Disposition') || '';
+                            const fileNameMatch = disposition.match(/filename="?([^"]+)"?/);
+                            let fileName = fileNameMatch ? decodeURIComponent(fileNameMatch[1]) : '';
+                            if (!fileName) {
+                                fileName = (row.projectName ? row.projectName : row.id) + '.apk';
+                            }
+                            const blob = new Blob([data], { type: contentType || 'application/octet-stream' });
+                            const link = document.createElement('a');
+                            link.href = URL.createObjectURL(blob);
+                            link.download = fileName;
+                            document.body.appendChild(link);
+                            link.click();
+                            document.body.removeChild(link);
+                            URL.revokeObjectURL(link.href);
+                            this.$message.success('APK宸插紑濮嬩笅杞�');
                         },
-                        error: () => {
+                        error: (xhr) => {
                             this.$set(row, 'downloading', false);
-                            this.$message.error('璇锋眰澶辫触');
+                            if (xhr && xhr.response) {
+                                const reader = new FileReader();
+                                reader.onload = () => {
+                                    try {
+                                        const res = JSON.parse(reader.result);
+                                        this.$message.error(res.msg || '涓嬭浇澶辫触');
+                                    } catch (e) {
+                                        this.$message.error('璇锋眰澶辫触');
+                                    }
+                                };
+                                reader.readAsText(xhr.response);
+                            } else {
+                                this.$message.error('璇锋眰澶辫触');
+                            }
                         }
                     });
                 },
@@ -759,4 +816,4 @@
     </script>
 </body>
 
-</html>
\ No newline at end of file
+</html>

--
Gitblit v1.9.1