|
@@ -1,12 +1,4 @@
|
|
<template>
|
|
<template>
|
|
- <!-- <el-dialog
|
|
|
|
- class="api-edit"
|
|
|
|
- v-model="showDialog"
|
|
|
|
- :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"> -->
|
|
|
|
<div class="ota-edit-module-container">
|
|
<div class="ota-edit-module-container">
|
|
<el-dialog :title="'操作升级包'" v-model="isShowDialog" width="769px">
|
|
<el-dialog :title="'操作升级包'" v-model="isShowDialog" width="769px">
|
|
<el-form :model="ruleForm" ref="formRef" :rules="rules" label-width="160px">
|
|
<el-form :model="ruleForm" ref="formRef" :rules="rules" label-width="160px">
|
|
@@ -21,10 +13,6 @@
|
|
<el-input v-model="ruleForm.name" placeholder="请输入批次名称" />
|
|
<el-input v-model="ruleForm.name" placeholder="请输入批次名称" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <!-- <el-form-item label="待升级版本号" prop="waitVersion">-->
|
|
|
|
- <!-- <el-input v-model="ruleForm.waitVersion" placeholder="请输入待升级版本号" />-->
|
|
|
|
- <!-- </el-form-item>-->
|
|
|
|
-
|
|
|
|
<el-form-item label="协议方式" prop="method">
|
|
<el-form-item label="协议方式" prop="method">
|
|
<el-radio-group v-model="ruleForm.method" @change="getMethod">
|
|
<el-radio-group v-model="ruleForm.method" @change="getMethod">
|
|
<el-radio label="1">http</el-radio>
|
|
<el-radio label="1">http</el-radio>
|
|
@@ -34,9 +22,6 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="所属设备" prop="devices" v-if="deviceShow">
|
|
<el-form-item label="所属设备" prop="devices" v-if="deviceShow">
|
|
-<!-- <el-select v-model="ruleForm.devices" filterable multiple placeholder="请选择设备" class="width100">-->
|
|
|
|
-<!-- <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" />-->
|
|
|
|
-<!-- </el-select>-->
|
|
|
|
|
|
|
|
<!-- 回显已选设备 -->
|
|
<!-- 回显已选设备 -->
|
|
<template v-if="deviceNameShow">
|
|
<template v-if="deviceNameShow">
|
|
@@ -61,10 +46,10 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<template #footer>
|
|
<template #footer>
|
|
- <span class="dialog-footer">
|
|
|
|
- <el-button @click="onCancel">取 消</el-button>
|
|
|
|
- <el-button type="primary" @click="onSubmit">{{ruleForm.id!==0?'修 改':'添 加'}}</el-button>
|
|
|
|
- </span>
|
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
+ <el-button @click="onCancel">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="onSubmit">{{ ruleForm.id !== 0 ? '修 改' : '添 加' }}</el-button>
|
|
|
|
+ </span>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
@@ -74,11 +59,10 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
<script lang="ts">
|
|
-import { reactive, toRefs, defineComponent, onMounted, ref, unref} from 'vue';
|
|
|
|
|
|
+import { reactive, toRefs, defineComponent, onMounted, ref, unref } from 'vue';
|
|
import { ElMessage } from 'element-plus';
|
|
import { ElMessage } from 'element-plus';
|
|
import api from '/@/api/ota';
|
|
import api from '/@/api/ota';
|
|
import rule from "/@/api/rule";
|
|
import rule from "/@/api/rule";
|
|
-import Device from "/@/views/iot/device/instance/index.vue";
|
|
|
|
import DeviceBind from "/@/views/iot/ota-update/update/component/deviceBind.vue";
|
|
import DeviceBind from "/@/views/iot/ota-update/update/component/deviceBind.vue";
|
|
|
|
|
|
interface RuleFormState {
|
|
interface RuleFormState {
|
|
@@ -86,7 +70,7 @@ interface RuleFormState {
|
|
name: string;
|
|
name: string;
|
|
waitVersion: string;
|
|
waitVersion: string;
|
|
method: string;
|
|
method: string;
|
|
- devices: [];
|
|
|
|
|
|
+ devices: string[];
|
|
stratege: string;
|
|
stratege: string;
|
|
devOtaFirmwareId: number;
|
|
devOtaFirmwareId: number;
|
|
push: string;
|
|
push: string;
|
|
@@ -106,7 +90,7 @@ interface UpdateState {
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'otaEditUpdateData',
|
|
name: 'otaEditUpdateData',
|
|
- components: {DeviceBind},
|
|
|
|
|
|
+ components: { DeviceBind },
|
|
computed: {
|
|
computed: {
|
|
rule() {
|
|
rule() {
|
|
return rule
|
|
return rule
|
|
@@ -137,7 +121,7 @@ export default defineComponent({
|
|
stratege: [{ required: true, message: '升级方式不能为空', trigger: 'blur' }],
|
|
stratege: [{ required: true, message: '升级方式不能为空', trigger: 'blur' }],
|
|
push: [{ required: true, message: '推送方式不能为空', trigger: 'blur' }],
|
|
push: [{ required: true, message: '推送方式不能为空', trigger: 'blur' }],
|
|
types: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
|
|
types: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
|
|
- devices: [{ required: true, message: '所属设备不能为空', trigger: 'blue'}],
|
|
|
|
|
|
+ devices: [{ required: true, message: '所属设备不能为空', trigger: 'blue' }],
|
|
},
|
|
},
|
|
deviceShow: false, // 所属设备是否显示
|
|
deviceShow: false, // 所属设备是否显示
|
|
deviceNameShow: false, // 回显设备名称状态
|
|
deviceNameShow: false, // 回显设备名称状态
|
|
@@ -145,7 +129,6 @@ export default defineComponent({
|
|
});
|
|
});
|
|
// 页面加载时
|
|
// 页面加载时
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
- // getProductList();
|
|
|
|
getFormType();
|
|
getFormType();
|
|
});
|
|
});
|
|
// 获取操作升级包类型
|
|
// 获取操作升级包类型
|
|
@@ -153,8 +136,7 @@ export default defineComponent({
|
|
// 如果是验证类型,设备信息必填项
|
|
// 如果是验证类型,设备信息必填项
|
|
if (state.ruleForm.types === "1") {
|
|
if (state.ruleForm.types === "1") {
|
|
state.deviceShow = true;
|
|
state.deviceShow = true;
|
|
- } else { // 如果是升级类型,设备可选可不选
|
|
|
|
- delete (state.rules.devices);
|
|
|
|
|
|
+ } else {
|
|
state.deviceShow = false;
|
|
state.deviceShow = false;
|
|
}
|
|
}
|
|
};
|
|
};
|
|
@@ -162,23 +144,18 @@ export default defineComponent({
|
|
const getMethod = () => {
|
|
const getMethod = () => {
|
|
// 如果是http、https协议则主动推送为否
|
|
// 如果是http、https协议则主动推送为否
|
|
// if (state.ruleForm.method === '1') {
|
|
// if (state.ruleForm.method === '1') {
|
|
- state.ruleForm.push = '2';
|
|
|
|
- state.ruleForm.pushDisabled = true;
|
|
|
|
|
|
+ state.ruleForm.push = '2';
|
|
|
|
+ state.ruleForm.pushDisabled = true;
|
|
// }
|
|
// }
|
|
// if (state.ruleForm.method === '2') {
|
|
// if (state.ruleForm.method === '2') {
|
|
// state.ruleForm.push = '2';
|
|
// state.ruleForm.push = '2';
|
|
// state.ruleForm.pushDisabled = true;
|
|
// state.ruleForm.pushDisabled = true;
|
|
// }
|
|
// }
|
|
- if (state.ruleForm.method === '3'){
|
|
|
|
|
|
+ if (state.ruleForm.method === '3') {
|
|
state.ruleForm.pushDisabled = false;
|
|
state.ruleForm.pushDisabled = false;
|
|
state.ruleForm.push = '1';
|
|
state.ruleForm.push = '1';
|
|
}
|
|
}
|
|
};
|
|
};
|
|
- const getProductList = () => {
|
|
|
|
- api.batch.getDeviceList({ productKey: state.ruleForm.productKey}).then((res: any) => {
|
|
|
|
- state.productData = res.device
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
// 打开弹窗
|
|
// 打开弹窗
|
|
const openDialog = (row: RuleFormState | null) => {
|
|
const openDialog = (row: RuleFormState | null) => {
|
|
resetForm();
|
|
resetForm();
|
|
@@ -225,6 +202,7 @@ export default defineComponent({
|
|
if (!formWrap) return;
|
|
if (!formWrap) return;
|
|
formWrap.validate((valid: boolean) => {
|
|
formWrap.validate((valid: boolean) => {
|
|
if (valid) {
|
|
if (valid) {
|
|
|
|
+ // 如果是升级类型,设备可选可不选
|
|
if (state.ruleForm.id !== 0) {
|
|
if (state.ruleForm.id !== 0) {
|
|
//修改
|
|
//修改
|
|
api.batch.edit(state.ruleForm).then(() => {
|
|
api.batch.edit(state.ruleForm).then(() => {
|
|
@@ -244,8 +222,8 @@ export default defineComponent({
|
|
});
|
|
});
|
|
};
|
|
};
|
|
// 获取设备列表
|
|
// 获取设备列表
|
|
- const getDeviceTableData = (deviceIdList: any, deviceNameList: any) => {
|
|
|
|
- state.ruleForm.devices = deviceIdList;
|
|
|
|
|
|
+ const getDeviceTableData = (deviceKeyList: any, deviceNameList: any) => {
|
|
|
|
+ state.ruleForm.devices = deviceKeyList;
|
|
state.deviceNameList = deviceNameList;
|
|
state.deviceNameList = deviceNameList;
|
|
state.deviceNameShow = true;
|
|
state.deviceNameShow = true;
|
|
};
|
|
};
|
|
@@ -269,77 +247,6 @@ export default defineComponent({
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
|
|
-
|
|
|
|
-// import { ref, reactive, nextTick } from 'vue'
|
|
|
|
-// import api from '/@/api/ota'
|
|
|
|
-// import { ruleRequired } from '/@/utils/validator'
|
|
|
|
-// import { ElMessage } from 'element-plus'
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// const emit = defineEmits(['getList'])
|
|
|
|
-
|
|
|
|
-// const showDialog = ref(false)
|
|
|
|
-// const formRef = ref()
|
|
|
|
-
|
|
|
|
-// const productData = ref([
|
|
|
|
-// {
|
|
|
|
-// id: '',
|
|
|
|
-// name: '',
|
|
|
|
-// },
|
|
|
|
-// ])
|
|
|
|
-// const baseForm = {
|
|
|
|
-// id: undefined,
|
|
|
|
-// method: '1',
|
|
|
|
-// push: '1',
|
|
|
|
-// name: '',
|
|
|
|
-// devices: '',
|
|
|
|
-// stratege: '1',
|
|
|
|
-// waitVersion: '',
|
|
|
|
-// devOtaFirmwareId: '',
|
|
|
|
-// productKey:'',
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// const formData = reactive({
|
|
|
|
-// ...baseForm,
|
|
|
|
-// })
|
|
|
|
-
|
|
|
|
-// const ruleForm = {
|
|
|
|
-// method: [ruleRequired('请选择批次类型')],
|
|
|
|
-// name: [ruleRequired('批次名称不能为空')],
|
|
|
|
-// productKey: [ruleRequired('请选择所属产品')],
|
|
|
|
-// devices: [ruleRequired('请选择批次模块')],
|
|
|
|
-// stratege: [ruleRequired('批次版本号不能为空')],
|
|
|
|
-// waitVersion: [ruleRequired('升级后版本号不能为空')],
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// const onSubmit = async () => {
|
|
|
|
-// await formRef.value.validate()
|
|
|
|
-
|
|
|
|
-// const theApi = formData.id ? api.batch.edit : api.batch.add
|
|
|
|
-// await theApi(formData)
|
|
|
|
-// ElMessage.success('操作成功')
|
|
|
|
-// resetForm()
|
|
|
|
-// showDialog.value = false
|
|
|
|
-// emit('getList')
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// const resetForm = async () => {
|
|
|
|
-// Object.assign(formData, { ...baseForm })
|
|
|
|
-// formRef.value && formRef.value.resetFields()
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// const open = async (row: any) => {
|
|
|
|
-// resetForm()
|
|
|
|
-// showDialog.value = true
|
|
|
|
-// nextTick(() => {
|
|
|
|
-// Object.assign(formData, { ...row })
|
|
|
|
-// getProductList()
|
|
|
|
-
|
|
|
|
-// })
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// defineExpose({ open })
|
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|