index.vue 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <script lang="tsx">
  2. import {
  3. computed,
  4. defineComponent,
  5. ref,
  6. onMounted,
  7. watchEffect,
  8. watch
  9. } from "vue";
  10. import { useExposeDialogArgs } from "@qomo-platform/core";
  11. import SqlStatement from "@/components/SqlStatement";
  12. export default defineComponent({
  13. name: "dbOutput",
  14. props: {
  15. nodeDetail: {
  16. type: Object
  17. }
  18. },
  19. setup(props, { attrs, expose, slots = {} }) {
  20. const nodeDetail = computed(() => props?.nodeDetail);
  21. const baseFormRef = ref({});
  22. const baseMonacoEditorRef = ref();
  23. const { findNodesPrev, findNodesNext, getNodeData } = attrs;
  24. const submit = () => {
  25. let params = baseFormRef.value.formData;
  26. return {
  27. params
  28. };
  29. };
  30. const open = () => {
  31. init(nodeDetail.value);
  32. baseMonacoEditorRef.value?.restLayout();
  33. };
  34. // onMounted(()=>{
  35. // init(nodeDetail.value)
  36. // })
  37. // watch(nodeDetail,(v)=>{
  38. // init(v)
  39. // },{
  40. // deep:true
  41. // })
  42. watch(
  43. () => baseFormRef.value.formData,
  44. val => {},
  45. {
  46. deep: true
  47. }
  48. );
  49. const init = v => {
  50. const data = findNodesNext(props?.nodeDetail.id);
  51. baseFormRef.value.setFormData(
  52. JSON.parse(v?.taskParams || "{}")?.params || {}
  53. );
  54. };
  55. const handleOK = value => {};
  56. expose({
  57. submit,
  58. open
  59. });
  60. return () => (
  61. <base-form
  62. ref={baseFormRef}
  63. v-slots={{
  64. default: ({ model }) => (
  65. <div class={"flex gap-[10px] w-full"}>
  66. <div class={"w-[300px] overflow-auto flex flex-col"}>
  67. <SqlStatement
  68. baseFormRef={baseFormRef}
  69. model={model}
  70. ></SqlStatement>
  71. </div>
  72. <div class={"flex flex-1 flex-col"}>
  73. <base-form-item label="SQL语句:" prop="test" span={8}>
  74. <div class={"w-full h-[200px]"}>
  75. <BaseMonacoEditor
  76. ref={baseMonacoEditorRef}
  77. v-model={model.code}
  78. language="sql"
  79. customReminders={{
  80. test: ["liaoqiuyu"]
  81. }}
  82. ></BaseMonacoEditor>
  83. </div>
  84. </base-form-item>
  85. </div>
  86. </div>
  87. )
  88. }}
  89. />
  90. );
  91. }
  92. });
  93. </script>
  94. <style scoped lang="scss"></style>