|
@@ -5,79 +5,52 @@
|
|
|
<div class="page-form-title-box">
|
|
|
<el-form :model="queryParams" class="form-box" ref="queryForm"
|
|
|
:inline="true" style="width:100%;">
|
|
|
- <el-form-item label="" prop="name" label-width="90px">
|
|
|
+ <el-form-item label="" prop="appName" label-width="90px">
|
|
|
<el-input
|
|
|
maxLength="30"
|
|
|
- v-model="queryParams.searchValue"
|
|
|
+ v-model="queryParams.appName"
|
|
|
placeholder="请输入应用名"
|
|
|
style="width: 200px"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="" prop="code">
|
|
|
- <el-select v-model="queryParams.code" placeholder="请选择设备类型" style="width: 200px">
|
|
|
- <el-option
|
|
|
- v-for="item in optionList"
|
|
|
- :key="item.code"
|
|
|
- :label="item.name"
|
|
|
- :value="item.code">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="" prop="state">
|
|
|
- <el-select v-model="queryParams.state" placeholder="请选择状态" style="width: 200px">
|
|
|
- <el-option label="启用" :value="true"></el-option>
|
|
|
- <el-option label="禁用" :value="false"></el-option>
|
|
|
+ <el-form-item label="" prop="terminalType">
|
|
|
+ <el-select v-model="queryParams.terminalType" placeholder="请选择类型" style="width: 200px">
|
|
|
+ <el-option label="化学品终端" value="aio_chemical"></el-option>
|
|
|
+ <el-option label="电子信息牌" value="aio_infobord"></el-option>
|
|
|
+ <el-option label="学习考试一体" value="aio_exam"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<p class="page-inquire-common-style-button" @click="handleQuery">查询</p>
|
|
|
<p class="page-reset-common-style-button" @click="resetQuery">重置</p>
|
|
|
<p class="page-submit-common-style-button"
|
|
|
style="float: right;"
|
|
|
- @click="handleClick()"
|
|
|
- v-hasPermiRouter="['iot:appInfo:add']"
|
|
|
- >添加应用</p>
|
|
|
+ @click="tableButton(1)"
|
|
|
+ >新增</p>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div class="page-content-box">
|
|
|
<el-table class="table-box" v-loading="loading" border :data="tableList" ref="multipleTable">
|
|
|
- <el-table-column label="应用名" align="center" prop="name" show-overflow-tooltip/>
|
|
|
- <el-table-column label="版本号" align="center" prop="version" show-overflow-tooltip width="100"/>
|
|
|
- <el-table-column label="文件尺寸(MB)" align="center" prop="size" show-overflow-tooltip width="120"/>
|
|
|
- <el-table-column label="版本描述" align="center" prop="info" show-overflow-tooltip width="300"/>
|
|
|
- <el-table-column label="设备类型" align="center" prop="code" show-overflow-tooltip width="140">
|
|
|
- <template slot-scope="scope">
|
|
|
- <p v-for="item in optionList" v-if="item.code == scope.row.code">{{item.name}}</p>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态" align="center" prop="state" show-overflow-tooltip width="100">
|
|
|
+ <el-table-column label="应用名" align="center" prop="appName" show-overflow-tooltip/>
|
|
|
+ <el-table-column label="类型" align="center" prop="terminalType" show-overflow-tooltip width="200">
|
|
|
<template slot-scope="scope">
|
|
|
- {{scope.row.state?'启用':'禁用'}}
|
|
|
+ {{scope.row.terminalType=='aio_chemical'?'化学品终端':(scope.row.terminalType=='aio_infobord'?'电子信息牌':(scope.row.terminalType=='aio_exam'?'学习考试一体':scope.row.terminalType))}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column label="描述" align="center" prop="description" show-overflow-tooltip width="600"/>
|
|
|
<el-table-column label="创建时间" align="center" prop="createTime" show-overflow-tooltip width="180">
|
|
|
<template slot-scope="scope">
|
|
|
{{parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}")}}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" align="center" prop="deptName" width="260" v-if="tableButtonType">
|
|
|
+ <el-table-column label="操作" align="center" prop="deptName" width="140">
|
|
|
<template slot-scope="scope">
|
|
|
<div class="table-button-box">
|
|
|
<p class="table-button-null"></p>
|
|
|
- <p class="table-button-p"
|
|
|
- @click="tableButton(4,scope.row)"
|
|
|
- v-hasPermiRouter="['iot:appInfo:batch']"
|
|
|
- >升级</p>
|
|
|
- <p class="table-button-p"
|
|
|
- @click="tableButton(1,scope.row)"
|
|
|
- v-hasPermiRouter="['iot:appInfo:download']"
|
|
|
- >下载</p>
|
|
|
<p class="table-button-p"
|
|
|
@click="tableButton(2,scope.row)"
|
|
|
- v-hasPermiRouter="['iot:appInfo:edit']"
|
|
|
>编辑</p>
|
|
|
<p class="table-button-p"
|
|
|
@click="tableButton(3,scope.row)"
|
|
|
- v-hasPermiRouter="['iot:appInfo:del']"
|
|
|
>删除</p>
|
|
|
<p class="table-button-null"></p>
|
|
|
</div>
|
|
@@ -93,78 +66,44 @@
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-dialog :title="dialogTitle" class="applyList-dialog-box" :visible.sync="dialogType" v-if="dialogType"
|
|
|
- width="700px" append-to-body :close-on-click-modal="false">
|
|
|
+ <el-dialog :title="dialogForm.appId?'编辑':'新增'" class="applyList-dialog-box" :visible.sync="dialogType" v-if="dialogType"
|
|
|
+ width="560px" append-to-body :close-on-click-modal="false">
|
|
|
<div class="applyList-dialog-min-box scrollbar-box">
|
|
|
<el-form v-loading="loading" :rules="dialogRules" :model="dialogForm" ref="dialogForm">
|
|
|
- <el-form-item label="应用名称" prop="name" label-width="90px">
|
|
|
+ <el-form-item label="应用名称" prop="appName" label-width="90px">
|
|
|
<el-input
|
|
|
- :disabled="!!dialogForm.id"
|
|
|
- v-model="dialogForm.name"
|
|
|
+ v-model="dialogForm.appName"
|
|
|
maxLength="20"
|
|
|
placeholder="请输入应用名称"
|
|
|
- style="width: 500px"
|
|
|
+ style="width: 360px"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="版本号" prop="version" label-width="90px">
|
|
|
- <el-input-number
|
|
|
- :disabled="!!dialogForm.id"
|
|
|
- v-model="dialogForm.version"
|
|
|
- :precision="2"
|
|
|
- :step="0.01"
|
|
|
- maxLength="20"
|
|
|
- placeholder="请输入版本号"
|
|
|
- style="width: 500px"
|
|
|
- controls-position="right"
|
|
|
- :min="minVersion" :max="100">
|
|
|
- </el-input-number>
|
|
|
+ <el-form-item label="app包名" prop="startLaunchPackage" label-width="90px">
|
|
|
+ <el-input
|
|
|
+ v-model="dialogForm.startLaunchPackage"
|
|
|
+ maxLength="30"
|
|
|
+ placeholder="请输入包名"
|
|
|
+ style="width: 360px"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="版本描述" prop="info" label-width="90px">
|
|
|
+ <el-form-item label="类型" prop="terminalType" style="display: block" label-width="90px">
|
|
|
+ <el-select v-model="dialogForm.terminalType" placeholder="请选择类型" style="width: 360px">
|
|
|
+ <el-option label="化学品终端" value="aio_chemical"></el-option>
|
|
|
+ <el-option label="电子信息牌" value="aio_infobord"></el-option>
|
|
|
+ <el-option label="学习考试一体" value="aio_exam"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="描述" prop="description" label-width="90px">
|
|
|
<el-input
|
|
|
resize="none"
|
|
|
type="textarea"
|
|
|
- v-model="dialogForm.info"
|
|
|
- maxLength="200"
|
|
|
- placeholder="请输入版本描述"
|
|
|
- style="width: 500px"
|
|
|
+ v-model="dialogForm.description"
|
|
|
+ maxLength="100"
|
|
|
+ placeholder="请输入描述"
|
|
|
+ style="width: 360px"
|
|
|
+ show-word-limit
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="设备类型" prop="code" style="display: block" label-width="90px">
|
|
|
- <el-radio-group :disabled="!!dialogForm.id" v-model="dialogForm.code" @change="typeChange">
|
|
|
- <el-radio v-for="item in optionList" :label="item.code">{{item.name}}</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="状态" prop="state" style="display: block" label-width="90px">
|
|
|
- <el-radio v-model="dialogForm.state" :label="true">启用</el-radio>
|
|
|
- <el-radio v-model="dialogForm.state" :label="false">禁用</el-radio>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="安装包" prop="state" style="display: block" label-width="90px" v-if="upDataType">
|
|
|
- <p class="up-data-p" @click="upDataButton">重新上传</p>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="安装包" prop="url" label-width="90px" v-if="!upDataType">
|
|
|
- <uploader
|
|
|
- :autoStart="false"
|
|
|
- :options="options"
|
|
|
- ref="uploader"
|
|
|
- :file-list="fileList"
|
|
|
- :file-status-text="statusText"
|
|
|
- class="uploader-example"
|
|
|
- @file-complete="fileComplete"
|
|
|
- @complete="complete"
|
|
|
- @file-success="fileSuccess"
|
|
|
- @files-added="filesAdded">
|
|
|
- <uploader-unsupport></uploader-unsupport>
|
|
|
- <uploader-drop>
|
|
|
- <i class="el-icon-upload"></i>
|
|
|
- <div class="el-upload__text">将文件拖到此处,或 <uploader-btn :single="true" :attrs="attrs">点击上传</uploader-btn></div>
|
|
|
- </uploader-drop>
|
|
|
- <div class="text-box" v-if="fileData.name">
|
|
|
- <p>{{fileData.name}}</p>
|
|
|
- <p>{{fileData.size}}MB</p>
|
|
|
- <p>{{fileData.text}}</p>
|
|
|
- </div>
|
|
|
- </uploader>
|
|
|
- </el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div slot="footer" class="dialog-footer dialog-footer-box">
|
|
@@ -174,115 +113,45 @@
|
|
|
<p class="dialog-footer-button-null"></p>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
- <batch-up-dialog ref="batchUpDialog"></batch-up-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-
|
|
|
- import batchUpDialog from './batchUpDialog.vue'
|
|
|
- import { iotAppInfoList,iotAppInfoGetCodeList,iotAppInfoAdd,iotAppInfoUpdate,
|
|
|
- iotAppInfoDelete,iotAppInfoGetLastVersion,iotAppInfoBatchUpgrade, } from "@/api/iotDevice/index";
|
|
|
- import { getToken } from "@/utils/auth";
|
|
|
- import axios from 'axios'
|
|
|
- import SparkMD5 from 'spark-md5'
|
|
|
- let httpHeader=window.location.href.split('://')[0]+'://'
|
|
|
+ import {
|
|
|
+ terminalAppList,
|
|
|
+ terminalAppDelete,
|
|
|
+ terminalAppAdd,
|
|
|
+ terminalAppUpdate,
|
|
|
+ } from "@/api/iotDevice/index";
|
|
|
export default {
|
|
|
name: 'applyList',
|
|
|
- components: {
|
|
|
- batchUpDialog
|
|
|
- },
|
|
|
data(){
|
|
|
return{
|
|
|
- tableButtonType:this.hasPermiDom(['iot:appInfo:batch','iot:appInfo:download','iot:appInfo:edit','iot:appInfo:del']),
|
|
|
loading:false,
|
|
|
- optionList:[],
|
|
|
queryParams:{
|
|
|
page:1,
|
|
|
pageSize:20,
|
|
|
- searchValue:"",
|
|
|
- code:null,
|
|
|
- state:null,
|
|
|
+ appName:"",
|
|
|
+ terminalType:"",
|
|
|
},
|
|
|
tableList:[],
|
|
|
total:0,
|
|
|
- dialogTitle:"",
|
|
|
dialogType:false,
|
|
|
- upDataType:false,
|
|
|
dialogForm:{
|
|
|
- name:"",
|
|
|
- version:"",
|
|
|
- info:"",
|
|
|
- code:1,
|
|
|
- state:true,
|
|
|
- url:'',
|
|
|
- },
|
|
|
- //版本号最小值
|
|
|
- minVersion:null,
|
|
|
- //文件列表
|
|
|
- fileList:[],
|
|
|
- options: {
|
|
|
- target: httpHeader+this.judgmentNetworkReturnAddress()+"/system/file/upload/apk/chunk",
|
|
|
- // 开启服务端分片校验功能
|
|
|
- testChunks: true,
|
|
|
- single: true,
|
|
|
- fileParameterName: 'file',
|
|
|
- headers: {
|
|
|
- Authorization: getToken(),
|
|
|
- },
|
|
|
- parseTimeRemaining: function (timeRemaining, parsedTimeRemaining) {
|
|
|
- return parsedTimeRemaining
|
|
|
- .replace(/\syears?/, "年")
|
|
|
- .replace(/\days?/, "天")
|
|
|
- .replace(/\shours?/, "小时")
|
|
|
- .replace(/\sminutes?/, "分钟")
|
|
|
- .replace(/\sseconds?/, "秒");
|
|
|
- },
|
|
|
- // // 服务器分片校验函数
|
|
|
- checkChunkUploadedByResponse: (chunk, message) => {
|
|
|
- const result = JSON.parse(message);
|
|
|
- if (result.data.skipUpload) {
|
|
|
- this.skip = true;
|
|
|
- return true;
|
|
|
- }
|
|
|
- return (result.data.uploaded || []).indexOf(chunk.offset + 1) >= 0;
|
|
|
- },
|
|
|
- },
|
|
|
- attrs: {
|
|
|
- accept: [".apk"]
|
|
|
- },
|
|
|
- statusText: {
|
|
|
- success: "上传成功",
|
|
|
- error: "上传出错了",
|
|
|
- uploading: "上传中...",
|
|
|
- paused: "暂停中...",
|
|
|
- waiting: "等待中...",
|
|
|
- cmd5: "计算文件MD5中...",
|
|
|
- },
|
|
|
- fileData:{
|
|
|
- name:"",
|
|
|
- size:"",
|
|
|
- text:"",
|
|
|
+ appName:"",
|
|
|
+ startLaunchPackage:"",
|
|
|
+ terminalType:"",
|
|
|
+ description:"",
|
|
|
},
|
|
|
dialogRules:{
|
|
|
- name: [
|
|
|
+ appName: [
|
|
|
{ required: true, message: "请输入应用名称", trigger: "blur" }
|
|
|
],
|
|
|
- version: [
|
|
|
- { required: true, message: "请输入版本编号", trigger: "blur" },
|
|
|
- // { required: true, message: "只能输入数字", validator: this.isNum, trigger: "blur" },
|
|
|
- ],
|
|
|
- info: [
|
|
|
- { required: true, message: "请输入版本描述", trigger: "blur" }
|
|
|
- ],
|
|
|
- code: [
|
|
|
- { required: true, message: "请选择设备类型", trigger: "blur" }
|
|
|
+ startLaunchPackage: [
|
|
|
+ { required: true, message: "请输入包名", trigger: "blur" }
|
|
|
],
|
|
|
- state: [
|
|
|
- { required: true, message: "请选择状态", trigger: "blur" }
|
|
|
- ],
|
|
|
- url: [
|
|
|
- { required: true, message: "请上传安装包", trigger: "blur" }
|
|
|
+ terminalType: [
|
|
|
+ { required: true, message: "请选择类型", trigger: "blur" },
|
|
|
],
|
|
|
},
|
|
|
}
|
|
@@ -292,177 +161,32 @@
|
|
|
},
|
|
|
mounted(){
|
|
|
this.getList();
|
|
|
- this.iotAppInfoGetCodeList();
|
|
|
},
|
|
|
methods:{
|
|
|
- fileSuccess(rootFile, file, response, chunk) {
|
|
|
- const result = JSON.parse(response);
|
|
|
- if (result.code == 200 && !this.skip) {
|
|
|
- axios.post(httpHeader+this.judgmentNetworkReturnAddress()+"/system/file/upload/merge", {
|
|
|
- identifier: file.uniqueIdentifier,
|
|
|
- filename: file.name,
|
|
|
- totalChunks: chunk.offset,
|
|
|
- },{
|
|
|
- headers: {
|
|
|
- Authorization: getToken(),
|
|
|
- }
|
|
|
- }).then((res) => {
|
|
|
- if (res.data.code==200) {
|
|
|
- this.dialogForm.url=res.data.data;
|
|
|
- } else {
|
|
|
- }
|
|
|
- }).catch(function (error) {
|
|
|
- });
|
|
|
- } else if(result.code == 200){
|
|
|
- }else{
|
|
|
- this.msgError(result.code+result.message)
|
|
|
- }
|
|
|
- if (this.skip) {
|
|
|
- this.skip = false;
|
|
|
- }
|
|
|
- },
|
|
|
- fileComplete(rootFile) {
|
|
|
- // 一个根文件(文件夹)成功上传完成。
|
|
|
- this.fileName=rootFile.name;
|
|
|
- this.fileSize=rootFile.size;
|
|
|
- this.fileData = {
|
|
|
- name:rootFile.name,
|
|
|
- size:(parseInt(rootFile._prevUploadedSize/1024)/1024).toFixed(2),
|
|
|
- text:"上传完成"
|
|
|
- }
|
|
|
- },
|
|
|
- complete(file) {
|
|
|
- // 上传完毕。
|
|
|
- },
|
|
|
- filesAdded(file, fileList, event) {
|
|
|
- if(file[0].fileType !== "application/vnd.android.package-archive"){
|
|
|
- this.msgError('请上传APK文件')
|
|
|
- return
|
|
|
- }
|
|
|
- this.fileData = {
|
|
|
- name:file[0].name,
|
|
|
- size:"",
|
|
|
- text:"上传中..."
|
|
|
- }
|
|
|
- this.fileList=[];
|
|
|
- file.forEach((e) => {
|
|
|
- this.fileList.push(e);
|
|
|
- this.computeMD5(e);
|
|
|
- });
|
|
|
- },
|
|
|
- computeMD5(file) {
|
|
|
- let fileReader = new FileReader();
|
|
|
- let time = new Date().getTime();
|
|
|
- let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;
|
|
|
- let currentChunk = 0;
|
|
|
- const chunkSize = 1024 * 1024;
|
|
|
- let chunks = Math.ceil(file.size / chunkSize);
|
|
|
- let spark = new SparkMD5.ArrayBuffer();
|
|
|
- // 文件状态设为"计算MD5"
|
|
|
- file.cmd5 = true; //文件状态为“计算md5...”
|
|
|
- file.pause();
|
|
|
- loadNext();
|
|
|
- fileReader.onload = (e) => {
|
|
|
- spark.append(e.target.result);
|
|
|
- if (currentChunk < chunks) {
|
|
|
- currentChunk++;
|
|
|
- loadNext();
|
|
|
- // 实时展示MD5的计算进度
|
|
|
- } else {
|
|
|
- let md5 = spark.end();
|
|
|
- spark.destroy(); //释放缓存
|
|
|
- file.uniqueIdentifier = md5; //将文件md5赋值给文件唯一标识
|
|
|
- file.cmd5 = false; //取消计算md5状态
|
|
|
- file.resume(); //开始上传
|
|
|
- }
|
|
|
- };
|
|
|
- fileReader.onerror = function () {
|
|
|
- this.error(`文件${file.name}读取出错,请检查该文件`);
|
|
|
- file.cancel();
|
|
|
- };
|
|
|
- function loadNext() {
|
|
|
- let start = currentChunk * chunkSize;
|
|
|
- let end = start + chunkSize >= file.size ? file.size : start + chunkSize;
|
|
|
- fileReader.readAsArrayBuffer(blobSlice.call(file.file, start, end));
|
|
|
- }
|
|
|
- },
|
|
|
+ //提交按钮
|
|
|
dialogSubmit(){
|
|
|
- if(this.loading){
|
|
|
- return
|
|
|
- }
|
|
|
- if(this.dialogForm.id){//编辑
|
|
|
- this.$refs["dialogForm"].validate(valid => {
|
|
|
- if (valid) {
|
|
|
- let obj = {
|
|
|
- id:this.dialogForm.id,
|
|
|
- name:this.dialogForm.name,
|
|
|
- version:this.dialogForm.version,
|
|
|
- info:this.dialogForm.info,
|
|
|
- code:this.dialogForm.code,
|
|
|
- url:this.dialogForm.url,
|
|
|
- state:this.dialogForm.state,
|
|
|
- // fileData:JSON.stringify(this.fileData),
|
|
|
- };
|
|
|
- iotAppInfoUpdate(obj).then( response => {
|
|
|
- this.msgSuccess("编辑成功");
|
|
|
- this.getList()
|
|
|
- this.dialogType = false;
|
|
|
- this.dialogForm = {};
|
|
|
- this.fileList=[];
|
|
|
- this.fileData = {};
|
|
|
+ this.$refs["dialogForm"].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ if(this.dialogForm.appId){
|
|
|
+ terminalAppUpdate(this.dialogForm).then( response => {
|
|
|
+ this.msgSuccess(response.message);
|
|
|
+ this.$set(this,'dialogType',false);
|
|
|
+ this.resetQuery();
|
|
|
});
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- }else{//添加
|
|
|
- this.$refs["dialogForm"].validate(valid => {
|
|
|
- if (valid) {
|
|
|
- let obj = {
|
|
|
- name:this.dialogForm.name,
|
|
|
- version:this.dialogForm.version,
|
|
|
- info:this.dialogForm.info,
|
|
|
- code:this.dialogForm.code,
|
|
|
- state:this.dialogForm.state,
|
|
|
- url:this.dialogForm.url,
|
|
|
- size:this.fileData.size,
|
|
|
- // fileData:JSON.stringify(this.fileData),
|
|
|
- };
|
|
|
- iotAppInfoAdd(obj).then( response => {
|
|
|
- this.msgSuccess("新增成功");
|
|
|
- this.getList()
|
|
|
- this.dialogType = false;
|
|
|
- this.dialogForm = {};
|
|
|
- this.fileList=[];
|
|
|
- this.fileData = {};
|
|
|
+ }else{
|
|
|
+ terminalAppAdd(this.dialogForm).then( response => {
|
|
|
+ this.msgSuccess(response.message);
|
|
|
+ this.$set(this,'dialogType',false);
|
|
|
+ this.resetQuery();
|
|
|
});
|
|
|
}
|
|
|
- });
|
|
|
- }
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
+ //关闭按钮
|
|
|
dialogCancel(){
|
|
|
this.$set(this,'dialogType',false);
|
|
|
},
|
|
|
- //新增
|
|
|
- handleClick(){
|
|
|
- this.$set(this,'dialogForm',{
|
|
|
- name:"",
|
|
|
- version:"",
|
|
|
- info:"",
|
|
|
- code:1,
|
|
|
- state:true,
|
|
|
- url:"",
|
|
|
- });
|
|
|
- this.$set(this,'fileList',[]);
|
|
|
- this.$set(this,'fileData',{
|
|
|
- name:"",
|
|
|
- size:"",
|
|
|
- text:"",
|
|
|
- });
|
|
|
- this.iotAppInfoGetLastVersion();
|
|
|
- this.$set(this,'dialogTitle','上传APK');
|
|
|
- this.$set(this,'upDataType',false);
|
|
|
- this.$set(this,'dialogType',true);
|
|
|
- },
|
|
|
//查询
|
|
|
handleQuery(){
|
|
|
this.$set(this.queryParams,'page',1);
|
|
@@ -473,9 +197,8 @@
|
|
|
this.$set(this,'queryParams',{
|
|
|
page:1,
|
|
|
pageSize:20,
|
|
|
- searchValue:"",
|
|
|
- code:null,
|
|
|
- state:null,
|
|
|
+ appName:"",
|
|
|
+ terminalType:"",
|
|
|
});
|
|
|
this.getList();
|
|
|
},
|
|
@@ -483,116 +206,49 @@
|
|
|
getList(){
|
|
|
this.$set(this,'loading',true);
|
|
|
let obj = JSON.parse(JSON.stringify(this.queryParams))
|
|
|
- iotAppInfoList(obj).then(response => {
|
|
|
+ terminalAppList(obj).then(response => {
|
|
|
this.$set(this,'loading',false);
|
|
|
this.$set(this,'tableList',response.data.records);
|
|
|
this.$set(this,'total',response.data.total);
|
|
|
});
|
|
|
},
|
|
|
- //获取设备类型
|
|
|
- iotAppInfoGetCodeList(){
|
|
|
- iotAppInfoGetCodeList().then(response => {
|
|
|
- this.$set(this,'optionList',response.data);
|
|
|
- });
|
|
|
- },
|
|
|
- //重新上传开关
|
|
|
- upDataButton(){
|
|
|
- this.$set(this.dialogForm,'url','');
|
|
|
- this.$set(this,'upDataType',!this.upDataType);
|
|
|
- },
|
|
|
//操作按钮
|
|
|
tableButton(type,row){
|
|
|
let self = this;
|
|
|
if(type == 1){
|
|
|
- let format = row.url.split('.');
|
|
|
- let name = row.name+'.'+format[format.length-1];
|
|
|
- this.downloadGet(row.url,name);
|
|
|
- }else if(type == 2){
|
|
|
- let obj = JSON.parse(JSON.stringify(row));
|
|
|
+ //新增
|
|
|
this.$set(this,'dialogForm',{
|
|
|
- id:obj.id,
|
|
|
- name:obj.name,
|
|
|
- version:obj.version,
|
|
|
- info:obj.info,
|
|
|
- code:obj.code,
|
|
|
- url:obj.url,
|
|
|
- state:obj.state,
|
|
|
+ appName:"",
|
|
|
+ startLaunchPackage:"",
|
|
|
+ terminalType:"",
|
|
|
+ description:"",
|
|
|
});
|
|
|
- this.$set(this,'minVersion',obj.version);
|
|
|
- this.$set(this,'fileList',[]);
|
|
|
- this.$set(this,'fileData',{
|
|
|
- name:"",
|
|
|
- size:"",
|
|
|
- text:"",
|
|
|
+ this.$set(this,'dialogType',true);
|
|
|
+ }else if(type == 2){
|
|
|
+ let obj = JSON.parse(JSON.stringify(row))
|
|
|
+ this.$set(this,'dialogForm',{
|
|
|
+ appId:obj.id,
|
|
|
+ appName:obj.appName,
|
|
|
+ startLaunchPackage:obj.startLaunchPackage,
|
|
|
+ terminalType:obj.terminalType,
|
|
|
+ description:obj.description,
|
|
|
});
|
|
|
- this.$set(this,'dialogTitle','上传APK');
|
|
|
- this.$set(this,'upDataType',true);
|
|
|
this.$set(this,'dialogType',true);
|
|
|
}else if(type == 3){
|
|
|
+ //删除
|
|
|
this.$confirm('是否确认删除?', "警告", {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
type: "warning"
|
|
|
}).then(function() {
|
|
|
}).then(() => {
|
|
|
- iotAppInfoDelete({id:row.id}).then(response => {
|
|
|
+ terminalAppDelete({appId:row.id}).then(response => {
|
|
|
self.msgSuccess(response.message)
|
|
|
self.getList();
|
|
|
});
|
|
|
}).catch(() => {});
|
|
|
- }else if (type == 4){
|
|
|
- this.$confirm('请选择升级方式?', "提示", {
|
|
|
- confirmButtonText: "批量升级",
|
|
|
- cancelButtonText: "全部升级",
|
|
|
- confirmButtonClass:'confirmBatchButton',
|
|
|
- cancelButtonClass:'confirmBatchButton',
|
|
|
- type: "warning"
|
|
|
- }).then(function() {
|
|
|
- }).then(() => {
|
|
|
- this.$refs.batchUpDialog.dialogOpen(row);
|
|
|
- }).catch(() => {
|
|
|
- self.$confirm('是否确认批量升级?', "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(function() {
|
|
|
- }).then(() => {
|
|
|
- let obj = {
|
|
|
- id:row.id,
|
|
|
- isAll:true, // true.全部升级 false.勾选升级
|
|
|
- }
|
|
|
- iotAppInfoBatchUpgrade(obj).then(response => {
|
|
|
- this.msgSuccess(response.message)
|
|
|
- });
|
|
|
- }).catch(() => {});
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
}
|
|
|
},
|
|
|
- //选中设备类型
|
|
|
- typeChange(val){
|
|
|
- this.iotAppInfoGetLastVersion();
|
|
|
- },
|
|
|
- //通过类型获取当前APK版本号
|
|
|
- iotAppInfoGetLastVersion(){
|
|
|
- iotAppInfoGetLastVersion({code:this.dialogForm.code?this.dialogForm.code:1}).then(response => {
|
|
|
- let minVersion = Number(this.accAdd(response.data,0.01));
|
|
|
- this.$set(this,'minVersion',minVersion);
|
|
|
- this.$set(this.dialogForm,'version',minVersion);
|
|
|
- // this.$set(this,'minVersion',Number(this.accAdd(response.data,0.01)));
|
|
|
- // this.$set(this.dialogForm,'version',response.data);
|
|
|
- // this.$set(this.dialogForm,'version',response.data);
|
|
|
- });
|
|
|
- },
|
|
|
- //加法
|
|
|
- accAdd(arg1,arg2){
|
|
|
- var r1,r2,m;
|
|
|
- try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
|
|
|
- try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
|
|
|
- m=Math.pow(10,Math.max(r1,r2))
|
|
|
- return ((arg1*m+arg2*m)/m).toFixed(2);
|
|
|
- },
|
|
|
},
|
|
|
}
|
|
|
</script>
|