瀏覽代碼

Merge branch 'master' of http://git.mydig.net/Sagoo-Cloud/sagoo-admin-ui

vera_min 2 年之前
父節點
當前提交
25d803efd8

+ 2 - 0
src/api/device/index.ts

@@ -20,6 +20,8 @@ export default {
     getSubList: () => get('/product/sub_list'),
     // 获取插件通信方式类型
     getTypesAll: (data: object) => get('/system/plugins/getTypesAll', data),
+    // 脚本更新
+    script: (data: object) => put('/product/script/update', data),
   },
   category:{
     getList: (params: object) => get('/product/category/list', params),

+ 42 - 1
src/views/iot/device/product/component/dataParse.vue

@@ -1,12 +1,53 @@
 <template>
 	<codeEditor class="params" ref="mirrorRef" mode="" :content="content"></codeEditor>
+	<el-button type="primary" style="margin-top:20px" @click="saveCode">保存脚本</el-button>
 </template>
 
 <script lang="ts" setup>
 import { onMounted, ref } from 'vue';
 import codeEditor from '/@/components/codeEditor/index.vue'
+import { ElMessage } from 'element-plus';
+import api from '/@/api/device';
+import { useRoute } from 'vue-router';
+
+const route = useRoute();
+
+const emit = defineEmits(['updateScript'])
+
+const props = defineProps({
+	script: String
+})
+
 const content = ref('')
+const mirrorRef = ref()
+
 onMounted(() => {
-	content.value = '{}'
+	content.value = props.script!
 })
+
+function saveCode() {
+	const data = mirrorRef.value.getValue()
+
+	if (data === '') {
+		return toSave(data)
+	}
+
+	try {
+		eval("(" + data + ")")
+		toSave(data)
+	} catch (error) {
+		ElMessage.error('语法校验未通过')
+	}
+}
+
+function toSave(data: string) {
+	api.product.script({
+		id: route.params.id,
+		scriptInfo: data
+	}).then(() => {
+		ElMessage.success('保存成功')
+		emit('updateScript', data)
+	})
+
+}
 </script>

+ 4 - 2
src/views/iot/device/product/component/deviceIn.vue

@@ -1,6 +1,6 @@
 <template>
 	<el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px" @keyup.enter="onSubmit">
-		<el-form-item label="上级分类" prop="parentId">
+		<!-- <el-form-item label="上级分类" prop="parentId">
 			<el-cascader :options="typeData" :props="{ checkStrictly: true, multiple: false, emitPath: false, value: 'id', label: 'name' }" placeholder="请选择关联页面" clearable class="w100" v-model="formData.parentId"></el-cascader>
 		</el-form-item>
 		<el-form-item label="关联页面" prop="menuIds">
@@ -11,7 +11,7 @@
 		</el-form-item>
 		<el-form-item label="接口地址" prop="address">
 			<el-input v-model="formData.address" placeholder="接口地址" />
-		</el-form-item>
+		</el-form-item> -->
 	</el-form>
 </template>
 
@@ -23,6 +23,8 @@ import { ruleRequired } from '/@/utils/validator';
 import { ElMessage } from 'element-plus';
 import apiDatahub from '/@/api/datahub';
 
+// TODO 这个页面还没开始开发
+
 const emit = defineEmits(['getList']);
 
 const showDialog = ref(false);

+ 8 - 4
src/views/iot/device/product/detail.vue

@@ -169,7 +169,7 @@
 					<deviceIn></deviceIn>
 				</el-tab-pane>
 				<el-tab-pane label="数据解析" name="4" lazy>
-					<dataParse></dataParse>
+					<dataParse v-if="activeName === '4'" :script="detail.scriptInfo" @updateScript="updateScript"></dataParse>
 				</el-tab-pane>
 			</el-tabs>
 		</div>
@@ -199,6 +199,7 @@ import api from '/@/api/device';
 
 interface TableDataState {
 	ids: number[];
+	detail: any;
 	tableData: {
 		data: [];
 		total: number;
@@ -228,7 +229,7 @@ export default defineComponent({
 			isShowDialog: false,
 			activeName: '3', // 分类数据
 			activetab: 'attr', // 分类数据
-			detail: [],
+			detail: {},
 			developer_status: 0,
 			tableData: {
 				data: [],
@@ -258,8 +259,6 @@ export default defineComponent({
 			});
 		});
 
-
-
 		//编辑属性
 		const onEditAttr = (row: TableDataRow) => {
 			editAttrRef.value.openDialog(row, route.params.id);
@@ -416,6 +415,10 @@ export default defineComponent({
 			console.log(tab, event);
 		};
 
+		const updateScript = (scriptInfo: string) => {
+			state.detail.scriptInfo  = scriptInfo
+		};
+
 		const CkOption = () => {
 
 			if (state.developer_status == 1) {
@@ -437,6 +440,7 @@ export default defineComponent({
 
 		return {
 			Edit,
+			updateScript,
 			editDicRef,
 			editAttrRef,
 			editFunRef,