Files

118 lines
3.6 KiB
JavaScript

"use strict";
const common_vendor = require("../common/vendor.js");
const _sfc_main = {
__name: "AreaFormPopup",
props: {
visible: {
type: Boolean,
default: false
},
isEdit: {
type: Boolean,
default: false
},
editData: {
type: Object,
default: () => ({})
},
loading: {
type: Boolean,
default: false
}
},
emits: ["update:visible", "submit", "close"],
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const formData = common_vendor.reactive({
name: "",
color: "#D92121"
});
const presetColors = [
{ name: "红色", value: "#D92121" },
{ name: "橙色", value: "#FF8822" },
{ name: "黄色", value: "#FFCC00" },
{ name: "蓝色", value: "#165DFF" }
];
const presetColorValues = presetColors.map((item) => item.value);
const selectedColorLabel = common_vendor.computed(() => {
const found = presetColors.find((item) => item.value === formData.color);
return found ? `${found.name} ${found.value}` : formData.color;
});
const normalizeColor = (color) => {
if (!color)
return presetColors[0].value;
const upper = String(color).toUpperCase();
const matched = presetColorValues.find((v) => v.toUpperCase() === upper);
return matched || presetColors[0].value;
};
common_vendor.watch(() => props.editData, (newVal) => {
if (newVal && Object.keys(newVal).length > 0) {
formData.name = newVal.name || "";
formData.color = normalizeColor(newVal.color);
}
}, { immediate: true, deep: true });
common_vendor.watch(() => props.visible, (newVal) => {
if (!newVal) {
resetForm();
}
});
const selectColor = (color) => {
formData.color = color;
};
const resetForm = () => {
formData.name = "";
formData.color = "#D92121";
};
const handleClose = () => {
emit("update:visible", false);
emit("close");
};
const handleSubmit = () => {
if (!formData.name) {
common_vendor.index.showToast({ title: "请输入区域名称", icon: "none" });
return;
}
if (!presetColorValues.includes(formData.color)) {
common_vendor.index.showToast({ title: "请从预设颜色中选择", icon: "none" });
return;
}
emit("submit", {
name: formData.name,
color: formData.color
});
};
return (_ctx, _cache) => {
return common_vendor.e({
a: __props.visible
}, __props.visible ? {
b: common_vendor.t(__props.isEdit ? "编辑区域" : "新增区域"),
c: common_vendor.o(handleClose),
d: formData.name,
e: common_vendor.o(($event) => formData.name = $event.detail.value),
f: formData.color,
g: common_vendor.t(selectedColorLabel.value),
h: common_vendor.f(presetColors, (item, k0, i0) => {
return {
a: formData.color === item.value ? 1 : "",
b: item.value,
c: common_vendor.t(item.name),
d: item.value,
e: common_vendor.o(($event) => selectColor(item.value), item.value)
};
}),
i: common_vendor.o(handleClose),
j: common_vendor.o(handleSubmit),
k: __props.loading,
l: common_vendor.o(() => {
}),
m: common_vendor.o(handleClose),
n: common_vendor.gei(_ctx, "")
} : {});
};
}
};
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-fbf56c15"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../.sourcemap/mp-weixin/components/AreaFormPopup.js.map