|
@@ -0,0 +1,75 @@
|
|
|
+<template>
|
|
|
+ <div class="workPage"></div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ userid: this.$route.query.userid,
|
|
|
+ oid: this.$route.query.oid,
|
|
|
+ org: this.$route.query.org,
|
|
|
+ role: this.$route.query.role,
|
|
|
+ type: "",
|
|
|
+ cid: this.$route.query.cid,
|
|
|
+ workId: this.$route.query.wid
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ renderedFormula() {
|
|
|
+ return function(val) {
|
|
|
+ try {
|
|
|
+ // 判断是否含有HTML标签,<tag ...>...</tag>
|
|
|
+ const hasTag = /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g.test(
|
|
|
+ val
|
|
|
+ );
|
|
|
+ if (!hasTag) {
|
|
|
+ val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, "");
|
|
|
+
|
|
|
+ // 纯文本,整体渲染
|
|
|
+ try {
|
|
|
+ return katex.renderToString(val.trim(), {
|
|
|
+ throwOnError: false,
|
|
|
+ strict: false,
|
|
|
+ output: "htmlAndMathml"
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ return val; // 渲染失败原样输出
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 有标签,对每个标签内容渲染
|
|
|
+ return val.replace(
|
|
|
+ /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g,
|
|
|
+ (match, tag, attrs, inner) => {
|
|
|
+ let html;
|
|
|
+ val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, "");
|
|
|
+ try {
|
|
|
+ html = katex.renderToString(inner.trim(), {
|
|
|
+ throwOnError: false,
|
|
|
+ strict: false,
|
|
|
+ output: "htmlAndMathml"
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ html = inner;
|
|
|
+ }
|
|
|
+ return `<${tag}${attrs}>${html}</${tag}>`;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error("KaTeX渲染错误:", e);
|
|
|
+ return val;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.workPage {
|
|
|
+ width: 100vw;
|
|
|
+ height: 100vh;
|
|
|
+ background-color: #fff;
|
|
|
+}
|
|
|
+</style>
|