Browse Source

模板管理

xiaoqiao 1 year ago
parent
commit
3a8aac6e26

+ 2 - 0
src/main/java/com/bowintek/practice/services/impl/SubjectServiceImpl.java

@@ -62,6 +62,8 @@ public class SubjectServiceImpl implements SubjectService {
 
         if (model.getIsReferences() == 0) {
             model.setExecSql(model.getTabCode());
+        }else{
+            model.setExecSql(model.getExecSql().replaceAll("\\n",""));
         }
         SrSubject dbData = subjectMapper.selectByPrimaryKey(model.getSubId());
         int result = 0;

+ 5 - 0
vue/package-lock.json

@@ -12849,6 +12849,11 @@
       "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
       "dev": true
     },
+    "thememirror": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/thememirror/-/thememirror-2.0.1.tgz",
+      "integrity": "sha512-d5i6FVvWWPkwrm4cHLI3t9AT1OrkAt7Ig8dtdYSofgF7C/eiyNuq6zQzSTusWTde3jpW9WLvA9J/fzNKMUsd0w=="
+    },
     "thenify": {
       "version": "3.3.1",
       "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz",

+ 1 - 0
vue/package.json

@@ -39,6 +39,7 @@
     "@codemirror/lang-sql": "^6.x",
     "@codemirror/language": "^6.x",
     "@codemirror/theme-one-dark": "^6.x",
+    "thememirror": "^2.0.1",
     "animate.css": "^4.1.1",
     "ant-design-vue": "3.2.17",
     "axios": "~0.27.2",

+ 6 - 6
vue/src/views/subject/detail.vue

@@ -15,12 +15,12 @@
     <a-divider orientation="left">Sql预览</a-divider>
     <codemirror
       v-model="dataModel.execSql"
-      :style="{ height: '100px',width:'100%' }"
+      :style="{ height: '100px',width:'100%' ,fontSize:'16px'}"
       :autofocus="true"
       :indent-with-tab="true"
       disabled="false"
       tab-size="2"
-      :theme="'oneDark'"
+      :extensions="[sql(),solarizedLight]"
     />
     <a-form-item class="buttom-btns">
       <a-button @click="onClose">关闭</a-button>
@@ -37,14 +37,14 @@ import {getDictionaryItemList} from "@/api/system/dictionary";
 import type {Subject, Subjectfield} from "@/views/subject/model";
 import {Codemirror} from 'vue-codemirror';
 import {MySQL, sql} from "@codemirror/lang-sql";
-import {oneDark} from "@codemirror/theme-one-dark";
+import {solarizedLight} from 'thememirror';
 import {useRoute} from "vue-router";
 import router from "@/router";
 
 export default defineComponent({
   name: 'subjectDetail',
   components: {
-    Codemirror, MySQL, sql, oneDark
+    Codemirror, MySQL, sql, solarizedLight
   },
   setup() {
     const tabsViewStore = useTabsViewStore();
@@ -115,8 +115,8 @@ export default defineComponent({
     };
 
     return {
-      loadData,columns,fieldData,
-      onClose,
+      loadData,columns,fieldData,sql,
+      onClose,solarizedLight,
       dataModel,
       dayjs
     };

+ 12 - 14
vue/src/views/subject/edit.vue

@@ -81,14 +81,14 @@
         <a-col class="table-bottom-a1">
           <a-form-item :label-col="{span:8}" label="" name="remark">
             <codemirror
-              v-model="code"
-              :style="{ height: '100px',width:'100%' }"
+              v-model="dataModel.execSql"
+              :style="{ height: '100px',width:'100%' ,fontSize:'16px'}"
               :autofocus="true"
               :indent-with-tab="true"
               :lang="lang"
               disabled="false"
               tab-size="2"
-              :theme="'oneDark'"
+              :extensions="[sql(),solarizedLight]"
             />
           </a-form-item>
         </a-col>
@@ -117,7 +117,7 @@ import {get, save} from '@/api/common';
 import FieldEdit from "@/views/subject/fieldedit.vue";
 import {getDictionaryItemList} from "@/api/system/dictionary";
 import {Codemirror} from 'vue-codemirror';
-import {oneDark} from '@codemirror/theme-one-dark';
+import {solarizedLight} from 'thememirror';
 import {sql, MySQL} from '@codemirror/lang-sql';
 import type {Subjectfield, Subject} from "@/views/subject/model";
 import type {ImportProps} from "@/components/basic/excel/importExcel/ImportProps";
@@ -131,7 +131,7 @@ interface FormState {
 export default defineComponent({
   name: 'subjectEditForm',
   components: {
-    BUploadFile, FieldEdit, Codemirror, MySQL, sql, oneDark, BImportExcel
+    BUploadFile, FieldEdit, Codemirror, MySQL, sql, solarizedLight, BImportExcel
   },
   setup() {
     const subject: Subject = {
@@ -148,8 +148,6 @@ export default defineComponent({
     const fieldData = ref<Subjectfield[]>([]);
     const settingTypeList = ref([{name: '', value: ''}]);
     const queryTypeList = ref([{name: '', value: ''}]);
-    const lang = sql();
-    const code = ref("");
     let isEdit = false;
 
     const onFinish = () => {
@@ -280,13 +278,13 @@ export default defineComponent({
     watch(
       () => [formState.dataModel.tabCode, fieldData],
       () => {
-        code.value = ` select ${formState.dataModel.tabCode}.*`;
+        formState.dataModel.execSql = ` select ${formState.dataModel.tabCode}.* `;
         fieldData.value.filter(x => x.isForeignKey == 1).forEach(x => {
-          code.value += `,${x.referencesTab}.${x.displayColumn} as ${x.fieldAlias}`
+          formState.dataModel.execSql += `,${x.referencesTab}.${x.displayColumn} as ${x.fieldAlias}`
         })
-        code.value += ` from ${formState.dataModel.tabCode}`;
+        formState.dataModel.execSql += `\n from ${formState.dataModel.tabCode} `;
         fieldData.value.filter(x => x.isForeignKey == 1).forEach(x => {
-          code.value += ` left join ${x.referencesTab} on ${formState.dataModel.tabCode}.${x.fieldCode}=${x.referencesTab}.${x.foreignKey}`
+          formState.dataModel.execSql += ` \n left join ${x.referencesTab} on ${formState.dataModel.tabCode}.${x.fieldCode}=${x.referencesTab}.${x.foreignKey}`
         })
       }, {deep: true}
     );
@@ -295,9 +293,9 @@ export default defineComponent({
       onFinish, onFieldSave, onClose, add, onImportSuccess,
       edit, importOptions,
       onDelete,
-      loadData, oneDark,
-      fieldData, columns,
-      isEdit, data, lang, code, modalRef,
+      loadData, solarizedLight,
+      fieldData, columns, sql,
+      isEdit, data,  modalRef,
     };
   },
   created() {

+ 6 - 8
vue/src/views/subject/fieldedit.vue

@@ -133,13 +133,12 @@
           <a-form-item label="sql预览" name="displayColumn" :label-col="{span:2}">
             <codemirror
               v-model="code"
-              :style="{ height: '100px',width:'100%' }"
+              :style="{ height: '100px',width:'100%' ,fontSize:'16px'}"
               :autofocus="true"
               :indent-with-tab="true"
-              :lang="lang"
               disabled="false"
               tab-size="2"
-              :theme="oneDark"
+              :extensions="[sql(),solarizedLight]"
             />
           </a-form-item>
         </a-col>
@@ -162,14 +161,14 @@ import {getDictionaryItemList} from "@/api/system/dictionary";
 import type {FormInstance} from 'ant-design-vue';
 import {DataTypeList} from '@/enums/dictions';
 import {Codemirror} from 'vue-codemirror'
-import {oneDark} from '@codemirror/theme-one-dark'
+import {solarizedLight} from 'thememirror';
 import {sql, MySQL} from '@codemirror/lang-sql';
 import type {Subjectfield} from "@/views/subject/model";
 import {get} from '@/api/common';
 
 export default defineComponent({
   name: 'FieldEdit',
-  components: {BUploadFile, Form, Codemirror, MySQL, sql, oneDark},
+  components: {BUploadFile, Form, Codemirror, MySQL, sql, solarizedLight},
   props: {
     onSave: {
       type: Function,
@@ -202,7 +201,6 @@ export default defineComponent({
     const tagOptions = ref();
     const title = ref();
 
-    const lang = sql();
     const code = ref("");
     const options = {
       disabled: false,
@@ -246,13 +244,13 @@ export default defineComponent({
       () => {
         code.value = ` select 主表.*, ${dataModel.value.referencesTab}.${dataModel.value.displayColumn} as ${dataModel.value.fieldAlias}
                        from 主表 ` +
-          `inner join ${dataModel.value.referencesTab}  on 主表.${dataModel.value.fieldCode} =${dataModel.value.referencesTab}.${dataModel.value.foreignKey}`
+          ` inner join ${dataModel.value.referencesTab}  on 主表.${dataModel.value.fieldCode} =${dataModel.value.referencesTab}.${dataModel.value.foreignKey}`
       },
     );
     return {
       dataModel,
       modalFormRef,
-      visible, title, options, code, oneDark, lang, tagOptions,
+      visible, title, options, code,sql, solarizedLight, tagOptions,
       confirmLoading,
       settingTypeList,
       DataTypeList,