Эх сурвалжийг харах

修改ota验证部分,协议,批次,升级包版本号验证,添加模块,地图修改

Xiahai 1 жил өмнө
parent
commit
b416f33f57

+ 15 - 12
src/api/device/index.ts

@@ -1,14 +1,17 @@
-import { get, post, del, put,file } from '/@/utils/request';
+import { get, post, del, put, file } from '/@/utils/request';
 
 export default {
-  common:{
-    singleImg: (data: object) => post('/common/singleImg', data),
+  common: {
+    singleImg: (data: FormData) => {
+      data.append('source', '0')
+      return post('/common/singleImg', data)
+    },
   },
   product: {
     // 设备属性设置
     propertySet: (data: object) => post('/product/property/set', data),
     // 获取设备接入信息 /product/?id=35
-    connect_intro: (id: string) => get('/product/connect_intro', {id}),
+    connect_intro: (id: string) => get('/product/connect_intro', { id }),
     getList: (params: object) => get('/product/page_list', params),
     getLists: (params: object) => get('/product/list', params),
     add: (data: object) => post('/product/add', data),
@@ -30,13 +33,13 @@ export default {
     // 脚本更新
     script: (data: object) => put('/product/script/update', data),
   },
-  category:{
+  category: {
     getList: (params: object) => get('/product/category/list', params),
     add: (data: object) => post('/product/category/add', data),
     edit: (data: object) => put('/product/category/edit', data),
     del: (id: number) => del('/product/category/del', { id }),
   },
-  instance:{
+  instance: {
     getList: (params: object) => get('/product/device/page_list', params),
     add: (data: object) => post('/product/device/add', data),
     edit: (data: object) => put('/product/device/edit', data),
@@ -63,23 +66,23 @@ export default {
     property: (params: object) => get('/product/tsl/property/list', params),
     propertyadd: (data: object) => post('/product/tsl/property/add', data),
     propertyedit: (data: object) => put('/product/tsl/property/edit', data),
-    propertydel: (productId: number,key:string) => del('/product/tsl/property/del', { productId,key }),
+    propertydel: (productId: number, key: string) => del('/product/tsl/property/del', { productId, key }),
 
     function: (params: object) => get('/product/tsl/function/list', params),
     functionadd: (data: object) => post('/product/tsl/function/add', data),
     functionedit: (data: object) => put('/product/tsl/function/edit', data),
-    functiondel: (productId: number,key:string) => del('/product/tsl/function/del', { productId,key }),
+    functiondel: (productId: number, key: string) => del('/product/tsl/function/del', { productId, key }),
 
 
     event: (params: object) => get('/product/tsl/event/list', params),
     eventadd: (data: object) => post('/product/tsl/event/add', data),
     eventedit: (data: object) => put('/product/tsl/event/edit', data),
-    eventdel: (productId: number,key:string) => del('/product/tsl/event/del', { productId,key }),
+    eventdel: (productId: number, key: string) => del('/product/tsl/event/del', { productId, key }),
 
     tag: (params: object) => get('/product/tsl/tag/list', params),
     tagadd: (data: object) => post('/product/tsl/tag/add', data),
     tagedit: (data: object) => put('/product/tsl/tag/edit', data),
-    tagdel: (productId: number,key:string) => del('/product/tsl/tag/del', { productId,key }),
+    tagdel: (productId: number, key: string) => del('/product/tsl/tag/del', { productId, key }),
   },
   tree: {
     getList: (params: object) => get('/product/device_tree/list', params),
@@ -102,6 +105,6 @@ export default {
     import: (data: object) => post('/product/device/import', data),
     export: (data: object) => file('/product/device/export', data),
   }
-  
-  
+
+
 }

+ 4 - 2
src/components/upload-wrapper/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="upload">
-    <el-upload class="hide" :accept="accept" :limit="1" :multiple="multiple" :headers="headers" :before-upload="beforeAvatarUpload" :action="uploadUrl" :on-success="updateImg">
+    <el-upload class="hide" :accept="accept" :limit="1" :data="{ source }" :multiple="multiple" :headers="headers" :before-upload="beforeAvatarUpload" :action="uploadUrl" :on-success="updateImg">
       <slot></slot>
     </el-upload>
   </div>
@@ -13,6 +13,8 @@ import getOrigin from '/@/utils/origin'
 
 const uploadUrl: string = getOrigin(import.meta.env.VITE_API_URL + '/common/singleImg');
 
+const source = JSON.parse(localStorage.sysinfo || '{"uploadFileWay": 0}').uploadFileWay;
+
 const headers = {
   Authorization: 'Bearer ' + localStorage.token,
 };
@@ -35,7 +37,7 @@ const props = defineProps({
 });
 
 const updateImg = (res: any) => {
-  const url = getOrigin(import.meta.env.VITE_SERVER_URL + '/' + res.data?.path)
+  const url = res?.data?.full_path
   emit('setImg', url, props.name);
 };
 

+ 6 - 5
src/components/upload/index.vue

@@ -6,6 +6,7 @@
 			:accept="accept"
 			list-type="picture-card"
 			:limit="limit"
+			:data="{ source }"
 			:multiple="multiple"
 			:headers="headers"
 			:before-upload="beforeAvatarUpload"
@@ -50,6 +51,8 @@ const headers = {
 
 const emit = defineEmits(['setImg', 'setImgs'])
 
+const source =  JSON.parse(localStorage.sysinfo || '{"uploadFileWay": 0}').uploadFileWay;
+
 const props = defineProps({
 	multiple: {
 		type: Boolean,
@@ -91,8 +94,7 @@ const fileList = ref<any[]>([
 const updateImg = () => {
 	const list = fileList.value.map((item) => {
 		if (item.response) {
-			return getOrigin(import.meta.env.VITE_SERVER_URL + '/' + item.response?.data?.path)
-			// return item.response?.data?.path;
+			return item.response?.data?.full_path
 		} else {
 			return item.url
 		}
@@ -103,7 +105,7 @@ const updateImg = () => {
 			emit('setImg', '');
 			return;
 		}
-		emit('setImg', props.widthHost ? img : img.replace(getOrigin(import.meta.env.VITE_SERVER_URL + '/'), ''));
+		emit('setImg', img);
 	} else {
 		emit('setImgs', list)
 		// if(props.keyName) {
@@ -133,8 +135,7 @@ watch(
 	() => props.img,
 	(img) => {
 		if (img) {
-			const theImg = props.widthHost ? img : getOrigin(import.meta.env.VITE_SERVER_URL + '/' + img)
-			fileList.value = [{ name: theImg, url: theImg }]
+			fileList.value = [{ name: img, url: img }]
 			updateImg()
 		} else {
 			fileList.value = []

+ 4 - 2
src/components/upload/uploadFile.vue

@@ -4,6 +4,7 @@
 		:show-file-list="false"
 		v-model:file-list="fileList"
 		:limit="1"
+		:data="{ source }"
 		:headers="headers"
 		:before-upload="beforeAvatarUpload"
 		:action="uploadUrl"
@@ -22,6 +23,8 @@ import { ElMessage } from 'element-plus';
 import type { UploadProps } from 'element-plus';
 import getOrigin from '/@/utils/origin';
 
+const source = JSON.parse(localStorage.sysinfo || '{"uploadFileWay": 0}').uploadFileWay;
+
 const headers = {
 	Authorization: 'Bearer ' + localStorage.token,
 };
@@ -37,7 +40,6 @@ const props = defineProps({
 		type: String,
 		default: '/common/singleFile',
 	},
-	// https://zhgy.sagoo.cn/api/v1/common/singleFile
 });
 
 const fileList = ref<any[]>([
@@ -56,7 +58,7 @@ const updateImg = (res: any) => {
 		ElMessage.error(res.message);
 	}
 	fileList.value = []
-	emit('update', res.data.path)
+	emit('update', res.data.full_path)
 };
 
 const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {

+ 2 - 1
src/views/iot/certificate/component/editParams.vue

@@ -13,7 +13,7 @@
 			</el-form-item>
 			<el-form-item label="证书文件" prop="fileContent">
 				<el-input disabled v-if="state.ruleForm.fileContent" size="default" v-model="state.ruleForm.fileContent"></el-input>
-				<uploadFile @update="updateFile" url="/common/singleFile"></uploadFile>
+				<uploadFile @update="updateFile"></uploadFile>
 			</el-form-item>
 			<el-form-item label="证书公钥" prop="publicKeyContent">
 				<el-input size="default" disabled type="textarea" :rows="6" v-model="state.ruleForm.publicKeyContent"></el-input>
@@ -349,6 +349,7 @@ defineExpose({ openDialog })
 	overflow-y: auto;
 	overflow-x: hidden;
 }
+
 :deep(.el-upload-list) {
 	display: none;
 }

+ 20 - 32
src/views/iot/noticeservices/config/component/temEdit.vue

@@ -2,29 +2,13 @@
 	<div class="system-edit-dic-container">
 		<el-dialog title="设置配置模板" v-model="isShowDialog" width="50%">
 			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
-				<el-form-item label="名称" prop="title">
+        <el-form-item label="模版代码" prop="code">
+          <el-input v-model.trim="ruleForm.code" placeholder="请输入代码" />
+        </el-form-item>
+				<el-form-item label="模版名称" prop="title">
 					<el-input v-model.trim="ruleForm.title" placeholder="请输入名称" />
 				</el-form-item>
-
-				<!-- <el-form-item label="通知配置" prop="configId">
-						<el-select v-model="ruleForm.configId" placeholder="请选择通知配置" class="w100">
-						<el-option
-						v-for="item in configData"
-						:key="item.id"
-						:label="item.title"
-						:value="item.id"
-						/>
-					</el-select>
-				</el-form-item>  -->
-
-				<!-- <el-form-item label="配置类型" prop="types">
-					<el-radio-group v-model="ruleForm.types">
-						<el-radio label="1"  value="1">即时发送</el-radio>
-						<el-radio label="2" value="2">预约发送</el-radio>
-					</el-radio-group>
-				</el-form-item> -->
-
-				<el-form-item label="模板内容" prop="content">
+        <el-form-item label="模板内容" prop="content">
           <el-input v-model.trim="ruleForm.content" type="textarea" placeholder="请输入内容"></el-input>
         </el-form-item>
 
@@ -49,12 +33,13 @@ import { Delete, Plus, CircleClose, Top, Bottom, Minus, Right } from '@element-p
 import { stat } from 'fs';
 
 interface RuleFormState {
+  code: string;
 	title: string;
 	configId:string;
 	sendGateway:string;
 	content:string;
-	
-	
+
+
 }
 interface DicState {
 	isShowDialog: boolean;
@@ -80,21 +65,23 @@ export default defineComponent({
 			isShowDialog: false,
 			configId:'',
 			sendGateway:'',
-			
+
 			ruleForm: {
+        code: '',
 				title: '',
 				content:'',
 				sendGateway:'',
 				configId:'',
 
-				
+
 			},
 			rules: {
+        code: [{ required: true, message: '模版代码不能为空', trigger: 'blur' }],
 				title: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }],
 				configId: [{ required: true, message: '通知配置不能为空', trigger: 'blur' }],
 				types: [{ required: true, message: '配置类型不能为空', trigger: 'blur' }],
 				content: [{ required: true, message: '模板内容不能为空', trigger: 'blur' }],
-				
+
 			},
 		});
 
@@ -128,14 +115,15 @@ export default defineComponent({
 			// state.isShowDialog = true;
 		};
 
-		
+
 
 		const resetForm = () => {
-		
+
 			state.ruleForm = {
+        code: '',
 				title: '',
 				content:'',
-			
+
 			};
 		};
 		// 关闭弹窗
@@ -153,7 +141,7 @@ export default defineComponent({
 			if (!formWrap) return;
 			formWrap.validate((valid: boolean) => {
 				if (valid) {
-					
+
 					//修改
 					state.ruleForm.sendGateway=state.sendGateway;
 						state.ruleForm.configId=state.configId;
@@ -166,11 +154,11 @@ export default defineComponent({
 			});
 		};
 
-	
+
 
 
 		return {
-		
+
 			openDialog,
 			opentemDialog,
 			closeDialog,

+ 1 - 2
src/views/system/monitor/plugin/edit.vue

@@ -23,8 +23,7 @@
 				<el-input v-model="formData.author" placeholder="输入作者" />
 			</el-form-item>
 			<el-form-item label="插件图标" prop="icon">
-				<!-- <el-input v-model="formData.icon" placeholder="输入插件图标" /> -->
-				<uploadVue :width-host="false" :img="formData.icon" @set-img="setImage"></uploadVue>
+				<uploadVue :img="formData.icon" @set-img="setImage"></uploadVue>
 			</el-form-item>
 			<el-form-item label="插件网址" prop="link">
 				<el-input v-model="formData.link" placeholder="输入插件网址" />