557 lines
24 KiB
JavaScript
557 lines
24 KiB
JavaScript
import {
|
|
require_node
|
|
} from "/build/_shared/chunk-G7CHZRZX.js";
|
|
import {
|
|
Card
|
|
} from "/build/_shared/chunk-QMPAUNNA.js";
|
|
import {
|
|
Button
|
|
} from "/build/_shared/chunk-OGUYUMUT.js";
|
|
import {
|
|
require_jsx_dev_runtime
|
|
} from "/build/_shared/chunk-XGOTYLZ5.js";
|
|
import {
|
|
useLoaderData,
|
|
useSearchParams
|
|
} from "/build/_shared/chunk-RG2SZ2V3.js";
|
|
import {
|
|
createHotContext
|
|
} from "/build/_shared/chunk-73ZPIOGA.js";
|
|
import "/build/_shared/chunk-UWV35TSL.js";
|
|
import "/build/_shared/chunk-U4FRFQSK.js";
|
|
import "/build/_shared/chunk-7M6SC7J5.js";
|
|
import {
|
|
__toESM
|
|
} from "/build/_shared/chunk-PNG5AS42.js";
|
|
|
|
// app/routes/rules._index.tsx
|
|
var import_node = __toESM(require_node(), 1);
|
|
|
|
// app/components/ui/Tag.tsx
|
|
var import_jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
|
|
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
|
|
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
|
|
} else {
|
|
prevRefreshReg = window.$RefreshReg$;
|
|
prevRefreshSig = window.$RefreshSig$;
|
|
window.$RefreshReg$ = (type, id) => {
|
|
window.$RefreshRuntime$.register(type, '"app\\\\components\\\\ui\\\\Tag.tsx"' + id);
|
|
};
|
|
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
|
|
}
|
|
var prevRefreshReg;
|
|
var prevRefreshSig;
|
|
if (import.meta) {
|
|
import.meta.hot = createHotContext(
|
|
//@ts-expect-error
|
|
"app\\components\\ui\\Tag.tsx"
|
|
);
|
|
import.meta.hot.lastModified = "1742897479114.837";
|
|
}
|
|
function Tag({
|
|
children,
|
|
color = "default",
|
|
closable = false,
|
|
onClose,
|
|
className = ""
|
|
}) {
|
|
const baseClasses = "ant-tag";
|
|
const colorClasses = {
|
|
default: "",
|
|
blue: "ant-tag-blue",
|
|
green: "ant-tag-green",
|
|
cyan: "ant-tag-cyan",
|
|
purple: "ant-tag-purple",
|
|
orange: "ant-tag-orange",
|
|
red: "ant-tag-red"
|
|
};
|
|
const classes = [baseClasses, colorClasses[color], className].filter(Boolean).join(" ");
|
|
const handleKeyDown = (e) => {
|
|
if (e.key === "Enter" || e.key === " ") {
|
|
e.preventDefault();
|
|
onClose?.(e);
|
|
}
|
|
};
|
|
return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("span", { className: classes, children: [
|
|
children,
|
|
closable && /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)("i", { className: "ri-close-line ml-1 cursor-pointer text-opacity-60 hover:text-opacity-100", onClick: onClose, onKeyDown: handleKeyDown, role: "button", tabIndex: 0, "aria-label": "\u5173\u95ED\u6807\u7B7E" }, void 0, false, {
|
|
fileName: "app/components/ui/Tag.tsx",
|
|
lineNumber: 48,
|
|
columnNumber: 20
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/components/ui/Tag.tsx",
|
|
lineNumber: 46,
|
|
columnNumber: 10
|
|
}, this);
|
|
}
|
|
_c = Tag;
|
|
var _c;
|
|
$RefreshReg$(_c, "Tag");
|
|
window.$RefreshReg$ = prevRefreshReg;
|
|
window.$RefreshSig$ = prevRefreshSig;
|
|
|
|
// app/models/rule.ts
|
|
if (import.meta) {
|
|
import.meta.hot = createHotContext(
|
|
//@ts-expect-error
|
|
"app\\models\\rule.ts"
|
|
);
|
|
import.meta.hot.lastModified = "1742887964090.251";
|
|
}
|
|
var RULE_TYPE_LABELS = {
|
|
essential: "\u57FA\u672C\u8981\u7D20\u7C7B",
|
|
content: "\u5185\u5BB9\u5408\u89C4\u7C7B",
|
|
format: "\u683C\u5F0F\u89C4\u8303\u7C7B",
|
|
legal: "\u6CD5\u5F8B\u98CE\u9669\u7C7B",
|
|
business: "\u4E1A\u52A1\u4E13\u9879\u7C7B"
|
|
};
|
|
var RULE_TYPE_COLORS = {
|
|
essential: "blue",
|
|
content: "purple",
|
|
format: "green",
|
|
legal: "cyan",
|
|
business: "orange"
|
|
};
|
|
var RULE_PRIORITY_LABELS = {
|
|
high: "\u9AD8",
|
|
medium: "\u4E2D",
|
|
low: "\u4F4E"
|
|
};
|
|
var RULE_PRIORITY_COLORS = {
|
|
high: "red",
|
|
medium: "orange",
|
|
low: "green"
|
|
};
|
|
|
|
// app/routes/rules._index.tsx
|
|
var import_jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
|
|
if (!window.$RefreshReg$ || !window.$RefreshSig$ || !window.$RefreshRuntime$) {
|
|
console.warn("remix:hmr: React Fast Refresh only works when the Remix compiler is running in development mode.");
|
|
} else {
|
|
prevRefreshReg = window.$RefreshReg$;
|
|
prevRefreshSig = window.$RefreshSig$;
|
|
window.$RefreshReg$ = (type, id) => {
|
|
window.$RefreshRuntime$.register(type, '"app\\\\routes\\\\rules._index.tsx"' + id);
|
|
};
|
|
window.$RefreshSig$ = window.$RefreshRuntime$.createSignatureFunctionForTransform;
|
|
}
|
|
var prevRefreshReg;
|
|
var prevRefreshSig;
|
|
var _s = $RefreshSig$();
|
|
if (import.meta) {
|
|
import.meta.hot = createHotContext(
|
|
//@ts-expect-error
|
|
"app\\routes\\rules._index.tsx"
|
|
);
|
|
}
|
|
var links = () => [{
|
|
rel: "stylesheet",
|
|
href: "/rules_index.css"
|
|
}];
|
|
var meta = () => {
|
|
return [{
|
|
title: "\u4E2D\u56FD\u70DF\u8349AI\u5408\u540C\u53CA\u5377\u5B97\u5BA1\u6838\u7CFB\u7EDF - \u8BC4\u67E5\u70B9\u5217\u8868"
|
|
}, {
|
|
name: "description",
|
|
content: "\u8BC4\u67E5\u70B9\u7BA1\u7406\u5217\u8868"
|
|
}];
|
|
};
|
|
function RulesList() {
|
|
_s();
|
|
const {
|
|
rules,
|
|
groups
|
|
} = useLoaderData();
|
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
const handleFilterChange = (e) => {
|
|
const {
|
|
name,
|
|
value
|
|
} = e.target;
|
|
const newParams = new URLSearchParams(searchParams);
|
|
if (value) {
|
|
newParams.set(name, value);
|
|
} else {
|
|
newParams.delete(name);
|
|
}
|
|
setSearchParams(newParams);
|
|
};
|
|
const handleSearch = (e) => {
|
|
e.preventDefault();
|
|
const formData = new FormData(e.target);
|
|
const keyword = formData.get("keyword");
|
|
const newParams = new URLSearchParams(searchParams);
|
|
if (keyword) {
|
|
newParams.set("keyword", keyword);
|
|
} else {
|
|
newParams.delete("keyword");
|
|
}
|
|
setSearchParams(newParams);
|
|
};
|
|
const handleCopy = (rule) => {
|
|
alert(`\u590D\u5236\u89C4\u5219: ${rule.name}`);
|
|
};
|
|
const handleDelete = (rule) => {
|
|
if (window.confirm(`\u786E\u5B9A\u8981\u5220\u9664\u8BC4\u67E5\u70B9"${rule.name}"\u5417\uFF1F`)) {
|
|
alert(`\u5220\u9664\u89C4\u5219: ${rule.name}`);
|
|
}
|
|
};
|
|
return /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "p-6", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "mb-4 p-3 bg-blue-100 border border-blue-300 rounded text-blue-800", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("h3", { className: "font-bold text-lg", children: "\u5F53\u524D\u9875\u9762: \u8BC4\u67E5\u70B9\u5217\u8868 (rules._index.tsx)" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 205,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("p", { children: "\u5982\u679C\u4F60\u770B\u5230\u8FD9\u4E2A\u63D0\u793A\uFF0C\u8BF4\u660E\u4F60\u5DF2\u6210\u529F\u5230\u8FBE\u8BC4\u67E5\u70B9\u5217\u8868\u9875\u9762\u3002" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 206,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "mt-2", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("a", { href: "/debug", className: "text-blue-600 hover:underline", children: "\u67E5\u770B\u8DEF\u7531\u8BCA\u65AD\u9875\u9762" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 208,
|
|
columnNumber: 11
|
|
}, this),
|
|
" |",
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("a", { href: "/", className: "ml-2 text-blue-600 hover:underline", children: "\u8FD4\u56DE\u9996\u9875" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 209,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 207,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 204,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "flex justify-between items-center mb-4", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("h2", { className: "text-xl font-medium", children: "\u8BC4\u67E5\u70B9\u7BA1\u7406" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 215,
|
|
columnNumber: 9
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "primary", icon: "ri-add-line", to: "/rules/new", children: "\u65B0\u589E\u8BC4\u67E5\u70B9" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 216,
|
|
columnNumber: 9
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 214,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Card, { className: "mb-4", noDivider: true, children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-4 p-4", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "ruleType", className: "block text-sm mb-1", children: "\u8BC4\u67E5\u70B9\u7C7B\u578B" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 225,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("select", { id: "ruleType", className: "form-select w-full rounded border-gray-300 shadow-sm", name: "ruleType", value: searchParams.get("ruleType") || "", onChange: handleFilterChange, children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 228,
|
|
columnNumber: 15
|
|
}, this),
|
|
Object.entries(RULE_TYPE_LABELS).map(([value, label]) => /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value, children: label }, value, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 229,
|
|
columnNumber: 73
|
|
}, this))
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 226,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 224,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "groupId", className: "block text-sm mb-1", children: "\u6240\u5C5E\u89C4\u5219\u7EC4" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 233,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("select", { id: "groupId", className: "form-select w-full rounded border-gray-300 shadow-sm", name: "groupId", value: searchParams.get("groupId") || "", onChange: handleFilterChange, children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 236,
|
|
columnNumber: 15
|
|
}, this),
|
|
groups.map((group) => /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: group.id, children: group.name }, group.id, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 237,
|
|
columnNumber: 36
|
|
}, this))
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 234,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 232,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "isActive", className: "block text-sm mb-1", children: "\u72B6\u6001" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 241,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("select", { id: "isActive", className: "form-select w-full rounded border-gray-300 shadow-sm", name: "isActive", value: searchParams.get("isActive") || "", onChange: handleFilterChange, children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "", children: "\u5168\u90E8" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 244,
|
|
columnNumber: 15
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "true", children: "\u542F\u7528" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 245,
|
|
columnNumber: 15
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("option", { value: "false", children: "\u7981\u7528" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 246,
|
|
columnNumber: 15
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 242,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 240,
|
|
columnNumber: 11
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("label", { htmlFor: "keyword", className: "block text-sm mb-1", children: "\u641C\u7D22" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 250,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("form", { onSubmit: handleSearch, className: "flex items-center", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("input", { type: "text", id: "keyword", name: "keyword", className: "form-input rounded-l flex-1 border-gray-300 shadow-sm", placeholder: "\u8F93\u5165\u8BC4\u67E5\u70B9\u540D\u79F0\u6216\u7F16\u7801", defaultValue: searchParams.get("keyword") || "" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 252,
|
|
columnNumber: 15
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "primary", icon: "ri-search-line", className: "rounded-l-none", children: "\u641C\u7D22" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 254,
|
|
columnNumber: 15
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 251,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 249,
|
|
columnNumber: 11
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 223,
|
|
columnNumber: 9
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 222,
|
|
columnNumber: 7
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Card, { noDivider: true, children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { className: "overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("table", { className: "w-full text-left border-collapse", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("thead", { className: "bg-gray-50", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("tr", { className: "text-xs text-gray-500 border-b", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u8BC4\u67E5\u70B9\u7F16\u7801" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 268,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u8BC4\u67E5\u70B9\u540D\u79F0" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 269,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u8BC4\u67E5\u70B9\u7C7B\u578B" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 270,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u6240\u5C5E\u89C4\u5219\u7EC4" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 271,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u4F18\u5148\u7EA7" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 272,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u72B6\u6001" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 273,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u521B\u5EFA\u65F6\u95F4" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 274,
|
|
columnNumber: 17
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("th", { className: "py-3 px-4", children: "\u64CD\u4F5C" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 275,
|
|
columnNumber: 17
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 267,
|
|
columnNumber: 15
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 266,
|
|
columnNumber: 13
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("tbody", { children: rules.map((rule) => {
|
|
const typeColor = RULE_TYPE_COLORS[rule.ruleType];
|
|
const priorityColor = RULE_PRIORITY_COLORS[rule.priority];
|
|
return /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("tr", { className: "border-b hover:bg-gray-50", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.code }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 283,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.name }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 284,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Tag, { color: typeColor, children: RULE_TYPE_LABELS[rule.ruleType] }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 286,
|
|
columnNumber: 23
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 285,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.groupName }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 288,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Tag, { color: priorityColor, children: RULE_PRIORITY_LABELS[rule.priority] }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 290,
|
|
columnNumber: 23
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 289,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.isActive ? /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("span", { className: "flex items-center", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("i", { className: "inline-block w-2 h-2 rounded-full bg-green-500 mr-2" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 294,
|
|
columnNumber: 27
|
|
}, this),
|
|
"\u542F\u7528"
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 293,
|
|
columnNumber: 40
|
|
}, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("span", { className: "flex items-center", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("i", { className: "inline-block w-2 h-2 rounded-full bg-gray-400 mr-2" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 297,
|
|
columnNumber: 27
|
|
}, this),
|
|
"\u7981\u7528"
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 296,
|
|
columnNumber: 35
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 292,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: rule.createdAt }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 301,
|
|
columnNumber: 21
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("td", { className: "py-3 px-4", children: [
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "default", size: "small", icon: "ri-edit-line", to: `/rules/${rule.id}`, className: "mr-1", children: "\u7F16\u8F91" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 303,
|
|
columnNumber: 23
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "default", size: "small", icon: "ri-file-copy-line", className: "mr-1", onClick: () => handleCopy(rule), children: "\u590D\u5236" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 306,
|
|
columnNumber: 23
|
|
}, this),
|
|
/* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(Button, { type: "danger", size: "small", icon: "ri-delete-bin-line", onClick: () => handleDelete(rule), children: "\u5220\u9664" }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 309,
|
|
columnNumber: 23
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 302,
|
|
columnNumber: 21
|
|
}, this)
|
|
] }, rule.id, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 282,
|
|
columnNumber: 22
|
|
}, this);
|
|
}) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 278,
|
|
columnNumber: 13
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 265,
|
|
columnNumber: 11
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 264,
|
|
columnNumber: 9
|
|
}, this) }, void 0, false, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 263,
|
|
columnNumber: 7
|
|
}, this)
|
|
] }, void 0, true, {
|
|
fileName: "app/routes/rules._index.tsx",
|
|
lineNumber: 202,
|
|
columnNumber: 10
|
|
}, this);
|
|
}
|
|
_s(RulesList, "XJwDgoE2H0lk/hcE8YrVrkebOKQ=", false, function() {
|
|
return [useLoaderData, useSearchParams];
|
|
});
|
|
_c2 = RulesList;
|
|
var _c2;
|
|
$RefreshReg$(_c2, "RulesList");
|
|
window.$RefreshReg$ = prevRefreshReg;
|
|
window.$RefreshSig$ = prevRefreshSig;
|
|
export {
|
|
RulesList as default,
|
|
links,
|
|
meta
|
|
};
|
|
//# sourceMappingURL=/build/routes/rules._index-5QMSMCT7.js.map
|