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

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

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