118 lines
3.6 KiB
JavaScript
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
|