yangyin
2024-08-30 c56cb87cd2aeba4d63938910b6a78117729573a1
src/views/project/yw/lowCode/sqlAmis/edit/SqlAmisEdit.vue
@@ -1,6 +1,19 @@
<template>
   <div class="h-full flex flex-col">
      <div class="grid grid-cols-2 gap-2 h-full flex-0">
      <titleBox class="flex-0" style="background-color: #fff" :title="supervisor?.title">
         <template v-slot:left>
            <el-button
               icon="ele-ArrowLeft"
               text
               style="margin-right: 10px; margin-left: 10px; width: 40px"
               size="small"
               @click="backLastPage"
            >
            </el-button>
         </template>
      </titleBox>
      <div class="grid grid-cols-2 gap-2 h-full flex-auto">
         <div class="h-full overflow-auto">
            <el-table
               :data="configList"
@@ -41,21 +54,6 @@
            />
         </div>
      </div>
      <!-- <div class="flex-auto overflow-auto mt-3">
         <codemirror
            disabled
            class="h-full overflow-auto"
            v-model="jsonCode"
            :style="{ height: '100%' }"
            :autofocus="true"
            :indent-with-tab="true"
            :tab-size="2"
            :extensions="jsonEditorExtensions"
            @change="log('change', $event)"
            @focus="log('focus', $event)"
            @blur="log('blur', $event)"
         />
      </div> -->
   </div>
</template>
@@ -64,11 +62,20 @@
import { sql } from '@codemirror/lang-sql';
import { xml } from '@codemirror/lang-xml';
import { vscodeDark } from '@uiw/codemirror-theme-vscode';
import { ref } from 'vue';
import _ from 'lodash';
import { onMounted, ref } from 'vue';
import { Codemirror } from 'vue-codemirror';
import * as codeExample from './testData';
import _, { uniqueId } from 'lodash';
import {v4 as uuid} from 'uuid'
import titleBox from '/@/components/titleBox.vue';
import { v4 as uuid } from 'uuid';
import { getAmisXml } from '/@/api/supervisorAdmin';
import { useCompRef } from '/@/utils/types';
import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser';
import { ElMessage } from 'element-plus';
const props = defineProps(['supervisor']);
const emit = defineEmits(['backLastPage']);
const log = console.log;
const jsonCode = ref(codeExample.jsonCode);
const dockCode = ref(codeExample.dockCode);
@@ -77,7 +84,17 @@
const jsonEditorExtensions = [json(), vscodeDark];
const sqlEditorExtensions = [sql(), vscodeDark];
const dockEditorExtensions = [xml(), vscodeDark];
const sqlCodeEditorRef = useCompRef(Codemirror);
const resetStatus = () => {
   configList.value = [];
   sqlCode.value = '';
};
const backLastPage = () => {
   // setTimeout(() => {
   //    resetStatus();
   // }, 300);
   emit('backLastPage');
};
const dockRowChange = (row) => {};
/** @description 路径分隔符 */
const PATH_SEPARATOR = '/';
@@ -128,10 +145,10 @@
   value: AmisDockValue;
};
type AmisDockSQLConfig = AmisDockConfig&{
   queryId:string;
   recordId:string;
}
type AmisDockSQLConfig = AmisDockConfig & {
   queryId: string;
   recordId: string;
};
const configList = ref<AmisDockConfig[]>([]);
const parseJSONData = (json: string) => {
@@ -141,20 +158,38 @@
      if (key === 'api') {
         const url = value.url;
         const urlPath = path + PATH_SEPARATOR + 'url';
         const queryId ='query_'+uuid().slice(0,12);
         const queryId = 'query_' + uuid().slice(0, 12);
         // const recordId = uniqueId()
         configList.value.push({
            queryId:queryId,
            recordId:queryId,
            queryId: queryId,
            recordId: queryId,
            type: AmisDockType.Api,
            path: urlPath,
            value: url,
            url:url,
            url: url,
         } as any);
      }
   });
};
parseJSONData(codeExample.jsonCode);
const xmlParserInstance = new XMLParser();
const xmlBuilderInstance = new XMLBuilder();
let xmlConfig = null;
onMounted(async () => {
   xmlConfig = await getAmisXml({
      agent_id: props.supervisor.id,
   });
   if (!xmlConfig?.amis_xml) {
      // ElMessage.warning('暂无数据');
      return;
   }
   const jObj = xmlParserInstance.parse(xmlConfig.amis_xml);
   if (!jObj?.AMIS_JSON) {
      return;
   }
   const amisJSON = jObj.AMIS_JSON;
   parseJSONData(amisJSON);
});
</script>