Commit 17090d1d authored by 乐宝呗666's avatar 乐宝呗666

添加app版本管理和界面自定义管理功能并对接接口

parent 5da060ba
......@@ -16,11 +16,11 @@
label-position="right"
:rules="rules"
>
<el-form-item label="版本号1:" prop="version">
<el-input size="small" v-model="formItem.version" clearable placeholder="请输入版本号"></el-input>
<el-form-item label="版本号:" prop="appVersion">
<el-input size="small" v-model="formItem.appVersion" clearable placeholder="请输入版本号"></el-input>
</el-form-item>
<el-form-item label="版本信息:" prop="versionContent">
<el-input type="textarea" size="small" v-model="formItem.versionContent"></el-input>
<el-form-item label="版本信息:" prop="versionInfo">
<el-input type="textarea" size="small" v-model="formItem.versionInfo"></el-input>
</el-form-item>
<el-form-item label="更新内容:" prop="updateContent">
<el-input type="textarea" size="small" v-model="formItem.updateContent"></el-input>
......@@ -28,13 +28,12 @@
<el-upload
class="text-center"
drag
action="#"
:auto-upload="false"
:on-change="onChange"
action="http://192.168.110.67/mall/file/upload/allType"
:on-success="handleAvatarSuccess"
:file-list="fileList">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将安装包拖到此处,或<em>点击上传安装包</em></div>
<div class="el-upload__tip" slot="tip">只能上传zip文件,且不超过500kb</div>
<div class="el-upload__tip" slot="tip">只能上传apk文件,且不超过500kb</div>
</el-upload>
</el-form>
</div>
......@@ -53,10 +52,10 @@ export default {
formItem: {},
fileList:[],
rules: {
version: [
appVersion: [
{ required: true, message: "请输入版本号", trigger: "blur" }
],
versionContent: [{ required: true, message: "请输入版本信息", trigger: "blur" }],
versionInfo: [{ required: true, message: "请输入版本信息", trigger: "blur" }],
updateContent: [{ required: true, message: "请输入更新内容", trigger: "blur" }]
}
};
......@@ -78,66 +77,73 @@ export default {
this.$refs["formItem"].resetFields();
},
// 上传数据操作
onChange(file, fileList) {
this.fileList = fileList
handleAvatarSuccess(res, file) {
this.formItem.apkUrl = res.url
},
// 保存编辑信息
submitForm() {
let _this = this;
console.log(this.formItem)
_this.$refs.formItem.validate(valid => {
if (valid) {
if (!this.fileList.length) {
if (!this.formItem.apkUrl) {
this.$message.info('请先选取文件!')
return false
}
const fileType = this.fileList.every(item => {
console.log(item.raw.type)
return item.raw.type === 'application/zip'
})
if (!fileType) {
this.$message.error('支持扩展名:.zip格式!')
return false
}
const param = new FormData()
this.fileList.forEach(file => {
param.append('file', file.raw) // 此处一定是append file.raw 上传文件只需维护fileList file.raw.name要加上
param.append('fileName', file.name)
param.append('version', this.formItem.version)
param.append('versionContent', this.formItem.versionContent)
param.append('updateContent', this.formItem.updateContent)
})
_this.$emit("refreshFn");
_this.formVisible = false;
// _this.$https(
// {
// url: "menu/edit",
// method: "put",
// authType: this.backToken
// },
// _this.$qs.stringify(param)
// ).then(res => {
// if (res.data.status == 200 || res.data.status == 201) {
// _this.$message({
// type: "success",
// message: res.data.message
// });
// _this.formVisible = false;
// _this.$refs["formItem"].resetFields();
// } else {
// _this.$message({
// type: "error",
// message: res.data.message
// });
// }
// },
// error => {
// _this.$message({
// type: "error",
// message: error
// });
// }
// );
let param = {
appVersion: this.formItem.appVersion,
versionInfo: this.formItem.versionInfo,
updateContent: this.formItem.updateContent ,
apkUrl: this.formItem.apkUrl ,
};
// const fileType = this.fileList.every(item => {
// console.log(item.raw.type)
// return item.raw.type === 'application/zip'
// })
// if (!fileType) {
// this.$message.error('支持扩展名:.zip格式!')
// return false
// }
// const param = new FormData()
// this.fileList.forEach(file => {
// param.append('file', file.raw) // 此处一定是append file.raw 上传文件只需维护fileList file.raw.name要加上
// param.append('fileName', file.name)
// param.append('appVersion', this.formItem.appVersion)
// param.append('versionInfo', this.formItem.versionInfo)
// param.append('updateContent', this.formItem.updateContent)
// })
// _this.$emit("refreshFn");
// _this.formVisible = false;
_this.$https(
{
url: "tAppVersion/save",
method: "post",
authType: this.backToken
},
_this.$qs.stringify(param)
).then(res => {
if (res.data.resultCode === '200') {
_this.$message({
type: "success",
message: res.data.message
});
_this.formVisible = false;
_this.$emit("refreshFn");
} else {
_this.$message({
type: "error",
message: res.data.message
});
}
},
error => {
_this.$message({
type: "error",
message: error
});
}
);
}
});
},
......
......@@ -13,22 +13,21 @@
ref="formItem"
label-width="180px"
label-position="right"
:rules="rules"
>
<el-form-item label="上传时间:" prop="uploadTime">
<el-input size="small" v-model="formItem.uploadTime" disabled></el-input>
<el-form-item label="上传时间:" prop="createTime">
<el-input size="small" v-model="formItem.createTime" disabled></el-input>
</el-form-item>
<el-form-item label="操作者:" prop="name">
<el-input size="small" v-model="formItem.name" disabled></el-input>
<el-form-item label="操作者:" prop="userName">
<el-input size="small" v-model="formItem.userName" disabled></el-input>
</el-form-item>
<el-form-item label="是否为当前使用版本:" prop="isNew">
<el-input size="small" v-model="formItem.isNew" disabled></el-input>
<el-form-item label="是否为当前使用版本:">
<el-input size="small" :value="formItem.isCurrent?'是':'否'" disabled></el-input>
</el-form-item>
<el-form-item label="版本信息:" prop="version">
<el-input type="textarea" size="small" v-model="formItem.version" disabled></el-input>
<el-form-item label="版本信息:" prop="versionInfo">
<el-input type="textarea" size="small" v-model="formItem.versionInfo" disabled></el-input>
</el-form-item>
<el-form-item label="更新内容:" prop="newContent">
<el-input type="textarea" size="small" v-model="formItem.newContent" disabled></el-input>
<el-form-item label="更新内容:" prop="updateLog">
<el-input type="textarea" size="small" v-model="formItem.updateLog" disabled></el-input>
</el-form-item>
</el-form>
</div>
......
......@@ -9,6 +9,7 @@
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item>
<el-form-item>
......@@ -30,10 +31,14 @@
<div class="party-table">
<el-table border style="width: 100%;height:100%" height="100%" :data="tableData">
<el-table-column type="index" width="120" label="序号"></el-table-column>
<el-table-column label="app版本号" prop="version"></el-table-column>
<el-table-column label="是否为最新版本" prop="isNew"></el-table-column>
<el-table-column label="上传时间" prop="uploadTime"></el-table-column>
<el-table-column label="操作者" prop="name"></el-table-column>
<el-table-column label="app版本号" prop="appVersion"></el-table-column>
<el-table-column label="是否为最新版本">
<template slot-scope="scope">
<span>{{scope.row.isCurrent?'是':'否'}}</span>
</template>
</el-table-column>
<el-table-column label="上传时间" prop="createTime"></el-table-column>
<el-table-column label="操作者" prop="userName"></el-table-column>
<el-table-column label="操作" header-align="center" align="center">
<template slot-scope="scope" width="220">
<div class="table-btn-group">
......@@ -73,29 +78,17 @@ import { addDialog , detailDialog } from "./components/index";
export default {
data() {
return {
page: { currentPage: 1, pageSize: 10, total: 4 },
page: { currentPage: 1, pageSize: 10, total: 0 },
form: {
dateRange: []
},
tableData: [
// 序号 app版本号 是否为最新版本 上传时间 操作者 操作
{
uploadTime: "2016-05-02",
name: "王小虎",
version: "V1.0.0",
isNew: "是"
},
{
uploadTime: "2016-05-02",
name: "王小虎",
version: "V1.0.0",
isNew: "是"
}
]
tableData: []
};
},
components: { partyPagination ,addDialog ,detailDialog},
mounted() {},
mounted() {
this.onSearch()
},
methods: {
// 查询
onSearch() {
......@@ -113,7 +106,7 @@ export default {
};
vm.$https(
{
url: "interaction/getList",
url: "tAppVersion/getPageList",
method: "post",
authType: this.backToken
},
......@@ -141,7 +134,7 @@ export default {
this.$refs.detailDialog.backFn(item)
},
// 启用
ableBtn(row, str) {
ableBtn(row) {
const _this = this;
this.$confirm("确定要设置为最新版本?", "提示", {
confirmButtonText: "确定",
......@@ -150,13 +143,39 @@ export default {
center: true
})
.then(() => {
// 请求接口
this.$message.success("操作成功")
// 请求接口 tAppVersion/update
this.updateVersion(row)
})
.catch(() => {
this.$message("已取消")
});
},
updateVersion(row){
let vm = this;
let param = {
id: row.id,
isCurrent:1
};
vm.$https(
{
url: "tAppVersion/update",
method: "put",
authType: this.backToken
},
vm.$qs.stringify(param)
)
.then(res => {
if(res.data.resultCode==='200'){
this.$message.success("操作成功")
this.onSearch()
}else{
this.$message({type:'error',message:res.data.message})
}
})
.catch(function(err) {
console.log(err);
});
},
handleReset() {
this.form = {};
},
......
......@@ -11,7 +11,13 @@
<div class="content-title">
<div class="title">app目录界面设置</div>
<div class="btn-group">
<el-button type="default" @click="uploadPageImg">上传背景图</el-button>
<el-upload
action="http://192.168.110.67/mall/file/image/upload"
:on-success="uploadPageImg"
:file-list="dirList"
>
<el-button type="default">上传背景图</el-button>
</el-upload>
</div>
</div>
<div class="swiper-content top">
......@@ -19,7 +25,7 @@
<swiper-slide v-for="(item, index) in pageList" :key="index">
<div class="swiper-item">
<el-radio v-model="radioPage" :label="item.id"></el-radio>
<img :src="item.url" alt="">
<img :src="item.appDirPic" alt />
</div>
</swiper-slide>
<div class="swiper-button-prev" slot="button-prev">
......@@ -34,28 +40,21 @@
<div class="down-content">
<div class="content-title">
<div class="title">app运行画面设置</div>
<el-upload
class="upload-demo"
action="#"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="pagefileList">
<div class="btn-group">
<el-button type="default" @click="uploadRunImg">上传背景图</el-button>
</div>
</el-upload>
<div class="btn-group">
<el-upload
action="http://192.168.110.67/mall/file/image/upload"
:on-success="uploadRunImg"
:file-list="fileRunList">
<el-button type="default">上传背景图</el-button>
</el-upload>
</div>
</div>
<div class="swiper-content bottom">
<swiper class="swiper" :options="swiperOption">
<swiper-slide v-for="(item, index) in runList" :key="index">
<div class="swiper-item">
<el-radio v-model="radioRun" :label="item.id"></el-radio>
<img :src="item.url" alt="">
<img :src="item.url" alt />
</div>
</swiper-slide>
<div class="swiper-button-prev" slot="button-prev">
......@@ -76,84 +75,181 @@
</div>
</template>
<script>
import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
import 'swiper/css/swiper.css'
var vm = null
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
import "swiper/css/swiper.css";
var vm = {};
export default {
components:{Swiper, SwiperSlide},
components: { Swiper, SwiperSlide },
data() {
return {
radioPage: 1,
radioRun: 1,
radioPage: '',
radioRun: '',
dirList:[],
fileRunList:[],
swiperOption: {
slideToClickedSlide:true,//点击后居中展示
slideToClickedSlide: true, //点击后居中展示
slidesPerView: 5,
spaceBetween: 30,
centeredSlides: true,
observer: true, // 动态检查器,自动初始化swiper,默认为false
observer: true, // 动态检查器,自动初始化swiper,默认为false
observerParents: true,
// centerInsufficientSlides: true, //不够5个时居中显示
loop: true, // 不能同上一个属性同用
// loop: true, // 不能同上一个属性同用
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev"
},
on:{
click:function(){
if(this.$el[0].parentNode.className.indexOf('top')>0){
vm.radioPage = vm.pageList[this.realIndex].id
on: {
click: function() {
console.log(vm)
if (this.$el[0].parentNode.className.indexOf("top") > 0) {
vm.radioPage = this.realIndex;
// vm.radioPage = vm.pageList[this.realIndex].id;
}
if(this.$el[0].parentNode.className.indexOf('bottom')>0){
vm.radioRun = vm.runList[this.realIndex].id
if (this.$el[0].parentNode.className.indexOf("bottom") > 0) {
vm.radioRun = this.realIndex;
// vm.radioRun = vm.runList[this.realIndex].id;
}
}
}
},
pagefileList:[],
pageList:[
{url:require("@/assets/default-rect.png"),id:1},
{url:require("@/assets/default-rect.png"),id:2},
{url:require("@/assets/default-rect.png"),id:3},
{url:require("@/assets/default-rect.png"),id:4},
{url:require("@/assets/default-rect.png"),id:5},
{url:require("@/assets/default-rect.png"),id:6},
],
runList:[
{url:require("@/assets/default-rect.png"),id:1},
{url:require("@/assets/default-rect.png"),id:2},
{url:require("@/assets/default-rect.png"),id:3},
{url:require("@/assets/default-rect.png"),id:4},
{url:require("@/assets/default-rect.png"),id:5},
{url:require("@/assets/default-rect.png"),id:6},
]
pagefileList: [],
pageList: [],
runList: []
};
},
created(){
vm = this
},
created() {},
mounted() {
this.getDirPicList();
this.getAppRunList();
},
methods: {
uploadPageImg() {},
uploadRunImg() {},
handleRemove(file, fileList) {
console.log(file, fileList);
// 查询目录列表
getDirPicList() {
let _this = this;
_this.$https({
url: "tAppDirPic/getList",
method: "get",
authType: this.backToken
})
.then(res => {
if (res.data.resultCode === "200") {
_this.pageList = res.data.data;
_this.pageList.forEach(item => {
if (item.isCurrent) {
this.radioPage = item.id;
}
});
} else {
this.$message({ type: "error", message: res.data.message });
}
})
.catch(function(err) {
console.log(err);
});
},
handlePreview(file) {
console.log(file);
// 查询运行列表
getAppRunList() {
let _this = this;
_this.$https({
url: "tAppRunPic/getList",
method: "get",
authType: this.backToken
})
.then(res => {
if (res.data.resultCode === "200") {
_this.runList = res.data.data;
_this.runList.forEach(item => {
if (item.isCurrent) {
this.radioRun = item.id;
}
});
} else {
this.$message({ type: "error", message: res.data.message });
}
})
.catch(function(err) {
console.log(err);
});
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
uploadPageImg(res, file) {
this.saveItem(res.url,'tAppDirPic/save')
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${ file.name }?`);
uploadRunImg(res, file) {
this.saveItem(res.url,'tAppRunPic/save')
},
submitForm(){
saveItem(pic,url){
let _this = this;
let param = {
appDirPic: pic,
isCurrent: 1
};
_this.$https(
{
url: url,
method: "post",
authType: this.backToken
},
_this.$qs.stringify(param)
)
.then(
res => {
if (res.data.resultCode === "200") {
_this.$message({
type: "success",
message: res.data.message
});
this.getDirPicList()
this.getAppRunList()
} else {
_this.$message({
type: "error",
message: res.data.message
});
}
},
error => {
_this.$message({
type: "error",
message: error
});
}
);
},
close(){
this.$router.go(-1)
submitForm() {
// 修改当前项
this.updateCurrent(this.pageList[vm.radioPage].id,'tAppDirPic/update')
this.updateCurrent(this.runList[vm.radioRun].id,'tAppRunPic/update')
},
updateCurrent(id,url){
let vm = this;
let param = {
id: id,
isCurrent:1
};
vm.$https(
{
url: url,
method: "put",
authType: this.backToken
},
vm.$qs.stringify(param)
)
.then(res => {
if(res.data.resultCode==='200'){
this.$message.success("操作成功")
this.getDirPicList();
this.getAppRunList();
}else{
this.$message({type:'error',message:res.data.message})
}
})
.catch(function(err) {
console.log(err);
});
},
close() {
this.$router.go(-1);
}
}
};
......@@ -211,11 +307,15 @@ export default {
width: 100%;
height: 128px;
background-color: #99a9bf;
border-radius:10px;
border-radius: 10px;
/deep/.el-radio {
position: absolute;
right: 12px;
top:12px;
top: 12px;
.el-radio__label {
display: none;
}
.el-radio__inner {
width: 24px;
height: 24px;
......@@ -234,18 +334,19 @@ export default {
}
}
.swiper-button-next {
right:0;
right: 0;
}
.swiper-button-prev {
left :0;
left: 0;
}
.swiper-button-prev, .swiper-button-next{
.swiper-button-prev,
.swiper-button-next {
background: #ac9374;
width: 36px;
height: 36px;
border-radius: 50%;
}
.swiper-button-next:after,
}
.swiper-button-next:after,
.swiper-button-prev:after {
font-size: 14px;
font-weight: 700;
......@@ -276,6 +377,9 @@ export default {
}
}
}
/deep/.el-upload-list {
display: none;
}
.footer-btn {
position: absolute;
bottom: 20px;
......
......@@ -112,6 +112,7 @@ export default {
// 获得数据接口
getTableData() {
let vm = this;
vm.tableData = []
let param = {
_index:this.page.currentPage,
_size:this.page.pageSize,
......@@ -177,7 +178,7 @@ export default {
},
// 点击节点事件
handleNodeClick(data) {
this.selectAreaId = data.areaId
this.selectAreaId = data.id
this.getTableData()
},
// 分页
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment