kouxiangtang 0.0.39 → 0.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/{AttachmentUploader-BdDkTump.js → AttachmentUploader-DkBTVZW9.js} +2 -2
  2. package/dist/{AttachmentUploader-BdDkTump.js.map → AttachmentUploader-DkBTVZW9.js.map} +1 -1
  3. package/dist/{ImageUploader-CHkIpPtj.js → ImageUploader-CI5IMfbX.js} +2 -2
  4. package/dist/{ImageUploader-CHkIpPtj.js.map → ImageUploader-CI5IMfbX.js.map} +1 -1
  5. package/dist/{ImagesUploader-p9a3bu1Q.js → ImagesUploader-DP3H4CgN.js} +2 -2
  6. package/dist/{ImagesUploader-p9a3bu1Q.js.map → ImagesUploader-DP3H4CgN.js.map} +1 -1
  7. package/dist/{RichTextEditor-DJYZD9vY.js → RichTextEditor-CmWUYWbU.js} +2 -2
  8. package/dist/{RichTextEditor-DJYZD9vY.js.map → RichTextEditor-CmWUYWbU.js.map} +1 -1
  9. package/dist/{config-B1iWoDgQ.js → config-BHQjTR1P.js} +3 -3
  10. package/dist/{config-B1iWoDgQ.js.map → config-BHQjTR1P.js.map} +1 -1
  11. package/dist/{config-DuvmS9LR.js → config-BNwOB5hl.js} +2 -2
  12. package/dist/{config-DuvmS9LR.js.map → config-BNwOB5hl.js.map} +1 -1
  13. package/dist/{config-BDG6ljUO.js → config-BwOPNyIw.js} +2 -2
  14. package/dist/{config-BDG6ljUO.js.map → config-BwOPNyIw.js.map} +1 -1
  15. package/dist/{config-BmOWXJKs.js → config-C-L6-5nl.js} +3 -3
  16. package/dist/{config-BmOWXJKs.js.map → config-C-L6-5nl.js.map} +1 -1
  17. package/dist/{config-trKFYrjO.js → config-C77NlS42.js} +2 -2
  18. package/dist/{config-trKFYrjO.js.map → config-C77NlS42.js.map} +1 -1
  19. package/dist/{config-Xu4Cnivk.js → config-CI8auEwd.js} +2 -2
  20. package/dist/{config-Xu4Cnivk.js.map → config-CI8auEwd.js.map} +1 -1
  21. package/dist/{config-BeivkfGi.js → config-CscLYdNf.js} +2 -2
  22. package/dist/{config-BeivkfGi.js.map → config-CscLYdNf.js.map} +1 -1
  23. package/dist/{config-CzMS2zhn.js → config-CtTzTOfQ.js} +2 -2
  24. package/dist/{config-CzMS2zhn.js.map → config-CtTzTOfQ.js.map} +1 -1
  25. package/dist/{config-C7y05luV.js → config-DiYB27JS.js} +2 -2
  26. package/dist/{config-C7y05luV.js.map → config-DiYB27JS.js.map} +1 -1
  27. package/dist/{config-BbXDjdqk.js → config-Dv3oakjJ.js} +2 -2
  28. package/dist/{config-BbXDjdqk.js.map → config-Dv3oakjJ.js.map} +1 -1
  29. package/dist/{config-ClsjosNk.js → config-ZW08WCha.js} +2 -2
  30. package/dist/{config-ClsjosNk.js.map → config-ZW08WCha.js.map} +1 -1
  31. package/dist/{config-C5CioVqt.js → config-cPSnYR_W.js} +3 -3
  32. package/dist/{config-C5CioVqt.js.map → config-cPSnYR_W.js.map} +1 -1
  33. package/dist/{config-SWYlqm92.js → config-imtlNR-t.js} +2 -2
  34. package/dist/{config-SWYlqm92.js.map → config-imtlNR-t.js.map} +1 -1
  35. package/dist/{config-DTVPd1QF.js → config-pxsBixPq.js} +2 -2
  36. package/dist/{config-DTVPd1QF.js.map → config-pxsBixPq.js.map} +1 -1
  37. package/dist/{config-CsDCisYj.js → config-rtFPHOZL.js} +2 -2
  38. package/dist/{config-CsDCisYj.js.map → config-rtFPHOZL.js.map} +1 -1
  39. package/dist/{config-BUyzXYu7.js → config-uT5A3c5i.js} +2 -2
  40. package/dist/{config-BUyzXYu7.js.map → config-uT5A3c5i.js.map} +1 -1
  41. package/dist/{index-BX1xTWzJ.js → index-BF3lUmGn.js} +230 -231
  42. package/dist/{index-BX1xTWzJ.js.map → index-BF3lUmGn.js.map} +1 -1
  43. package/dist/kouxiangtang.js +1 -1
  44. package/dist/kouxiangtang.umd.cjs +1 -1
  45. package/dist/kouxiangtang.umd.cjs.map +1 -1
  46. package/dist/style.css +1 -1
  47. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { _ as m, B as _ } from "./index-BX1xTWzJ.js";
1
+ import { _ as m, B as _ } from "./index-BF3lUmGn.js";
2
2
  import { ref as c, watch as d, openBlock as n, createElementBlock as f, normalizeClass as v, createVNode as g, unref as p, withCtx as h, createElementVNode as s, toDisplayString as b, pushScopeId as y, popScopeId as w, defineAsyncComponent as V, reactive as S, createBlock as I } from "vue";
3
3
  import { ElImage as x } from "element-plus";
4
4
  const B = (t) => (y("data-v-35bc9ffb"), t = t(), w(), t), F = { class: "loading-error" }, E = /* @__PURE__ */ B(() => /* @__PURE__ */ s("div", null, "加载失败", -1)), k = {
@@ -52,7 +52,7 @@ const B = (t) => (y("data-v-35bc9ffb"), t = t(), w(), t), F = { class: "loading-
52
52
  },
53
53
  emits: ["update:modelValue"],
54
54
  setup(t, { emit: e }) {
55
- const o = V(() => import("./ImageUploader-CHkIpPtj.js")), r = e, l = t, i = S({ value: l.modelValue });
55
+ const o = V(() => import("./ImageUploader-CI5IMfbX.js")), r = e, l = t, i = S({ value: l.modelValue });
56
56
  function u(a) {
57
57
  r("update:modelValue", a);
58
58
  }
@@ -77,4 +77,4 @@ class A extends _ {
77
77
  export {
78
78
  A as default
79
79
  };
80
- //# sourceMappingURL=config-B1iWoDgQ.js.map
80
+ //# sourceMappingURL=config-BHQjTR1P.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-B1iWoDgQ.js","sources":["../src/framework/field/image/FieldDisplay.vue","../src/framework/field/image/FieldEditor.vue","../src/framework/field/image/config.js"],"sourcesContent":["<script setup>\nimport { ElImage } from \"element-plus\";\nimport { watch, ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n mode: {\n type: String,\n },\n});\n\nconst url = ref(null);\nconst urls = ref([]);\n\nwatch(\n () => props.row,\n () => {\n url.value = props.row[props.field.code];\n urls.value = [props.row[props.field.code]];\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div :class=\"`image-card ${props.mode}`\">\n <el-image\n :src=\"url\"\n preview-teleported\n fit=\"contain\"\n :preview-src-list=\"urls\"\n class=\"image\"\n >\n <template #error>\n <div class=\"loading-error\">\n <div>加载失败</div>\n <div>{{ url }}</div>\n </div>\n </template>\n </el-image>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.image-card {\n width: 100%;\n height: 200px;\n display: flex;\n justify-content: center;\n align-items: center;\n background: #eee;\n border: 1px solid #ddd;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.image {\n width: 100%;\n height: 100%;\n}\n\n.list {\n height: 50px;\n}\n\n.extend {\n width: 200px;\n height: 200px;\n}\n\n.loading-error {\n width: 100%;\n height: 100%;\n min-height: 50px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: var(--el-color-error);\n color: var(--el-color-white);\n}\n</style>\n","<template>\n <ImageUploader\n :image-url=\"_form.value\"\n :disabled=\"props.disabled\"\n @on-success=\"change\"\n />\n</template>\n\n<script setup>\nimport { reactive, defineAsyncComponent, watch } from \"vue\";\n\nconst ImageUploader = defineAsyncComponent(() => {\n return import(\"./ImageUploader.vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n type: String,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change(image) {\n emit(\"update:modelValue\", image);\n}\n\nwatch(\n () => props.modelValue,\n async () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class ImageFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["props","__props","url","ref","urls","watch","ImageUploader","defineAsyncComponent","emit","__emit","_form","reactive","change","image","ImageFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAYRC,IAAMC,EAAI,IAAI,GACdC,IAAOD,EAAI,CAAA,CAAE;AAEnB,WAAAE;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAE,EAAI,QAAQF,EAAM,IAAIA,EAAM,MAAM,IAAI,GACtCI,EAAK,QAAQ,CAACJ,EAAM,IAAIA,EAAM,MAAM,IAAI,CAAC;AAAA,MAC1C;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA,UAAMM,IAAgBC,EAAqB,MAClC,OAAO,6BAAqB,CACpC,GAEKC,IAAOC,GACPT,IAAQC,GAMRS,IAAQC,EAAS,EAAE,OAAOX,EAAM,WAAY,CAAA;AAElD,aAASY,EAAOC,GAAO;AACrB,MAAAL,EAAK,qBAAqBK,CAAK;AAAA,IACjC;AAEA,WAAAR;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,YAAY;AACV,QAAAU,EAAM,QAAQV,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;AC9Be,MAAMc,UAAyBC,EAAgB;AAAA,EAC5D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-BHQjTR1P.js","sources":["../src/framework/field/image/FieldDisplay.vue","../src/framework/field/image/FieldEditor.vue","../src/framework/field/image/config.js"],"sourcesContent":["<script setup>\nimport { ElImage } from \"element-plus\";\nimport { watch, ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n mode: {\n type: String,\n },\n});\n\nconst url = ref(null);\nconst urls = ref([]);\n\nwatch(\n () => props.row,\n () => {\n url.value = props.row[props.field.code];\n urls.value = [props.row[props.field.code]];\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <div :class=\"`image-card ${props.mode}`\">\n <el-image\n :src=\"url\"\n preview-teleported\n fit=\"contain\"\n :preview-src-list=\"urls\"\n class=\"image\"\n >\n <template #error>\n <div class=\"loading-error\">\n <div>加载失败</div>\n <div>{{ url }}</div>\n </div>\n </template>\n </el-image>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.image-card {\n width: 100%;\n height: 200px;\n display: flex;\n justify-content: center;\n align-items: center;\n background: #eee;\n border: 1px solid #ddd;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.image {\n width: 100%;\n height: 100%;\n}\n\n.list {\n height: 50px;\n}\n\n.extend {\n width: 200px;\n height: 200px;\n}\n\n.loading-error {\n width: 100%;\n height: 100%;\n min-height: 50px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: var(--el-color-error);\n color: var(--el-color-white);\n}\n</style>\n","<template>\n <ImageUploader\n :image-url=\"_form.value\"\n :disabled=\"props.disabled\"\n @on-success=\"change\"\n />\n</template>\n\n<script setup>\nimport { reactive, defineAsyncComponent, watch } from \"vue\";\n\nconst ImageUploader = defineAsyncComponent(() => {\n return import(\"./ImageUploader.vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n type: String,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change(image) {\n emit(\"update:modelValue\", image);\n}\n\nwatch(\n () => props.modelValue,\n async () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class ImageFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["props","__props","url","ref","urls","watch","ImageUploader","defineAsyncComponent","emit","__emit","_form","reactive","change","image","ImageFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAYRC,IAAMC,EAAI,IAAI,GACdC,IAAOD,EAAI,CAAA,CAAE;AAEnB,WAAAE;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAE,EAAI,QAAQF,EAAM,IAAIA,EAAM,MAAM,IAAI,GACtCI,EAAK,QAAQ,CAACJ,EAAM,IAAIA,EAAM,MAAM,IAAI,CAAC;AAAA,MAC1C;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA,UAAMM,IAAgBC,EAAqB,MAClC,OAAO,6BAAqB,CACpC,GAEKC,IAAOC,GACPT,IAAQC,GAMRS,IAAQC,EAAS,EAAE,OAAOX,EAAM,WAAY,CAAA;AAElD,aAASY,EAAOC,GAAO;AACrB,MAAAL,EAAK,qBAAqBK,CAAK;AAAA,IACjC;AAEA,WAAAR;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,YAAY;AACV,QAAAU,EAAM,QAAQV,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;AC9Be,MAAMc,UAAyBC,EAAgB;AAAA,EAC5D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { _ as x, E as k, s as E, B as S } from "./index-BX1xTWzJ.js";
1
+ import { _ as x, E as k, s as E, B as S } from "./index-BF3lUmGn.js";
2
2
  import { ref as m, watch as b, openBlock as u, createElementBlock as f, Fragment as _, renderList as g, createBlock as p, unref as v, withCtx as V, createElementVNode as w, normalizeStyle as B, toDisplayString as $, reactive as F } from "vue";
3
3
  import { ElTooltip as O, ElSelect as C, ElOption as D } from "element-plus";
4
4
  import { c as j } from "./color-DbNhHNpt.js";
@@ -124,4 +124,4 @@ class U extends S {
124
124
  export {
125
125
  U as default
126
126
  };
127
- //# sourceMappingURL=config-DuvmS9LR.js.map
127
+ //# sourceMappingURL=config-BNwOB5hl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-DuvmS9LR.js","sources":["../src/framework/field/select/FieldDisplay.vue","../src/framework/field/select/FieldEditor.vue","../src/framework/field/select/config.js"],"sourcesContent":["<script setup>\nimport { ElTooltip } from \"element-plus\";\nimport color from \"../../utils/color\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref, watch } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst invalidTip = ref(\"...\");\nconst found = ref(false);\nconst items = ref([]);\n\nasync function getSelectName() {\n const val = props.row[props.field.code];\n const label = props.field.label;\n if (val === undefined || val === null) {\n invalidTip.value = \"<无>\";\n found.value = false;\n return;\n }\n\n const options = await props.field.options();\n if (!options) {\n invalidTip.value = `<未知: ${val}>`;\n found.value = false;\n return;\n }\n\n let selectedOptions = [];\n if (props.field.multiple) {\n selectedOptions = options.filter((item) => val.includes(item.code));\n } else {\n selectedOptions = options.filter((item) => val === item.code);\n }\n\n if (selectedOptions.length === 0) {\n invalidTip.value = `<未找到: ${val}>`;\n found.value = false;\n return;\n }\n\n items.value = selectedOptions.map((item) => ({\n bgColor: color.strToHexColor(`${item.code}-${item.name}`),\n code: item.code,\n name: item.name,\n }));\n\n found.value = true;\n}\n\nwatch(() => props.row, getSelectName, { immediate: true });\n</script>\n\n<template>\n <template v-if=\"found\">\n <div class=\"select-fields\">\n <el-tooltip\n v-for=\"item in items\"\n :content=\"`${item.code}`\"\n placement=\"top\"\n >\n <span class=\"select-field found\" :style=\"`background: ${item.bgColor}`\">\n {{ item.name }}\n </span>\n </el-tooltip>\n </div>\n </template>\n <EmptyTip v-else :text=\"invalidTip\" />\n</template>\n\n<style scoped lang=\"scss\">\n.select-fields {\n display: inline-block;\n}\n\n.select-field {\n font-size: 12px;\n padding: 4px 6px;\n border-radius: 4px;\n}\n\n.found {\n color: #fff;\n}\n</style>\n","<template>\n <el-select\n v-model=\"_form.value\"\n style=\"width: 100%\"\n filterable\n reserve-keyword\n remote-show-suffix\n clearable\n fit-input-width\n :multiple=\"props.field.multiple\"\n :disabled=\"props.disabled\"\n placeholder=\"\"\n remote\n :remote-method=\"remoteSearch\"\n @change=\"change\"\n >\n <template v-for=\"option in options\" :key=\"option.code\">\n <el-option\n :label=\"option.name\"\n :value=\"option.code\"\n :title=\"option.name\"\n :disabled=\"option.disabled\"\n />\n </template>\n </el-select>\n</template>\n\n<script setup>\nimport { ElSelect, ElOption } from \"element-plus\";\nimport { reactive, watch, ref } from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { setupRouteQuery } from \"../../utils/route-query\";\n\nconst route = useRoute();\nconst routeQuery = setupRouteQuery(route);\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: [String, Number, Array],\n field: Object,\n type: String,\n disabled: Boolean,\n formData: Object,\n});\nconst _form = reactive({ value: props.modelValue });\nconst options = ref([]);\n\nasync function remoteSearch(keyword) {\n options.value = await props.field.options(\n props.formData,\n routeQuery,\n keyword,\n );\n}\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\nremoteSearch();\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nclass SelectFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.options = rawConfig.options || (() => [{ code: 0, name: \"未实现\" }]);\n this.formChange = rawConfig.formChange || (() => {});\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.multiple = this.defaultBy(rawConfig.multiple, false);\n\n this.checkValidProperties(rawConfig);\n }\n}\n\nexport default SelectFieldConfig;\n"],"names":["props","__props","invalidTip","ref","found","items","getSelectName","val","options","selectedOptions","item","color","watch","route","useRoute","routeQuery","setupRouteQuery","emit","__emit","_form","reactive","remoteSearch","keyword","change","SelectFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;;;;AAMA,UAAMA,IAAQC,GAQRC,IAAaC,EAAI,KAAK,GACtBC,IAAQD,EAAI,EAAK,GACjBE,IAAQF,EAAI,CAAA,CAAE;AAEpB,mBAAeG,IAAgB;AAC7B,YAAMC,IAAMP,EAAM,IAAIA,EAAM,MAAM,IAAI;AAEtC,UADcA,EAAM,MAAM,OACDO,KAAQ,MAAM;AACrC,QAAAL,EAAW,QAAQ,OACnBE,EAAM,QAAQ;AACd;AAAA,MACD;AAED,YAAMI,IAAU,MAAMR,EAAM,MAAM,QAAO;AACzC,UAAI,CAACQ,GAAS;AACZ,QAAAN,EAAW,QAAQ,QAAQK,CAAG,KAC9BH,EAAM,QAAQ;AACd;AAAA,MACD;AAED,UAAIK,IAAkB,CAAA;AAOtB,UANIT,EAAM,MAAM,WACdS,IAAkBD,EAAQ,OAAO,CAACE,MAASH,EAAI,SAASG,EAAK,IAAI,CAAC,IAElED,IAAkBD,EAAQ,OAAO,CAACE,MAASH,MAAQG,EAAK,IAAI,GAG1DD,EAAgB,WAAW,GAAG;AAChC,QAAAP,EAAW,QAAQ,SAASK,CAAG,KAC/BH,EAAM,QAAQ;AACd;AAAA,MACD;AAED,MAAAC,EAAM,QAAQI,EAAgB,IAAI,CAACC,OAAU;AAAA,QAC3C,SAASC,EAAM,cAAc,GAAGD,EAAK,IAAI,IAAIA,EAAK,IAAI,EAAE;AAAA,QACxD,MAAMA,EAAK;AAAA,QACX,MAAMA,EAAK;AAAA,MACZ,EAAC,GAEFN,EAAM,QAAQ;AAAA,IAChB;AAEA,WAAAQ,EAAM,MAAMZ,EAAM,KAAKM,GAAe,EAAE,WAAW,GAAI,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBzD,UAAMO,IAAQC,EAAQ,GAChBC,IAAaC,EAAgBH,CAAK,GAClCI,IAAOC,GACPlB,IAAQC,GAORkB,IAAQC,EAAS,EAAE,OAAOpB,EAAM,WAAY,CAAA,GAC5CQ,IAAUL,EAAI,CAAA,CAAE;AAEtB,mBAAekB,EAAaC,GAAS;AACnC,MAAAd,EAAQ,QAAQ,MAAMR,EAAM,MAAM;AAAA,QAChCA,EAAM;AAAA,QACNe;AAAA,QACAO;AAAA,MACJ;AAAA,IACA;AAEA,aAASC,IAAS;AAChB,MAAAN,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAP;AAAA,MACE,MAAMZ,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAmB,EAAM,QAAQnB,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB,GACAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA,MAAMG,UAA0BC,EAAgB;AAAA,EAC9C,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,YAAY,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,MAAK,CAAE,IACpE,KAAK,aAAaA,EAAU,eAAe,MAAM;AAAA,IAAE,IACnD,KAAK,UAAUE,GACf,KAAK,SAASC,GACd,KAAK,WAAW,KAAK,UAAUH,EAAU,UAAU,EAAK,GAExD,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-BNwOB5hl.js","sources":["../src/framework/field/select/FieldDisplay.vue","../src/framework/field/select/FieldEditor.vue","../src/framework/field/select/config.js"],"sourcesContent":["<script setup>\nimport { ElTooltip } from \"element-plus\";\nimport color from \"../../utils/color\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref, watch } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst invalidTip = ref(\"...\");\nconst found = ref(false);\nconst items = ref([]);\n\nasync function getSelectName() {\n const val = props.row[props.field.code];\n const label = props.field.label;\n if (val === undefined || val === null) {\n invalidTip.value = \"<无>\";\n found.value = false;\n return;\n }\n\n const options = await props.field.options();\n if (!options) {\n invalidTip.value = `<未知: ${val}>`;\n found.value = false;\n return;\n }\n\n let selectedOptions = [];\n if (props.field.multiple) {\n selectedOptions = options.filter((item) => val.includes(item.code));\n } else {\n selectedOptions = options.filter((item) => val === item.code);\n }\n\n if (selectedOptions.length === 0) {\n invalidTip.value = `<未找到: ${val}>`;\n found.value = false;\n return;\n }\n\n items.value = selectedOptions.map((item) => ({\n bgColor: color.strToHexColor(`${item.code}-${item.name}`),\n code: item.code,\n name: item.name,\n }));\n\n found.value = true;\n}\n\nwatch(() => props.row, getSelectName, { immediate: true });\n</script>\n\n<template>\n <template v-if=\"found\">\n <div class=\"select-fields\">\n <el-tooltip\n v-for=\"item in items\"\n :content=\"`${item.code}`\"\n placement=\"top\"\n >\n <span class=\"select-field found\" :style=\"`background: ${item.bgColor}`\">\n {{ item.name }}\n </span>\n </el-tooltip>\n </div>\n </template>\n <EmptyTip v-else :text=\"invalidTip\" />\n</template>\n\n<style scoped lang=\"scss\">\n.select-fields {\n display: inline-block;\n}\n\n.select-field {\n font-size: 12px;\n padding: 4px 6px;\n border-radius: 4px;\n}\n\n.found {\n color: #fff;\n}\n</style>\n","<template>\n <el-select\n v-model=\"_form.value\"\n style=\"width: 100%\"\n filterable\n reserve-keyword\n remote-show-suffix\n clearable\n fit-input-width\n :multiple=\"props.field.multiple\"\n :disabled=\"props.disabled\"\n placeholder=\"\"\n remote\n :remote-method=\"remoteSearch\"\n @change=\"change\"\n >\n <template v-for=\"option in options\" :key=\"option.code\">\n <el-option\n :label=\"option.name\"\n :value=\"option.code\"\n :title=\"option.name\"\n :disabled=\"option.disabled\"\n />\n </template>\n </el-select>\n</template>\n\n<script setup>\nimport { ElSelect, ElOption } from \"element-plus\";\nimport { reactive, watch, ref } from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { setupRouteQuery } from \"../../utils/route-query\";\n\nconst route = useRoute();\nconst routeQuery = setupRouteQuery(route);\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: [String, Number, Array],\n field: Object,\n type: String,\n disabled: Boolean,\n formData: Object,\n});\nconst _form = reactive({ value: props.modelValue });\nconst options = ref([]);\n\nasync function remoteSearch(keyword) {\n options.value = await props.field.options(\n props.formData,\n routeQuery,\n keyword,\n );\n}\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\nremoteSearch();\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nclass SelectFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.options = rawConfig.options || (() => [{ code: 0, name: \"未实现\" }]);\n this.formChange = rawConfig.formChange || (() => {});\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.multiple = this.defaultBy(rawConfig.multiple, false);\n\n this.checkValidProperties(rawConfig);\n }\n}\n\nexport default SelectFieldConfig;\n"],"names":["props","__props","invalidTip","ref","found","items","getSelectName","val","options","selectedOptions","item","color","watch","route","useRoute","routeQuery","setupRouteQuery","emit","__emit","_form","reactive","remoteSearch","keyword","change","SelectFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;;;;AAMA,UAAMA,IAAQC,GAQRC,IAAaC,EAAI,KAAK,GACtBC,IAAQD,EAAI,EAAK,GACjBE,IAAQF,EAAI,CAAA,CAAE;AAEpB,mBAAeG,IAAgB;AAC7B,YAAMC,IAAMP,EAAM,IAAIA,EAAM,MAAM,IAAI;AAEtC,UADcA,EAAM,MAAM,OACDO,KAAQ,MAAM;AACrC,QAAAL,EAAW,QAAQ,OACnBE,EAAM,QAAQ;AACd;AAAA,MACD;AAED,YAAMI,IAAU,MAAMR,EAAM,MAAM,QAAO;AACzC,UAAI,CAACQ,GAAS;AACZ,QAAAN,EAAW,QAAQ,QAAQK,CAAG,KAC9BH,EAAM,QAAQ;AACd;AAAA,MACD;AAED,UAAIK,IAAkB,CAAA;AAOtB,UANIT,EAAM,MAAM,WACdS,IAAkBD,EAAQ,OAAO,CAACE,MAASH,EAAI,SAASG,EAAK,IAAI,CAAC,IAElED,IAAkBD,EAAQ,OAAO,CAACE,MAASH,MAAQG,EAAK,IAAI,GAG1DD,EAAgB,WAAW,GAAG;AAChC,QAAAP,EAAW,QAAQ,SAASK,CAAG,KAC/BH,EAAM,QAAQ;AACd;AAAA,MACD;AAED,MAAAC,EAAM,QAAQI,EAAgB,IAAI,CAACC,OAAU;AAAA,QAC3C,SAASC,EAAM,cAAc,GAAGD,EAAK,IAAI,IAAIA,EAAK,IAAI,EAAE;AAAA,QACxD,MAAMA,EAAK;AAAA,QACX,MAAMA,EAAK;AAAA,MACZ,EAAC,GAEFN,EAAM,QAAQ;AAAA,IAChB;AAEA,WAAAQ,EAAM,MAAMZ,EAAM,KAAKM,GAAe,EAAE,WAAW,GAAI,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBzD,UAAMO,IAAQC,EAAQ,GAChBC,IAAaC,EAAgBH,CAAK,GAClCI,IAAOC,GACPlB,IAAQC,GAORkB,IAAQC,EAAS,EAAE,OAAOpB,EAAM,WAAY,CAAA,GAC5CQ,IAAUL,EAAI,CAAA,CAAE;AAEtB,mBAAekB,EAAaC,GAAS;AACnC,MAAAd,EAAQ,QAAQ,MAAMR,EAAM,MAAM;AAAA,QAChCA,EAAM;AAAA,QACNe;AAAA,QACAO;AAAA,MACJ;AAAA,IACA;AAEA,aAASC,IAAS;AAChB,MAAAN,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAP;AAAA,MACE,MAAMZ,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAmB,EAAM,QAAQnB,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB,GACAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA,MAAMG,UAA0BC,EAAgB;AAAA,EAC9C,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,YAAY,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,MAAK,CAAE,IACpE,KAAK,aAAaA,EAAU,eAAe,MAAM;AAAA,IAAE,IACnD,KAAK,UAAUE,GACf,KAAK,SAASC,GACd,KAAK,WAAW,KAAK,UAAUH,EAAU,UAAU,EAAK,GAExD,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { B as p } from "./index-BX1xTWzJ.js";
1
+ import { B as p } from "./index-BF3lUmGn.js";
2
2
  import { ref as f, computed as b, openBlock as u, createElementBlock as V, createVNode as h, unref as c, reactive as v, watch as y, createBlock as B } from "vue";
3
3
  import { ElSwitch as m } from "element-plus";
4
4
  import "./el-switch-l0sNRNKZ.js";
@@ -66,4 +66,4 @@ class C extends p {
66
66
  export {
67
67
  C as default
68
68
  };
69
- //# sourceMappingURL=config-BDG6ljUO.js.map
69
+ //# sourceMappingURL=config-BwOPNyIw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-BDG6ljUO.js","sources":["../src/framework/field/switch/FieldDisplay.vue","../src/framework/field/switch/FieldEditor.vue","../src/framework/field/switch/config.js"],"sourcesContent":["<template>\n <span style=\"display: flex; align-items: center\">\n <el-switch\n v-model=\"value\"\n size=\"small\"\n :disabled=\"isDeleted ? true : false\"\n :before-change=\"($event) => switchChange(row, field.label)\"\n />\n </span>\n</template>\n\n<script setup>\nimport { ElSwitch } from \"element-plus\";\nimport { computed, ref } from \"vue\";\n\nconst emit = defineEmits([\"enable\"]);\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isDeleted = ref(props.row.deletedAt);\n\nfunction switchChange(row, label) {\n row.label = label;\n return new Promise((resolve, reject) => {\n emit(\"enable\", row);\n });\n}\n\nconst value = computed(() => {\n return props.row[props.field.code];\n});\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-switch\n v-model=\"_form.value\"\n :disabled=\"props.disabled\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElSwitch } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Boolean,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class SwitchFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.default = rawConfig.default || false;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["emit","__emit","props","__props","isDeleted","ref","switchChange","row","label","resolve","reject","value","computed","_form","reactive","change","watch","SwitchFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;AAeA,UAAMA,IAAOC,GACPC,IAAQC,GAQRC,IAAYC,EAAIH,EAAM,IAAI,SAAS;AAEzC,aAASI,EAAaC,GAAKC,GAAO;AAChC,aAAAD,EAAI,QAAQC,GACL,IAAI,QAAQ,CAACC,GAASC,MAAW;AACtC,QAAAV,EAAK,UAAUO,CAAG;AAAA,MACtB,CAAG;AAAA,IACH;AAEA,UAAMI,IAAQC,EAAS,MACdV,EAAM,IAAIA,EAAM,MAAM,IAAI,CAClC;;;;;;;;;;;;;;;;;;;;ACvBD,UAAMF,IAAOC,GACPC,IAAQC,GAKRU,IAAQC,EAAS,EAAE,OAAOZ,EAAM,WAAY,CAAA;AAElD,aAASa,IAAS;AAChB,MAAAf,EAAK,qBAAqBa,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMd,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAW,EAAM,QAAQX,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;AC1Be,MAAMe,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,WAAW,IACpC,KAAK,UAAUE,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-BwOPNyIw.js","sources":["../src/framework/field/switch/FieldDisplay.vue","../src/framework/field/switch/FieldEditor.vue","../src/framework/field/switch/config.js"],"sourcesContent":["<template>\n <span style=\"display: flex; align-items: center\">\n <el-switch\n v-model=\"value\"\n size=\"small\"\n :disabled=\"isDeleted ? true : false\"\n :before-change=\"($event) => switchChange(row, field.label)\"\n />\n </span>\n</template>\n\n<script setup>\nimport { ElSwitch } from \"element-plus\";\nimport { computed, ref } from \"vue\";\n\nconst emit = defineEmits([\"enable\"]);\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isDeleted = ref(props.row.deletedAt);\n\nfunction switchChange(row, label) {\n row.label = label;\n return new Promise((resolve, reject) => {\n emit(\"enable\", row);\n });\n}\n\nconst value = computed(() => {\n return props.row[props.field.code];\n});\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-switch\n v-model=\"_form.value\"\n :disabled=\"props.disabled\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElSwitch } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Boolean,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class SwitchFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.default = rawConfig.default || false;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["emit","__emit","props","__props","isDeleted","ref","switchChange","row","label","resolve","reject","value","computed","_form","reactive","change","watch","SwitchFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;AAeA,UAAMA,IAAOC,GACPC,IAAQC,GAQRC,IAAYC,EAAIH,EAAM,IAAI,SAAS;AAEzC,aAASI,EAAaC,GAAKC,GAAO;AAChC,aAAAD,EAAI,QAAQC,GACL,IAAI,QAAQ,CAACC,GAASC,MAAW;AACtC,QAAAV,EAAK,UAAUO,CAAG;AAAA,MACtB,CAAG;AAAA,IACH;AAEA,UAAMI,IAAQC,EAAS,MACdV,EAAM,IAAIA,EAAM,MAAM,IAAI,CAClC;;;;;;;;;;;;;;;;;;;;ACvBD,UAAMF,IAAOC,GACPC,IAAQC,GAKRU,IAAQC,EAAS,EAAE,OAAOZ,EAAM,WAAY,CAAA;AAElD,aAASa,IAAS;AAChB,MAAAf,EAAK,qBAAqBa,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMd,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAW,EAAM,QAAQX,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;AC1Be,MAAMe,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,WAAW,IACpC,KAAK,UAAUE,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { _ as c, B as a } from "./index-BX1xTWzJ.js";
1
+ import { _ as c, B as a } from "./index-BF3lUmGn.js";
2
2
  import { openBlock as r, createElementBlock as l, createElementVNode as p, defineAsyncComponent as u, reactive as _, watch as m, createVNode as f, unref as h } from "vue";
3
3
  const v = { class: "editor-field" }, y = ["innerHTML"], V = {
4
4
  __name: "FieldDisplay",
@@ -28,7 +28,7 @@ const v = { class: "editor-field" }, y = ["innerHTML"], V = {
28
28
  },
29
29
  emits: ["update:modelValue"],
30
30
  setup(t, { emit: e }) {
31
- const o = u(() => import("./RichTextEditor-DJYZD9vY.js")), n = e, s = _({ value: t.modelValue });
31
+ const o = u(() => import("./RichTextEditor-CmWUYWbU.js")), n = e, s = _({ value: t.modelValue });
32
32
  return m(
33
33
  () => s.value,
34
34
  () => {
@@ -55,4 +55,4 @@ class k extends a {
55
55
  export {
56
56
  k as default
57
57
  };
58
- //# sourceMappingURL=config-BmOWXJKs.js.map
58
+ //# sourceMappingURL=config-C-L6-5nl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-BmOWXJKs.js","sources":["../src/framework/field/rich-text/FieldDisplay.vue","../src/framework/field/rich-text/FieldEditor.vue","../src/framework/field/rich-text/config.js"],"sourcesContent":["<script setup>\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n</script>\n\n<template>\n <div class=\"editor-field\">\n <div class=\"content\" v-html=\"props.row[props.field.code]\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.editor-field {\n width: 100%;\n background: #999;\n padding: 20px 0;\n\n .content {\n max-width: 500px;\n padding: 20px;\n margin: 0 auto;\n background: white;\n\n :deep(img) {\n width: 100%;\n max-width: 100%;\n }\n }\n}\n</style>\n","<template>\n <div style=\"width: 100%\">\n <RichTextEditor v-model:content=\"_form.value\" />\n </div>\n</template>\n\n<script setup>\nimport { reactive, watch, defineAsyncComponent } from \"vue\";\n\nconst RichTextEditor = defineAsyncComponent(() => {\n return import(\"./RichTextEditor.vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nwatch(\n () => _form.value,\n () => {\n emit(\"update:modelValue\", _form.value);\n },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class EditorFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","RichTextEditor","defineAsyncComponent","emit","__emit","_form","reactive","watch","EditorFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;AACA,UAAMA,IAAQC;;;;;;;;;;;;;;;;;ACQd,UAAMC,IAAiBC,EAAqB,MACnC,OAAO,8BAAsB,CACrC,GAEKC,IAAOC,GAMPC,IAAQC,EAAS,EAAE,OALXN,EAKwB,WAAY,CAAA;AAElD,WAAAO;AAAA,MACE,MAAMF,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAF,EAAK,qBAAqBE,EAAM,KAAK;AAAA,MACtC;AAAA,IACH;;;;;;;;ACtBe,MAAMG,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
1
+ {"version":3,"file":"config-C-L6-5nl.js","sources":["../src/framework/field/rich-text/FieldDisplay.vue","../src/framework/field/rich-text/FieldEditor.vue","../src/framework/field/rich-text/config.js"],"sourcesContent":["<script setup>\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n</script>\n\n<template>\n <div class=\"editor-field\">\n <div class=\"content\" v-html=\"props.row[props.field.code]\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.editor-field {\n width: 100%;\n background: #999;\n padding: 20px 0;\n\n .content {\n max-width: 500px;\n padding: 20px;\n margin: 0 auto;\n background: white;\n\n :deep(img) {\n width: 100%;\n max-width: 100%;\n }\n }\n}\n</style>\n","<template>\n <div style=\"width: 100%\">\n <RichTextEditor v-model:content=\"_form.value\" />\n </div>\n</template>\n\n<script setup>\nimport { reactive, watch, defineAsyncComponent } from \"vue\";\n\nconst RichTextEditor = defineAsyncComponent(() => {\n return import(\"./RichTextEditor.vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nwatch(\n () => _form.value,\n () => {\n emit(\"update:modelValue\", _form.value);\n },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class EditorFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","RichTextEditor","defineAsyncComponent","emit","__emit","_form","reactive","watch","EditorFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;AACA,UAAMA,IAAQC;;;;;;;;;;;;;;;;;ACQd,UAAMC,IAAiBC,EAAqB,MACnC,OAAO,8BAAsB,CACrC,GAEKC,IAAOC,GAMPC,IAAQC,EAAS,EAAE,OALXN,EAKwB,WAAY,CAAA;AAElD,WAAAO;AAAA,MACE,MAAMF,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAF,EAAK,qBAAqBE,EAAM,KAAK;AAAA,MACtC;AAAA,IACH;;;;;;;;ACtBe,MAAMG,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
@@ -1,4 +1,4 @@
1
- import { e as f, f as _, q as h, B as V } from "./index-BX1xTWzJ.js";
1
+ import { e as f, f as _, q as h, B as V } from "./index-BF3lUmGn.js";
2
2
  import { computed as y, openBlock as s, createElementBlock as v, createBlock as i, unref as l, withCtx as c, createVNode as u, reactive as b, watch as B } from "vue";
3
3
  import { ElIcon as r, ElSwitch as k } from "element-plus";
4
4
  import "./el-switch-l0sNRNKZ.js";
@@ -80,4 +80,4 @@ class D extends V {
80
80
  export {
81
81
  D as default
82
82
  };
83
- //# sourceMappingURL=config-trKFYrjO.js.map
83
+ //# sourceMappingURL=config-C77NlS42.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-trKFYrjO.js","sources":["../src/framework/field/boolean/FieldDisplay.vue","../src/framework/field/boolean/FieldEditor.vue","../src/framework/field/boolean/config.js"],"sourcesContent":["<template>\n <span style=\"display: flex; align-items: center\">\n <el-icon v-if=\"value == true\" color=\"#529b2e\" :size=\"20\">\n <SuccessFilled />\n </el-icon>\n <el-icon v-else-if=\"value == false\" color=\"#F56C6C\" :size=\"20\">\n <CircleCloseFilled />\n </el-icon>\n <el-icon v-else color=\"#73767a\" :size=\"20\">\n <QuestionFilled />\n </el-icon>\n </span>\n</template>\n\n<script setup>\nimport { ElIcon } from \"element-plus\";\nimport { computed } from \"vue\";\nimport {\n SuccessFilled,\n CircleCloseFilled,\n QuestionFilled,\n} from \"@element-plus/icons-vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n\nconst value = computed(() => {\n return props.row[props.field.code];\n});\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-switch\n v-model=\"_form.value\"\n :disabled=\"props.disabled\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElSwitch } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Boolean,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class BooleanFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.default = rawConfig.default || false;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["props","__props","value","computed","emit","__emit","_form","reactive","change","watch","BooleanFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;AAuBA,UAAMA,IAAQC,GASRC,IAAQC,EAAS,MACdH,EAAM,IAAIA,EAAM,MAAM,IAAI,CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBD,UAAMI,IAAOC,GACPL,IAAQC,GAKRK,IAAQC,EAAS,EAAE,OAAOP,EAAM,WAAY,CAAA;AAElD,aAASQ,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMT,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAM,EAAM,QAAQN,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;AC1Be,MAAMU,UAA2BC,EAAgB;AAAA,EAC9D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,WAAW,IACpC,KAAK,UAAUE,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-C77NlS42.js","sources":["../src/framework/field/boolean/FieldDisplay.vue","../src/framework/field/boolean/FieldEditor.vue","../src/framework/field/boolean/config.js"],"sourcesContent":["<template>\n <span style=\"display: flex; align-items: center\">\n <el-icon v-if=\"value == true\" color=\"#529b2e\" :size=\"20\">\n <SuccessFilled />\n </el-icon>\n <el-icon v-else-if=\"value == false\" color=\"#F56C6C\" :size=\"20\">\n <CircleCloseFilled />\n </el-icon>\n <el-icon v-else color=\"#73767a\" :size=\"20\">\n <QuestionFilled />\n </el-icon>\n </span>\n</template>\n\n<script setup>\nimport { ElIcon } from \"element-plus\";\nimport { computed } from \"vue\";\nimport {\n SuccessFilled,\n CircleCloseFilled,\n QuestionFilled,\n} from \"@element-plus/icons-vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n\nconst value = computed(() => {\n return props.row[props.field.code];\n});\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-switch\n v-model=\"_form.value\"\n :disabled=\"props.disabled\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElSwitch } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Boolean,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class BooleanFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.default = rawConfig.default || false;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["props","__props","value","computed","emit","__emit","_form","reactive","change","watch","BooleanFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;AAuBA,UAAMA,IAAQC,GASRC,IAAQC,EAAS,MACdH,EAAM,IAAIA,EAAM,MAAM,IAAI,CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBD,UAAMI,IAAOC,GACPL,IAAQC,GAKRK,IAAQC,EAAS,EAAE,OAAOP,EAAM,WAAY,CAAA;AAElD,aAASQ,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMT,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAM,EAAM,QAAQN,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;AC1Be,MAAMU,UAA2BC,EAAgB;AAAA,EAC9D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,WAAW,IACpC,KAAK,UAAUE,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { E as p, B as m } from "./index-BX1xTWzJ.js";
1
+ import { E as p, B as m } from "./index-BF3lUmGn.js";
2
2
  import { ref as u, openBlock as i, createElementBlock as f, toDisplayString as y, createBlock as n, reactive as v, watch as _, unref as V } from "vue";
3
3
  import { ElInput as b } from "element-plus";
4
4
  const h = { key: 0 }, E = {
@@ -53,4 +53,4 @@ class O extends m {
53
53
  export {
54
54
  O as default
55
55
  };
56
- //# sourceMappingURL=config-Xu4Cnivk.js.map
56
+ //# sourceMappingURL=config-CI8auEwd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-Xu4Cnivk.js","sources":["../src/framework/field/string/FieldDisplay.vue","../src/framework/field/string/FieldEditor.vue","../src/framework/field/string/config.js"],"sourcesContent":["<template>\n <span v-if=\"!isEmpty\"> {{ formattedValue }} </span>\n <EmptyTip v-else />\n</template>\n\n<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-input\n v-model=\"_form.value\"\n :type=\"props.type\"\n clearable\n :disabled=\"props.disabled\"\n @input=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElInput } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: [Object, String, Number],\n field: Object,\n type: String,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class StringFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","StringFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AASA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;;ACblB,UAAMI,IAAOC,GACPP,IAAQC,GAMRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;AC7Be,MAAMY,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-CI8auEwd.js","sources":["../src/framework/field/string/FieldDisplay.vue","../src/framework/field/string/FieldEditor.vue","../src/framework/field/string/config.js"],"sourcesContent":["<template>\n <span v-if=\"!isEmpty\"> {{ formattedValue }} </span>\n <EmptyTip v-else />\n</template>\n\n<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-input\n v-model=\"_form.value\"\n :type=\"props.type\"\n clearable\n :disabled=\"props.disabled\"\n @input=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElInput } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: [Object, String, Number],\n field: Object,\n type: String,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class StringFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","StringFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AASA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;;ACblB,UAAMI,IAAOC,GACPP,IAAQC,GAMRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;AC7Be,MAAMY,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { E as p, B as m } from "./index-BX1xTWzJ.js";
1
+ import { E as p, B as m } from "./index-BF3lUmGn.js";
2
2
  import { ref as n, openBlock as s, createElementBlock as f, toDisplayString as v, createBlock as u, reactive as _, watch as y, unref as V } from "vue";
3
3
  import { ElInput as b } from "element-plus";
4
4
  const h = { key: 0 }, E = {
@@ -59,4 +59,4 @@ class j extends m {
59
59
  export {
60
60
  j as default
61
61
  };
62
- //# sourceMappingURL=config-BeivkfGi.js.map
62
+ //# sourceMappingURL=config-CscLYdNf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-BeivkfGi.js","sources":["../src/framework/field/text/FieldDisplay.vue","../src/framework/field/text/FieldEditor.vue","../src/framework/field/text/config.js"],"sourcesContent":["<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<template>\n <span v-if=\"!isEmpty\">\n {{ formattedValue }}\n </span>\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-input\n v-model=\"_form.value\"\n type=\"textarea\"\n rows=\"5\"\n clearable\n :disabled=\"props.disabled\"\n @input=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElInput } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n type: String,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class TextFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","TextFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;;ACPlB,UAAMI,IAAOC,GACPP,IAAQC,GAMRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;AC9Be,MAAMY,UAAwBC,EAAgB;AAAA,EAC3D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
1
+ {"version":3,"file":"config-CscLYdNf.js","sources":["../src/framework/field/text/FieldDisplay.vue","../src/framework/field/text/FieldEditor.vue","../src/framework/field/text/config.js"],"sourcesContent":["<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<template>\n <span v-if=\"!isEmpty\">\n {{ formattedValue }}\n </span>\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-input\n v-model=\"_form.value\"\n type=\"textarea\"\n rows=\"5\"\n clearable\n :disabled=\"props.disabled\"\n @input=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElInput } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n type: String,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class TextFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","TextFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;;ACPlB,UAAMI,IAAOC,GACPP,IAAQC,GAMRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;AC9Be,MAAMY,UAAwBC,EAAgB;AAAA,EAC3D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
@@ -1,4 +1,4 @@
1
- import { _ as B, s as V, g as D, l as O, E as $, b as I, c as Q, B as j } from "./index-BX1xTWzJ.js";
1
+ import { _ as B, s as V, g as D, l as O, E as $, b as I, c as Q, B as j } from "./index-BF3lUmGn.js";
2
2
  import { computed as L, ref as b, watch as g, resolveComponent as P, openBlock as i, createElementBlock as N, createBlock as p, unref as _, withCtx as R, createVNode as S, createTextVNode as q, toDisplayString as x, reactive as C, Fragment as U, renderList as W } from "vue";
3
3
  import { ElIcon as z, ElSelect as A, ElOption as G } from "element-plus";
4
4
  import { useRoute as E } from "vue-router";
@@ -170,4 +170,4 @@ class te extends j {
170
170
  export {
171
171
  te as default
172
172
  };
173
- //# sourceMappingURL=config-CzMS2zhn.js.map
173
+ //# sourceMappingURL=config-CtTzTOfQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-CzMS2zhn.js","sources":["../src/framework/field/belongs-to/FieldDisplay.vue","../src/framework/field/belongs-to/FieldEditor.vue","../src/framework/field/belongs-to/config.js"],"sourcesContent":["<template>\n <span>\n <el-icon v-if=\"loading\" class=\"loading\"><Loading /></el-icon>\n <EmptyTip v-else-if=\"isEmpty\" />\n <RouterLink\n v-else-if=\"isRouter(row)\"\n class=\"bld-link mono-data\"\n :to=\"routeTo\"\n >\n {{ displayName }}\n </RouterLink>\n <div v-else>{{ displayName }}</div>\n </span>\n</template>\n\n<script setup>\nimport { ElIcon } from \"element-plus\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { useRoute } from \"vue-router\";\nimport { snakeToCamel } from \"../../utils/str\";\nimport { Loading } from \"@element-plus/icons-vue\";\nimport { getDomainConfig } from \"../../config-loader\";\nimport { computed, ref, watch } from \"vue\";\nimport { setupRouteQuery } from \"../../utils/route-query.js\";\nimport { domainFieldWarning } from \"../../utils/deprecator\";\n\nconst route = useRoute();\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst domain = props.field.belongsTo;\nconst side = route.meta.side;\nconst domainId = props.row[props.field.code];\n\nconst routeTo = computed(() => {\n return {\n path: `/${side}/${domain}/${domainId}`,\n query: { ...setupRouteQuery(route), ...props.field.rowQuery(props.row) },\n };\n});\nconst loading = ref(true);\nconst isEmpty = ref(false);\nconst displayName = ref(\"\");\nlet formatNameFunc = null;\nconst restPromise = getDomainConfig(side, domain).then((config) => {\n formatNameFunc = config.formatName;\n return Promise.resolve(config.rest);\n});\n\nfunction isRouter(isRouter) {\n return props.field.isRouter(props.row, setupRouteQuery(route));\n}\n\nfunction getItem() {\n restPromise.then((restApi) => {\n loading.value = true;\n\n const domainId = props.row[props.field.code];\n const domainName = props.row[snakeToCamel(`${domain}-name`)];\n\n if (!domainId) {\n setDisplayName(false);\n loading.value = false;\n return;\n }\n\n if (domainId && domainName) {\n setDisplayName({ id: domainId, name: domainName });\n loading.value = false;\n return;\n }\n\n const item = { id: domainId };\n restApi\n .getOne(item)\n .then((data) => {\n setDisplayName(data.data);\n loading.value = false;\n })\n .catch((e) => {\n console.log(e);\n });\n });\n}\n\nfunction setDisplayName(data) {\n isEmpty.value = false;\n if (props.field.showName) {\n domainFieldWarning(\n props.field.domain,\n props.field.code,\n \"showName 即将废弃,请使用 formatter\",\n );\n displayName.value = data[props.field.showName];\n return;\n }\n\n if (props.field.formatter) {\n displayName.value = props.field.formatter(data);\n return;\n }\n\n if (data.id && data.name) {\n displayName.value = data.name;\n return;\n }\n\n if (!data) {\n isEmpty.value = true;\n return;\n }\n\n displayName.value = formatNameFunc(data);\n}\n\nwatch(() => props.row, getItem, { immediate: true });\n</script>\n\n<style scoped lang=\"scss\">\n.loading {\n animation: rotating 2s linear infinite;\n}\n</style>\n","<template>\n <el-select\n v-model=\"_form.value\"\n style=\"width: 100%\"\n filterable\n reserve-keyword\n remote-show-suffix\n clearable\n fit-input-width\n :multiple=\"props.field.multiple\"\n :disabled=\"props.disabled\"\n placeholder=\"\"\n remote\n :remote-method=\"remoteSearch\"\n @change=\"change\"\n >\n <template v-for=\"option in options\" :key=\"option.code\">\n <el-option\n :label=\"option.name\"\n :value=\"option.code\"\n :title=\"option.name\"\n :disabled=\"option.disabled\"\n />\n </template>\n </el-select>\n</template>\n\n<script setup>\nimport { ElSelect, ElOption } from \"element-plus\";\nimport { reactive, watch, ref } from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { setupRouteQuery } from \"../../utils/route-query\";\n\nconst route = useRoute();\nconst routeQuery = setupRouteQuery(route);\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Number,\n field: Object,\n disabled: Boolean,\n formData: Object,\n});\nconst _form = reactive({ value: props.modelValue });\nconst options = ref([]);\n\nasync function remoteSearch(keyword) {\n options.value = await props.field.options(\n props.formData,\n routeQuery,\n keyword,\n );\n}\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n\nremoteSearch();\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nclass BelongsToFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.belongsTo = rawConfig.belongsTo;\n this.formChange = rawConfig.formChange || (() => {});\n this.isRouter = this.isRouter(rawConfig);\n this.options = rawConfig.options || (() => [{ code: 0, name: \"未实现\" }]);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.showName = rawConfig.showName;\n this.formatter = rawConfig.formatter;\n this.rowQuery = rawConfig.rowQuery || (() => ({}));\n this.checkValidProperties(rawConfig);\n }\n\n isRouter(rawConfig) {\n const raw = rawConfig.isRouter;\n\n if (typeof raw == \"boolean\") {\n return () => raw;\n }\n\n if (typeof raw == \"function\") {\n return raw;\n }\n\n if (typeof raw == \"undefined\") {\n return () => true;\n }\n\n throw new Exception(`invalid isRouter : ${raw}`);\n }\n}\n\nexport default BelongsToFieldConfig;\n"],"names":["route","useRoute","props","__props","domain","side","domainId","routeTo","computed","setupRouteQuery","loading","ref","isEmpty","displayName","formatNameFunc","restPromise","getDomainConfig","config","isRouter","getItem","restApi","domainName","snakeToCamel","setDisplayName","item","data","e","domainFieldWarning","watch","routeQuery","emit","__emit","_form","reactive","options","remoteSearch","keyword","change","BelongsToFieldConfig","BaseFieldConfig","rawConfig","FieldDisplay","FieldEditor","raw"],"mappings":"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"}
1
+ {"version":3,"file":"config-CtTzTOfQ.js","sources":["../src/framework/field/belongs-to/FieldDisplay.vue","../src/framework/field/belongs-to/FieldEditor.vue","../src/framework/field/belongs-to/config.js"],"sourcesContent":["<template>\n <span>\n <el-icon v-if=\"loading\" class=\"loading\"><Loading /></el-icon>\n <EmptyTip v-else-if=\"isEmpty\" />\n <RouterLink\n v-else-if=\"isRouter(row)\"\n class=\"bld-link mono-data\"\n :to=\"routeTo\"\n >\n {{ displayName }}\n </RouterLink>\n <div v-else>{{ displayName }}</div>\n </span>\n</template>\n\n<script setup>\nimport { ElIcon } from \"element-plus\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { useRoute } from \"vue-router\";\nimport { snakeToCamel } from \"../../utils/str\";\nimport { Loading } from \"@element-plus/icons-vue\";\nimport { getDomainConfig } from \"../../config-loader\";\nimport { computed, ref, watch } from \"vue\";\nimport { setupRouteQuery } from \"../../utils/route-query.js\";\nimport { domainFieldWarning } from \"../../utils/deprecator\";\n\nconst route = useRoute();\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst domain = props.field.belongsTo;\nconst side = route.meta.side;\nconst domainId = props.row[props.field.code];\n\nconst routeTo = computed(() => {\n return {\n path: `/${side}/${domain}/${domainId}`,\n query: { ...setupRouteQuery(route), ...props.field.rowQuery(props.row) },\n };\n});\nconst loading = ref(true);\nconst isEmpty = ref(false);\nconst displayName = ref(\"\");\nlet formatNameFunc = null;\nconst restPromise = getDomainConfig(side, domain).then((config) => {\n formatNameFunc = config.formatName;\n return Promise.resolve(config.rest);\n});\n\nfunction isRouter(isRouter) {\n return props.field.isRouter(props.row, setupRouteQuery(route));\n}\n\nfunction getItem() {\n restPromise.then((restApi) => {\n loading.value = true;\n\n const domainId = props.row[props.field.code];\n const domainName = props.row[snakeToCamel(`${domain}-name`)];\n\n if (!domainId) {\n setDisplayName(false);\n loading.value = false;\n return;\n }\n\n if (domainId && domainName) {\n setDisplayName({ id: domainId, name: domainName });\n loading.value = false;\n return;\n }\n\n const item = { id: domainId };\n restApi\n .getOne(item)\n .then((data) => {\n setDisplayName(data.data);\n loading.value = false;\n })\n .catch((e) => {\n console.log(e);\n });\n });\n}\n\nfunction setDisplayName(data) {\n isEmpty.value = false;\n if (props.field.showName) {\n domainFieldWarning(\n props.field.domain,\n props.field.code,\n \"showName 即将废弃,请使用 formatter\",\n );\n displayName.value = data[props.field.showName];\n return;\n }\n\n if (props.field.formatter) {\n displayName.value = props.field.formatter(data);\n return;\n }\n\n if (data.id && data.name) {\n displayName.value = data.name;\n return;\n }\n\n if (!data) {\n isEmpty.value = true;\n return;\n }\n\n displayName.value = formatNameFunc(data);\n}\n\nwatch(() => props.row, getItem, { immediate: true });\n</script>\n\n<style scoped lang=\"scss\">\n.loading {\n animation: rotating 2s linear infinite;\n}\n</style>\n","<template>\n <el-select\n v-model=\"_form.value\"\n style=\"width: 100%\"\n filterable\n reserve-keyword\n remote-show-suffix\n clearable\n fit-input-width\n :multiple=\"props.field.multiple\"\n :disabled=\"props.disabled\"\n placeholder=\"\"\n remote\n :remote-method=\"remoteSearch\"\n @change=\"change\"\n >\n <template v-for=\"option in options\" :key=\"option.code\">\n <el-option\n :label=\"option.name\"\n :value=\"option.code\"\n :title=\"option.name\"\n :disabled=\"option.disabled\"\n />\n </template>\n </el-select>\n</template>\n\n<script setup>\nimport { ElSelect, ElOption } from \"element-plus\";\nimport { reactive, watch, ref } from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { setupRouteQuery } from \"../../utils/route-query\";\n\nconst route = useRoute();\nconst routeQuery = setupRouteQuery(route);\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Number,\n field: Object,\n disabled: Boolean,\n formData: Object,\n});\nconst _form = reactive({ value: props.modelValue });\nconst options = ref([]);\n\nasync function remoteSearch(keyword) {\n options.value = await props.field.options(\n props.formData,\n routeQuery,\n keyword,\n );\n}\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n\nremoteSearch();\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nclass BelongsToFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.belongsTo = rawConfig.belongsTo;\n this.formChange = rawConfig.formChange || (() => {});\n this.isRouter = this.isRouter(rawConfig);\n this.options = rawConfig.options || (() => [{ code: 0, name: \"未实现\" }]);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.showName = rawConfig.showName;\n this.formatter = rawConfig.formatter;\n this.rowQuery = rawConfig.rowQuery || (() => ({}));\n this.checkValidProperties(rawConfig);\n }\n\n isRouter(rawConfig) {\n const raw = rawConfig.isRouter;\n\n if (typeof raw == \"boolean\") {\n return () => raw;\n }\n\n if (typeof raw == \"function\") {\n return raw;\n }\n\n if (typeof raw == \"undefined\") {\n return () => true;\n }\n\n throw new Exception(`invalid isRouter : ${raw}`);\n }\n}\n\nexport default BelongsToFieldConfig;\n"],"names":["route","useRoute","props","__props","domain","side","domainId","routeTo","computed","setupRouteQuery","loading","ref","isEmpty","displayName","formatNameFunc","restPromise","getDomainConfig","config","isRouter","getItem","restApi","domainName","snakeToCamel","setDisplayName","item","data","e","domainFieldWarning","watch","routeQuery","emit","__emit","_form","reactive","options","remoteSearch","keyword","change","BelongsToFieldConfig","BaseFieldConfig","rawConfig","FieldDisplay","FieldEditor","raw"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { B as o } from "./index-BX1xTWzJ.js";
1
+ import { B as o } from "./index-BF3lUmGn.js";
2
2
  class p extends o {
3
3
  constructor(e, t) {
4
4
  super(e, t), this.component = e.component, this.display = e.component, this.editor = e.component, this.checkValidProperties(e);
@@ -7,4 +7,4 @@ class p extends o {
7
7
  export {
8
8
  p as default
9
9
  };
10
- //# sourceMappingURL=config-C7y05luV.js.map
10
+ //# sourceMappingURL=config-DiYB27JS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-C7y05luV.js","sources":["../src/framework/field/component/config.js"],"sourcesContent":["import BaseFieldConfig from \"../base-field-config\";\n\nexport default class ComponentFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.component = rawConfig.component;\n this.display = rawConfig.component;\n this.editor = rawConfig.component;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["ComponentFieldConfig","BaseFieldConfig","rawConfig","domain"],"mappings":";AAEe,MAAMA,UAA6BC,EAAgB;AAAA,EAChE,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,YAAYD,EAAU,WAC3B,KAAK,UAAUA,EAAU,WACzB,KAAK,SAASA,EAAU,WAExB,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-DiYB27JS.js","sources":["../src/framework/field/component/config.js"],"sourcesContent":["import BaseFieldConfig from \"../base-field-config\";\n\nexport default class ComponentFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.component = rawConfig.component;\n this.display = rawConfig.component;\n this.editor = rawConfig.component;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["ComponentFieldConfig","BaseFieldConfig","rawConfig","domain"],"mappings":";AAEe,MAAMA,UAA6BC,EAAgB;AAAA,EAChE,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,YAAYD,EAAU,WAC3B,KAAK,UAAUA,EAAU,WACzB,KAAK,SAASA,EAAU,WAExB,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { _, E as f, B as h, h as v } from "./index-BX1xTWzJ.js";
1
+ import { _, E as f, B as h, h as v } from "./index-BF3lUmGn.js";
2
2
  import { ref as a, watch as y, openBlock as o, createBlock as d, unref as p, withCtx as n, createElementBlock as u, Fragment as g, renderList as w, createVNode as b, createElementVNode as i, toDisplayString as I, pushScopeId as k, popScopeId as x } from "vue";
3
3
  import { ElSpace as B, ElImage as E } from "element-plus";
4
4
  const F = (t) => (k("data-v-4cb2ce7b"), t = t(), x(), t), S = {
@@ -62,4 +62,4 @@ class P extends h {
62
62
  export {
63
63
  P as default
64
64
  };
65
- //# sourceMappingURL=config-BbXDjdqk.js.map
65
+ //# sourceMappingURL=config-Dv3oakjJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-BbXDjdqk.js","sources":["../src/framework/field/images/FieldDisplay.vue","../src/framework/field/images/config.js"],"sourcesContent":["<script setup>\nimport { ElSpace, ElImage } from \"element-plus\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref, watch } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n\nconst url = ref(null);\nconst urls = ref([]);\n\nwatch(\n () => props.row,\n () => {\n const images = props.row[props.field.code];\n if (images) {\n urls.value = images.map((item) => item.url);\n url.value = urls.value[0];\n }\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <el-space v-if=\"props.row[props.field.code].length > 0\" wrap>\n <div\n v-for=\"image in props.row[props.field.code]\"\n class=\"image-card\"\n style=\"margin-bottom: 20px\"\n >\n <el-image\n :src=\"image.url\"\n fit=\"contain\"\n :preview-src-list=\"urls\"\n class=\"image\"\n >\n <template #error>\n <div class=\"loading-error\">\n <div>图片加载失败</div>\n <div>{{ url }}</div>\n </div>\n </template>\n </el-image>\n </div>\n </el-space>\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\">\n.image-card {\n width: 200px;\n height: 200px;\n display: flex;\n justify-content: center;\n align-items: center;\n background: #eee;\n border: 1px solid #ddd;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.image {\n width: 100%;\n height: 100%;\n}\n\n.loading-error {\n width: 100%;\n height: 100%;\n min-height: 50px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n</style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class ImagesFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.props = rawConfig.props;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.converter = this.defaultBy(rawConfig.converter, (raw) => raw);\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","url","ref","urls","watch","images","item","ImagesFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor","raw"],"mappings":";;;;;;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GASRC,IAAMC,EAAI,IAAI,GACdC,IAAOD,EAAI,CAAA,CAAE;AAEnB,WAAAE;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,cAAMM,IAASN,EAAM,IAAIA,EAAM,MAAM,IAAI;AACzC,QAAIM,MACFF,EAAK,QAAQE,EAAO,IAAI,CAACC,MAASA,EAAK,GAAG,GAC1CL,EAAI,QAAQE,EAAK,MAAM,CAAC;AAAA,MAE3B;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBe,MAAMI,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,QAAQD,EAAU,OACvB,KAAK,UAAUE,GACf,KAAK,SAASC,GACd,KAAK,YAAY,KAAK,UAAUH,EAAU,WAAW,CAACI,MAAQA,CAAG,GAEjE,KAAK,qBAAqBJ,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
1
+ {"version":3,"file":"config-Dv3oakjJ.js","sources":["../src/framework/field/images/FieldDisplay.vue","../src/framework/field/images/config.js"],"sourcesContent":["<script setup>\nimport { ElSpace, ElImage } from \"element-plus\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref, watch } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n\nconst url = ref(null);\nconst urls = ref([]);\n\nwatch(\n () => props.row,\n () => {\n const images = props.row[props.field.code];\n if (images) {\n urls.value = images.map((item) => item.url);\n url.value = urls.value[0];\n }\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <el-space v-if=\"props.row[props.field.code].length > 0\" wrap>\n <div\n v-for=\"image in props.row[props.field.code]\"\n class=\"image-card\"\n style=\"margin-bottom: 20px\"\n >\n <el-image\n :src=\"image.url\"\n fit=\"contain\"\n :preview-src-list=\"urls\"\n class=\"image\"\n >\n <template #error>\n <div class=\"loading-error\">\n <div>图片加载失败</div>\n <div>{{ url }}</div>\n </div>\n </template>\n </el-image>\n </div>\n </el-space>\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\">\n.image-card {\n width: 200px;\n height: 200px;\n display: flex;\n justify-content: center;\n align-items: center;\n background: #eee;\n border: 1px solid #ddd;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.image {\n width: 100%;\n height: 100%;\n}\n\n.loading-error {\n width: 100%;\n height: 100%;\n min-height: 50px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n</style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class ImagesFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.props = rawConfig.props;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.converter = this.defaultBy(rawConfig.converter, (raw) => raw);\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","url","ref","urls","watch","images","item","ImagesFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor","raw"],"mappings":";;;;;;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GASRC,IAAMC,EAAI,IAAI,GACdC,IAAOD,EAAI,CAAA,CAAE;AAEnB,WAAAE;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,cAAMM,IAASN,EAAM,IAAIA,EAAM,MAAM,IAAI;AACzC,QAAIM,MACFF,EAAK,QAAQE,EAAO,IAAI,CAACC,MAASA,EAAK,GAAG,GAC1CL,EAAI,QAAQE,EAAK,MAAM,CAAC;AAAA,MAE3B;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBe,MAAMI,UAA0BC,EAAgB;AAAA,EAC7D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,QAAQD,EAAU,OACvB,KAAK,UAAUE,GACf,KAAK,SAASC,GACd,KAAK,YAAY,KAAK,UAAUH,EAAU,WAAW,CAACI,MAAQA,CAAG,GAEjE,KAAK,qBAAqBJ,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
@@ -1,4 +1,4 @@
1
- import { B as t, F as i } from "./index-BX1xTWzJ.js";
1
+ import { B as t, F as i } from "./index-BF3lUmGn.js";
2
2
  class o extends t {
3
3
  constructor(e, s) {
4
4
  super(e, s), this.editable = () => !1, this.isRouter = typeof e.isRouter > "u" ? !0 : e.isRouter, this.rowQuery = e.rowQuery || (() => ({})), this.display = i, this.fixed = !0, this.checkValidProperties(e);
@@ -7,4 +7,4 @@ class o extends t {
7
7
  export {
8
8
  o as default
9
9
  };
10
- //# sourceMappingURL=config-ClsjosNk.js.map
10
+ //# sourceMappingURL=config-ZW08WCha.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-ClsjosNk.js","sources":["../src/framework/field/row-id/config.js"],"sourcesContent":["import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\n\nexport default class RowIdFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.editable = () => false;\n this.isRouter =\n typeof rawConfig.isRouter === \"undefined\" ? true : rawConfig.isRouter;\n this.rowQuery = rawConfig.rowQuery || (() => ({}));\n this.display = FieldDisplay;\n this.fixed = true;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["RowIdFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay"],"mappings":";AAGe,MAAMA,UAAyBC,EAAgB;AAAA,EAC5D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,WAAW,MAAM,IACtB,KAAK,WACH,OAAOD,EAAU,WAAa,MAAc,KAAOA,EAAU,UAC/D,KAAK,WAAWA,EAAU,aAAa,OAAO,CAAA,KAC9C,KAAK,UAAUE,GACf,KAAK,QAAQ,IAEb,KAAK,qBAAqBF,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-ZW08WCha.js","sources":["../src/framework/field/row-id/config.js"],"sourcesContent":["import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\n\nexport default class RowIdFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.editable = () => false;\n this.isRouter =\n typeof rawConfig.isRouter === \"undefined\" ? true : rawConfig.isRouter;\n this.rowQuery = rawConfig.rowQuery || (() => ({}));\n this.display = FieldDisplay;\n this.fixed = true;\n\n this.checkValidProperties(rawConfig);\n }\n}\n"],"names":["RowIdFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay"],"mappings":";AAGe,MAAMA,UAAyBC,EAAgB;AAAA,EAC5D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,WAAW,MAAM,IACtB,KAAK,WACH,OAAOD,EAAU,WAAa,MAAc,KAAOA,EAAU,UAC/D,KAAK,WAAWA,EAAU,aAAa,OAAO,CAAA,KAC9C,KAAK,UAAUE,GACf,KAAK,QAAQ,IAEb,KAAK,qBAAqBF,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { _ as x, d as k, a as E, v as O, E as C, B as F } from "./index-BX1xTWzJ.js";
1
+ import { _ as x, d as k, a as E, v as O, E as C, B as F } from "./index-BF3lUmGn.js";
2
2
  import { ref as V, watch as j, openBlock as u, createElementBlock as f, Fragment as B, renderList as T, createElementVNode as h, createVNode as c, unref as i, withCtx as _, toDisplayString as b, createBlock as w, createCommentVNode as A, defineAsyncComponent as I, reactive as L } from "vue";
3
3
  import { ElIcon as y, ElLink as N } from "element-plus";
4
4
  const D = { key: 0 }, P = { class: "file-name" }, R = { class: "name" }, U = { class: "file-type" }, $ = { key: 1 }, z = {
@@ -90,7 +90,7 @@ const D = { key: 0 }, P = { class: "file-name" }, R = { class: "name" }, U = { c
90
90
  },
91
91
  emits: ["update:modelValue"],
92
92
  setup(p, { emit: a }) {
93
- const l = I(() => import("./AttachmentUploader-BdDkTump.js")), m = a, d = p, e = L({ value: d.modelValue });
93
+ const l = I(() => import("./AttachmentUploader-DkBTVZW9.js")), m = a, d = p, e = L({ value: d.modelValue });
94
94
  function o(s) {
95
95
  e.value = e.value ? [...e.value, s] : [s];
96
96
  }
@@ -150,4 +150,4 @@ class K extends F {
150
150
  export {
151
151
  K as default
152
152
  };
153
- //# sourceMappingURL=config-C5CioVqt.js.map
153
+ //# sourceMappingURL=config-cPSnYR_W.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-C5CioVqt.js","sources":["../src/framework/field/attachment/FieldDisplay.vue","../src/framework/field/attachment/FieldEditor.vue","../src/framework/field/attachment/config.js"],"sourcesContent":["<template>\n <div v-if=\"attachments.length > 0\">\n <div v-for=\"file in attachments\">\n <div class=\"file-name\">\n <el-icon color=\"#73767a\">\n <Document />\n </el-icon>\n <span class=\"name\">{{ file.name }}</span>\n <span class=\"file-type\">.{{ file.fileType }}</span>\n <el-icon color=\"#409eff\" size=\"16\" @click=\"download(file)\">\n <Download />\n </el-icon>\n <el-link\n v-if=\"file.isPreview\"\n type=\"primary\"\n :href=\"file.url\"\n target=\"_blank\"\n :underline=\"false\"\n >\n <el-icon size=\"16\">\n <View />\n </el-icon>\n </el-link>\n </div>\n </div>\n </div>\n <div v-else>\n <EmptyTip />\n </div>\n</template>\n\n<script setup>\nimport { ElIcon, ElLink } from \"element-plus\";\nimport { Document, Download, View } from \"@element-plus/icons-vue\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref, watch } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst attachments = ref([]);\n\nfunction download(file) {\n fetch(file.url)\n .then((res) => res.blob())\n .then((blob) => {\n const link = document.createElement(\"a\");\n if (blob.type == \"application/x-rar-compressed\") {\n link.href = file.url;\n } else {\n link.href = URL.createObjectURL(blob);\n }\n link.download = file.name;\n document.body.appendChild(link);\n link.click();\n });\n}\n\nfunction isPreview(fileType) {\n const imageExtensions = [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"bmp\", \"pdf\"];\n return imageExtensions.includes(fileType);\n}\n\nwatch(\n () => props.row,\n () => {\n attachments.value = props.row[props.field.code].map((item) => {\n const fileType = item.url.substring(item.url.lastIndexOf(\".\") + 1);\n return {\n ...item,\n fileType: fileType,\n isPreview: isPreview(fileType),\n };\n });\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\">\n.file-name {\n display: flex;\n align-items: center;\n margin: 10px 0 5px 0;\n .file-type {\n height: 22px;\n line-height: 22px;\n margin-right: 5px;\n background: #eeeeee;\n border-radius: 4px;\n font-size: 12px;\n padding: 0 4px;\n }\n .name {\n margin: 0 5px;\n }\n}\n:deep(.el-icon) {\n margin: 0 5px;\n cursor: pointer;\n}\n</style>\n","<template>\n <AttachmentUploader\n :pics=\"_form.value\"\n :props=\"props.field.props ? props.field.props : {}\"\n @on-success=\"(file) => change(file, 'success')\"\n @on-remove=\"(file) => change(file, 'remove')\"\n @on-change=\"(file) => change(file, 'change')\"\n />\n</template>\n\n<script setup>\nimport { reactive, defineAsyncComponent } from \"vue\";\n\nconst AttachmentUploader = defineAsyncComponent(() => {\n return import(\"./AttachmentUploader.vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Array,\n field: Object,\n domainConfig: Object,\n disabled: Boolean,\n formData: Object,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction add(attachment) {\n _form.value = _form.value ? [..._form.value, attachment] : [attachment];\n}\n\nfunction remove(attachment) {\n const index = _form.value.findIndex((item) => item.id === attachment.id);\n _form.value.splice(index, 1);\n}\n\nasync function updateFileName(attachment) {\n const restApi = props.domainConfig.rest;\n const regex = /^[\\u4e00-\\u9fa5\\w-_]+$/;\n\n if (!regex.test(attachment.name)) {\n ElMessage({\n message: \"请勿输入特殊字符!\",\n type: \"warning\",\n });\n return;\n }\n\n await restApi.updateFilesName(attachment).then(() => {\n ElMessage({\n message: \"附件名称已修改!\",\n type: \"success\",\n });\n });\n}\n\nfunction change(image, type) {\n if (type == \"success\") {\n add(image);\n emit(\"update:modelValue\", _form.value);\n return;\n }\n\n if (type == \"remove\") {\n remove(image);\n emit(\"update:modelValue\", _form.value);\n return;\n }\n\n if (type == \"change\") {\n updateFileName(image);\n return;\n }\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class AttachmentFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.attachmentType = rawConfig.attachmentType;\n this.props = rawConfig.props;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","attachments","ref","download","file","res","blob","link","isPreview","fileType","watch","item","AttachmentUploader","defineAsyncComponent","emit","__emit","_form","reactive","add","attachment","remove","index","updateFileName","restApi","change","image","type","AttachmentFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":"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"}
1
+ {"version":3,"file":"config-cPSnYR_W.js","sources":["../src/framework/field/attachment/FieldDisplay.vue","../src/framework/field/attachment/FieldEditor.vue","../src/framework/field/attachment/config.js"],"sourcesContent":["<template>\n <div v-if=\"attachments.length > 0\">\n <div v-for=\"file in attachments\">\n <div class=\"file-name\">\n <el-icon color=\"#73767a\">\n <Document />\n </el-icon>\n <span class=\"name\">{{ file.name }}</span>\n <span class=\"file-type\">.{{ file.fileType }}</span>\n <el-icon color=\"#409eff\" size=\"16\" @click=\"download(file)\">\n <Download />\n </el-icon>\n <el-link\n v-if=\"file.isPreview\"\n type=\"primary\"\n :href=\"file.url\"\n target=\"_blank\"\n :underline=\"false\"\n >\n <el-icon size=\"16\">\n <View />\n </el-icon>\n </el-link>\n </div>\n </div>\n </div>\n <div v-else>\n <EmptyTip />\n </div>\n</template>\n\n<script setup>\nimport { ElIcon, ElLink } from \"element-plus\";\nimport { Document, Download, View } from \"@element-plus/icons-vue\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref, watch } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst attachments = ref([]);\n\nfunction download(file) {\n fetch(file.url)\n .then((res) => res.blob())\n .then((blob) => {\n const link = document.createElement(\"a\");\n if (blob.type == \"application/x-rar-compressed\") {\n link.href = file.url;\n } else {\n link.href = URL.createObjectURL(blob);\n }\n link.download = file.name;\n document.body.appendChild(link);\n link.click();\n });\n}\n\nfunction isPreview(fileType) {\n const imageExtensions = [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"bmp\", \"pdf\"];\n return imageExtensions.includes(fileType);\n}\n\nwatch(\n () => props.row,\n () => {\n attachments.value = props.row[props.field.code].map((item) => {\n const fileType = item.url.substring(item.url.lastIndexOf(\".\") + 1);\n return {\n ...item,\n fileType: fileType,\n isPreview: isPreview(fileType),\n };\n });\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\">\n.file-name {\n display: flex;\n align-items: center;\n margin: 10px 0 5px 0;\n .file-type {\n height: 22px;\n line-height: 22px;\n margin-right: 5px;\n background: #eeeeee;\n border-radius: 4px;\n font-size: 12px;\n padding: 0 4px;\n }\n .name {\n margin: 0 5px;\n }\n}\n:deep(.el-icon) {\n margin: 0 5px;\n cursor: pointer;\n}\n</style>\n","<template>\n <AttachmentUploader\n :pics=\"_form.value\"\n :props=\"props.field.props ? props.field.props : {}\"\n @on-success=\"(file) => change(file, 'success')\"\n @on-remove=\"(file) => change(file, 'remove')\"\n @on-change=\"(file) => change(file, 'change')\"\n />\n</template>\n\n<script setup>\nimport { reactive, defineAsyncComponent } from \"vue\";\n\nconst AttachmentUploader = defineAsyncComponent(() => {\n return import(\"./AttachmentUploader.vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Array,\n field: Object,\n domainConfig: Object,\n disabled: Boolean,\n formData: Object,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction add(attachment) {\n _form.value = _form.value ? [..._form.value, attachment] : [attachment];\n}\n\nfunction remove(attachment) {\n const index = _form.value.findIndex((item) => item.id === attachment.id);\n _form.value.splice(index, 1);\n}\n\nasync function updateFileName(attachment) {\n const restApi = props.domainConfig.rest;\n const regex = /^[\\u4e00-\\u9fa5\\w-_]+$/;\n\n if (!regex.test(attachment.name)) {\n ElMessage({\n message: \"请勿输入特殊字符!\",\n type: \"warning\",\n });\n return;\n }\n\n await restApi.updateFilesName(attachment).then(() => {\n ElMessage({\n message: \"附件名称已修改!\",\n type: \"success\",\n });\n });\n}\n\nfunction change(image, type) {\n if (type == \"success\") {\n add(image);\n emit(\"update:modelValue\", _form.value);\n return;\n }\n\n if (type == \"remove\") {\n remove(image);\n emit(\"update:modelValue\", _form.value);\n return;\n }\n\n if (type == \"change\") {\n updateFileName(image);\n return;\n }\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class AttachmentFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.attachmentType = rawConfig.attachmentType;\n this.props = rawConfig.props;\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["props","__props","attachments","ref","download","file","res","blob","link","isPreview","fileType","watch","item","AttachmentUploader","defineAsyncComponent","emit","__emit","_form","reactive","add","attachment","remove","index","updateFileName","restApi","change","image","type","AttachmentFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { E as c, B as p } from "./index-BX1xTWzJ.js";
1
+ import { E as c, B as p } from "./index-BF3lUmGn.js";
2
2
  import { ref as r, openBlock as i, createElementBlock as f, toDisplayString as h, createBlock as u, reactive as v, watch as _, unref as y } from "vue";
3
3
  import { ElDatePicker as V } from "element-plus";
4
4
  const D = { key: 0 }, Y = {
@@ -56,4 +56,4 @@ class H extends p {
56
56
  export {
57
57
  H as default
58
58
  };
59
- //# sourceMappingURL=config-SWYlqm92.js.map
59
+ //# sourceMappingURL=config-imtlNR-t.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-SWYlqm92.js","sources":["../src/framework/field/datetime/FieldDisplay.vue","../src/framework/field/datetime/FieldEditor.vue","../src/framework/field/datetime/config.js"],"sourcesContent":["<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<template>\n <span v-if=\"!isEmpty\">\n {{ formattedValue }}\n </span>\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-date-picker\n v-model=\"_form.value\"\n :disabled=\"props.disabled\"\n type=\"datetime\"\n format=\"YYYY-MM-DD HH:mm:ss\"\n value-format=\"YYYY-MM-DD HH:mm:ss\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElDatePicker } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class DatetimeFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.width = this.computeWidth(rawConfig);\n\n this.checkValidProperties(rawConfig);\n }\n\n computeWidth(rawConfig) {\n if (rawConfig.width) {\n return rawConfig.width;\n }\n\n return 200;\n }\n}\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","DatetimeFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;ACPlB,UAAMI,IAAOC,GACPP,IAAQC,GAKRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;AC7Be,MAAMY,UAA4BC,EAAgB;AAAA,EAC/D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GACd,KAAK,QAAQ,KAAK,aAAaH,CAAS,GAExC,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AAAA,EAED,aAAaA,GAAW;AACtB,WAAIA,EAAU,QACLA,EAAU,QAGZ;AAAA,EACR;AACH;"}
1
+ {"version":3,"file":"config-imtlNR-t.js","sources":["../src/framework/field/datetime/FieldDisplay.vue","../src/framework/field/datetime/FieldEditor.vue","../src/framework/field/datetime/config.js"],"sourcesContent":["<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<template>\n <span v-if=\"!isEmpty\">\n {{ formattedValue }}\n </span>\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-date-picker\n v-model=\"_form.value\"\n :disabled=\"props.disabled\"\n type=\"datetime\"\n format=\"YYYY-MM-DD HH:mm:ss\"\n value-format=\"YYYY-MM-DD HH:mm:ss\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElDatePicker } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: String,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class DatetimeFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.width = this.computeWidth(rawConfig);\n\n this.checkValidProperties(rawConfig);\n }\n\n computeWidth(rawConfig) {\n if (rawConfig.width) {\n return rawConfig.width;\n }\n\n return 200;\n }\n}\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","DatetimeFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;ACPlB,UAAMI,IAAOC,GACPP,IAAQC,GAKRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;AC7Be,MAAMY,UAA4BC,EAAgB;AAAA,EAC/D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GACd,KAAK,QAAQ,KAAK,aAAaH,CAAS,GAExC,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AAAA,EAED,aAAaA,GAAW;AACtB,WAAIA,EAAU,QACLA,EAAU,QAGZ;AAAA,EACR;AACH;"}
@@ -1,4 +1,4 @@
1
- import { E as m, B as f } from "./index-BX1xTWzJ.js";
1
+ import { E as m, B as f } from "./index-BF3lUmGn.js";
2
2
  import { ref as u, openBlock as s, createElementBlock as d, toDisplayString as h, createBlock as p, createTextVNode as v, reactive as _, watch as y, unref as V } from "vue";
3
3
  import { ElCascader as B } from "element-plus";
4
4
  const k = { key: 0 }, E = {
@@ -57,4 +57,4 @@ class j extends f {
57
57
  export {
58
58
  j as default
59
59
  };
60
- //# sourceMappingURL=config-DTVPd1QF.js.map
60
+ //# sourceMappingURL=config-pxsBixPq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-DTVPd1QF.js","sources":["../src/framework/field/cascader/FieldDisplay.vue","../src/framework/field/cascader/FieldEditor.vue","../src/framework/field/cascader/config.js"],"sourcesContent":["<template>\n <div>\n <span v-if=\"!isEmpty\">\n {{ formattedValue }}\n </span>\n <EmptyTip v-else />\n edit\n </div>\n</template>\n\n<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-cascader\n v-model=\"_form.value\"\n :props=\"props.field.props\"\n clearable\n style=\"width: 100%\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElCascader } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Array,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nclass CascaderFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.props = rawConfig.props || (() => {});\n this.formChange = rawConfig.formChange || (() => {});\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.multiple = this.defaultBy(rawConfig.multiple, false);\n\n this.checkValidProperties(rawConfig);\n }\n}\n\nexport default CascaderFieldConfig;\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","CascaderFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AAcA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;;;;AClBlB,UAAMI,IAAOC,GACPP,IAAQC,GAKRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;AC5BA,MAAMY,UAA4BC,EAAgB;AAAA,EAChD,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,QAAQD,EAAU,UAAU,MAAM;AAAA,IAAE,IACzC,KAAK,aAAaA,EAAU,eAAe,MAAM;AAAA,IAAE,IACnD,KAAK,UAAUE,GACf,KAAK,SAASC,GACd,KAAK,WAAW,KAAK,UAAUH,EAAU,UAAU,EAAK,GAExD,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AACH;"}
1
+ {"version":3,"file":"config-pxsBixPq.js","sources":["../src/framework/field/cascader/FieldDisplay.vue","../src/framework/field/cascader/FieldEditor.vue","../src/framework/field/cascader/config.js"],"sourcesContent":["<template>\n <div>\n <span v-if=\"!isEmpty\">\n {{ formattedValue }}\n </span>\n <EmptyTip v-else />\n edit\n </div>\n</template>\n\n<script setup>\nimport EmptyTip from \"../../component/EmptyTip.vue\";\nimport { ref } from \"vue\";\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\nconst isEmpty = ref(false);\nconst formattedValue = ref(\"...\");\nconst value = props.row[props.field.code];\n\nif (value === undefined || value === null) {\n isEmpty.value = true;\n} else if (`${value}`.trim() === \"\") {\n isEmpty.value = true;\n} else {\n formattedValue.value = value;\n isEmpty.value = false;\n}\n</script>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <el-cascader\n v-model=\"_form.value\"\n :props=\"props.field.props\"\n clearable\n style=\"width: 100%\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElCascader } from \"element-plus\";\nimport { reactive, watch } from \"vue\";\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Array,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nclass CascaderFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.props = rawConfig.props || (() => {});\n this.formChange = rawConfig.formChange || (() => {});\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n this.multiple = this.defaultBy(rawConfig.multiple, false);\n\n this.checkValidProperties(rawConfig);\n }\n}\n\nexport default CascaderFieldConfig;\n"],"names":["props","__props","isEmpty","ref","formattedValue","value","emit","__emit","_form","reactive","change","watch","CascaderFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;AAcA,UAAMA,IAAQC,GAQRC,IAAUC,EAAI,EAAK,GACnBC,IAAiBD,EAAI,KAAK,GAC1BE,IAAQL,EAAM,IAAIA,EAAM,MAAM,IAAI;AAExC,WAA2BK,KAAU,QAE1B,GAAGA,CAAK,GAAG,KAAI,MAAO,KAD/BH,EAAQ,QAAQ,MAIhBE,EAAe,QAAQC,GACvBH,EAAQ,QAAQ;;;;;;;;;;;;;;AClBlB,UAAMI,IAAOC,GACPP,IAAQC,GAKRO,IAAQC,EAAS,EAAE,OAAOT,EAAM,WAAY,CAAA;AAElD,aAASU,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAQ,EAAM,QAAQR,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;AC5BA,MAAMY,UAA4BC,EAAgB;AAAA,EAChD,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,QAAQD,EAAU,UAAU,MAAM;AAAA,IAAE,IACzC,KAAK,aAAaA,EAAU,eAAe,MAAM;AAAA,IAAE,IACnD,KAAK,UAAUE,GACf,KAAK,SAASC,GACd,KAAK,WAAW,KAAK,UAAUH,EAAU,UAAU,EAAK,GAExD,KAAK,qBAAqBA,CAAS;AAAA,EACpC;AACH;"}
@@ -1,4 +1,4 @@
1
- import { E as V, B as y } from "./index-BX1xTWzJ.js";
1
+ import { E as V, B as y } from "./index-BF3lUmGn.js";
2
2
  import { defineAsyncComponent as c, ref as m, watch as p, openBlock as i, createBlock as u, unref as f, reactive as b } from "vue";
3
3
  const h = {
4
4
  __name: "FieldDisplay",
@@ -73,4 +73,4 @@ class k extends y {
73
73
  export {
74
74
  k as default
75
75
  };
76
- //# sourceMappingURL=config-CsDCisYj.js.map
76
+ //# sourceMappingURL=config-rtFPHOZL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-CsDCisYj.js","sources":["../src/framework/field/json/FieldDisplay.vue","../src/framework/field/json/FieldEditor.vue","../src/framework/field/json/config.js"],"sourcesContent":["<script setup>\nimport { defineAsyncComponent, ref, watch } from \"vue\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\n\nconst JsonEditorVue = defineAsyncComponent(() => {\n return import(\"json-editor-vue\");\n});\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n\nconst valid = ref(false);\nconst formattedValue = ref(\"加载中...\");\n\nwatch(\n () => props.row,\n () => {\n valid.value = false;\n const value = props.row[props.field.code];\n if (value === undefined || value === null) {\n return;\n }\n\n if (`${value}`.trim() === \"\") {\n return;\n }\n\n valid.value = true;\n formattedValue.value = value;\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <JsonEditorVue\n v-if=\"valid\"\n v-model=\"formattedValue\"\n mode=\"text\"\n :main-menu-bar=\"false\"\n :navigation-bar=\"false\"\n :read-only=\"true\"\n />\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <JsonEditorVue\n v-model=\"_form.value\"\n style=\"width: 100%; height: 300px\"\n mode=\"text\"\n :main-menu-bar=\"false\"\n :navigation-bar=\"false\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { reactive, watch, defineAsyncComponent } from \"vue\";\n\nconst JsonEditorVue = defineAsyncComponent(() => {\n return import(\"json-editor-vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Object,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class JsonFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["JsonEditorVue","defineAsyncComponent","props","__props","valid","ref","formattedValue","watch","value","emit","__emit","_form","reactive","change","JsonFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;AAIA,UAAMA,IAAgBC,EAAqB,MAClC,OAAO,iBAAiB,CAChC,GAEKC,IAAQC,GASRC,IAAQC,EAAI,EAAK,GACjBC,IAAiBD,EAAI,QAAQ;AAEnC,WAAAE;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAE,EAAM,QAAQ;AACd,cAAMI,IAAQN,EAAM,IAAIA,EAAM,MAAM,IAAI;AACxC,QAA2BM,KAAU,QAIjC,GAAGA,CAAK,GAAG,KAAI,MAAO,OAI1BJ,EAAM,QAAQ,IACdE,EAAe,QAAQE;AAAA,MACxB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;;;;;;;;;ACvBA,UAAMR,IAAgBC,EAAqB,MAClC,OAAO,iBAAiB,CAChC,GAEKQ,IAAOC,GACPR,IAAQC,GAKRQ,IAAQC,EAAS,EAAE,OAAOV,EAAM,WAAY,CAAA;AAElD,aAASW,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAJ;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAS,EAAM,QAAQT,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;AChCe,MAAMY,UAAwBC,EAAgB;AAAA,EAC3D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}
1
+ {"version":3,"file":"config-rtFPHOZL.js","sources":["../src/framework/field/json/FieldDisplay.vue","../src/framework/field/json/FieldEditor.vue","../src/framework/field/json/config.js"],"sourcesContent":["<script setup>\nimport { defineAsyncComponent, ref, watch } from \"vue\";\nimport EmptyTip from \"../../component/EmptyTip.vue\";\n\nconst JsonEditorVue = defineAsyncComponent(() => {\n return import(\"json-editor-vue\");\n});\n\nconst props = defineProps({\n field: {\n type: Object,\n },\n row: {\n type: Object,\n },\n});\n\nconst valid = ref(false);\nconst formattedValue = ref(\"加载中...\");\n\nwatch(\n () => props.row,\n () => {\n valid.value = false;\n const value = props.row[props.field.code];\n if (value === undefined || value === null) {\n return;\n }\n\n if (`${value}`.trim() === \"\") {\n return;\n }\n\n valid.value = true;\n formattedValue.value = value;\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <JsonEditorVue\n v-if=\"valid\"\n v-model=\"formattedValue\"\n mode=\"text\"\n :main-menu-bar=\"false\"\n :navigation-bar=\"false\"\n :read-only=\"true\"\n />\n <EmptyTip v-else />\n</template>\n\n<style scoped lang=\"scss\"></style>\n","<template>\n <JsonEditorVue\n v-model=\"_form.value\"\n style=\"width: 100%; height: 300px\"\n mode=\"text\"\n :main-menu-bar=\"false\"\n :navigation-bar=\"false\"\n @change=\"change\"\n />\n</template>\n\n<script setup>\nimport { reactive, watch, defineAsyncComponent } from \"vue\";\n\nconst JsonEditorVue = defineAsyncComponent(() => {\n return import(\"json-editor-vue\");\n});\n\nconst emit = defineEmits([\"update:modelValue\"]);\nconst props = defineProps({\n modelValue: Object,\n field: Object,\n disabled: Boolean,\n});\nconst _form = reactive({ value: props.modelValue });\n\nfunction change() {\n emit(\"update:modelValue\", _form.value);\n}\n\nwatch(\n () => props.modelValue,\n () => {\n _form.value = props.modelValue;\n },\n { immediate: true },\n);\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import BaseFieldConfig from \"../base-field-config\";\nimport FieldDisplay from \"./FieldDisplay.vue\";\nimport FieldEditor from \"./FieldEditor.vue\";\n\nexport default class JsonFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n\n defaultConfig() {\n return {\n showInList: false,\n };\n }\n}\n"],"names":["JsonEditorVue","defineAsyncComponent","props","__props","valid","ref","formattedValue","watch","value","emit","__emit","_form","reactive","change","JsonFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;AAIA,UAAMA,IAAgBC,EAAqB,MAClC,OAAO,iBAAiB,CAChC,GAEKC,IAAQC,GASRC,IAAQC,EAAI,EAAK,GACjBC,IAAiBD,EAAI,QAAQ;AAEnC,WAAAE;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAE,EAAM,QAAQ;AACd,cAAMI,IAAQN,EAAM,IAAIA,EAAM,MAAM,IAAI;AACxC,QAA2BM,KAAU,QAIjC,GAAGA,CAAK,GAAG,KAAI,MAAO,OAI1BJ,EAAM,QAAQ,IACdE,EAAe,QAAQE;AAAA,MACxB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;;;;;;;;;ACvBA,UAAMR,IAAgBC,EAAqB,MAClC,OAAO,iBAAiB,CAChC,GAEKQ,IAAOC,GACPR,IAAQC,GAKRQ,IAAQC,EAAS,EAAE,OAAOV,EAAM,WAAY,CAAA;AAElD,aAASW,IAAS;AAChB,MAAAJ,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAJ;AAAA,MACE,MAAML,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAS,EAAM,QAAQT,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB;;;;;;;;;;;AChCe,MAAMY,UAAwBC,EAAgB;AAAA,EAC3D,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUC,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AAAA,EAED,gBAAgB;AACd,WAAO;AAAA,MACL,YAAY;AAAA,IAClB;AAAA,EACG;AACH;"}