|
@@ -2,72 +2,48 @@
|
|
|
<el-dialog
|
|
|
class="api-edit"
|
|
|
v-model="showDialog"
|
|
|
- :title="`${formData.id ? '编辑升级包' : '新增升级包'}`"
|
|
|
+ :title="`${formData.id ? '编辑批次' : '新增批次'}`"
|
|
|
width="768px"
|
|
|
:close-on-click-modal="false"
|
|
|
:close-on-press-escape="false"
|
|
|
>
|
|
|
<el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="160px">
|
|
|
- <el-form-item label="升级包类型" prop="typo">
|
|
|
- <el-radio-group v-model="formData.typo">
|
|
|
- <el-radio label="1">整包</el-radio>
|
|
|
- <el-radio label="2">差分</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
|
|
|
- <el-form-item label="升级包名称" prop="name">
|
|
|
- <el-input v-model="formData.name" placeholder="请输入升级包名称" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="所属产品" prop="productId">
|
|
|
- <el-select v-model="formData.productId" filterable placeholder="请选择产品" @change="seletChange">
|
|
|
- <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="批次名称" prop="name">
|
|
|
+ <el-input v-model="formData.name" placeholder="请输入批次名称" />
|
|
|
</el-form-item>
|
|
|
- <div>
|
|
|
- <el-form-item label="升级包模块" prop="module">
|
|
|
- <el-select v-model="formData.module" filterable placeholder="请选择产品">
|
|
|
- <el-option v-for="item in moduleData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <el-form-item label="升级包版本号" prop="version" v-if="formData.typo == 1">
|
|
|
- <el-input v-model="formData.version" placeholder="请输入待升级包版本号" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="待升级版本号" prop="waitVersion" v-if="formData.typo == 2">
|
|
|
+ <el-form-item label="待升级版本号" prop="waitVersion" >
|
|
|
<el-input v-model="formData.waitVersion" placeholder="请输入待升级版本号" />
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="升级后版本号" prop="afterVersion" v-if="formData.typo == 2">
|
|
|
- <el-input v-model="formData.afterVersion" placeholder="请输入升级后版本号" />
|
|
|
+ <el-form-item label="协议方式" prop="method">
|
|
|
+ <el-radio-group v-model="formData.method">
|
|
|
+ <el-radio label="1">http</el-radio>
|
|
|
+ <el-radio label="2">https</el-radio>
|
|
|
+ <el-radio label="3">mqtt</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="算法签名" prop="are">
|
|
|
- <el-select v-model="formData.are" filterable placeholder="请选择算法签名">
|
|
|
- <el-option v-for="item in areType" :key="item.value" :label="item.label" :value="item.value"> </el-option>
|
|
|
+ <el-form-item label="所属设备" prop="devices" v-if="formData.method=='3'">
|
|
|
+ <el-select v-model="formData.devices" filterable placeholder="请选择设备" >
|
|
|
+ <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="选择升级包" prop="url">
|
|
|
- <el-upload :accept="['.bin','.tar','.gz','.tar.xz','.zip','.gzip','.apk','.dav','.pack']" :show-file-list="false" :limit="1" :headers="headers" :action="uploadUrl" :on-success="updateImg">
|
|
|
-
|
|
|
- <el-button type="Default">上传升级包</el-button>
|
|
|
- </el-upload>
|
|
|
+ <el-form-item label="升级方式" prop="stratege">
|
|
|
+ <el-radio-group v-model="formData.stratege">
|
|
|
+ <el-radio label="1">静态升级</el-radio>
|
|
|
+ <el-radio label="2">动态升级</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="升级包是否验证" prop="check">
|
|
|
- <el-radio-group v-model="formData.check">
|
|
|
- <el-radio :label="1">是</el-radio>
|
|
|
- <el-radio :label="2">否</el-radio>
|
|
|
+ <el-form-item label="主动推送" prop="push">
|
|
|
+ <el-radio-group v-model="formData.push">
|
|
|
+ <el-radio label="1">是</el-radio>
|
|
|
+ <el-radio label="2">否</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="升级包描述" prop="describe">
|
|
|
- <el-input v-model="formData.describe" type="textarea" :rows="3" />
|
|
|
- </el-form-item>
|
|
|
|
|
|
- <el-form-item label="推送设备的自定义消息" prop="info">
|
|
|
- <el-input v-model="formData.info" type="textarea" :rows="3" />
|
|
|
- </el-form-item>
|
|
|
+
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
@@ -83,53 +59,29 @@ import { ref, reactive, nextTick } from 'vue'
|
|
|
import api from '/@/api/ota'
|
|
|
import { ruleRequired } from '/@/utils/validator'
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
-import getOrigin from '/@/utils/origin';
|
|
|
|
|
|
|
|
|
const emit = defineEmits(['getList'])
|
|
|
|
|
|
const showDialog = ref(false)
|
|
|
const formRef = ref()
|
|
|
-const uploadUrl: string = getOrigin(import.meta.env.VITE_API_URL + "/dev_ota_fireware/upload");
|
|
|
- const headers = {
|
|
|
- Authorization: 'Bearer ' + localStorage.token,
|
|
|
- };
|
|
|
-const areType = ref([
|
|
|
- {
|
|
|
- label: 'MD5',
|
|
|
- value: 'MD5',
|
|
|
- },
|
|
|
- {
|
|
|
- label: 'SHA256',
|
|
|
- value: 'SHA256',
|
|
|
- },
|
|
|
-])
|
|
|
+
|
|
|
const productData = ref([
|
|
|
{
|
|
|
id: '',
|
|
|
name: '',
|
|
|
},
|
|
|
])
|
|
|
-const moduleData = ref([
|
|
|
- {
|
|
|
- id: '',
|
|
|
- name: '',
|
|
|
- },
|
|
|
-])
|
|
|
const baseForm = {
|
|
|
id: undefined,
|
|
|
- typo: '1',
|
|
|
+ method: '1',
|
|
|
+ push: '1',
|
|
|
name: '',
|
|
|
- productId: '',
|
|
|
- module: '',
|
|
|
- version: '',
|
|
|
- are: 'MD5',
|
|
|
- url: '',
|
|
|
- check: 1,
|
|
|
- describe: '',
|
|
|
- info: '',
|
|
|
- afterVersion: '',
|
|
|
+ devices: '',
|
|
|
+ stratege: '1',
|
|
|
waitVersion: '',
|
|
|
+ devOtaFirewareId: '',
|
|
|
+ productId:'',
|
|
|
}
|
|
|
|
|
|
const formData = reactive({
|
|
@@ -137,60 +89,32 @@ const formData = reactive({
|
|
|
})
|
|
|
|
|
|
const ruleForm = {
|
|
|
- typo: [ruleRequired('请选择升级包类型')],
|
|
|
- name: [ruleRequired('升级包名称不能为空')],
|
|
|
+ method: [ruleRequired('请选择批次类型')],
|
|
|
+ name: [ruleRequired('批次名称不能为空')],
|
|
|
productId: [ruleRequired('请选择所属产品')],
|
|
|
- module: [ruleRequired('请选择升级包模块')],
|
|
|
- version: [ruleRequired('升级包版本号不能为空')],
|
|
|
- are: [ruleRequired('算法签名不能为空')],
|
|
|
- check: [ruleRequired('升级包是否验证不能为空')],
|
|
|
- // url: [ruleRequired('升级包不能为空')],
|
|
|
- afterVersion: [ruleRequired('待升级版本号不能为空')],
|
|
|
+ devices: [ruleRequired('请选择批次模块')],
|
|
|
+ stratege: [ruleRequired('批次版本号不能为空')],
|
|
|
waitVersion: [ruleRequired('升级后版本号不能为空')],
|
|
|
}
|
|
|
|
|
|
-const updateImg = (res: any) => {
|
|
|
- console.log(res);
|
|
|
-
|
|
|
- if (res.code === 0) {
|
|
|
- ElMessage.success('上传成功');
|
|
|
- } else {
|
|
|
- ElMessage.error(res.message);
|
|
|
- }
|
|
|
- };
|
|
|
|
|
|
const onSubmit = async () => {
|
|
|
await formRef.value.validate()
|
|
|
|
|
|
- const theApi = formData.id ? api.manage.edit : api.manage.add
|
|
|
-
|
|
|
+ const theApi = formData.id ? api.batch.edit : api.batch.add
|
|
|
await theApi(formData)
|
|
|
-
|
|
|
ElMessage.success('操作成功')
|
|
|
resetForm()
|
|
|
showDialog.value = false
|
|
|
emit('getList')
|
|
|
}
|
|
|
|
|
|
-const seletChange = (val: Number) => {
|
|
|
- formData.module='';
|
|
|
- getModuleList(val);
|
|
|
-};
|
|
|
-
|
|
|
-const getModuleList = (productID: Number) => {
|
|
|
- api.module.getList({productID:productID}).then((res: any) => {
|
|
|
- let productDataList = res.Data
|
|
|
- moduleData.value = productDataList
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
const getProductList = () => {
|
|
|
- api.module.getSubList().then((res: any) => {
|
|
|
- let productDataList = res.product
|
|
|
+ api.batch.getDeviceList({productId:formData.productId}).then((res: any) => {
|
|
|
+ let productDataList = res.device
|
|
|
productData.value = productDataList
|
|
|
})
|
|
|
}
|
|
|
-getProductList()
|
|
|
|
|
|
const resetForm = async () => {
|
|
|
Object.assign(formData, { ...baseForm })
|
|
@@ -202,6 +126,8 @@ const open = async (row: any) => {
|
|
|
showDialog.value = true
|
|
|
nextTick(() => {
|
|
|
Object.assign(formData, { ...row })
|
|
|
+ getProductList()
|
|
|
+
|
|
|
})
|
|
|
}
|
|
|
|