<template>
|
<div class="pda-container">
|
<el-card class="pda-card" shadow="hover">
|
<template #header>
|
<div class="card-header">PDA 应用管理</div>
|
</template>
|
|
<el-form label-width="120px">
|
<el-form-item label="当前版本号">
|
<el-input v-model="clientVersion" placeholder="请输入当前PDA版本号" style="max-width: 280px" />
|
<el-button type="primary" style="margin-left: 10px" @click="checkVersion">检查更新</el-button>
|
</el-form-item>
|
|
<el-form-item label="服务端版本结果">
|
<span>{{ checkResult }}</span>
|
</el-form-item>
|
|
<el-form-item label="下载安装包">
|
<el-button type="success" @click="downloadApp">下载最新 APK</el-button>
|
</el-form-item>
|
|
<el-form-item label="上传安装包">
|
<el-upload
|
:action="uploadUrl"
|
:headers="uploadHeaders"
|
name="fileInput"
|
:show-file-list="true"
|
:before-upload="beforeUpload"
|
:on-success="onUploadSuccess"
|
:on-error="onUploadError"
|
>
|
<el-button type="warning">上传新 APK</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
</div>
|
</template>
|
|
<script>
|
import { defineComponent, ref, computed, getCurrentInstance } from "vue";
|
import store from "@/store/index";
|
import http from "@/api/http";
|
|
export default defineComponent({
|
setup() {
|
const clientVersion = ref("");
|
const checkResult = ref("未检查");
|
const { proxy } = getCurrentInstance();
|
|
// 上传地址:复用全局 http 基础地址,保证与当前环境一致。
|
const uploadUrl = computed(() => `${http.ipAddress}api/PDA/UploadApp`);
|
|
// 上传鉴权:沿用现有 token 机制,避免接口 401。
|
const uploadHeaders = computed(() => ({
|
Authorization: store.getters.getToken(),
|
}));
|
|
const checkVersion = () => {
|
if (!clientVersion.value) {
|
proxy.$message.warning("请输入版本号");
|
return;
|
}
|
|
http
|
.get(`api/PDA/GetPDAVersion?version=${encodeURIComponent(clientVersion.value)}`, {}, true)
|
.then((res) => {
|
if (!res.status) {
|
checkResult.value = res.message || "检查失败";
|
return;
|
}
|
checkResult.value = res.data ? "需要更新" : "已是最新版本";
|
});
|
};
|
|
const downloadApp = () => {
|
window.open(`${http.ipAddress}api/PDA/DownLoadApp`, "_blank");
|
};
|
|
// 上传前校验:限制上传 apk,减少无效请求。
|
const beforeUpload = (file) => {
|
if (!file || !file.name || !file.name.toLowerCase().endsWith(".apk")) {
|
proxy.$message.error("只允许上传 .apk 文件");
|
return false;
|
}
|
return true;
|
};
|
|
const onUploadSuccess = (response) => {
|
proxy.$message[response && response.status ? "success" : "error"](
|
(response && response.message) || "上传完成"
|
);
|
};
|
|
const onUploadError = () => {
|
proxy.$message.error("上传失败");
|
};
|
|
return {
|
clientVersion,
|
checkResult,
|
uploadUrl,
|
uploadHeaders,
|
checkVersion,
|
downloadApp,
|
beforeUpload,
|
onUploadSuccess,
|
onUploadError,
|
};
|
},
|
});
|
</script>
|
|
<style lang="less" scoped>
|
.pda-container {
|
height: 100%;
|
padding: 12px;
|
}
|
|
.pda-card {
|
max-width: 920px;
|
}
|
|
.card-header {
|
font-size: 16px;
|
font-weight: 600;
|
}
|
</style>
|