You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

93 lines
6.2 KiB

import { defineComponent, ref, reactive, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderStyle, ssrRenderList, ssrInterpolate, ssrRenderAttr, ssrIncludeBooleanAttr } from 'vue/server-renderer';
import { u as useApi } from './useApi-BNSkSrat.mjs';
import { u as useToast } from './useToast-MBvLaNjH.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'perfect-debounce';
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "provider",
__ssrInlineRender: true,
setup(__props) {
useApi();
useToast();
const view = ref("list");
const rows = ref([]);
const loading = ref(false);
const submitting = ref(false);
const isEditing = ref(false);
const emails = ref([]);
const newEmail = ref("");
const form = reactive({ id: 0, name: "", description: "" });
function hexId(id) {
return id ? Number(id).toString(16).toUpperCase() : "";
}
function mailList(s) {
return (s || "").split(",").map((e) => e.trim()).filter(Boolean);
}
function formatTs(ts) {
if (!ts) return "-";
const d = new Date(ts * 1e3);
return d.getFullYear() + "-" + String(d.getMonth() + 1).padStart(2, "0") + "-" + String(d.getDate()).padStart(2, "0") + " " + String(d.getHours()).padStart(2, "0") + ":" + String(d.getMinutes()).padStart(2, "0");
}
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)}><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}"><div class="flex items-center justify-between mb-5"><h2 class="text-lg font-semibold text-slate-800">方案商列表</h2><button class="btn btn-primary btn-sm text-white">+ 新增方案商</button></div><div class="bg-white rounded-xl shadow-sm border border-slate-100"><div class="overflow-x-auto"><table class="table table-zebra"><thead><tr><th>ID</th><th>方案商名称</th><th>描述</th><th>联系邮箱</th><th>创建时间</th><th>操作</th></tr></thead><tbody>`);
if (loading.value) {
_push(`<tr><td colspan="6" class="text-center py-8"><span class="loading loading-spinner loading-sm"></span></td></tr>`);
} else if (!rows.value.length) {
_push(`<tr><td colspan="6" class="text-center text-slate-400 py-8">暂无数据</td></tr>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(rows.value, (p) => {
_push(`<tr><td class="font-mono text-sm">${ssrInterpolate(hexId(p.id))}</td><td class="font-medium">${ssrInterpolate(p.name)}</td><td class="text-sm text-slate-500">${ssrInterpolate(p.description || "")}</td><td class="text-sm">`);
if (mailList(p.contactmails).length) {
_push(`<!--[-->`);
ssrRenderList(mailList(p.contactmails), (e, i) => {
_push(`<span class="badge badge-ghost badge-sm mr-1">${ssrInterpolate(e)}</span>`);
});
_push(`<!--]-->`);
} else {
_push(`<span class="text-slate-300">-</span>`);
}
_push(`</td><td class="text-sm text-slate-500">${ssrInterpolate(formatTs(p.createtime))}</td><td><div class="flex gap-1"><button class="btn btn-ghost btn-xs">编辑</button><button class="btn btn-ghost btn-xs text-red-500">删除</button></div></td></tr>`);
});
_push(`<!--]--></tbody></table></div></div></div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}"><div class="flex items-center gap-3 mb-5"><button class="btn btn-ghost btn-sm">← 返回列表</button><h2 class="text-lg font-semibold text-slate-800">${ssrInterpolate(isEditing.value ? "编辑方案商" : "新增方案商")}</h2></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"><form><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">方案商名称 *</span></label><input${ssrRenderAttr("value", form.name)} type="text" class="input input-bordered w-full" required></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">描述</span></label><textarea class="textarea textarea-bordered w-full" rows="3">${ssrInterpolate(form.description)}</textarea></div><div class="form-control mb-6"><label class="label"><span class="label-text font-medium">联系邮箱</span></label><div class="space-y-2">`);
if (!emails.value.length) {
_push(`<p class="text-xs text-slate-400">暂无邮箱</p>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(emails.value, (e, i) => {
_push(`<div class="flex items-center gap-2"><span class="badge badge-lg gap-1 bg-slate-100 border-slate-200"><svg class="h-3 w-3 text-slate-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg> ${ssrInterpolate(e)}</span><button type="button" class="btn btn-ghost btn-xs text-red-400 hover:text-red-600">×</button></div>`);
});
_push(`<!--]--></div><div class="flex gap-2 mt-2"><input${ssrRenderAttr("value", newEmail.value)} type="email" class="input input-bordered input-sm flex-1" placeholder="输入邮箱地址"><button type="button" class="btn btn-outline btn-sm btn-primary">添加</button></div></div><div class="flex gap-3"><button type="button" class="btn btn-ghost">取消</button><button type="submit" class="btn btn-primary text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""}>保存</button></div></form></div></div></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/provider.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=provider-Bj1O177I.mjs.map