643 lines
18 KiB
Vue
643 lines
18 KiB
Vue
<template>
|
||
<div>
|
||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||
<div style="float: right; margin-right: 2%">
|
||
<el-button style="margin: 10px 0" :disabled="!isAuth('app:add')" size="mini" type="primary" icon="document"
|
||
v-if="upgradeData1.records.length <= 0" @click="addUpgrade">添加升级</el-button>
|
||
</div>
|
||
<el-table v-loading="tableDataLoading" :data="upgradeData1.records">
|
||
<el-table-column fixed prop="id" label="编号" width="80">
|
||
</el-table-column>
|
||
<!-- <el-table-column prop="wgtUrl" label="统一地址"> </el-table-column> -->
|
||
<el-table-column prop="androidWgtUrl" label="安卓"> </el-table-column>
|
||
<!-- <el-table-column prop="iosWgtUrl" label="苹果"> </el-table-column> -->
|
||
<el-table-column prop="version" label="安卓版本"> </el-table-column>
|
||
<el-table-column prop="iosVersion" label="ios版本"> </el-table-column>
|
||
<el-table-column prop="content" label="升级方式">
|
||
<template slot-scope="scope">
|
||
<span>{{
|
||
scope.row.method == "true" ? "强制升级" : "普通升级"
|
||
}}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="createAt" label="创建时间"> </el-table-column>
|
||
<el-table-column label="操作" width="200">
|
||
<template slot-scope="scope">
|
||
<el-button size="mini" type="primary" :disabled="!isAuth('app:update')"
|
||
@click="upgradebj(scope.$index, scope.row)">编辑
|
||
</el-button>
|
||
<el-button size="mini" type="danger" :disabled="!isAuth('app:delete')" @click="upgradelete(scope.row)">删除
|
||
</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div style="text-align: center; margin-top: 10px">
|
||
<el-pagination @size-change="handleSizeChange2" @current-change="handleCurrentChange2"
|
||
:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
|
||
layout="total,sizes, prev, pager, next,jumper" :total="upgradeData1.total">
|
||
</el-pagination>
|
||
</div>
|
||
<!-- 添加修改升级弹框 -->
|
||
<el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible4" center @close="resetFormupgrad">
|
||
<el-form :model="formupgrad">
|
||
<!-- <el-form-item
|
||
label="统一地址:"
|
||
:label-width="formLabelWidth"
|
||
|
||
>
|
||
<el-input v-model="formupgrad.wgtUrl" style="width: 65%"></el-input>
|
||
</el-form-item> -->
|
||
<div class="file-box" style="margin-bottom: 10px; display: flex">
|
||
<span style="width: 200px; display: inline-block; text-align: right"><i
|
||
style="color: #f56c6c; margin-right: 2px">*</i>安卓包:</span>
|
||
<div style="
|
||
width: 200px;
|
||
height: 148px;
|
||
border: 1px dashed #c0ccda;
|
||
border-radius: 6px;
|
||
text-align: center;
|
||
">
|
||
<el-upload class="avatar-uploader" v-model="formupgrad.androidWgtUrl" action="" :auto-upload="false"
|
||
:onChange="onChooseAndriod" :show-file-list="false" :multiple="false">
|
||
<div v-if="formupgrad.androidWgtUrl" class="flex flex-col flex-xy-center">
|
||
<img src="../../assets/img/android.png" style="width: 50px; height: 50px" />
|
||
<span style="margin-top: 10px">{{
|
||
formupgrad.androidWgtUrl | name
|
||
}}</span>
|
||
</div>
|
||
<i v-if="!formupgrad.androidWgtUrl && percentage <= 0"
|
||
class="el-icon-plus avatar-uploader-icon iconss"></i>
|
||
<el-progress type="circle" v-if="
|
||
!formupgrad.androidWgtUrl &&
|
||
percentage > 0 &&
|
||
percentage <= 100 &&
|
||
key == 'andriod'
|
||
" :percentage="percentage" color="#efefef"></el-progress>
|
||
</el-upload>
|
||
</div>
|
||
</div>
|
||
<el-form-item label="安卓地址:" :label-width="formLabelWidth" required>
|
||
<el-input v-model="formupgrad.androidWgtUrl" style="width: 65%"></el-input>
|
||
</el-form-item>
|
||
<!-- <div class="file-box" style="margin-bottom: 10px; display: flex">
|
||
<span style="width: 200px; display: inline-block; text-align: right"
|
||
>苹果包:</span
|
||
>
|
||
<div
|
||
style="
|
||
width: 200px;
|
||
height: 148px;
|
||
border: 1px dashed #c0ccda;
|
||
border-radius: 6px;
|
||
text-align: center;
|
||
"
|
||
>
|
||
<el-upload
|
||
class="avatar-uploader"
|
||
v-model="formupgrad.iosWgtUrl"
|
||
action=""
|
||
:auto-upload="false"
|
||
:onChange="onChooseIos"
|
||
:show-file-list="false"
|
||
:multiple="false"
|
||
>
|
||
<div
|
||
v-if="formupgrad.iosWgtUrl"
|
||
class="flex flex-col flex-xy-center"
|
||
>
|
||
<img
|
||
src="../../assets/img/ios.png"
|
||
style="width: 50px; height: 50px"
|
||
/>
|
||
<span style="margin-top: 10px">{{
|
||
formupgrad.iosWgtUrl | name
|
||
}}</span>
|
||
</div>
|
||
<i
|
||
v-if="!formupgrad.iosWgtUrl && percentage <= 0"
|
||
class="el-icon-plus avatar-uploader-icon iconss"
|
||
></i>
|
||
<el-progress
|
||
type="circle"
|
||
v-if="
|
||
!formupgrad.iosWgtUrl && percentage > 0 && percentage <= 100&&key=='ios'
|
||
"
|
||
:percentage="percentage"
|
||
color="#efefef"
|
||
></el-progress>
|
||
</el-upload>
|
||
</div>
|
||
</div>
|
||
<el-form-item
|
||
label="苹果地址:"
|
||
:label-width="formLabelWidth"
|
||
>
|
||
<el-input
|
||
v-model="formupgrad.iosWgtUrl"
|
||
style="width: 65%"
|
||
></el-input>
|
||
</el-form-item> -->
|
||
<el-form-item label="安卓版本号:" :label-width="formLabelWidth" required>
|
||
<el-input v-model="formupgrad.version" style="width: 65%"></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="ios版本号:" :label-width="formLabelWidth" required>
|
||
<el-input v-model="formupgrad.iosVersion" style="width: 65%"></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="升级方式:" :label-width="formLabelWidth" required>
|
||
<el-select v-model="formupgrad.method" placeholder="请选择升级方式" style="width: 65%">
|
||
<el-option v-for="item in methods" :key="item.value" :label="item.label" :value="item.value">
|
||
</el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="升级内容:" :label-width="formLabelWidth" required>
|
||
<el-input v-model="formupgrad.des" style="width: 65%"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button @click="dialogFormVisible4 = false">取 消</el-button>
|
||
<el-button type="primary" @click="upgradbjTo()">确 定</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
</el-tabs>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { getUUID } from "@/utils";
|
||
import OSS from "@/utils/oss-upload.js";
|
||
import { $getCredentials } from "@/api/oss.js";
|
||
import config from "@/config/index.js";
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
dialogTitle: "",
|
||
limit: 10,
|
||
page: 1,
|
||
state: 1,
|
||
url: "",
|
||
title: "",
|
||
type: "",
|
||
id: "",
|
||
nav: "",
|
||
keyword: "",
|
||
image_url: "",
|
||
androidWgtUrl: "",
|
||
key: "",
|
||
//文件上传进度
|
||
percentage: 0,
|
||
iosWgtUrl: "",
|
||
wgtUrl: "",
|
||
version: "",
|
||
iosVersion: "",
|
||
des: "",
|
||
checkBoxData: [], //多选框选择的值
|
||
method: "false",
|
||
methods: [
|
||
{
|
||
value: "false",
|
||
label: "普通升级",
|
||
},
|
||
{
|
||
value: "true",
|
||
label: "强制升级",
|
||
},
|
||
],
|
||
formupgrad: {
|
||
id: "",
|
||
androidWgtUrl: "",
|
||
iosWgtUrl: "",
|
||
wgtUrl: "",
|
||
version: "",
|
||
des: "",
|
||
method: "",
|
||
iosVersion: "",
|
||
},
|
||
formLabelWidth: "200px",
|
||
activeName: "first",
|
||
tableDataLoading: true,
|
||
dialogFormVisible3: false,
|
||
dialogFormVisible4: false,
|
||
tableData: [],
|
||
homeData: [],
|
||
choicenData2: [],
|
||
upgradeData: [],
|
||
upgradeData1: {
|
||
records: []
|
||
},
|
||
choicenData: [],
|
||
types: [
|
||
{
|
||
value: "word",
|
||
label: "文字",
|
||
},
|
||
{
|
||
value: "url",
|
||
label: "链接",
|
||
},
|
||
],
|
||
bannerData: [],
|
||
form1: {
|
||
id: "",
|
||
url: "",
|
||
image_url: "",
|
||
},
|
||
form: {
|
||
id: "",
|
||
title: "",
|
||
url: "",
|
||
type: "",
|
||
state: "",
|
||
types: [
|
||
{
|
||
value: "word",
|
||
label: "文字",
|
||
},
|
||
{
|
||
value: "url",
|
||
label: "链接",
|
||
},
|
||
],
|
||
},
|
||
formcomp: {
|
||
id: "",
|
||
state: "",
|
||
title: "",
|
||
url: "",
|
||
image_url: "",
|
||
},
|
||
};
|
||
},
|
||
filters: {
|
||
name(str) {
|
||
if (!str) {
|
||
return "";
|
||
}
|
||
return str.substr(str.lastIndexOf("/") + 1);
|
||
},
|
||
},
|
||
methods: {
|
||
resetFormupgrad() {
|
||
for (let i in this.formupgrad) {
|
||
this.formupgrad[i] = "";
|
||
}
|
||
},
|
||
async initOssClient() {
|
||
console.log("initOssClient");
|
||
const { data } = await $getCredentials();
|
||
if (data.code == 0) {
|
||
const res = data.data;
|
||
console.log(res);
|
||
this.ossClient = new OSS({ ...res, stsToken: res.securityToken });
|
||
}
|
||
},
|
||
onFileIosCHange(data) {
|
||
this.onFileCHange(data);
|
||
},
|
||
async onChooseAndriod(data) {
|
||
this.formupgrad.androidWgtUrl = "";
|
||
this.percentage = 0;
|
||
this.key = "andriod";
|
||
const url = await this.uploadFie(data);
|
||
this.percentage = 0;
|
||
console.log(url);
|
||
if (url) {
|
||
this.formupgrad.androidWgtUrl = url;
|
||
}
|
||
},
|
||
async onChooseIos(data) {
|
||
this.formupgrad.iosWgtUrl = "";
|
||
this.percentage = 0;
|
||
this.key = "ios";
|
||
const url = await this.uploadFie(data);
|
||
console.log(url);
|
||
this.percentage = 0;
|
||
if (url) {
|
||
this.formupgrad.iosWgtUrl = url;
|
||
}
|
||
},
|
||
async uploadFie(data) {
|
||
console.log(data);
|
||
const date = new Date();
|
||
const houzhui = "." + data.name.substr(data.name.lastIndexOf(".") + 1);
|
||
const isTest = config.baseUrl.includes('web.hnsiyao.cn') ? false : true
|
||
const appName = isTest ? 'test-duanju' : 'sy-duanju'
|
||
const name = "app/" + appName + houzhui;
|
||
console.log(name);
|
||
const fileRes = await this.ossClient.partUpload(name, data.raw, (p) => {
|
||
this.percentage = Math.floor(p * 100);
|
||
console.log(this.percentage);
|
||
|
||
// 这里可以根据进度做相应的处理,例如更新UI等
|
||
});
|
||
console.log("fileRes");
|
||
console.log(fileRes);
|
||
if (!fileRes) {
|
||
this.percentage = 0;
|
||
this.$notify({
|
||
title: "失败",
|
||
message: `上传阿里云失败`,
|
||
type: "error",
|
||
});
|
||
return;
|
||
}
|
||
if (fileRes.name == "cancel") {
|
||
return;
|
||
}
|
||
return fileRes.replace(
|
||
"https://sy-duanju.oss-cn-nanjing.aliyuncs.com/",
|
||
"https://short-video.hnsiyao.cn/"
|
||
);
|
||
},
|
||
handleSizeChange2(val) {
|
||
this.limit = val;
|
||
this.upgradeSelect();
|
||
},
|
||
handleCurrentChange2(val) {
|
||
this.page = val;
|
||
this.upgradeSelect();
|
||
},
|
||
|
||
handleClick(tab, event) {
|
||
this.upgradeSelect();
|
||
},
|
||
// 添加升级弹框
|
||
addUpgrade() {
|
||
this.initOssClient();
|
||
this.dialogFormVisible4 = true;
|
||
this.dialogTitle = "添加升级";
|
||
},
|
||
// 添加升级
|
||
upgradaddTo() {
|
||
if (this.formupgrad.wgtUrl == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请输入统一地址",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
if (this.formupgrad.androidWgtUrl == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请输入安卓地址",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
if (this.formupgrad.iosWgtUrl == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请输入苹果地址",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (this.formupgrad.version == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请输入安卓版本号",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
if (this.formupgrad.iosVersion == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请输入苹果版本号",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (this.formupgrad.method == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请选择升级方式",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
if (this.formupgrad.des == "") {
|
||
this.$notify({
|
||
title: "提示",
|
||
duration: 1800,
|
||
message: "请输入升级内容",
|
||
type: "warning",
|
||
});
|
||
return;
|
||
}
|
||
if (this.dialogTitle == "添加升级") {
|
||
return this.$http({
|
||
url: this.$http.adornUrl("appinfo/save"),
|
||
method: "post",
|
||
data: this.$http.adornData({ ...this.formupgrad, id: "" }),
|
||
}).then(({ data }) => {
|
||
this.dialogFormVisible3 = false;
|
||
this.upgradeSelect();
|
||
this.$message({
|
||
message: "操作成功",
|
||
type: "success",
|
||
duration: 1500,
|
||
onClose: () => { },
|
||
});
|
||
});
|
||
}
|
||
this.upgradbjTo();
|
||
},
|
||
// 修改升级弹框
|
||
upgradebj(index, rows) {
|
||
this.initOssClient();
|
||
this.dialogFormVisible4 = true;
|
||
this.dialogTitle = "修改";
|
||
Object.assign(this.formupgrad, rows);
|
||
},
|
||
// 修改升级
|
||
upgradbjTo() {
|
||
this.$http({
|
||
url: this.$http.adornUrl("appinfo/save"),
|
||
method: "post",
|
||
data: this.$http.adornData({
|
||
id: this.formupgrad.id,
|
||
androidWgtUrl: this.formupgrad.androidWgtUrl,
|
||
iosWgtUrl: this.formupgrad.iosWgtUrl,
|
||
wgtUrl: this.formupgrad.wgtUrl,
|
||
version: this.formupgrad.version,
|
||
iosVersion: this.formupgrad.iosVersion,
|
||
des: this.formupgrad.des,
|
||
method: this.formupgrad.method,
|
||
}),
|
||
}).then(({ data }) => {
|
||
this.dialogFormVisible4 = false;
|
||
this.upgradeSelect();
|
||
this.$message({
|
||
message: "操作成功",
|
||
type: "success",
|
||
duration: 1500,
|
||
onClose: () => { },
|
||
});
|
||
});
|
||
},
|
||
// 删除升级
|
||
upgradelete(row) {
|
||
let delid = row.id;
|
||
this.id = delid;
|
||
this.$confirm(`确定删除此条信息?`, "提示", {
|
||
confirmButtonText: "确定",
|
||
cancelButtonText: "取消",
|
||
type: "warning",
|
||
})
|
||
.then(() => {
|
||
this.$http({
|
||
url: this.$http.adornUrl(`appinfo/delete/${this.id}`),
|
||
method: "get",
|
||
params: this.$http.adornParams({}),
|
||
}).then(({ data }) => {
|
||
this.$message({
|
||
message: "删除成功",
|
||
type: "success",
|
||
duration: 1500,
|
||
onClose: () => {
|
||
this.name = "";
|
||
this.upgradeSelect();
|
||
},
|
||
});
|
||
});
|
||
})
|
||
.catch(() => { });
|
||
},
|
||
|
||
// 升级配置数据列表
|
||
upgradeSelect() {
|
||
this.tableDataLoading = true;
|
||
this.$http({
|
||
url: this.$http.adornUrl(
|
||
`appinfo/list?page=${this.page}&limit=${this.limit}`
|
||
),
|
||
method: "get",
|
||
params: this.$http.adornParams({}),
|
||
}).then(({ data }) => {
|
||
this.tableDataLoading = false;
|
||
let returnData = data.data;
|
||
this.upgradeData1 = returnData;
|
||
});
|
||
},
|
||
},
|
||
mounted() {
|
||
console.log("···························");
|
||
this.upgradeSelect();
|
||
this.initOssClient();
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
::v-deep .file-box .el-upload {
|
||
width: 100%;
|
||
height: 100%;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
::v-deep .avatar-uploader {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
height: 100%;
|
||
}
|
||
|
||
.el-upload {
|
||
width: 100%;
|
||
height: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.customWidth {
|
||
width: 80% !important;
|
||
}
|
||
|
||
.adver_main.box {
|
||
display: block;
|
||
max-width: 100%;
|
||
text-align: center;
|
||
border: 1px dotted rgba(67, 79, 103, 0.4);
|
||
}
|
||
|
||
.margin-auto {
|
||
margin: auto;
|
||
}
|
||
|
||
.cards {
|
||
padding: 0 8px;
|
||
margin-bottom: 15px;
|
||
}
|
||
|
||
.adver_main.box a {
|
||
display: flex;
|
||
justify-content: center;
|
||
height: 150px;
|
||
line-height: 150px;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.bannerManin {
|
||
border: 1px solid #e8e8e8;
|
||
font-size: 14px;
|
||
padding: 0 24px;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
height: 113px;
|
||
color: rgba(0, 0, 0, 0.65);
|
||
}
|
||
|
||
.flex {
|
||
display: flex;
|
||
}
|
||
|
||
.flex-col {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.flex-xy-center {
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
.bannerManin span {
|
||
display: inline-block;
|
||
margin-left: 5px;
|
||
}
|
||
|
||
.bannerManin img {
|
||
width: 48px;
|
||
height: 48px;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.bannerbtn {
|
||
display: flex;
|
||
border-top: none !important;
|
||
border: 1px solid #e8e8e8;
|
||
padding: 11px;
|
||
font-size: 14px;
|
||
color: #3e8ef7;
|
||
}
|
||
|
||
.bannerbtn a {
|
||
flex: 1;
|
||
text-align: center;
|
||
color: #3e8ef7 !important;
|
||
text-decoration: none;
|
||
}
|
||
</style>
|