kouxiangtang 0.0.37 → 0.0.39
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.
- package/dist/{AttachmentUploader-CWLoKoKO.js → AttachmentUploader-BdDkTump.js} +10 -10
- package/dist/{AttachmentUploader-CWLoKoKO.js.map → AttachmentUploader-BdDkTump.js.map} +1 -1
- package/dist/{ImageUploader-BPCSl-Ij.js → ImageUploader-CHkIpPtj.js} +8 -8
- package/dist/{ImageUploader-BPCSl-Ij.js.map → ImageUploader-CHkIpPtj.js.map} +1 -1
- package/dist/{ImagesUploader-CX234qgB.js → ImagesUploader-p9a3bu1Q.js} +2 -2
- package/dist/{ImagesUploader-CX234qgB.js.map → ImagesUploader-p9a3bu1Q.js.map} +1 -1
- package/dist/{RichTextEditor-BDGc1wPT.js → RichTextEditor-DJYZD9vY.js} +2 -2
- package/dist/RichTextEditor-DJYZD9vY.js.map +1 -0
- package/dist/{color-Dy_WcVKE.js → color-DbNhHNpt.js} +81 -81
- package/dist/{color-Dy_WcVKE.js.map → color-DbNhHNpt.js.map} +1 -1
- package/dist/{config-CTx2tfCI.js → config-B1iWoDgQ.js} +3 -3
- package/dist/{config-CTx2tfCI.js.map → config-B1iWoDgQ.js.map} +1 -1
- package/dist/{config-BhyI_tQf.js → config-BDG6ljUO.js} +2 -2
- package/dist/{config-BhyI_tQf.js.map → config-BDG6ljUO.js.map} +1 -1
- package/dist/{config-Dr-5teuG.js → config-BUyzXYu7.js} +3 -3
- package/dist/{config-Dr-5teuG.js.map → config-BUyzXYu7.js.map} +1 -1
- package/dist/{config-BC-Ld-zA.js → config-BbXDjdqk.js} +18 -13
- package/dist/{config-BC-Ld-zA.js.map → config-BbXDjdqk.js.map} +1 -1
- package/dist/{config-CNyStefo.js → config-BeivkfGi.js} +16 -11
- package/dist/{config-CNyStefo.js.map → config-BeivkfGi.js.map} +1 -1
- package/dist/{config-siOyGs2I.js → config-BmOWXJKs.js} +14 -9
- package/dist/config-BmOWXJKs.js.map +1 -0
- package/dist/{config-Bmjz4vdR.js → config-C5CioVqt.js} +45 -38
- package/dist/config-C5CioVqt.js.map +1 -0
- package/dist/{config-BeHPbbQz.js → config-C7y05luV.js} +2 -2
- package/dist/{config-BeHPbbQz.js.map → config-C7y05luV.js.map} +1 -1
- package/dist/{config-RrvqfU89.js → config-ClsjosNk.js} +2 -2
- package/dist/{config-RrvqfU89.js.map → config-ClsjosNk.js.map} +1 -1
- package/dist/{config-HAzXnrOe.js → config-CsDCisYj.js} +11 -6
- package/dist/{config-HAzXnrOe.js.map → config-CsDCisYj.js.map} +1 -1
- package/dist/{config-CYk9YSf5.js → config-CzMS2zhn.js} +48 -40
- package/dist/config-CzMS2zhn.js.map +1 -0
- package/dist/{config-BHuFyLph.js → config-DTVPd1QF.js} +2 -2
- package/dist/{config-BHuFyLph.js.map → config-DTVPd1QF.js.map} +1 -1
- package/dist/{config-DTiBkJJz.js → config-DuvmS9LR.js} +3 -3
- package/dist/{config-DTiBkJJz.js.map → config-DuvmS9LR.js.map} +1 -1
- package/dist/{config-yR53DOJ7.js → config-SWYlqm92.js} +2 -2
- package/dist/{config-yR53DOJ7.js.map → config-SWYlqm92.js.map} +1 -1
- package/dist/{config-DW7Z8H75.js → config-Xu4Cnivk.js} +2 -2
- package/dist/{config-DW7Z8H75.js.map → config-Xu4Cnivk.js.map} +1 -1
- package/dist/{config-Do1AGSTp.js → config-trKFYrjO.js} +2 -2
- package/dist/{config-Do1AGSTp.js.map → config-trKFYrjO.js.map} +1 -1
- package/dist/{index-BwzGvDow.js → index-BX1xTWzJ.js} +1217 -1205
- package/dist/index-BX1xTWzJ.js.map +1 -0
- package/dist/kouxiangtang.js +10 -10
- package/dist/kouxiangtang.umd.cjs +8 -8
- package/dist/kouxiangtang.umd.cjs.map +1 -1
- package/dist/style.css +2 -2
- package/package.json +1 -1
- package/dist/RichTextEditor-BDGc1wPT.js.map +0 -1
- package/dist/config-Bmjz4vdR.js.map +0 -1
- package/dist/config-CYk9YSf5.js.map +0 -1
- package/dist/config-siOyGs2I.js.map +0 -1
- package/dist/index-BwzGvDow.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-BUyzXYu7.js","sources":["../src/framework/field/tree-select/FieldDisplay.vue","../src/framework/field/tree-select/FieldEditor.vue","../src/framework/field/tree-select/config.js"],"sourcesContent":["<script setup>\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 = `<未知: ${label}>`;\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-tree-select\n v-model=\"_form.value\"\n style=\"width: 100%\"\n :data=\"options\"\n :props=\"defaultTreeSelectProps\"\n node-key=\"id\"\n :multiple=\"props.field.multiple\"\n :render-after-expand=\"false\"\n show-checkbox\n check-on-click-node\n :expand-on-click-node=\"false\"\n default-expand-all\n highlight-current\n :disabled=\"props.field.disabled\"\n :check-strictly=\"true\"\n remote\n filterable\n :remote-method=\"remoteSearch\"\n @check=\"change\"\n />\n</template>\n\n<script setup>\nimport { ElTreeSelect } 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([]);\nconst defaultTreeSelectProps = {\n label: \"name\",\n children: \"children\",\n value: \"id\",\n};\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 TreeFieldConfig extends BaseFieldConfig {\n constructor(rawConfig, domain) {\n super(rawConfig, domain);\n this.options = rawConfig.options || (() => []);\n this.formChange = rawConfig.formChange || (() => {});\n this.multiple = this.defaultBy(rawConfig.multiple, false);\n this.display = FieldDisplay;\n this.editor = FieldEditor;\n\n this.checkValidProperties(rawConfig);\n }\n}\n\nexport default TreeFieldConfig;\n"],"names":["props","__props","invalidTip","ref","found","items","getSelectName","val","label","options","selectedOptions","item","color","watch","route","useRoute","routeQuery","setupRouteQuery","emit","__emit","_form","reactive","defaultTreeSelectProps","remoteSearch","keyword","change","TreeFieldConfig","BaseFieldConfig","rawConfig","domain","FieldDisplay","FieldEditor"],"mappings":";;;;;;;;;;;;;;;;;;;AAKA,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,GAChCQ,IAAQR,EAAM,MAAM;AAC1B,UAAyBO,KAAQ,MAAM;AACrC,QAAAL,EAAW,QAAQ,OACnBE,EAAM,QAAQ;AACd;AAAA,MACD;AAED,YAAMK,IAAU,MAAMT,EAAM,MAAM,QAAO;AACzC,UAAI,CAACS,GAAS;AACZ,QAAAP,EAAW,QAAQ,QAAQM,CAAK,KAChCJ,EAAM,QAAQ;AACd;AAAA,MACD;AAED,UAAIM,IAAkB,CAAA;AAOtB,UANIV,EAAM,MAAM,WACdU,IAAkBD,EAAQ,OAAO,CAACE,MAASJ,EAAI,SAASI,EAAK,IAAI,CAAC,IAElED,IAAkBD,EAAQ,OAAO,CAACE,MAASJ,MAAQI,EAAK,IAAI,GAG1DD,EAAgB,WAAW,GAAG;AAChC,QAAAR,EAAW,QAAQ,SAASK,CAAG,KAC/BH,EAAM,QAAQ;AACd;AAAA,MACD;AAED,MAAAC,EAAM,QAAQK,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,GAEFP,EAAM,QAAQ;AAAA,IAChB;AAEA,WAAAS,EAAM,MAAMb,EAAM,KAAKM,GAAe,EAAE,WAAW,GAAI,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BzD,UAAMQ,IAAQC,EAAQ,GAChBC,IAAaC,EAAgBH,CAAK,GAClCI,IAAOC,GACPnB,IAAQC,GAMRmB,IAAQC,EAAS,EAAE,OAAOrB,EAAM,WAAY,CAAA,GAC5CS,IAAUN,EAAI,CAAA,CAAE,GAChBmB,IAAyB;AAAA,MAC7B,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,IACT;AAEA,mBAAeC,EAAaC,GAAS;AACnC,MAAAf,EAAQ,QAAQ,MAAMT,EAAM,MAAM;AAAA,QAChCA,EAAM;AAAA,QACNgB;AAAA,QACAQ;AAAA,MACJ;AAAA,IACA;AAEA,aAASC,IAAS;AAChB,MAAAP,EAAK,qBAAqBE,EAAM,KAAK;AAAA,IACvC;AAEA,WAAAP;AAAA,MACE,MAAMb,EAAM;AAAA,MACZ,MAAM;AACJ,QAAAoB,EAAM,QAAQpB,EAAM;AAAA,MACrB;AAAA,MACD,EAAE,WAAW,GAAM;AAAA,IACrB,GACAuB;;;;;;;;;;;;;;;;;;;;;;;AC7DA,MAAMG,UAAwBC,EAAgB;AAAA,EAC5C,YAAYC,GAAWC,GAAQ;AAC7B,UAAMD,GAAWC,CAAM,GACvB,KAAK,UAAUD,EAAU,YAAY,MAAM,CAAE,IAC7C,KAAK,aAAaA,EAAU,eAAe,MAAM;AAAA,IAAE,IACnD,KAAK,WAAW,KAAK,UAAUA,EAAU,UAAU,EAAK,GACxD,KAAK,UAAUE,GACf,KAAK,SAASC,GAEd,KAAK,qBAAqBH,CAAS;AAAA,EACpC;AACH;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { _, E as f, B as h,
|
|
2
|
-
import { ref as a, watch as y, openBlock as o, createBlock as
|
|
3
|
-
import { ElSpace as
|
|
4
|
-
const F = (t) => (
|
|
1
|
+
import { _, E as f, B as h, h as v } from "./index-BX1xTWzJ.js";
|
|
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
|
+
import { ElSpace as B, ElImage as E } from "element-plus";
|
|
4
|
+
const F = (t) => (k("data-v-4cb2ce7b"), t = t(), x(), t), S = {
|
|
5
5
|
class: "image-card",
|
|
6
6
|
style: { "margin-bottom": "20px" }
|
|
7
7
|
}, D = { class: "loading-error" }, V = /* @__PURE__ */ F(() => /* @__PURE__ */ i("div", null, "图片加载失败", -1)), j = {
|
|
@@ -23,13 +23,13 @@ const F = (t) => (x("data-v-4cb2ce7b"), t = t(), B(), t), S = {
|
|
|
23
23
|
c && (s.value = c.map((l) => l.url), r.value = s.value[0]);
|
|
24
24
|
},
|
|
25
25
|
{ immediate: !0 }
|
|
26
|
-
), (c, l) => e.row[e.field.code].length > 0 ? (o(), p(
|
|
26
|
+
), (c, l) => e.row[e.field.code].length > 0 ? (o(), d(p(B), {
|
|
27
27
|
key: 0,
|
|
28
28
|
wrap: ""
|
|
29
29
|
}, {
|
|
30
30
|
default: n(() => [
|
|
31
31
|
(o(!0), u(g, null, w(e.row[e.field.code], (m) => (o(), u("div", S, [
|
|
32
|
-
b(
|
|
32
|
+
b(p(E), {
|
|
33
33
|
src: m.url,
|
|
34
34
|
fit: "contain",
|
|
35
35
|
"preview-src-list": s.value,
|
|
@@ -38,7 +38,7 @@ const F = (t) => (x("data-v-4cb2ce7b"), t = t(), B(), t), S = {
|
|
|
38
38
|
error: n(() => [
|
|
39
39
|
i("div", D, [
|
|
40
40
|
V,
|
|
41
|
-
i("div", null,
|
|
41
|
+
i("div", null, I(r.value), 1)
|
|
42
42
|
])
|
|
43
43
|
]),
|
|
44
44
|
_: 2
|
|
@@ -46,15 +46,20 @@ const F = (t) => (x("data-v-4cb2ce7b"), t = t(), B(), t), S = {
|
|
|
46
46
|
]))), 256))
|
|
47
47
|
]),
|
|
48
48
|
_: 1
|
|
49
|
-
})) : (o(),
|
|
49
|
+
})) : (o(), d(f, { key: 1 }));
|
|
50
50
|
}
|
|
51
|
-
},
|
|
52
|
-
class
|
|
51
|
+
}, L = /* @__PURE__ */ _(j, [["__scopeId", "data-v-4cb2ce7b"]]);
|
|
52
|
+
class P extends h {
|
|
53
53
|
constructor(e, r) {
|
|
54
|
-
super(e, r), this.props = e.props, this.display =
|
|
54
|
+
super(e, r), this.props = e.props, this.display = L, this.editor = v, this.converter = this.defaultBy(e.converter, (s) => s), this.checkValidProperties(e);
|
|
55
|
+
}
|
|
56
|
+
defaultConfig() {
|
|
57
|
+
return {
|
|
58
|
+
showInList: !1
|
|
59
|
+
};
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
62
|
export {
|
|
58
|
-
|
|
63
|
+
P as default
|
|
59
64
|
};
|
|
60
|
-
//# sourceMappingURL=config-
|
|
65
|
+
//# sourceMappingURL=config-BbXDjdqk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { E as p, B as m } from "./index-
|
|
2
|
-
import { ref as
|
|
1
|
+
import { E as p, B as m } from "./index-BX1xTWzJ.js";
|
|
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 = {
|
|
5
5
|
__name: "FieldDisplay",
|
|
@@ -12,10 +12,10 @@ const h = { key: 0 }, E = {
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
setup(o) {
|
|
15
|
-
const l = o, t =
|
|
16
|
-
return e == null || `${e}`.trim() === "" ? t.value = !0 : (a.value = e, t.value = !1), (i,
|
|
15
|
+
const l = o, t = n(!1), a = n("..."), e = l.row[l.field.code];
|
|
16
|
+
return e == null || `${e}`.trim() === "" ? t.value = !0 : (a.value = e, t.value = !1), (i, d) => t.value ? (s(), u(p, { key: 1 })) : (s(), f("span", h, v(a.value), 1));
|
|
17
17
|
}
|
|
18
|
-
},
|
|
18
|
+
}, g = E, k = {
|
|
19
19
|
__name: "FieldEditor",
|
|
20
20
|
props: {
|
|
21
21
|
modelValue: String,
|
|
@@ -35,7 +35,7 @@ const h = { key: 0 }, E = {
|
|
|
35
35
|
e.value = a.modelValue;
|
|
36
36
|
},
|
|
37
37
|
{ immediate: !0 }
|
|
38
|
-
), (
|
|
38
|
+
), (d, r) => (s(), u(V(b), {
|
|
39
39
|
modelValue: e.value,
|
|
40
40
|
"onUpdate:modelValue": r[0] || (r[0] = (c) => e.value = c),
|
|
41
41
|
type: "textarea",
|
|
@@ -45,13 +45,18 @@ const h = { key: 0 }, E = {
|
|
|
45
45
|
onInput: i
|
|
46
46
|
}, null, 8, ["modelValue", "disabled"]));
|
|
47
47
|
}
|
|
48
|
-
},
|
|
49
|
-
class
|
|
48
|
+
}, x = k;
|
|
49
|
+
class j extends m {
|
|
50
50
|
constructor(l, t) {
|
|
51
|
-
super(l, t), this.display =
|
|
51
|
+
super(l, t), this.display = g, this.editor = x, this.checkValidProperties(l);
|
|
52
|
+
}
|
|
53
|
+
defaultConfig() {
|
|
54
|
+
return {
|
|
55
|
+
showInList: !1
|
|
56
|
+
};
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
59
|
export {
|
|
55
|
-
|
|
60
|
+
j as default
|
|
56
61
|
};
|
|
57
|
-
//# sourceMappingURL=config-
|
|
62
|
+
//# sourceMappingURL=config-BeivkfGi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
import { openBlock as r, createElementBlock as
|
|
1
|
+
import { _ as c, B as a } from "./index-BX1xTWzJ.js";
|
|
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",
|
|
5
5
|
props: {
|
|
@@ -12,14 +12,14 @@ const v = { class: "editor-field" }, y = ["innerHTML"], V = {
|
|
|
12
12
|
},
|
|
13
13
|
setup(t) {
|
|
14
14
|
const e = t;
|
|
15
|
-
return (o, n) => (r(),
|
|
15
|
+
return (o, n) => (r(), l("div", v, [
|
|
16
16
|
p("div", {
|
|
17
17
|
class: "content",
|
|
18
18
|
innerHTML: e.row[e.field.code]
|
|
19
19
|
}, null, 8, y)
|
|
20
20
|
]));
|
|
21
21
|
}
|
|
22
|
-
}, x = /* @__PURE__ */
|
|
22
|
+
}, x = /* @__PURE__ */ c(V, [["__scopeId", "data-v-02b50564"]]), E = { style: { width: "100%" } }, F = {
|
|
23
23
|
__name: "FieldEditor",
|
|
24
24
|
props: {
|
|
25
25
|
modelValue: String,
|
|
@@ -28,13 +28,13 @@ 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-
|
|
31
|
+
const o = u(() => import("./RichTextEditor-DJYZD9vY.js")), n = e, s = _({ value: t.modelValue });
|
|
32
32
|
return m(
|
|
33
33
|
() => s.value,
|
|
34
34
|
() => {
|
|
35
35
|
n("update:modelValue", s.value);
|
|
36
36
|
}
|
|
37
|
-
), (
|
|
37
|
+
), (w, i) => (r(), l("div", E, [
|
|
38
38
|
f(h(o), {
|
|
39
39
|
content: s.value,
|
|
40
40
|
"onUpdate:content": i[0] || (i[0] = (d) => s.value = d)
|
|
@@ -42,12 +42,17 @@ const v = { class: "editor-field" }, y = ["innerHTML"], V = {
|
|
|
42
42
|
]));
|
|
43
43
|
}
|
|
44
44
|
}, b = F;
|
|
45
|
-
class
|
|
45
|
+
class k extends a {
|
|
46
46
|
constructor(e, o) {
|
|
47
47
|
super(e, o), this.display = x, this.editor = b, this.checkValidProperties(e);
|
|
48
48
|
}
|
|
49
|
+
defaultConfig() {
|
|
50
|
+
return {
|
|
51
|
+
showInList: !1
|
|
52
|
+
};
|
|
53
|
+
}
|
|
49
54
|
}
|
|
50
55
|
export {
|
|
51
|
-
|
|
56
|
+
k as default
|
|
52
57
|
};
|
|
53
|
-
//# sourceMappingURL=config-
|
|
58
|
+
//# sourceMappingURL=config-BmOWXJKs.js.map
|
|
@@ -0,0 +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,7 +1,7 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
import { ref as V, watch as j, openBlock as u, createElementBlock as
|
|
3
|
-
import { ElIcon as
|
|
4
|
-
const
|
|
1
|
+
import { _ as x, d as k, a as E, v as O, E as C, B as F } from "./index-BX1xTWzJ.js";
|
|
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
|
+
import { ElIcon as y, ElLink as N } from "element-plus";
|
|
4
|
+
const D = { key: 0 }, P = { class: "file-name" }, R = { class: "name" }, U = { class: "file-type" }, $ = { key: 1 }, z = {
|
|
5
5
|
__name: "FieldDisplay",
|
|
6
6
|
props: {
|
|
7
7
|
field: {
|
|
@@ -19,7 +19,7 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
19
19
|
o.type == "application/x-rar-compressed" ? n.href = e.url : n.href = URL.createObjectURL(o), n.download = e.name, document.body.appendChild(n), n.click();
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function d(e) {
|
|
23
23
|
return ["jpg", "jpeg", "png", "gif", "webp", "bmp", "pdf"].includes(e);
|
|
24
24
|
}
|
|
25
25
|
return j(
|
|
@@ -30,43 +30,43 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
30
30
|
return {
|
|
31
31
|
...e,
|
|
32
32
|
fileType: o,
|
|
33
|
-
isPreview:
|
|
33
|
+
isPreview: d(o)
|
|
34
34
|
};
|
|
35
35
|
});
|
|
36
36
|
},
|
|
37
37
|
{ immediate: !0 }
|
|
38
|
-
), (e, o) => (u(),
|
|
39
|
-
(u(!0),
|
|
40
|
-
h("div",
|
|
41
|
-
|
|
42
|
-
default:
|
|
43
|
-
|
|
38
|
+
), (e, o) => l.value.length > 0 ? (u(), f("div", D, [
|
|
39
|
+
(u(!0), f(B, null, T(l.value, (n) => (u(), f("div", null, [
|
|
40
|
+
h("div", P, [
|
|
41
|
+
c(i(y), { color: "#73767a" }, {
|
|
42
|
+
default: _(() => [
|
|
43
|
+
c(i(k))
|
|
44
44
|
]),
|
|
45
45
|
_: 1
|
|
46
46
|
}),
|
|
47
|
-
h("span",
|
|
48
|
-
h("span",
|
|
49
|
-
|
|
47
|
+
h("span", R, b(n.name), 1),
|
|
48
|
+
h("span", U, "." + b(n.fileType), 1),
|
|
49
|
+
c(i(y), {
|
|
50
50
|
color: "#409eff",
|
|
51
51
|
size: "16",
|
|
52
|
-
onClick: (
|
|
52
|
+
onClick: (g) => m(n)
|
|
53
53
|
}, {
|
|
54
|
-
default:
|
|
55
|
-
|
|
54
|
+
default: _(() => [
|
|
55
|
+
c(i(E))
|
|
56
56
|
]),
|
|
57
57
|
_: 2
|
|
58
58
|
}, 1032, ["onClick"]),
|
|
59
|
-
n.isPreview ? (u(), w(i(
|
|
59
|
+
n.isPreview ? (u(), w(i(N), {
|
|
60
60
|
key: 0,
|
|
61
61
|
type: "primary",
|
|
62
62
|
href: n.url,
|
|
63
63
|
target: "_blank",
|
|
64
64
|
underline: !1
|
|
65
65
|
}, {
|
|
66
|
-
default:
|
|
67
|
-
|
|
68
|
-
default:
|
|
69
|
-
|
|
66
|
+
default: _(() => [
|
|
67
|
+
c(i(y), { size: "16" }, {
|
|
68
|
+
default: _(() => [
|
|
69
|
+
c(i(O))
|
|
70
70
|
]),
|
|
71
71
|
_: 1
|
|
72
72
|
})
|
|
@@ -75,9 +75,11 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
75
75
|
}, 1032, ["href"])) : A("", !0)
|
|
76
76
|
])
|
|
77
77
|
]))), 256))
|
|
78
|
+
])) : (u(), f("div", $, [
|
|
79
|
+
c(C)
|
|
78
80
|
]));
|
|
79
81
|
}
|
|
80
|
-
},
|
|
82
|
+
}, M = /* @__PURE__ */ x(z, [["__scopeId", "data-v-196b9bff"]]), S = {
|
|
81
83
|
__name: "FieldEditor",
|
|
82
84
|
props: {
|
|
83
85
|
modelValue: Array,
|
|
@@ -88,7 +90,7 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
88
90
|
},
|
|
89
91
|
emits: ["update:modelValue"],
|
|
90
92
|
setup(p, { emit: a }) {
|
|
91
|
-
const l =
|
|
93
|
+
const l = I(() => import("./AttachmentUploader-BdDkTump.js")), m = a, d = p, e = L({ value: d.modelValue });
|
|
92
94
|
function o(s) {
|
|
93
95
|
e.value = e.value ? [...e.value, s] : [s];
|
|
94
96
|
}
|
|
@@ -96,8 +98,8 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
96
98
|
const t = e.value.findIndex((r) => r.id === s.id);
|
|
97
99
|
e.value.splice(t, 1);
|
|
98
100
|
}
|
|
99
|
-
async function
|
|
100
|
-
const t =
|
|
101
|
+
async function g(s) {
|
|
102
|
+
const t = d.domainConfig.rest;
|
|
101
103
|
if (!/^[\u4e00-\u9fa5\w-_]+$/.test(s.name)) {
|
|
102
104
|
ElMessage({
|
|
103
105
|
message: "请勿输入特殊字符!",
|
|
@@ -112,7 +114,7 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
112
114
|
});
|
|
113
115
|
});
|
|
114
116
|
}
|
|
115
|
-
function
|
|
117
|
+
function v(s, t) {
|
|
116
118
|
if (t == "success") {
|
|
117
119
|
o(s), m("update:modelValue", e.value);
|
|
118
120
|
return;
|
|
@@ -122,25 +124,30 @@ const I = { class: "file-name" }, L = { class: "name" }, P = { class: "file-type
|
|
|
122
124
|
return;
|
|
123
125
|
}
|
|
124
126
|
if (t == "change") {
|
|
125
|
-
|
|
127
|
+
g(s);
|
|
126
128
|
return;
|
|
127
129
|
}
|
|
128
130
|
}
|
|
129
131
|
return (s, t) => (u(), w(i(l), {
|
|
130
132
|
pics: e.value,
|
|
131
|
-
props:
|
|
132
|
-
onOnSuccess: t[0] || (t[0] = (r) =>
|
|
133
|
-
onOnRemove: t[1] || (t[1] = (r) =>
|
|
134
|
-
onOnChange: t[2] || (t[2] = (r) =>
|
|
133
|
+
props: d.field.props ? d.field.props : {},
|
|
134
|
+
onOnSuccess: t[0] || (t[0] = (r) => v(r, "success")),
|
|
135
|
+
onOnRemove: t[1] || (t[1] = (r) => v(r, "remove")),
|
|
136
|
+
onOnChange: t[2] || (t[2] = (r) => v(r, "change"))
|
|
135
137
|
}, null, 8, ["pics", "props"]));
|
|
136
138
|
}
|
|
137
|
-
},
|
|
138
|
-
class
|
|
139
|
+
}, q = S;
|
|
140
|
+
class K extends F {
|
|
139
141
|
constructor(a, l) {
|
|
140
|
-
super(a, l), this.attachmentType = a.attachmentType, this.props = a.props, this.display =
|
|
142
|
+
super(a, l), this.attachmentType = a.attachmentType, this.props = a.props, this.display = M, this.editor = q, this.checkValidProperties(a);
|
|
143
|
+
}
|
|
144
|
+
defaultConfig() {
|
|
145
|
+
return {
|
|
146
|
+
showInList: !1
|
|
147
|
+
};
|
|
141
148
|
}
|
|
142
149
|
}
|
|
143
150
|
export {
|
|
144
|
-
|
|
151
|
+
K as default
|
|
145
152
|
};
|
|
146
|
-
//# sourceMappingURL=config-
|
|
153
|
+
//# sourceMappingURL=config-C5CioVqt.js.map
|
|
@@ -0,0 +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,4 +1,4 @@
|
|
|
1
|
-
import { B as o } from "./index-
|
|
1
|
+
import { B as o } from "./index-BX1xTWzJ.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-
|
|
10
|
+
//# sourceMappingURL=config-C7y05luV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import { B as t, F as i } from "./index-
|
|
1
|
+
import { B as t, F as i } from "./index-BX1xTWzJ.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-
|
|
10
|
+
//# sourceMappingURL=config-ClsjosNk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
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,6 +1,6 @@
|
|
|
1
|
-
import { E as V, B as y } from "./index-
|
|
1
|
+
import { E as V, B as y } from "./index-BX1xTWzJ.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
|
-
const
|
|
3
|
+
const h = {
|
|
4
4
|
__name: "FieldDisplay",
|
|
5
5
|
props: {
|
|
6
6
|
field: {
|
|
@@ -30,7 +30,7 @@ const _ = {
|
|
|
30
30
|
"read-only": !0
|
|
31
31
|
}, null, 8, ["modelValue"])) : (i(), u(V, { key: 1 }));
|
|
32
32
|
}
|
|
33
|
-
},
|
|
33
|
+
}, _ = h, g = {
|
|
34
34
|
__name: "FieldEditor",
|
|
35
35
|
props: {
|
|
36
36
|
modelValue: Object,
|
|
@@ -59,13 +59,18 @@ const _ = {
|
|
|
59
59
|
onChange: r
|
|
60
60
|
}, null, 8, ["modelValue"]));
|
|
61
61
|
}
|
|
62
|
-
},
|
|
62
|
+
}, x = g;
|
|
63
63
|
class k extends y {
|
|
64
64
|
constructor(o, t) {
|
|
65
|
-
super(o, t), this.display =
|
|
65
|
+
super(o, t), this.display = _, this.editor = x, this.checkValidProperties(o);
|
|
66
|
+
}
|
|
67
|
+
defaultConfig() {
|
|
68
|
+
return {
|
|
69
|
+
showInList: !1
|
|
70
|
+
};
|
|
66
71
|
}
|
|
67
72
|
}
|
|
68
73
|
export {
|
|
69
74
|
k as default
|
|
70
75
|
};
|
|
71
|
-
//# sourceMappingURL=config-
|
|
76
|
+
//# sourceMappingURL=config-CsDCisYj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
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;"}
|