Răsfoiți Sursa

代码同步(待优化) 剩余数据统计

yukai 2 ani în urmă
părinte
comite
b3acecfc70

+ 15 - 0
src/api/ota/index.ts

@@ -8,6 +8,8 @@ export default {
     del: (ids: number) => del('/dev_ota_fireware/delete', { ids }),
     add: (data: any) => post('/dev_ota_fireware/add', data),
     edit: (data: any) => post('/dev_ota_fireware/edit', data),
+    detail: (id: number) => get('/dev_ota_fireware/get', { id }),
+
   },
   module: {
     getSubList: () => get('/product/list'),
@@ -15,5 +17,18 @@ export default {
     del: (ids: number) => del('/dev_ota_module/delete', { ids }),
     add: (data: any) => post('/dev_ota_module/add', data),
     edit: (data: any) => post('/dev_ota_module/edit', data),
+  },
+  batch: {
+    getList: (data: any) => get('/dev_ota_strategy/list', data),
+    getDeviceList: (data: any) => get('/product/device/list', data),
+    del: (ids: number) => del('/dev_ota_strategy/delete', { ids }),
+    add: (data: any) => post('/dev_ota_strategy/add', data),
+    edit: (data: any) => post('/dev_ota_strategy/edit', data),
+  },
+  device: {
+    getList: (data: any) => get('/dev_ota_detail/list', data),
+    del: (ids: number) => del('/dev_ota_detail/delete', { ids }),
+    add: (data: any) => post('/dev_ota_detail/add', data),
+    edit: (data: any) => post('/dev_ota_detail/edit', data),
   }
 } 

+ 39 - 113
src/views/iot/ota-update/update/check.vue

@@ -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()
+
 	})
 }
 

+ 39 - 43
src/views/iot/ota-update/update/component/batch.vue

@@ -7,7 +7,7 @@
 					<el-input v-model="params.keyWord" placeholder="请输入产品名称" clearable size="default" style="width: 240px"
 						@keyup.enter.native="getList" />
 				</el-form-item>
-		
+
 				<el-form-item>
 
 					<el-button size="default" type="primary" class="ml10" @click="getList()">
@@ -18,11 +18,11 @@
 					</el-button>
 				</el-form-item>
 				<el-form-item>
-					<el-button type="primary" v-auth="'add'" @click="addOrEdit()">
+					<el-button type="primary" @click="CheckUpdate()">
 						<el-icon>
 							<ele-FolderAdd />
 						</el-icon>
-						添加升级包
+						添加批次
 					</el-button>
 
 				</el-form-item>
@@ -30,85 +30,81 @@
 		</div>
 		<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
 			<el-table-column prop="id" label="ID" width="60" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="升级包名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="typo" label="类型" show-overflow-tooltip>
+			<el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="waitVersion" label="待升级版本号" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="method" label="协议方式" show-overflow-tooltip>
+				<template #default="scope">
+					<el-tag size="small" v-if="scope.row.method == 1">http</el-tag>
+					<el-tag size="small" v-if="scope.row.method == 2">https</el-tag>
+					<el-tag size="small" v-if="scope.row.method == 3">mqtt</el-tag>
+				</template>
+			</el-table-column>
+			<el-table-column prop="stratege" label="升级方式" show-overflow-tooltip>
 				<template #default="scope">
-					<el-tag  size="small" v-if="scope.row.typo==1">整包</el-tag>
-					<el-tag  type="info" size="small" v-if="scope.row.typo==2">差分</el-tag>
+					<el-tag size="small" v-if="scope.row.stratege == 1">静态升级 </el-tag>
+					<el-tag size="small" v-if="scope.row.stratege == 2">动态升级</el-tag>
 				</template>
 			</el-table-column>
-			<el-table-column prop="productName" label="所属产品" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="moduleName" label="模块名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="状态" width="100" align="center">
+
+			<el-table-column prop="push" label="主动推送" show-overflow-tooltip>
 				<template #default="scope">
-					<el-tag type="success" size="small" v-if="scope.row.status">验证</el-tag>
-					<el-tag type="info" size="small" v-else>未验证</el-tag>
+					<el-tag size="small" v-if="scope.row.push == 1">是 </el-tag>
+					<el-tag size="small" v-if="scope.row.push == 2">否</el-tag>
 				</template>
-			</el-table-column> 
+			</el-table-column>
 			<el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-			<el-table-column label="操作" width="200" align="center">
+			<!-- <el-table-column label="操作" width="200" align="center">
 				<template #default="scope">
-					<el-button size="small" text type="primary" v-if="!scope.row.folderName"
-						@click="toDetail(scope.row.id)">查看</el-button>
-					<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-					<el-button size="small" text type="success" v-auth="'edit'" @click="CheckUpdate(scope.row)">验证</el-button>
-				
+					<el-button size="small" text type="warning" v-auth="'edit'" @click="CheckUpdate(scope.row)">编辑</el-button>
 					<el-button size="small" text type="danger" v-auth="'del'" @click="del(scope.row)">删除</el-button>
 				</template>
-			</el-table-column>
+			</el-table-column> -->
 		</el-table>
 		<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize"
 			@pagination="getList()" />
 
 	</el-card>
+	<CheckForm ref="checkFormRef" @getList="getList()"></CheckForm>
 </template>
   
 <script lang="ts" setup>
 import api from '/@/api/ota';
 import { useSearch } from '/@/hooks/useCommon';
 import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
-import getOrigin from '/@/utils/origin'
+import CheckForm from '../check.vue';
 
 import { ref } from 'vue';
 import { useRouter } from 'vue-router';
-
+const props = defineProps({
+	detail: {
+		type: Object,
+		default: () => { }
+	},
+})
 const queryRef = ref();
 const router = useRouter();
 
-const editFormRef = ref();
 const checkFormRef = ref();
 
-const { params, tableData, getList, loading } = useSearch<any[]>(api.manage.getList, 'fireware', { keyWord: '' });
+const { params, tableData, getList, loading } = useSearch<any[]>(api.batch.getList, 'Data', { devOtaFirewareId: props.detail.id });
 
 getList();
-/** 重置按钮操作 */
-const resetQuery = (formEl: FormInstance | undefined) => {
-	if (!formEl) return;
-	formEl.resetFields();
-	getList();
-};
-const toDetail = (id: number) => {
-      router.push(`/iotmanager/ota/update/detail/${id}`)
-};
 
-const CheckUpdate= async (row?: any) => {
+const CheckUpdate = async (row?: any) => {
 	if (row) {
 		checkFormRef.value.open(row);
 		return;
 	} else {
-		checkFormRef.value.open();
-	}
-};
 
-const addOrEdit = async (row?: any) => {
-	if (row) {
-		editFormRef.value.open(row);
-		return;
-	} else {
-		editFormRef.value.open();
+		let array={
+			productId:props.detail.productId,
+			devOtaFirewareId:props.detail.id
+		}
+		checkFormRef.value.open(array);
 	}
 };
 
+
 const del = (row: any) => {
 	ElMessageBox.confirm(`此操作将删除图形:“${row.name}”,是否继续?`, '提示', {
 		confirmButtonText: '确认',

+ 29 - 61
src/views/iot/ota-update/update/component/device.vue

@@ -1,4 +1,3 @@
-
 <template>
 	<el-card shadow="hover">
 		<div class="search">
@@ -7,7 +6,7 @@
 					<el-input v-model="params.keyWord" placeholder="请输入产品名称" clearable size="default" style="width: 240px"
 						@keyup.enter.native="getList" />
 				</el-form-item>
-		
+
 				<el-form-item>
 
 					<el-button size="default" type="primary" class="ml10" @click="getList()">
@@ -17,45 +16,40 @@
 						查询
 					</el-button>
 				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" v-auth="'add'" @click="addOrEdit()">
-						<el-icon>
-							<ele-FolderAdd />
-						</el-icon>
-						添加升级包
-					</el-button>
-
-				</el-form-item>
+				
 			</el-form>
 		</div>
 		<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
 			<el-table-column prop="id" label="ID" width="60" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="升级包名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="typo" label="类型" show-overflow-tooltip>
+			<el-table-column prop="deviceName" label="设备名称" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="status" label="状态" show-overflow-tooltip>
 				<template #default="scope">
-					<el-tag  size="small" v-if="scope.row.typo==1">整包</el-tag>
-					<el-tag  type="info" size="small" v-if="scope.row.typo==2">差分</el-tag>
+					<el-tag size="small" v-if="scope.row.status == 0">待推送</el-tag>
+					<el-tag size="small" v-if="scope.row.status == 1">已推送</el-tag>
+					<el-tag size="small" v-if="scope.row.status == 2">升级中</el-tag>
+					<el-tag size="small" v-if="scope.row.status == 3">升级成功</el-tag>
+					<el-tag size="small" v-if="scope.row.status == 4">升级失败</el-tag>
+					<el-tag size="small" v-if="scope.row.status == 5">已取消</el-tag>
 				</template>
 			</el-table-column>
-			<el-table-column prop="productName" label="所属产品" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="moduleName" label="模块名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="状态" width="100" align="center">
+			<el-table-column prop="step" label="升级进度" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="fail" label="失败原因" width="100" align="center">
 				<template #default="scope">
-					<el-tag type="success" size="small" v-if="scope.row.status">验证</el-tag>
-					<el-tag type="info" size="small" v-else>未验证</el-tag>
+					<el-tag size="small" v-if="scope.row.fail == -1">升级失败</el-tag>
+					<el-tag size="small" v-if="scope.row.fail == -2">下载失败</el-tag>
+					<el-tag size="small" v-if="scope.row.fail == -3">校验失败</el-tag>
+					<el-tag size="small" v-if="scope.row.fail == -4">烧写失败</el-tag>
 				</template>
-			</el-table-column> 
-			<el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-			<el-table-column label="操作" width="200" align="center">
+			</el-table-column>
+			<el-table-column prop="createdAt" label="时间" min-width="100" align="center"></el-table-column>
+			<!-- <el-table-column label="操作" width="200" align="center">
 				<template #default="scope">
-					<el-button size="small" text type="primary" v-if="!scope.row.folderName"
-						@click="toDetail(scope.row.id)">查看</el-button>
+
 					<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-					<el-button size="small" text type="success" v-auth="'edit'" @click="CheckUpdate(scope.row)">验证</el-button>
-				
+
 					<el-button size="small" text type="danger" v-auth="'del'" @click="del(scope.row)">删除</el-button>
 				</template>
-			</el-table-column>
+			</el-table-column> -->
 		</el-table>
 		<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize"
 			@pagination="getList()" />
@@ -67,47 +61,21 @@
 import api from '/@/api/ota';
 import { useSearch } from '/@/hooks/useCommon';
 import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
-import getOrigin from '/@/utils/origin'
-
 import { ref } from 'vue';
 import { useRouter } from 'vue-router';
-
+const props = defineProps({
+	detail: {
+		type: Object,
+		default: () => { }
+	},
+})
 const queryRef = ref();
-const router = useRouter();
 
-const editFormRef = ref();
-const checkFormRef = ref();
 
-const { params, tableData, getList, loading } = useSearch<any[]>(api.manage.getList, 'fireware', { keyWord: '' });
+const { params, tableData, getList, loading } = useSearch<any[]>(api.device.getList, 'fireware', {devOtaFirewareId: props.detail.id});
 
 getList();
-/** 重置按钮操作 */
-const resetQuery = (formEl: FormInstance | undefined) => {
-	if (!formEl) return;
-	formEl.resetFields();
-	getList();
-};
-const toDetail = (id: number) => {
-      router.push(`/iotmanager/ota/update/detail/${id}`)
-};
 
-const CheckUpdate= async (row?: any) => {
-	if (row) {
-		checkFormRef.value.open(row);
-		return;
-	} else {
-		checkFormRef.value.open();
-	}
-};
-
-const addOrEdit = async (row?: any) => {
-	if (row) {
-		editFormRef.value.open(row);
-		return;
-	} else {
-		editFormRef.value.open();
-	}
-};
 
 const del = (row: any) => {
 	ElMessageBox.confirm(`此操作将删除图形:“${row.name}”,是否继续?`, '提示', {

+ 15 - 45
src/views/iot/ota-update/update/component/info.vue

@@ -3,70 +3,40 @@
 		<div class="content">
 		
 			<div class="container">
-				<div class="item">升级包 ID:BV2IA9D4wF1b3ZfcRfWQ030100</div>
-				<div class="item">升级包名称:测试</div>
-				<div class="item">所属产品:测试</div>
+				<div class="item">升级包 ID:{{detail.id}}</div>
+				<div class="item">升级包名称:{{detail.name}}</div>
+				<div class="item">所属产品:{{detail.productName}}</div>
 			</div>
 			<div class="container">
 				<div class="item">升级包签名:d52b637c5eaf2bc9c24008bc4b723600</div>
-				<div class="item">升级包版本号:1.0</div>
-				<div class="item">创建时间:2023/09/30 13:08:46</div>
+				<div class="item">升级包版本号:{{detail.version}}</div>
+				<div class="item">创建时间:{{detail.createdAt}}</div>
 			</div>
 			<div class="container">
-				<div class="item">签名算法:MD5</div>
+				<div class="item">签名算法:{{detail.are}}</div>
 				<div class="item">升级包状态:未验证</div>
 				<div class="item">验证进度:0%</div>
 			</div>
 			<div class="container">
-				<div class="item">升级包描述:22222222222222</div>
-				<div class="item">推送给设备的自定义信息:22222222222222233</div>
+				<div class="item">升级包描述:{{detail.describe}}</div>
+				<div class="item">推送给设备的自定义信息:{{detail.info}}</div>
 				<div class="item"></div>
 			</div>
 			
 		</div>
 	</el-card>
 </template>
-<script lang="ts">
-import { toRefs, reactive, onMounted, defineComponent } from 'vue'
-import type { TabsPaneContext } from 'element-plus'
-import { useRoute } from 'vue-router'
-import { EditPen, DocumentAdd } from '@element-plus/icons-vue'
-import api from '/@/api/network'
+<script lang="ts" setup>
 
+const props = defineProps({
 
-export default defineComponent({
-	components: { EditPen, DocumentAdd },
-	setup(props, context) {
-		const route = useRoute()
-		const state = reactive({
-			developer_status: 2,
-			detail: {},
-			
-		})
-		const getDetail = () => {
-			const id = route.params && route.params.id
-			api.server.getDetail({ id: id }).then((res: any) => {
-				state.detail = res
-			})
-		}
-	
-	
-	
-		onMounted(() => {
-			 getDetail()
-		})
-		const handleClick = (tab: TabsPaneContext, event: Event) => {
-			// console.log(tab, event)
-		}
+detail: {
+  type: Object,
+  default: () => {}
+},
 
-		return {
-			getDetail,
-			handleClick,
-			...toRefs(props),
-			...toRefs(state),
-		}
-	},
 })
+
 </script>
 
 <style scoped lang="scss">

+ 17 - 21
src/views/iot/ota-update/update/detail.vue

@@ -2,19 +2,19 @@
 	<el-card class="system-dic-container" style="position: relative">
 		<div class="content">
 			<div class="flex cont_box">
-				<div class="font26">升级包名称:店里车间场景</div>
+				<div class="font26">升级包名称:{{detail.name}}</div>
 				<div class="pro-status"><span :class="developer_status == 2 ? 'on' : 'off'"></span>{{ developer_status == 2 ? '已验证' : '未验证' }}</div>
 			</div>
 			<div class="mt20"></div>
 			<div class="container">
-				<div class="item">升级包类型:整包</div>
+				<div class="item">升级包类型:{{detail.typo==1?'整包':'差分'}}</div>
 				<div class="item">升级包签名:d52b637c5eaf2bc9c24008bc4b723600</div>
 			</div>
 			<div class="container">
-				<div class="item">签名算法:MD5</div>
+				<div class="item">签名算法:{{detail.are}}</div>
 				<div class="item">模块名称:default</div>
 			</div>
-			<div class="mt20"></div>
+			<!-- <div class="mt20"></div>
 			<div class="status_list">
 				<div class="otaflex">
 					<div class="otaflex_div1">
@@ -44,20 +44,20 @@
 
 						</div>
 				</div>
-			</div>
+			</div> -->
 		</div>
 	</el-card>
 	<div class="mt10"></div>
 	<el-card class="system-dic-container" style="position: relative">
 		<el-tabs v-model="activeTab">
 				<el-tab-pane label="批次管理" name="tab1">
-					<BatchList :updata_id="detail.id"></BatchList>
+					<BatchList v-if="detail.id" :detail="detail"></BatchList>
 				</el-tab-pane>
 				<el-tab-pane label="设备列表" name="tab2">
-					<DeviceList :updata_id="detail.id"></DeviceList>
+					<DeviceList v-if="detail.id" :detail="detail"></DeviceList>
 				</el-tab-pane>
 				<el-tab-pane label="升级包信息" name="tab3">
-					<InfoList :updata_id="detail.id"></InfoList>
+					<InfoList v-if="detail.id" :detail="detail"></InfoList>
 				</el-tab-pane>
 			</el-tabs>
 	</el-card>
@@ -73,7 +73,7 @@ import EditForm from './edit.vue'
 import InfoList from './component/info.vue'
 import DeviceList from './component/device.vue'
 import BatchList from './component/batch.vue'
-import api from '/@/api/network'
+import api from '/@/api/ota'
 
 const editFormRef = ref()
 
@@ -85,12 +85,17 @@ export default defineComponent({
 		const state = reactive({
 			activeTab:'tab1',
 			developer_status: 2,
-			detail: {},
+			detail: {
+				'id':'',
+				'name':'',
+				'typo':1,
+				'are':'',
+			},
 			
 		})
 		const getDetail = () => {
 			const id = route.params && route.params.id
-			api.server.getDetail({ id: id }).then((res: any) => {
+			api.manage.detail(id).then((res: any) => {
 				state.detail = res
 			})
 		}
@@ -98,25 +103,16 @@ export default defineComponent({
 			editFormRef.value.open(row)
 		}
 
-		const freshData = () => {
-			getDetail()
-			ElMessage.success('刷新成功')
-		}
-		const toEdit = () => {
-			router.push(`/iotmanager/network/server/edit/${route.params && route.params.id}`)
-		}
 		onMounted(() => {
-			// getDetail()
+			getDetail()
 		})
 		const handleClick = (tab: TabsPaneContext, event: Event) => {
 			// console.log(tab, event)
 		}
 
 		return {
-			toEdit,
 			addOrEdit,
 			editFormRef,
-			freshData,
 			getDetail,
 			handleClick,
 			...toRefs(props),

+ 13 - 10
src/views/iot/ota-update/update/edit.vue

@@ -30,15 +30,15 @@
 				</el-select>
 				</el-form-item>
 			</div>
-			<el-form-item label="升级包版本号" prop="version" v-if="formData.typo == 1">
+			<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" v-if="formData.typo == '2'">
 				<el-input v-model="formData.waitVersion" placeholder="请输入待升级版本号" />
 			</el-form-item>
 
-			<el-form-item label="升级后版本号" prop="afterVersion" v-if="formData.typo == 2">
+			<el-form-item label="升级后版本号" prop="afterVersion" v-if="formData.typo == '2'">
 				<el-input v-model="formData.afterVersion" placeholder="请输入升级后版本号" />
 			</el-form-item>
 
@@ -50,9 +50,10 @@
 
 			<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>
+				<div v-if="url_name" style="color: green;margin-left: 10px;">{{url_name}},上传成功</div>
+
 			</el-form-item>
 
 			<el-form-item label="升级包是否验证" prop="check">
@@ -90,10 +91,10 @@ 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 uploadUrl: string = getOrigin(import.meta.env.VITE_API_URL + "/common/singleFile");
+const headers = {
+		Authorization: 'Bearer ' + localStorage.token,
+};
 const areType = ref([
 	{
 		label: 'MD5',
@@ -132,6 +133,8 @@ const baseForm = {
 	waitVersion: '',
 }
 
+const url_name=ref();
+
 const formData = reactive({
 	...baseForm,
 })
@@ -150,9 +153,9 @@ const ruleForm = {
 }
 
 const updateImg = (res: any) => {
-	console.log(res);
-
 			if (res.code === 0) {
+				formData.url=res.data.full_path
+				url_name.value=res.data.name
 				ElMessage.success('上传成功');
 			} else {
 				ElMessage.error(res.message);

+ 0 - 1
src/views/iot/ota-update/update/index.vue

@@ -68,7 +68,6 @@
 import api from '/@/api/ota';
 import { useSearch } from '/@/hooks/useCommon';
 import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
-import getOrigin from '/@/utils/origin'
 import EditForm from './edit.vue';
 import CheckForm from './check.vue';
 import { ref } from 'vue';