@maketribe/ms-app 3.2.50 → 3.2.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/business/verify-dialog/verify-panel.js +17 -13
- package/dist/cjs/components/business/verify-dialog/verify-panel.js.map +1 -1
- package/dist/cjs/layouts/components/header/index.js +1 -2
- package/dist/cjs/layouts/components/header/index.js.map +1 -1
- package/dist/cjs/modules/cms/components/part-tree/index.vue.js +1 -1
- package/dist/cjs/modules/cms/components/part-tree/index.vue.js.map +1 -1
- package/dist/esm/components/business/verify-dialog/verify-panel.js +17 -13
- package/dist/esm/components/business/verify-dialog/verify-panel.js.map +1 -1
- package/dist/esm/layouts/components/header/index.js +1 -2
- package/dist/esm/layouts/components/header/index.js.map +1 -1
- package/dist/esm/modules/cms/components/part-tree/index.vue.js +1 -1
- package/dist/esm/modules/cms/components/part-tree/index.vue.js.map +1 -1
- package/package.json +4 -4
- package/dist/cjs/layouts/components/header/message.js +0 -94
- package/dist/cjs/layouts/components/header/message.js.map +0 -1
- package/dist/cjs/layouts/components/header/notify.js +0 -26
- package/dist/cjs/layouts/components/header/notify.js.map +0 -1
- package/dist/cjs/layouts/components/message-list/index.vue.js +0 -242
- package/dist/cjs/layouts/components/message-list/index.vue.js.map +0 -1
- package/dist/cjs/layouts/components/message-list/index.vue2.js +0 -4
- package/dist/cjs/layouts/components/message-list/index.vue2.js.map +0 -1
- package/dist/esm/layouts/components/header/message.js +0 -77
- package/dist/esm/layouts/components/header/message.js.map +0 -1
- package/dist/esm/layouts/components/header/notify.js +0 -26
- package/dist/esm/layouts/components/header/notify.js.map +0 -1
- package/dist/esm/layouts/components/message-list/index.vue.js +0 -243
- package/dist/esm/layouts/components/message-list/index.vue.js.map +0 -1
- package/dist/esm/layouts/components/message-list/index.vue2.js +0 -5
- package/dist/esm/layouts/components/message-list/index.vue2.js.map +0 -1
|
@@ -18,8 +18,8 @@ const VerifyPanel = /* @__PURE__ */ vue.defineComponent({
|
|
|
18
18
|
const wrapperEl = vue.ref(null);
|
|
19
19
|
const buttonEl = vue.ref(null);
|
|
20
20
|
const grandEl = vue.ref(null);
|
|
21
|
-
MSAppClient.MSAppClient.instance.httpRequest;
|
|
22
|
-
|
|
21
|
+
const httpRequest = MSAppClient.MSAppClient.instance.httpRequest;
|
|
22
|
+
new request.WebHttpRequest();
|
|
23
23
|
let slideWidth = 48;
|
|
24
24
|
const isError = vue.ref(false);
|
|
25
25
|
const deg = vue.ref(0);
|
|
@@ -33,17 +33,21 @@ const VerifyPanel = /* @__PURE__ */ vue.defineComponent({
|
|
|
33
33
|
});
|
|
34
34
|
const loadImage = async () => {
|
|
35
35
|
loading.value = true;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
try {
|
|
37
|
+
const response = await httpRequest.get("/ms/app/captcha/rotation/image", {
|
|
38
|
+
params: {
|
|
39
|
+
scene: props.scene,
|
|
40
|
+
t: Math.random()
|
|
41
|
+
},
|
|
42
|
+
responseType: "blob"
|
|
43
|
+
});
|
|
44
|
+
if (!(response.data instanceof Blob)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
imageUrl.value = URL.createObjectURL(response.data);
|
|
48
|
+
} finally {
|
|
49
|
+
loading.value = false;
|
|
50
|
+
}
|
|
47
51
|
};
|
|
48
52
|
const handleSwitchConfirm = () => {
|
|
49
53
|
emit("confirm", vue.unref(deg));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-panel.js","sources":["../../../../../src/components/business/verify-dialog/verify-panel.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n unref,\r\n ref,\r\n onMounted,\r\n Ref,\r\n Fragment,\r\n} from \"vue\";\r\nimport { useHttpRequest } from \"../../../composables\";\r\nimport { verifyDialogProps, verifyDialogEmits } from \"./verify-dialog-option\";\r\nimport { WebHttpRequest } from \"@maketribe/request\";\r\nimport { Disposable, createDisposable } from \"@maketribe/utils\";\r\nimport { MSAppClient } from \"../../../core\";\r\n\r\n// 建一个私有的类吧客户端id放出来\r\n// const webHttpRequest = new (class InnerWebHttpRequest extends WebHttpRequest {\r\n// async getClientId() {\r\n// await this.loadClientIDPromise;\r\n// return this.clientID;\r\n// }\r\n// })();\r\n\r\nexport default defineComponent({\r\n name: \"VerifyPanel\",\r\n props: verifyDialogProps,\r\n emits: verifyDialogEmits,\r\n setup(props, { emit, expose }) {\r\n const wrapperEl: Ref<HTMLElement | null> = ref(null);\r\n const buttonEl: Ref<HTMLElement | null> = ref(null);\r\n const grandEl: Ref<HTMLElement | null> = ref(null);\r\n\r\n const httpRequest = MSAppClient.instance!.httpRequest;\r\n const webHttpRequest = new WebHttpRequest();\r\n // 样式默认宽度是48px\r\n let slideWidth: number = 48;\r\n\r\n const isError = ref(false);\r\n\r\n const deg = ref(0);\r\n const imageUrl = ref(\"\");\r\n const loading = ref(false);\r\n const imageStyle = computed(() => {\r\n return {\r\n backgroundImage: `url(${unref(imageUrl)})`,\r\n transform: `rotate(-${unref(deg)}deg)`,\r\n };\r\n });\r\n\r\n const loadImage = async (): Promise<undefined> => {\r\n loading.value = true;\r\n\r\n // try {\r\n // const response = await httpRequest.get<Blob>(\r\n // \"/ms/app/captcha/rotation/image\",\r\n // {\r\n // params: {\r\n // scene: props.scene,\r\n // t: Math.random(),\r\n // },\r\n // responseType: \"blob\",\r\n // }\r\n // );\r\n\r\n // if (!(response.data instanceof Blob)) {\r\n // return;\r\n // }\r\n\r\n // imageUrl.value = URL.createObjectURL(response.data);\r\n // } finally {\r\n // loading.value = false;\r\n // }\r\n\r\n const clientId = await webHttpRequest.getClientID();\r\n webHttpRequest.getInterceptors\r\n return await new Promise(reslove=>{\r\n\r\n const img = new Image();\r\n\r\n img.onload = ()=>{\r\n imageUrl.value = img.src;\r\n reslove(undefined);\r\n loading.value = false;\r\n }\r\n\r\n img.src = `api/ms/app/captcha/rotation/image?scene=${props.scene}&t=${Math.random()}&rcid=${clientId}`\r\n })\r\n };\r\n\r\n const handleSwitchConfirm = () => {\r\n emit(\"confirm\", unref(deg));\r\n };\r\n\r\n const handleMouseDown = (mouseDownEvent: MouseEvent | TouchEvent) => {\r\n if (unref(isError)) {\r\n return;\r\n }\r\n\r\n const startX =\r\n mouseDownEvent instanceof MouseEvent\r\n ? mouseDownEvent.clientX\r\n : mouseDownEvent.touches[0].clientX;\r\n const disposable = new Disposable();\r\n const totalWidth = unref(wrapperEl)!.getBoundingClientRect().width;\r\n\r\n const handleMouseMove = (event: MouseEvent | TouchEvent) => {\r\n const moveX =\r\n event instanceof MouseEvent\r\n ? event.clientX\r\n : event.touches[0].clientX;\r\n\r\n // 限定宽度范围\r\n slideWidth = Math.min(Math.max(moveX - startX + 48, 48), totalWidth);\r\n\r\n deg.value = Math.floor(((slideWidth - 48) / (totalWidth - 48)) * 360);\r\n\r\n unref(grandEl)!.style.width = `${slideWidth}px`;\r\n unref(buttonEl)!.style.transform = `translateX(${slideWidth - 48}px)`;\r\n };\r\n\r\n const handleMouseUp = (event: MouseEvent | TouchEvent) => {\r\n if (deg.value !== 0) {\r\n handleSwitchConfirm();\r\n }\r\n\r\n disposable.dispose();\r\n };\r\n\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n document.addEventListener(\"touchcancel\", handleMouseUp);\r\n\r\n disposable.register(\r\n createDisposable(() => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n document.removeEventListener(\"touchcancel\", handleMouseUp);\r\n })\r\n );\r\n };\r\n\r\n const reset = () => {\r\n unref(grandEl)!.style.width = ``;\r\n unref(buttonEl)!.style.transform = ``;\r\n };\r\n\r\n expose({\r\n fail: () => {\r\n isError.value = true;\r\n\r\n setTimeout(() => {\r\n isError.value = false;\r\n\r\n reset();\r\n }, 1000);\r\n },\r\n });\r\n\r\n onMounted(async () => {\r\n await loadImage();\r\n });\r\n\r\n return () => {\r\n return (\r\n <Fragment>\r\n <div class=\"mk-verify-dialog__wrapper\" v-loading={unref(loading)}>\r\n <div\r\n class=\"mk-verify-dialog__image\"\r\n ref=\"imageEl\"\r\n style={imageStyle.value}\r\n />\r\n <div class=\"mk-verify-dialog__coordinate\" />\r\n </div>\r\n <div class={[\"mk-verify-switch\", unref(isError) ? \"is-error\" : \"\"]}>\r\n <div\r\n class=\"mk-verify-switch__wrapper\"\r\n ref={((el: HTMLDivElement) => (wrapperEl.value = el)) as any}\r\n >\r\n <div\r\n class=\"mk-verify-switch__button-grand\"\r\n ref={((el: HTMLDivElement) => (grandEl.value = el)) as any}\r\n />\r\n <div\r\n class=\"mk-verify-switch__button\"\r\n ref={((el: HTMLDivElement) => (buttonEl.value = el)) as any}\r\n onMousedown={handleMouseDown}\r\n onTouchstart={handleMouseDown}\r\n />\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","verifyDialogProps","emits","verifyDialogEmits","setup","emit","expose","wrapperEl","ref","buttonEl","grandEl","MSAppClient","instance","httpRequest","webHttpRequest","WebHttpRequest","slideWidth","isError","deg","imageUrl","loading","imageStyle","computed","backgroundImage","unref","transform","loadImage","value","clientId","getClientID","getInterceptors","Promise","reslove","img","Image","onload","src","undefined","scene","Math","random","handleSwitchConfirm","handleMouseDown","mouseDownEvent","startX","MouseEvent","clientX","touches","disposable","Disposable","totalWidth","getBoundingClientRect","width","handleMouseMove","event","moveX","min","max","floor","style","handleMouseUp","dispose","document","addEventListener","register","createDisposable","removeEventListener","reset","fail","setTimeout","onMounted","_createVNode","_Fragment","_withDirectives","_resolveDirective","el"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify-panel.js","sources":["../../../../../src/components/business/verify-dialog/verify-panel.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n unref,\r\n ref,\r\n onMounted,\r\n Ref,\r\n Fragment,\r\n} from \"vue\";\r\nimport { useHttpRequest } from \"../../../composables\";\r\nimport { verifyDialogProps, verifyDialogEmits } from \"./verify-dialog-option\";\r\nimport { WebHttpRequest } from \"@maketribe/request\";\r\nimport { Disposable, createDisposable } from \"@maketribe/utils\";\r\nimport { MSAppClient } from \"../../../core\";\r\n\r\n// 建一个私有的类吧客户端id放出来\r\n// const webHttpRequest = new (class InnerWebHttpRequest extends WebHttpRequest {\r\n// async getClientId() {\r\n// await this.loadClientIDPromise;\r\n// return this.clientID;\r\n// }\r\n// })();\r\n\r\nexport default defineComponent({\r\n name: \"VerifyPanel\",\r\n props: verifyDialogProps,\r\n emits: verifyDialogEmits,\r\n setup(props, { emit, expose }) {\r\n const wrapperEl: Ref<HTMLElement | null> = ref(null);\r\n const buttonEl: Ref<HTMLElement | null> = ref(null);\r\n const grandEl: Ref<HTMLElement | null> = ref(null);\r\n\r\n const httpRequest = MSAppClient.instance!.httpRequest;\r\n const webHttpRequest = new WebHttpRequest();\r\n // 样式默认宽度是48px\r\n let slideWidth: number = 48;\r\n\r\n const isError = ref(false);\r\n\r\n const deg = ref(0);\r\n const imageUrl = ref(\"\");\r\n const loading = ref(false);\r\n const imageStyle = computed(() => {\r\n return {\r\n backgroundImage: `url(${unref(imageUrl)})`,\r\n transform: `rotate(-${unref(deg)}deg)`,\r\n };\r\n });\r\n\r\n const loadImage = async (): Promise<undefined> => {\r\n loading.value = true;\r\n\r\n try {\r\n const response = await httpRequest.get<Blob>(\r\n \"/ms/app/captcha/rotation/image\",\r\n {\r\n params: {\r\n scene: props.scene,\r\n t: Math.random(),\r\n },\r\n responseType: \"blob\",\r\n }\r\n );\r\n\r\n if (!(response.data instanceof Blob)) {\r\n return;\r\n }\r\n\r\n imageUrl.value = URL.createObjectURL(response.data);\r\n } finally {\r\n loading.value = false;\r\n }\r\n\r\n // const clientId = await webHttpRequest.getClientID();\r\n // webHttpRequest.getInterceptors\r\n // return await new Promise(reslove=>{\r\n\r\n // const img = new Image();\r\n\r\n // img.onload = ()=>{\r\n // imageUrl.value = img.src;\r\n // reslove(undefined);\r\n // loading.value = false;\r\n // }\r\n\r\n // img.src = `/api/ms/app/captcha/rotation/image?scene=${props.scene}&t=${Math.random()}&rcid=${clientId}`\r\n // })\r\n };\r\n\r\n const handleSwitchConfirm = () => {\r\n emit(\"confirm\", unref(deg));\r\n };\r\n\r\n const handleMouseDown = (mouseDownEvent: MouseEvent | TouchEvent) => {\r\n if (unref(isError)) {\r\n return;\r\n }\r\n\r\n const startX =\r\n mouseDownEvent instanceof MouseEvent\r\n ? mouseDownEvent.clientX\r\n : mouseDownEvent.touches[0].clientX;\r\n const disposable = new Disposable();\r\n const totalWidth = unref(wrapperEl)!.getBoundingClientRect().width;\r\n\r\n const handleMouseMove = (event: MouseEvent | TouchEvent) => {\r\n const moveX =\r\n event instanceof MouseEvent\r\n ? event.clientX\r\n : event.touches[0].clientX;\r\n\r\n // 限定宽度范围\r\n slideWidth = Math.min(Math.max(moveX - startX + 48, 48), totalWidth);\r\n\r\n deg.value = Math.floor(((slideWidth - 48) / (totalWidth - 48)) * 360);\r\n\r\n unref(grandEl)!.style.width = `${slideWidth}px`;\r\n unref(buttonEl)!.style.transform = `translateX(${slideWidth - 48}px)`;\r\n };\r\n\r\n const handleMouseUp = (event: MouseEvent | TouchEvent) => {\r\n if (deg.value !== 0) {\r\n handleSwitchConfirm();\r\n }\r\n\r\n disposable.dispose();\r\n };\r\n\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n document.addEventListener(\"touchcancel\", handleMouseUp);\r\n\r\n disposable.register(\r\n createDisposable(() => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n document.removeEventListener(\"touchcancel\", handleMouseUp);\r\n })\r\n );\r\n };\r\n\r\n const reset = () => {\r\n unref(grandEl)!.style.width = ``;\r\n unref(buttonEl)!.style.transform = ``;\r\n };\r\n\r\n expose({\r\n fail: () => {\r\n isError.value = true;\r\n\r\n setTimeout(() => {\r\n isError.value = false;\r\n\r\n reset();\r\n }, 1000);\r\n },\r\n });\r\n\r\n onMounted(async () => {\r\n await loadImage();\r\n });\r\n\r\n return () => {\r\n return (\r\n <Fragment>\r\n <div class=\"mk-verify-dialog__wrapper\" v-loading={unref(loading)}>\r\n <div\r\n class=\"mk-verify-dialog__image\"\r\n ref=\"imageEl\"\r\n style={imageStyle.value}\r\n />\r\n <div class=\"mk-verify-dialog__coordinate\" />\r\n </div>\r\n <div class={[\"mk-verify-switch\", unref(isError) ? \"is-error\" : \"\"]}>\r\n <div\r\n class=\"mk-verify-switch__wrapper\"\r\n ref={((el: HTMLDivElement) => (wrapperEl.value = el)) as any}\r\n >\r\n <div\r\n class=\"mk-verify-switch__button-grand\"\r\n ref={((el: HTMLDivElement) => (grandEl.value = el)) as any}\r\n />\r\n <div\r\n class=\"mk-verify-switch__button\"\r\n ref={((el: HTMLDivElement) => (buttonEl.value = el)) as any}\r\n onMousedown={handleMouseDown}\r\n onTouchstart={handleMouseDown}\r\n />\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","verifyDialogProps","emits","verifyDialogEmits","setup","emit","expose","wrapperEl","ref","buttonEl","grandEl","httpRequest","MSAppClient","instance","WebHttpRequest","slideWidth","isError","deg","imageUrl","loading","imageStyle","computed","backgroundImage","unref","transform","loadImage","value","response","get","params","scene","t","Math","random","responseType","data","Blob","URL","createObjectURL","handleSwitchConfirm","handleMouseDown","mouseDownEvent","startX","MouseEvent","clientX","touches","disposable","Disposable","totalWidth","getBoundingClientRect","width","handleMouseMove","event","moveX","min","max","floor","style","handleMouseUp","dispose","document","addEventListener","register","createDisposable","removeEventListener","reset","fail","setTimeout","onMounted","_createVNode","_Fragment","_withDirectives","_resolveDirective","el"],"mappings":";;;;;;;;;AAuBA,MAAeA,kDAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,OAAOC,mBAAiB;AAAA,EACxBC,OAAOC,mBAAiB;AAAA,EACxBC,MAAMJ,OAAO;AAAA,IAAEK;AAAAA,IAAMC;AAAAA,EAAO,GAAG;AAC7B,UAAMC,YAAqCC,QAAI,IAAI;AACnD,UAAMC,WAAoCD,QAAI,IAAI;AAClD,UAAME,UAAmCF,QAAI,IAAI;AAEjD,UAAMG,cAAcC,YAAAA,YAAYC,SAAUF;AACnB,QAAIG,uBAAgB;AAE3C,QAAIC,aAAqB;AAEzB,UAAMC,UAAUR,QAAI,KAAK;AAEzB,UAAMS,MAAMT,QAAI,CAAC;AACjB,UAAMU,WAAWV,QAAI,EAAE;AACvB,UAAMW,UAAUX,QAAI,KAAK;AACzB,UAAMY,aAAaC,IAAAA,SAAS,MAAM;AAChC,aAAO;AAAA,QACLC,iBAAiB,OAAOC,IAAK,MAACL,QAAQ,CAAC;AAAA,QACvCM,WAAW,WAAWD,IAAK,MAACN,GAAG,CAAC;AAAA;IAEpC,CAAC;AAED,UAAMQ,YAAY,YAAgC;AAChDN,cAAQO,QAAQ;AAEhB,UAAI;AACF,cAAMC,WAAW,MAAMhB,YAAYiB,IACjC,kCACA;AAAA,UACEC,QAAQ;AAAA,YACNC,OAAO9B,MAAM8B;AAAAA,YACbC,GAAGC,KAAKC,OAAO;AAAA,UAChB;AAAA,UACDC,cAAc;AAAA,QAChB,CACF;AAEA,YAAI,EAAEP,SAASQ,gBAAgBC,OAAO;AACpC;AAAA,QACF;AAEAlB,iBAASQ,QAAQW,IAAIC,gBAAgBX,SAASQ,IAAI;AAAA,MACpD,UAAU;AACRhB,gBAAQO,QAAQ;AAAA,MAClB;AAAA;AAkBF,UAAMa,sBAAsBA,MAAM;AAChClC,WAAK,WAAWkB,UAAMN,GAAG,CAAC;AAAA;AAG5B,UAAMuB,kBAAmBC,oBAA4C;AACnE,UAAIlB,IAAAA,MAAMP,OAAO,GAAG;AAClB;AAAA,MACF;AAEA,YAAM0B,SACJD,0BAA0BE,aACtBF,eAAeG,UACfH,eAAeI,QAAQ,CAAC,EAAED;AAChC,YAAME,aAAa,IAAIC,MAAAA;AACvB,YAAMC,aAAazB,IAAAA,MAAMhB,SAAS,EAAG0C,sBAAqB,EAAGC;AAE7D,YAAMC,kBAAmBC,WAAmC;AAC1D,cAAMC,QACJD,iBAAiBT,aACbS,MAAMR,UACNQ,MAAMP,QAAQ,CAAC,EAAED;AAGvB7B,qBAAaiB,KAAKsB,IAAItB,KAAKuB,IAAIF,QAAQX,SAAS,IAAI,EAAE,GAAGM,UAAU;AAEnE/B,YAAIS,QAAQM,KAAKwB,OAAQzC,aAAa,OAAOiC,aAAa,MAAO,GAAG;AAEpEzB,YAAK,MAACb,OAAO,EAAG+C,MAAMP,QAAQ,GAAGnC,UAAU;AAC3CQ,kBAAMd,QAAQ,EAAGgD,MAAMjC,YAAY,cAAcT,aAAa,EAAE;AAAA;AAGlE,YAAM2C,gBAAiBN,WAAmC;AACxD,YAAInC,IAAIS,UAAU,GAAG;AACnBa;QACF;AAEAO,mBAAWa,QAAO;AAAA;AAGpBC,eAASC,iBAAiB,aAAaV,eAAe;AACtDS,eAASC,iBAAiB,aAAaV,eAAe;AACtDS,eAASC,iBAAiB,WAAWH,aAAa;AAClDE,eAASC,iBAAiB,YAAYH,aAAa;AACnDE,eAASC,iBAAiB,eAAeH,aAAa;AAEtDZ,iBAAWgB,SACTC,MAAAA,iBAAiB,MAAM;AACrBH,iBAASI,oBAAoB,aAAab,eAAe;AACzDS,iBAASI,oBAAoB,aAAab,eAAe;AACzDS,iBAASI,oBAAoB,WAAWN,aAAa;AACrDE,iBAASI,oBAAoB,YAAYN,aAAa;AACtDE,iBAASI,oBAAoB,eAAeN,aAAa;AAAA,MAC1D,CAAA,CACH;AAAA;AAGF,UAAMO,QAAQA,MAAM;AAClB1C,UAAAA,MAAMb,OAAO,EAAG+C,MAAMP,QAAQ;AAC9B3B,UAAAA,MAAMd,QAAQ,EAAGgD,MAAMjC,YAAY;AAAA;AAGrClB,WAAO;AAAA,MACL4D,MAAMA,MAAM;AACVlD,gBAAQU,QAAQ;AAEhByC,mBAAW,MAAM;AACfnD,kBAAQU,QAAQ;AAEhBuC;QACD,GAAE,GAAI;AAAA,MACT;AAAA,IACF,CAAC;AAEDG,QAAAA,UAAU,YAAY;AACpB,YAAM3C,UAAS;AAAA,IACjB,CAAC;AAED,WAAO,MAAM;AACX,aAAA4C,IAAAA,YAAAC,IAAAA,UAAAC,MAAAA,CAAAA,IAAA,eAAAF,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAAA,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,QAAA,OAAA;AAAA,QAAA,SAMejD,WAAWM;AAAAA,MAAK,GAAA,IAAA,GAAA2C,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,IAAA,CAAA,CAAA,GAAA,CAAA,CAAAG,IAAA,iBAJuBjD,SAAAA,GAAAA,IAAK,MAACJ,OAAO,CAAC,KAAAkD,IAAAA,YAAA,OAAA;AAAA,QAAA,SAQpD,CAAC,oBAAoB9C,IAAAA,MAAMP,OAAO,IAAI,aAAa,EAAE;AAAA,MAAC,GAAA,CAAAqD,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,QAAA,OAGvDI,QAAwBlE,UAAUmB,QAAQ+C;AAAAA,MAAG,GAAA,CAAAJ,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,QAAA,OAI3CI,QAAwB/D,QAAQgB,QAAQ+C;AAAAA,MAAG,GAAA,IAAA,GAAAJ,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,QAAA,OAI3CI,QAAwBhE,SAASiB,QAAQ+C;AAAAA,QAAG,eACtCjC;AAAAA,QAAe,gBACdA;AAAAA,MAAe,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;EAO3C;AACF,CAAC;;"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const tools = require("./tools.js");
|
|
5
|
-
const message = require("./message.js");
|
|
6
5
|
require("@maketribe/dm");
|
|
7
6
|
require("element-plus");
|
|
8
7
|
require("@maketribe/utils");
|
|
@@ -26,7 +25,7 @@ const MKHeader = /* @__PURE__ */ vue.defineComponent({
|
|
|
26
25
|
"src": msAppClient == null ? void 0 : msAppClient.logo
|
|
27
26
|
}, null), projectName]), vue.createVNode("div", {
|
|
28
27
|
"class": "mk-header__tools"
|
|
29
|
-
}, [vue.createVNode(
|
|
28
|
+
}, [vue.createVNode(tools.MKHeaderTools, null, null)])]);
|
|
30
29
|
};
|
|
31
30
|
}
|
|
32
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/layouts/components/header/index.tsx"],"sourcesContent":["import { defineComponent, h, Ref, ref, unref } from \"vue\";\r\nimport { MKHeaderTools } from \"./tools\";\r\nimport { MKMessage } from \"./message\";\r\nimport { MSAppClient, MenuNode } from \"../../../core\";\r\n\r\nexport const MKHeader = defineComponent({\r\n\tname: \"MKHeader\",\r\n\tsetup() {\r\n\t\tconst msAppClient = MSAppClient.instance!;\r\n\r\n\t\tconst projectName = <div class=\"mk-header__projectName\">{msAppClient?.projectName}</div>;\r\n\r\n\r\n\t\treturn () => {\r\n\t\t\treturn (\r\n\t\t\t\t<div class=\"mk-header\">\r\n\t\t\t\t\t<div class=\"mk-header__main\">\r\n\t\t\t\t\t\t<img class=\"mk-header__logo\" src={msAppClient?.logo}></img>\r\n\t\t\t\t\t\t{projectName}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mk-header__tools\">\r\n\t\t\t\t\t\t<MKMessage
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/layouts/components/header/index.tsx"],"sourcesContent":["import { defineComponent, h, Ref, ref, unref } from \"vue\";\r\nimport { MKHeaderTools } from \"./tools\";\r\nimport { MKMessage } from \"./message\";\r\nimport { MSAppClient, MenuNode } from \"../../../core\";\r\n\r\nexport const MKHeader = defineComponent({\r\n\tname: \"MKHeader\",\r\n\tsetup() {\r\n\t\tconst msAppClient = MSAppClient.instance!;\r\n\r\n\t\tconst projectName = <div class=\"mk-header__projectName\">{msAppClient?.projectName}</div>;\r\n\r\n\r\n\t\treturn () => {\r\n\t\t\treturn (\r\n\t\t\t\t<div class=\"mk-header\">\r\n\t\t\t\t\t<div class=\"mk-header__main\">\r\n\t\t\t\t\t\t<img class=\"mk-header__logo\" src={msAppClient?.logo}></img>\r\n\t\t\t\t\t\t{projectName}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mk-header__tools\">\r\n\t\t\t\t\t\t{/* <MKMessage /> */}\r\n\t\t\t\t\t\t<MKHeaderTools />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\t};\r\n\t},\r\n});\r\n"],"names":["MKHeader","defineComponent","name","setup","msAppClient","MSAppClient","instance","projectName","_createVNode","logo","MKHeaderTools"],"mappings":";;;;;;;;;;AAKaA,MAAAA,WAAWC,oBAAAA,gBAAgB;AAAA,EACvCC,MAAM;AAAA,EACNC,QAAQ;AACP,UAAMC,cAAcC,YAAW,YAACC;AAEhC,UAAMC,cAAWC,IAAA,YAAA,OAAA;AAAA,MAAA,SAAA;AAAA,OAAwCJ,CAAAA,2CAAaG,WAAW,CAAO;AAGxF,WAAO,MAAM;AACZ,aAAAC,IAAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAAA,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAAA,IAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,QAAA,OAGqCJ,2CAAaK;AAAAA,MAC9CF,GAAAA,IAAAA,GAAAA,WAAW,IAAAC,IAAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,SAAAA,CAAAA,IAAA,YAAAE,qBAAA,MAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA;EAUjB;AACD,CAAC;;"}
|
|
@@ -191,7 +191,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
191
191
|
currentNodeKey: selectNodeId.value
|
|
192
192
|
}, {
|
|
193
193
|
"node-main": vue.withCtx(({ data }) => [
|
|
194
|
-
vue.createTextVNode(vue.toDisplayString(data.data.
|
|
194
|
+
vue.createTextVNode(vue.toDisplayString(data.data.name), 1)
|
|
195
195
|
]),
|
|
196
196
|
"node-tools": vue.withCtx(({ data }) => [
|
|
197
197
|
vue.createVNode(_component_el_dropdown, null, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../../src/modules/cms/components/part-tree/index.vue"],"sourcesContent":["<template>\r\n <div class=\"cms-part-tree\">\r\n <div class=\"cms-part-tree__header\">\r\n <div>\r\n <MKSvgIcon iconClass=\"Notebook\" />\r\n 栏目\r\n </div>\r\n <el-switch v-model=\"isDrag\" inline-prompt active-text=\"开启排序\"\r\n inactive-text=\"关闭排序\" />\r\n </div>\r\n <div class=\"cms-part-tree__body\">\r\n <ElScrollbar style=\"height: 100%;\">\r\n <MKDataTable :auto-load=\"true\" :data-table=\"dataTree\" highlight-current>\r\n <MKTree :data-tree=\"dataTree\" @nodeClick=\"selectPart\" defaultExpandAll :draggable=\"isDrag\" ref=\"treeRef\" :currentNodeKey=\"selectNodeId\">\r\n <template #node-main=\"{ data }\">\r\n {{ data.data.
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../src/modules/cms/components/part-tree/index.vue"],"sourcesContent":["<template>\r\n <div class=\"cms-part-tree\">\r\n <div class=\"cms-part-tree__header\">\r\n <div>\r\n <MKSvgIcon iconClass=\"Notebook\" />\r\n 栏目\r\n </div>\r\n <el-switch v-model=\"isDrag\" inline-prompt active-text=\"开启排序\"\r\n inactive-text=\"关闭排序\" />\r\n </div>\r\n <div class=\"cms-part-tree__body\">\r\n <ElScrollbar style=\"height: 100%;\">\r\n <MKDataTable :auto-load=\"true\" :data-table=\"dataTree\" highlight-current>\r\n <MKTree :data-tree=\"dataTree\" @nodeClick=\"selectPart\" defaultExpandAll :draggable=\"isDrag\" ref=\"treeRef\" :currentNodeKey=\"selectNodeId\">\r\n <template #node-main=\"{ data }\">\r\n {{ data.data.name }}\r\n </template>\r\n <template #node-tools=\"{ data }\">\r\n <el-dropdown>\r\n <ElIcon>\r\n <MoreFilled />\r\n </ElIcon>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :icon=\"Edit\" @click=\"handleEditClick(data.data)\">编辑</el-dropdown-item>\r\n <el-dropdown-item :icon=\"Delete\" @click=\"handleDeleteClick(data.data)\">删除</el-dropdown-item>\r\n <el-dropdown-item v-if=\"data.data.cmsPartTypeId != 1\" :icon=\"Plus\"\r\n @click=\"handleAddClick(data.data)\">添加子菜单</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </MKTree>\r\n </MKDataTable>\r\n </ElScrollbar>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { ElMessageBox, ElScrollbar } from \"element-plus\"\r\nimport { Plus, Edit, Delete, MoreFilled } from \"@element-plus/icons-vue\";\r\nimport { reactive, defineProps, watch, defineEmits, ref } from \"vue\";\r\nimport { MKDataTable, MKTree } from \"../../../../components/data-model/data-table\"\r\nimport { CmsPartTree } from \"../../dataviews\";\r\nimport { useI18n } from \"../../../../composables\";\r\nimport { DataTreeNode } from \"@maketribe/dm\";\r\n\r\ndefineOptions({ name: \"MKPartTree\" });\r\nconst treeRef = ref(null);\r\n// 配置选项\r\nconst optionSettings = defineProps<{\r\n curSelectId?:string|undefined\r\n}>();\r\n\r\n// 事件定义\r\nconst emit = defineEmits([\"edit\", \"add\", \"deleteSuccessfully\", \"select\"]);\r\n\r\nconst i18n = useI18n()!;\r\nconst dataTree = reactive(new CmsPartTree()) as CmsPartTree;\r\n\r\nconst isDrag = ref(false)\r\n\r\nconst selectNodeId = ref(optionSettings.curSelectId);\r\n\r\nwatch(()=>optionSettings.curSelectId,()=>{\r\n selectNodeId.value = optionSettings.curSelectId\r\n})\r\n\r\n// 监听数据变化\r\ndataTree.listChangeEvent.on(() => {\r\n\r\n const list = dataTree.getList();\r\n\r\n if (list.length > 0) {\r\n //默认选择第一条\r\n if(!selectNodeId.value){ selectNodeId.value = list[0].id; }\r\n\r\n for(let i=0;i<list.length;i++){\r\n\r\n let item = list[i]\r\n \r\n if(item.id == selectNodeId.value){\r\n emit(\"select\", item);\r\n break;\r\n }\r\n item.children?.forEach((child:any)=>list.push(child))\r\n\r\n }\r\n }\r\n})\r\n\r\n/**\r\n * 点击添加栏目按钮\r\n * @param item \r\n */\r\nconst handleAddClick = (item: any) => {\r\n emit(\"add\", item);\r\n}\r\n\r\n/**\r\n * 编辑栏目\r\n * @param item \r\n */\r\nconst handleEditClick = (item: any) => {\r\n emit(\"edit\", item);\r\n}\r\n/**\r\n * 删除栏目\r\n * @param item \r\n */\r\nconst handleDeleteClick = async (item: any) => {\r\n // 删除提示\r\n const isConfirm = await ElMessageBox.confirm(\r\n i18n.translate(\"mk.dataTablePage.deleteMessage\"),\r\n i18n.translate(\"mk.dataTablePage.deleteTitle\"),\r\n { type: \"warning\" }\r\n )\r\n\r\n if (!isConfirm) {\r\n return;\r\n }\r\n const result = await dataTree.deleteAfterRefresh(item.id);\r\n if (result.data.code == 200) {\r\n emit('deleteSuccessfully', item)\r\n }\r\n}\r\n\r\n/**\r\n * 选择栏目\r\n * @param data \r\n */\r\nconst selectPart = (data: DataTreeNode) => {\r\n emit(\"select\", data.data);\r\n}\r\n\r\ndefineExpose({ dataTree });\r\n\r\n\r\n</script>\r\n"],"names":["ref","useI18n","reactive","CmsPartTree","watch","ElMessageBox"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDM,UAAA,UAAUA,QAAI,IAAI;AAExB,UAAM,iBAAiB;AAKvB,UAAM,OAAO;AAEb,UAAM,OAAOC,QAAAA;AACb,UAAM,WAAWC,IAAAA,SAAS,IAAIC,YAAAA,YAAa,CAAA;AAErC,UAAA,SAASH,QAAI,KAAK;AAElB,UAAA,eAAeA,IAAAA,IAAI,eAAe,WAAW;AAE7CI,cAAA,MAAI,eAAe,aAAY,MAAI;AACvC,mBAAa,QAAQ,eAAe;AAAA,IAAA,CACrC;AAGQ,aAAA,gBAAgB,GAAG,MAAM;;AAE1B,YAAA,OAAO,SAAS;AAElB,UAAA,KAAK,SAAS,GAAG;AAEhB,YAAA,CAAC,aAAa,OAAM;AAAe,uBAAA,QAAQ,KAAK,CAAC,EAAE;AAAA,QAAI;AAE1D,iBAAQ,IAAE,GAAE,IAAE,KAAK,QAAO,KAAI;AAExB,cAAA,OAAO,KAAK,CAAC;AAEd,cAAA,KAAK,MAAM,aAAa,OAAM;AAC/B,iBAAK,UAAU,IAAI;AACnB;AAAA,UACF;AACA,qBAAK,aAAL,mBAAe,QAAQ,CAAC,UAAY,KAAK,KAAK,KAAK;AAAA,QAErD;AAAA,MACF;AAAA,IAAA,CACD;AAMK,UAAA,iBAAiB,CAAC,SAAc;AACpC,WAAK,OAAO,IAAI;AAAA,IAAA;AAOZ,UAAA,kBAAkB,CAAC,SAAc;AACrC,WAAK,QAAQ,IAAI;AAAA,IAAA;AAMb,UAAA,oBAAoB,OAAO,SAAc;AAEvC,YAAA,YAAY,MAAMC,YAAAA,aAAa;AAAA,QACnC,KAAK,UAAU,gCAAgC;AAAA,QAC/C,KAAK,UAAU,8BAA8B;AAAA,QAC7C,EAAE,MAAM,UAAU;AAAA,MAAA;AAGpB,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AACA,YAAM,SAAS,MAAM,SAAS,mBAAmB,KAAK,EAAE;AACpD,UAAA,OAAO,KAAK,QAAQ,KAAK;AAC3B,aAAK,sBAAsB,IAAI;AAAA,MACjC;AAAA,IAAA;AAOI,UAAA,aAAa,CAAC,SAAuB;AACpC,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA;AAGb,aAAA,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -17,8 +17,8 @@ const VerifyPanel = /* @__PURE__ */ defineComponent({
|
|
|
17
17
|
const wrapperEl = ref(null);
|
|
18
18
|
const buttonEl = ref(null);
|
|
19
19
|
const grandEl = ref(null);
|
|
20
|
-
MSAppClient.instance.httpRequest;
|
|
21
|
-
|
|
20
|
+
const httpRequest = MSAppClient.instance.httpRequest;
|
|
21
|
+
new WebHttpRequest();
|
|
22
22
|
let slideWidth = 48;
|
|
23
23
|
const isError = ref(false);
|
|
24
24
|
const deg = ref(0);
|
|
@@ -32,17 +32,21 @@ const VerifyPanel = /* @__PURE__ */ defineComponent({
|
|
|
32
32
|
});
|
|
33
33
|
const loadImage = async () => {
|
|
34
34
|
loading.value = true;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
try {
|
|
36
|
+
const response = await httpRequest.get("/ms/app/captcha/rotation/image", {
|
|
37
|
+
params: {
|
|
38
|
+
scene: props.scene,
|
|
39
|
+
t: Math.random()
|
|
40
|
+
},
|
|
41
|
+
responseType: "blob"
|
|
42
|
+
});
|
|
43
|
+
if (!(response.data instanceof Blob)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
imageUrl.value = URL.createObjectURL(response.data);
|
|
47
|
+
} finally {
|
|
48
|
+
loading.value = false;
|
|
49
|
+
}
|
|
46
50
|
};
|
|
47
51
|
const handleSwitchConfirm = () => {
|
|
48
52
|
emit("confirm", unref(deg));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-panel.js","sources":["../../../../../src/components/business/verify-dialog/verify-panel.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n unref,\r\n ref,\r\n onMounted,\r\n Ref,\r\n Fragment,\r\n} from \"vue\";\r\nimport { useHttpRequest } from \"../../../composables\";\r\nimport { verifyDialogProps, verifyDialogEmits } from \"./verify-dialog-option\";\r\nimport { WebHttpRequest } from \"@maketribe/request\";\r\nimport { Disposable, createDisposable } from \"@maketribe/utils\";\r\nimport { MSAppClient } from \"../../../core\";\r\n\r\n// 建一个私有的类吧客户端id放出来\r\n// const webHttpRequest = new (class InnerWebHttpRequest extends WebHttpRequest {\r\n// async getClientId() {\r\n// await this.loadClientIDPromise;\r\n// return this.clientID;\r\n// }\r\n// })();\r\n\r\nexport default defineComponent({\r\n name: \"VerifyPanel\",\r\n props: verifyDialogProps,\r\n emits: verifyDialogEmits,\r\n setup(props, { emit, expose }) {\r\n const wrapperEl: Ref<HTMLElement | null> = ref(null);\r\n const buttonEl: Ref<HTMLElement | null> = ref(null);\r\n const grandEl: Ref<HTMLElement | null> = ref(null);\r\n\r\n const httpRequest = MSAppClient.instance!.httpRequest;\r\n const webHttpRequest = new WebHttpRequest();\r\n // 样式默认宽度是48px\r\n let slideWidth: number = 48;\r\n\r\n const isError = ref(false);\r\n\r\n const deg = ref(0);\r\n const imageUrl = ref(\"\");\r\n const loading = ref(false);\r\n const imageStyle = computed(() => {\r\n return {\r\n backgroundImage: `url(${unref(imageUrl)})`,\r\n transform: `rotate(-${unref(deg)}deg)`,\r\n };\r\n });\r\n\r\n const loadImage = async (): Promise<undefined> => {\r\n loading.value = true;\r\n\r\n // try {\r\n // const response = await httpRequest.get<Blob>(\r\n // \"/ms/app/captcha/rotation/image\",\r\n // {\r\n // params: {\r\n // scene: props.scene,\r\n // t: Math.random(),\r\n // },\r\n // responseType: \"blob\",\r\n // }\r\n // );\r\n\r\n // if (!(response.data instanceof Blob)) {\r\n // return;\r\n // }\r\n\r\n // imageUrl.value = URL.createObjectURL(response.data);\r\n // } finally {\r\n // loading.value = false;\r\n // }\r\n\r\n const clientId = await webHttpRequest.getClientID();\r\n webHttpRequest.getInterceptors\r\n return await new Promise(reslove=>{\r\n\r\n const img = new Image();\r\n\r\n img.onload = ()=>{\r\n imageUrl.value = img.src;\r\n reslove(undefined);\r\n loading.value = false;\r\n }\r\n\r\n img.src = `api/ms/app/captcha/rotation/image?scene=${props.scene}&t=${Math.random()}&rcid=${clientId}`\r\n })\r\n };\r\n\r\n const handleSwitchConfirm = () => {\r\n emit(\"confirm\", unref(deg));\r\n };\r\n\r\n const handleMouseDown = (mouseDownEvent: MouseEvent | TouchEvent) => {\r\n if (unref(isError)) {\r\n return;\r\n }\r\n\r\n const startX =\r\n mouseDownEvent instanceof MouseEvent\r\n ? mouseDownEvent.clientX\r\n : mouseDownEvent.touches[0].clientX;\r\n const disposable = new Disposable();\r\n const totalWidth = unref(wrapperEl)!.getBoundingClientRect().width;\r\n\r\n const handleMouseMove = (event: MouseEvent | TouchEvent) => {\r\n const moveX =\r\n event instanceof MouseEvent\r\n ? event.clientX\r\n : event.touches[0].clientX;\r\n\r\n // 限定宽度范围\r\n slideWidth = Math.min(Math.max(moveX - startX + 48, 48), totalWidth);\r\n\r\n deg.value = Math.floor(((slideWidth - 48) / (totalWidth - 48)) * 360);\r\n\r\n unref(grandEl)!.style.width = `${slideWidth}px`;\r\n unref(buttonEl)!.style.transform = `translateX(${slideWidth - 48}px)`;\r\n };\r\n\r\n const handleMouseUp = (event: MouseEvent | TouchEvent) => {\r\n if (deg.value !== 0) {\r\n handleSwitchConfirm();\r\n }\r\n\r\n disposable.dispose();\r\n };\r\n\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n document.addEventListener(\"touchcancel\", handleMouseUp);\r\n\r\n disposable.register(\r\n createDisposable(() => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n document.removeEventListener(\"touchcancel\", handleMouseUp);\r\n })\r\n );\r\n };\r\n\r\n const reset = () => {\r\n unref(grandEl)!.style.width = ``;\r\n unref(buttonEl)!.style.transform = ``;\r\n };\r\n\r\n expose({\r\n fail: () => {\r\n isError.value = true;\r\n\r\n setTimeout(() => {\r\n isError.value = false;\r\n\r\n reset();\r\n }, 1000);\r\n },\r\n });\r\n\r\n onMounted(async () => {\r\n await loadImage();\r\n });\r\n\r\n return () => {\r\n return (\r\n <Fragment>\r\n <div class=\"mk-verify-dialog__wrapper\" v-loading={unref(loading)}>\r\n <div\r\n class=\"mk-verify-dialog__image\"\r\n ref=\"imageEl\"\r\n style={imageStyle.value}\r\n />\r\n <div class=\"mk-verify-dialog__coordinate\" />\r\n </div>\r\n <div class={[\"mk-verify-switch\", unref(isError) ? \"is-error\" : \"\"]}>\r\n <div\r\n class=\"mk-verify-switch__wrapper\"\r\n ref={((el: HTMLDivElement) => (wrapperEl.value = el)) as any}\r\n >\r\n <div\r\n class=\"mk-verify-switch__button-grand\"\r\n ref={((el: HTMLDivElement) => (grandEl.value = el)) as any}\r\n />\r\n <div\r\n class=\"mk-verify-switch__button\"\r\n ref={((el: HTMLDivElement) => (buttonEl.value = el)) as any}\r\n onMousedown={handleMouseDown}\r\n onTouchstart={handleMouseDown}\r\n />\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","verifyDialogProps","emits","verifyDialogEmits","setup","emit","expose","wrapperEl","ref","buttonEl","grandEl","MSAppClient","instance","httpRequest","webHttpRequest","WebHttpRequest","slideWidth","isError","deg","imageUrl","loading","imageStyle","computed","backgroundImage","unref","transform","loadImage","value","clientId","getClientID","getInterceptors","Promise","reslove","img","Image","onload","src","undefined","scene","Math","random","handleSwitchConfirm","handleMouseDown","mouseDownEvent","startX","MouseEvent","clientX","touches","disposable","Disposable","totalWidth","getBoundingClientRect","width","handleMouseMove","event","moveX","min","max","floor","style","handleMouseUp","dispose","document","addEventListener","register","createDisposable","removeEventListener","reset","fail","setTimeout","onMounted","_createVNode","_Fragment","_withDirectives","_resolveDirective","el"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify-panel.js","sources":["../../../../../src/components/business/verify-dialog/verify-panel.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n unref,\r\n ref,\r\n onMounted,\r\n Ref,\r\n Fragment,\r\n} from \"vue\";\r\nimport { useHttpRequest } from \"../../../composables\";\r\nimport { verifyDialogProps, verifyDialogEmits } from \"./verify-dialog-option\";\r\nimport { WebHttpRequest } from \"@maketribe/request\";\r\nimport { Disposable, createDisposable } from \"@maketribe/utils\";\r\nimport { MSAppClient } from \"../../../core\";\r\n\r\n// 建一个私有的类吧客户端id放出来\r\n// const webHttpRequest = new (class InnerWebHttpRequest extends WebHttpRequest {\r\n// async getClientId() {\r\n// await this.loadClientIDPromise;\r\n// return this.clientID;\r\n// }\r\n// })();\r\n\r\nexport default defineComponent({\r\n name: \"VerifyPanel\",\r\n props: verifyDialogProps,\r\n emits: verifyDialogEmits,\r\n setup(props, { emit, expose }) {\r\n const wrapperEl: Ref<HTMLElement | null> = ref(null);\r\n const buttonEl: Ref<HTMLElement | null> = ref(null);\r\n const grandEl: Ref<HTMLElement | null> = ref(null);\r\n\r\n const httpRequest = MSAppClient.instance!.httpRequest;\r\n const webHttpRequest = new WebHttpRequest();\r\n // 样式默认宽度是48px\r\n let slideWidth: number = 48;\r\n\r\n const isError = ref(false);\r\n\r\n const deg = ref(0);\r\n const imageUrl = ref(\"\");\r\n const loading = ref(false);\r\n const imageStyle = computed(() => {\r\n return {\r\n backgroundImage: `url(${unref(imageUrl)})`,\r\n transform: `rotate(-${unref(deg)}deg)`,\r\n };\r\n });\r\n\r\n const loadImage = async (): Promise<undefined> => {\r\n loading.value = true;\r\n\r\n try {\r\n const response = await httpRequest.get<Blob>(\r\n \"/ms/app/captcha/rotation/image\",\r\n {\r\n params: {\r\n scene: props.scene,\r\n t: Math.random(),\r\n },\r\n responseType: \"blob\",\r\n }\r\n );\r\n\r\n if (!(response.data instanceof Blob)) {\r\n return;\r\n }\r\n\r\n imageUrl.value = URL.createObjectURL(response.data);\r\n } finally {\r\n loading.value = false;\r\n }\r\n\r\n // const clientId = await webHttpRequest.getClientID();\r\n // webHttpRequest.getInterceptors\r\n // return await new Promise(reslove=>{\r\n\r\n // const img = new Image();\r\n\r\n // img.onload = ()=>{\r\n // imageUrl.value = img.src;\r\n // reslove(undefined);\r\n // loading.value = false;\r\n // }\r\n\r\n // img.src = `/api/ms/app/captcha/rotation/image?scene=${props.scene}&t=${Math.random()}&rcid=${clientId}`\r\n // })\r\n };\r\n\r\n const handleSwitchConfirm = () => {\r\n emit(\"confirm\", unref(deg));\r\n };\r\n\r\n const handleMouseDown = (mouseDownEvent: MouseEvent | TouchEvent) => {\r\n if (unref(isError)) {\r\n return;\r\n }\r\n\r\n const startX =\r\n mouseDownEvent instanceof MouseEvent\r\n ? mouseDownEvent.clientX\r\n : mouseDownEvent.touches[0].clientX;\r\n const disposable = new Disposable();\r\n const totalWidth = unref(wrapperEl)!.getBoundingClientRect().width;\r\n\r\n const handleMouseMove = (event: MouseEvent | TouchEvent) => {\r\n const moveX =\r\n event instanceof MouseEvent\r\n ? event.clientX\r\n : event.touches[0].clientX;\r\n\r\n // 限定宽度范围\r\n slideWidth = Math.min(Math.max(moveX - startX + 48, 48), totalWidth);\r\n\r\n deg.value = Math.floor(((slideWidth - 48) / (totalWidth - 48)) * 360);\r\n\r\n unref(grandEl)!.style.width = `${slideWidth}px`;\r\n unref(buttonEl)!.style.transform = `translateX(${slideWidth - 48}px)`;\r\n };\r\n\r\n const handleMouseUp = (event: MouseEvent | TouchEvent) => {\r\n if (deg.value !== 0) {\r\n handleSwitchConfirm();\r\n }\r\n\r\n disposable.dispose();\r\n };\r\n\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n document.addEventListener(\"touchcancel\", handleMouseUp);\r\n\r\n disposable.register(\r\n createDisposable(() => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n document.removeEventListener(\"touchcancel\", handleMouseUp);\r\n })\r\n );\r\n };\r\n\r\n const reset = () => {\r\n unref(grandEl)!.style.width = ``;\r\n unref(buttonEl)!.style.transform = ``;\r\n };\r\n\r\n expose({\r\n fail: () => {\r\n isError.value = true;\r\n\r\n setTimeout(() => {\r\n isError.value = false;\r\n\r\n reset();\r\n }, 1000);\r\n },\r\n });\r\n\r\n onMounted(async () => {\r\n await loadImage();\r\n });\r\n\r\n return () => {\r\n return (\r\n <Fragment>\r\n <div class=\"mk-verify-dialog__wrapper\" v-loading={unref(loading)}>\r\n <div\r\n class=\"mk-verify-dialog__image\"\r\n ref=\"imageEl\"\r\n style={imageStyle.value}\r\n />\r\n <div class=\"mk-verify-dialog__coordinate\" />\r\n </div>\r\n <div class={[\"mk-verify-switch\", unref(isError) ? \"is-error\" : \"\"]}>\r\n <div\r\n class=\"mk-verify-switch__wrapper\"\r\n ref={((el: HTMLDivElement) => (wrapperEl.value = el)) as any}\r\n >\r\n <div\r\n class=\"mk-verify-switch__button-grand\"\r\n ref={((el: HTMLDivElement) => (grandEl.value = el)) as any}\r\n />\r\n <div\r\n class=\"mk-verify-switch__button\"\r\n ref={((el: HTMLDivElement) => (buttonEl.value = el)) as any}\r\n onMousedown={handleMouseDown}\r\n onTouchstart={handleMouseDown}\r\n />\r\n </div>\r\n </div>\r\n </Fragment>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","verifyDialogProps","emits","verifyDialogEmits","setup","emit","expose","wrapperEl","ref","buttonEl","grandEl","httpRequest","MSAppClient","instance","WebHttpRequest","slideWidth","isError","deg","imageUrl","loading","imageStyle","computed","backgroundImage","unref","transform","loadImage","value","response","get","params","scene","t","Math","random","responseType","data","Blob","URL","createObjectURL","handleSwitchConfirm","handleMouseDown","mouseDownEvent","startX","MouseEvent","clientX","touches","disposable","Disposable","totalWidth","getBoundingClientRect","width","handleMouseMove","event","moveX","min","max","floor","style","handleMouseUp","dispose","document","addEventListener","register","createDisposable","removeEventListener","reset","fail","setTimeout","onMounted","_createVNode","_Fragment","_withDirectives","_resolveDirective","el"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { defineComponent, createVNode } from "vue";
|
|
2
2
|
import { MKHeaderTools } from "./tools.js";
|
|
3
|
-
import { MKMessage } from "./message.js";
|
|
4
3
|
import "@maketribe/dm";
|
|
5
4
|
import "element-plus";
|
|
6
5
|
import "@maketribe/utils";
|
|
@@ -24,7 +23,7 @@ const MKHeader = /* @__PURE__ */ defineComponent({
|
|
|
24
23
|
"src": msAppClient == null ? void 0 : msAppClient.logo
|
|
25
24
|
}, null), projectName]), createVNode("div", {
|
|
26
25
|
"class": "mk-header__tools"
|
|
27
|
-
}, [createVNode(
|
|
26
|
+
}, [createVNode(MKHeaderTools, null, null)])]);
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/layouts/components/header/index.tsx"],"sourcesContent":["import { defineComponent, h, Ref, ref, unref } from \"vue\";\r\nimport { MKHeaderTools } from \"./tools\";\r\nimport { MKMessage } from \"./message\";\r\nimport { MSAppClient, MenuNode } from \"../../../core\";\r\n\r\nexport const MKHeader = defineComponent({\r\n\tname: \"MKHeader\",\r\n\tsetup() {\r\n\t\tconst msAppClient = MSAppClient.instance!;\r\n\r\n\t\tconst projectName = <div class=\"mk-header__projectName\">{msAppClient?.projectName}</div>;\r\n\r\n\r\n\t\treturn () => {\r\n\t\t\treturn (\r\n\t\t\t\t<div class=\"mk-header\">\r\n\t\t\t\t\t<div class=\"mk-header__main\">\r\n\t\t\t\t\t\t<img class=\"mk-header__logo\" src={msAppClient?.logo}></img>\r\n\t\t\t\t\t\t{projectName}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mk-header__tools\">\r\n\t\t\t\t\t\t<MKMessage
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/layouts/components/header/index.tsx"],"sourcesContent":["import { defineComponent, h, Ref, ref, unref } from \"vue\";\r\nimport { MKHeaderTools } from \"./tools\";\r\nimport { MKMessage } from \"./message\";\r\nimport { MSAppClient, MenuNode } from \"../../../core\";\r\n\r\nexport const MKHeader = defineComponent({\r\n\tname: \"MKHeader\",\r\n\tsetup() {\r\n\t\tconst msAppClient = MSAppClient.instance!;\r\n\r\n\t\tconst projectName = <div class=\"mk-header__projectName\">{msAppClient?.projectName}</div>;\r\n\r\n\r\n\t\treturn () => {\r\n\t\t\treturn (\r\n\t\t\t\t<div class=\"mk-header\">\r\n\t\t\t\t\t<div class=\"mk-header__main\">\r\n\t\t\t\t\t\t<img class=\"mk-header__logo\" src={msAppClient?.logo}></img>\r\n\t\t\t\t\t\t{projectName}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mk-header__tools\">\r\n\t\t\t\t\t\t{/* <MKMessage /> */}\r\n\t\t\t\t\t\t<MKHeaderTools />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\t};\r\n\t},\r\n});\r\n"],"names":["MKHeader","defineComponent","name","setup","msAppClient","MSAppClient","instance","projectName","_createVNode","logo","MKHeaderTools"],"mappings":";;;;;;;;AAKaA,MAAAA,WAAWC,gCAAgB;AAAA,EACvCC,MAAM;AAAA,EACNC,QAAQ;AACP,UAAMC,cAAcC,YAAYC;AAEhC,UAAMC,cAAWC,YAAA,OAAA;AAAA,MAAA,SAAA;AAAA,OAAwCJ,CAAAA,2CAAaG,WAAW,CAAO;AAGxF,WAAO,MAAM;AACZ,aAAAC,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAAA,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,QAAA,OAGqCJ,2CAAaK;AAAAA,MAC9CF,GAAAA,IAAAA,GAAAA,WAAW,IAAAC,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,SAAAA,CAAAA,YAAAE,eAAA,MAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA;EAUjB;AACD,CAAC;"}
|
|
@@ -190,7 +190,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
190
190
|
currentNodeKey: selectNodeId.value
|
|
191
191
|
}, {
|
|
192
192
|
"node-main": withCtx(({ data }) => [
|
|
193
|
-
createTextVNode(toDisplayString(data.data.
|
|
193
|
+
createTextVNode(toDisplayString(data.data.name), 1)
|
|
194
194
|
]),
|
|
195
195
|
"node-tools": withCtx(({ data }) => [
|
|
196
196
|
createVNode(_component_el_dropdown, null, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../../src/modules/cms/components/part-tree/index.vue"],"sourcesContent":["<template>\r\n <div class=\"cms-part-tree\">\r\n <div class=\"cms-part-tree__header\">\r\n <div>\r\n <MKSvgIcon iconClass=\"Notebook\" />\r\n 栏目\r\n </div>\r\n <el-switch v-model=\"isDrag\" inline-prompt active-text=\"开启排序\"\r\n inactive-text=\"关闭排序\" />\r\n </div>\r\n <div class=\"cms-part-tree__body\">\r\n <ElScrollbar style=\"height: 100%;\">\r\n <MKDataTable :auto-load=\"true\" :data-table=\"dataTree\" highlight-current>\r\n <MKTree :data-tree=\"dataTree\" @nodeClick=\"selectPart\" defaultExpandAll :draggable=\"isDrag\" ref=\"treeRef\" :currentNodeKey=\"selectNodeId\">\r\n <template #node-main=\"{ data }\">\r\n {{ data.data.
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../src/modules/cms/components/part-tree/index.vue"],"sourcesContent":["<template>\r\n <div class=\"cms-part-tree\">\r\n <div class=\"cms-part-tree__header\">\r\n <div>\r\n <MKSvgIcon iconClass=\"Notebook\" />\r\n 栏目\r\n </div>\r\n <el-switch v-model=\"isDrag\" inline-prompt active-text=\"开启排序\"\r\n inactive-text=\"关闭排序\" />\r\n </div>\r\n <div class=\"cms-part-tree__body\">\r\n <ElScrollbar style=\"height: 100%;\">\r\n <MKDataTable :auto-load=\"true\" :data-table=\"dataTree\" highlight-current>\r\n <MKTree :data-tree=\"dataTree\" @nodeClick=\"selectPart\" defaultExpandAll :draggable=\"isDrag\" ref=\"treeRef\" :currentNodeKey=\"selectNodeId\">\r\n <template #node-main=\"{ data }\">\r\n {{ data.data.name }}\r\n </template>\r\n <template #node-tools=\"{ data }\">\r\n <el-dropdown>\r\n <ElIcon>\r\n <MoreFilled />\r\n </ElIcon>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :icon=\"Edit\" @click=\"handleEditClick(data.data)\">编辑</el-dropdown-item>\r\n <el-dropdown-item :icon=\"Delete\" @click=\"handleDeleteClick(data.data)\">删除</el-dropdown-item>\r\n <el-dropdown-item v-if=\"data.data.cmsPartTypeId != 1\" :icon=\"Plus\"\r\n @click=\"handleAddClick(data.data)\">添加子菜单</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </template>\r\n </MKTree>\r\n </MKDataTable>\r\n </ElScrollbar>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { ElMessageBox, ElScrollbar } from \"element-plus\"\r\nimport { Plus, Edit, Delete, MoreFilled } from \"@element-plus/icons-vue\";\r\nimport { reactive, defineProps, watch, defineEmits, ref } from \"vue\";\r\nimport { MKDataTable, MKTree } from \"../../../../components/data-model/data-table\"\r\nimport { CmsPartTree } from \"../../dataviews\";\r\nimport { useI18n } from \"../../../../composables\";\r\nimport { DataTreeNode } from \"@maketribe/dm\";\r\n\r\ndefineOptions({ name: \"MKPartTree\" });\r\nconst treeRef = ref(null);\r\n// 配置选项\r\nconst optionSettings = defineProps<{\r\n curSelectId?:string|undefined\r\n}>();\r\n\r\n// 事件定义\r\nconst emit = defineEmits([\"edit\", \"add\", \"deleteSuccessfully\", \"select\"]);\r\n\r\nconst i18n = useI18n()!;\r\nconst dataTree = reactive(new CmsPartTree()) as CmsPartTree;\r\n\r\nconst isDrag = ref(false)\r\n\r\nconst selectNodeId = ref(optionSettings.curSelectId);\r\n\r\nwatch(()=>optionSettings.curSelectId,()=>{\r\n selectNodeId.value = optionSettings.curSelectId\r\n})\r\n\r\n// 监听数据变化\r\ndataTree.listChangeEvent.on(() => {\r\n\r\n const list = dataTree.getList();\r\n\r\n if (list.length > 0) {\r\n //默认选择第一条\r\n if(!selectNodeId.value){ selectNodeId.value = list[0].id; }\r\n\r\n for(let i=0;i<list.length;i++){\r\n\r\n let item = list[i]\r\n \r\n if(item.id == selectNodeId.value){\r\n emit(\"select\", item);\r\n break;\r\n }\r\n item.children?.forEach((child:any)=>list.push(child))\r\n\r\n }\r\n }\r\n})\r\n\r\n/**\r\n * 点击添加栏目按钮\r\n * @param item \r\n */\r\nconst handleAddClick = (item: any) => {\r\n emit(\"add\", item);\r\n}\r\n\r\n/**\r\n * 编辑栏目\r\n * @param item \r\n */\r\nconst handleEditClick = (item: any) => {\r\n emit(\"edit\", item);\r\n}\r\n/**\r\n * 删除栏目\r\n * @param item \r\n */\r\nconst handleDeleteClick = async (item: any) => {\r\n // 删除提示\r\n const isConfirm = await ElMessageBox.confirm(\r\n i18n.translate(\"mk.dataTablePage.deleteMessage\"),\r\n i18n.translate(\"mk.dataTablePage.deleteTitle\"),\r\n { type: \"warning\" }\r\n )\r\n\r\n if (!isConfirm) {\r\n return;\r\n }\r\n const result = await dataTree.deleteAfterRefresh(item.id);\r\n if (result.data.code == 200) {\r\n emit('deleteSuccessfully', item)\r\n }\r\n}\r\n\r\n/**\r\n * 选择栏目\r\n * @param data \r\n */\r\nconst selectPart = (data: DataTreeNode) => {\r\n emit(\"select\", data.data);\r\n}\r\n\r\ndefineExpose({ dataTree });\r\n\r\n\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDM,UAAA,UAAU,IAAI,IAAI;AAExB,UAAM,iBAAiB;AAKvB,UAAM,OAAO;AAEb,UAAM,OAAO;AACb,UAAM,WAAW,SAAS,IAAI,YAAa,CAAA;AAErC,UAAA,SAAS,IAAI,KAAK;AAElB,UAAA,eAAe,IAAI,eAAe,WAAW;AAE7C,UAAA,MAAI,eAAe,aAAY,MAAI;AACvC,mBAAa,QAAQ,eAAe;AAAA,IAAA,CACrC;AAGQ,aAAA,gBAAgB,GAAG,MAAM;;AAE1B,YAAA,OAAO,SAAS;AAElB,UAAA,KAAK,SAAS,GAAG;AAEhB,YAAA,CAAC,aAAa,OAAM;AAAe,uBAAA,QAAQ,KAAK,CAAC,EAAE;AAAA,QAAI;AAE1D,iBAAQ,IAAE,GAAE,IAAE,KAAK,QAAO,KAAI;AAExB,cAAA,OAAO,KAAK,CAAC;AAEd,cAAA,KAAK,MAAM,aAAa,OAAM;AAC/B,iBAAK,UAAU,IAAI;AACnB;AAAA,UACF;AACA,qBAAK,aAAL,mBAAe,QAAQ,CAAC,UAAY,KAAK,KAAK,KAAK;AAAA,QAErD;AAAA,MACF;AAAA,IAAA,CACD;AAMK,UAAA,iBAAiB,CAAC,SAAc;AACpC,WAAK,OAAO,IAAI;AAAA,IAAA;AAOZ,UAAA,kBAAkB,CAAC,SAAc;AACrC,WAAK,QAAQ,IAAI;AAAA,IAAA;AAMb,UAAA,oBAAoB,OAAO,SAAc;AAEvC,YAAA,YAAY,MAAM,aAAa;AAAA,QACnC,KAAK,UAAU,gCAAgC;AAAA,QAC/C,KAAK,UAAU,8BAA8B;AAAA,QAC7C,EAAE,MAAM,UAAU;AAAA,MAAA;AAGpB,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AACA,YAAM,SAAS,MAAM,SAAS,mBAAmB,KAAK,EAAE;AACpD,UAAA,OAAO,KAAK,QAAQ,KAAK;AAC3B,aAAK,sBAAsB,IAAI;AAAA,MACjC;AAAA,IAAA;AAOI,UAAA,aAAa,CAAC,SAAuB;AACpC,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA;AAGb,aAAA,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maketribe/ms-app",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.52",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
"vue-codemirror": "^6.1.1",
|
|
53
53
|
"vue-cropper": "^1.1.4",
|
|
54
54
|
"vue-router": "^4.2.4",
|
|
55
|
-
"@maketribe/locale": "^3.2.0",
|
|
56
|
-
"@maketribe/utils": "^3.2.1",
|
|
57
55
|
"@maketribe/dm": "^3.2.12",
|
|
58
|
-
"@maketribe/request": "^3.2.5"
|
|
56
|
+
"@maketribe/request": "^3.2.5",
|
|
57
|
+
"@maketribe/utils": "^3.2.1",
|
|
58
|
+
"@maketribe/locale": "^3.2.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/sortablejs": "^1.15.8"
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const vue = require("vue");
|
|
4
|
-
const elementPlus = require("element-plus");
|
|
5
|
-
const index = require("../../../components/basic/svg-icon/index.js");
|
|
6
|
-
const index_vue_vue_type_script_setup_true_lang = require("../message-list/index.vue.js");
|
|
7
|
-
const SignalR = require("@microsoft/signalr");
|
|
8
|
-
const notify = require("./notify.js");
|
|
9
|
-
require("@maketribe/dm");
|
|
10
|
-
require("@maketribe/utils");
|
|
11
|
-
require("../../../core/DataModelDefines.js");
|
|
12
|
-
const MSAppClient = require("../../../core/MSAppClient.js");
|
|
13
|
-
require("@maketribe/request");
|
|
14
|
-
function _interopNamespaceDefault(e) {
|
|
15
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
16
|
-
if (e) {
|
|
17
|
-
for (const k in e) {
|
|
18
|
-
if (k !== "default") {
|
|
19
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
20
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: () => e[k]
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
n.default = e;
|
|
28
|
-
return Object.freeze(n);
|
|
29
|
-
}
|
|
30
|
-
const SignalR__namespace = /* @__PURE__ */ _interopNamespaceDefault(SignalR);
|
|
31
|
-
const MKMessage = /* @__PURE__ */ vue.defineComponent({
|
|
32
|
-
name: "MKMessage",
|
|
33
|
-
setup() {
|
|
34
|
-
const showMessageList = vue.ref(false);
|
|
35
|
-
const num = vue.ref(0);
|
|
36
|
-
console.log(localStorage.getItem("access-token"));
|
|
37
|
-
const connection = new SignalR__namespace.HubConnectionBuilder().withUrl("/api/ms/hubs/notification", {
|
|
38
|
-
accessTokenFactory: () => localStorage.getItem("access-token")
|
|
39
|
-
}).withAutomaticReconnect({
|
|
40
|
-
nextRetryDelayInMilliseconds: function(val) {
|
|
41
|
-
let arr = [1e3, 5e3, 1e4, 3e4];
|
|
42
|
-
if (val.previousRetryCount <= 3) {
|
|
43
|
-
return arr[val.previousRetryCount];
|
|
44
|
-
} else {
|
|
45
|
-
return arr[3];
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}).build();
|
|
49
|
-
connection.on('Notification"', (infos) => {
|
|
50
|
-
console.log(infos);
|
|
51
|
-
notify.notifyHandle(infos);
|
|
52
|
-
getUnreadMessageNum();
|
|
53
|
-
});
|
|
54
|
-
window.connection = connection;
|
|
55
|
-
const start = async () => {
|
|
56
|
-
try {
|
|
57
|
-
await connection.start();
|
|
58
|
-
console.log("SignalR Connected.");
|
|
59
|
-
} catch (err) {
|
|
60
|
-
console.log(err);
|
|
61
|
-
setTimeout(start, 5e3);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
connection.onclose(async () => {
|
|
65
|
-
await start();
|
|
66
|
-
});
|
|
67
|
-
const getUnreadMessageNum = async () => {
|
|
68
|
-
const httpRequest = MSAppClient.MSAppClient.instance.httpRequest;
|
|
69
|
-
const result = await httpRequest.get("/ms/dv/message/unread/count");
|
|
70
|
-
if (result.data.code == 200) {
|
|
71
|
-
num.value = result.data.data;
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
vue.onMounted(() => {
|
|
75
|
-
getUnreadMessageNum();
|
|
76
|
-
});
|
|
77
|
-
return () => {
|
|
78
|
-
return vue.createVNode("div", null, [vue.createVNode(elementPlus.ElBadge, {
|
|
79
|
-
"value": num.value
|
|
80
|
-
}, {
|
|
81
|
-
default: () => [vue.createVNode(index.MKSvgIcon, {
|
|
82
|
-
"iconClass": "Message",
|
|
83
|
-
"class": "mk-header__tools-message",
|
|
84
|
-
"onClick": () => showMessageList.value = true
|
|
85
|
-
}, null)]
|
|
86
|
-
}), vue.createVNode(index_vue_vue_type_script_setup_true_lang, {
|
|
87
|
-
"showMessageList": vue.unref(showMessageList),
|
|
88
|
-
"onUpdate:showMessageList": (v) => showMessageList.value = v
|
|
89
|
-
}, null)]);
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
exports.MKMessage = MKMessage;
|
|
94
|
-
//# sourceMappingURL=message.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sources":["../../../../../src/layouts/components/header/message.tsx"],"sourcesContent":["import { ElBadge, ElButton, ElNotification } from \"element-plus\";\r\nimport { MKSvgIcon } from \"../../../components/basic/svg-icon\";\r\nimport { defineComponent, h, isVNode, onMounted, ref, Ref, unref } from \"vue\";\r\nimport MessageList from \"../message-list/index.vue\"\r\nimport * as SignalR from \"@microsoft/signalr\"\r\nimport { notifyHandle, NotifyType } from \"./notify\";\r\nimport { MSAppClient } from \"../../../core\"\r\n\r\n\r\n\r\nexport const MKMessage = defineComponent({\r\n name: \"MKMessage\",\r\n setup() {\r\n\r\n const showMessageList: Ref<boolean> | undefined = ref(false)\r\n const num: Ref<number> = ref(0)\r\n console.log(localStorage.getItem(\"access-token\"));\r\n //signalR连接\r\n const connection = new SignalR.HubConnectionBuilder()\r\n .withUrl(\"/api/ms/hubs/notification\", { accessTokenFactory: () => localStorage.getItem(\"access-token\") as string })\r\n //自动连接\r\n .withAutomaticReconnect({\r\n nextRetryDelayInMilliseconds: function (val) {\r\n // _this.$TF.closeLoading()\r\n let arr = [1000, 5000, 10000, 30000]\r\n if (val.previousRetryCount <= 3) {\r\n return arr[val.previousRetryCount]\r\n } else {\r\n return arr[3]\r\n }\r\n }\r\n })\r\n .build();\r\n //接收消息\r\n connection.on('Notification\"', (infos) => {\r\n console.log(infos);\r\n notifyHandle(infos);\r\n getUnreadMessageNum();\r\n });\r\n (window as any).connection = connection\r\n const start = async () => {\r\n try {\r\n await connection.start();\r\n console.log(\"SignalR Connected.\");\r\n } catch (err) {\r\n console.log(err);\r\n setTimeout(start, 5000);\r\n }\r\n };\r\n\r\n connection.onclose(async () => {\r\n await start();\r\n });\r\n\r\n //Start the connection.启动\r\n // start();\r\n\r\n const getUnreadMessageNum = async () => {\r\n const httpRequest = MSAppClient.instance!.httpRequest\r\n const result = await httpRequest.get(\"/ms/dv/message/unread/count\")\r\n if (result.data.code == 200) {\r\n num.value = result.data.data\r\n }\r\n\r\n }\r\n onMounted(() => {\r\n getUnreadMessageNum();\r\n })\r\n return () => {\r\n return (<div>\r\n <ElBadge value={num.value}>\r\n <MKSvgIcon iconClass=\"Message\" class=\"mk-header__tools-message\" onClick={() => (showMessageList.value = true)} />\r\n </ElBadge>\r\n <MessageList showMessageList={unref(showMessageList)} onUpdate:showMessageList={(v) => (showMessageList.value = v)}>\r\n\r\n </MessageList>\r\n </div>)\r\n }\r\n }\r\n})"],"names":["MKMessage","defineComponent","name","setup","showMessageList","ref","num","console","log","localStorage","getItem","connection","SignalR","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","nextRetryDelayInMilliseconds","val","arr","previousRetryCount","build","on","infos","notifyHandle","getUnreadMessageNum","window","start","err","setTimeout","onclose","httpRequest","MSAppClient","instance","result","get","data","code","value","onMounted","_createVNode","ElBadge","default","MKSvgIcon","onClick","MessageList","unref","v"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUaA,MAAAA,YAAYC,oBAAAA,gBAAgB;AAAA,EACrCC,MAAM;AAAA,EACNC,QAAQ;AAEJ,UAAMC,kBAA4CC,QAAI,KAAK;AAC3D,UAAMC,MAAmBD,QAAI,CAAC;AAC9BE,YAAQC,IAAIC,aAAaC,QAAQ,cAAc,CAAC;AAEhD,UAAMC,aAAa,IAAIC,mBAAQC,qBAAoB,EAC9CC,QAAQ,6BAA6B;AAAA,MAAEC,oBAAoBA,MAAMN,aAAaC,QAAQ,cAAc;AAAA,KAAa,EAEjHM,uBAAuB;AAAA,MACpBC,8BAA8B,SAAUC,KAAK;AAEzC,YAAIC,MAAM,CAAC,KAAM,KAAM,KAAO,GAAK;AACnC,YAAID,IAAIE,sBAAsB,GAAG;AAC7B,iBAAOD,IAAID,IAAIE,kBAAkB;AAAA,QACrC,OAAO;AACH,iBAAOD,IAAI,CAAC;AAAA,QAChB;AAAA,MACJ;AAAA,IACJ,CAAC,EACAE,MAAK;AAEVV,eAAWW,GAAG,iBAAkBC,WAAU;AACtChB,cAAQC,IAAIe,KAAK;AACjBC,aAAY,aAACD,KAAK;AAClBE;IACJ,CAAC;AACAC,WAAef,aAAaA;AAC7B,UAAMgB,QAAQ,YAAY;AACtB,UAAI;AACA,cAAMhB,WAAWgB;AACjBpB,gBAAQC,IAAI,oBAAoB;AAAA,MACnC,SAAQoB,KAAK;AACVrB,gBAAQC,IAAIoB,GAAG;AACfC,mBAAWF,OAAO,GAAI;AAAA,MAC1B;AAAA;AAGJhB,eAAWmB,QAAQ,YAAY;AAC3B,YAAMH,MAAK;AAAA,IACf,CAAC;AAKD,UAAMF,sBAAsB,YAAY;AACpC,YAAMM,cAAcC,YAAAA,YAAYC,SAAUF;AAC1C,YAAMG,SAAS,MAAMH,YAAYI,IAAI,6BAA6B;AAClE,UAAID,OAAOE,KAAKC,QAAQ,KAAK;AACzB/B,YAAIgC,QAAQJ,OAAOE,KAAKA;AAAAA,MAC5B;AAAA;AAGJG,QAAAA,UAAU,MAAM;AACZd;IACJ,CAAC;AACD,WAAO,MAAM;AACT,aAAAe,IAAA,YAAA,OAAA,MAAA,CAAAA,IAAAA,YAAAC,YAAAA,SAAA;AAAA,QAAA,SACoBnC,IAAIgC;AAAAA,MAAK,GAAA;AAAA,QAAAI,SAAAA,MAAAF,CAAAA,IAAA,YAAAG,iBAAA;AAAA,UAAA,aAAA;AAAA,UAAA,SAAA;AAAA,UAAA,WACoDC,MAAOxC,gBAAgBkC,QAAQ;AAAA,QAAK,GAAA,IAAA,CAAA;AAAA,OAAAE,GAAAA,IAAA,YAAAK,2CAAA;AAAA,QAAA,mBAEnFC,IAAK,MAAC1C,eAAe;AAAA,QAAC,4BAA6B2C,OAAO3C,gBAAgBkC,QAAQS;AAAAA,MAAE,GAAA,IAAA,CAAA,CAAA;AAAA;EAK9H;AACJ,CAAC;;"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const vue = require("vue");
|
|
4
|
-
const elementPlus = require("element-plus");
|
|
5
|
-
const notifyHandle = (infos) => {
|
|
6
|
-
const message = vue.isVNode(infos.message) ? infos.message : vue.createVNode("div", {
|
|
7
|
-
"innerHTML": infos.message
|
|
8
|
-
}, [vue.createTextVNode(" ")]);
|
|
9
|
-
const action = vue.isVNode(infos.action) ? infos.action : vue.h(elementPlus.ElButton, {
|
|
10
|
-
onClick: () => {
|
|
11
|
-
notify.close();
|
|
12
|
-
},
|
|
13
|
-
link: true,
|
|
14
|
-
type: "primary"
|
|
15
|
-
}, {
|
|
16
|
-
default: () => "关闭"
|
|
17
|
-
});
|
|
18
|
-
const notify = elementPlus.ElNotification({
|
|
19
|
-
type: infos.type,
|
|
20
|
-
title: infos.title,
|
|
21
|
-
showClose: false,
|
|
22
|
-
message: vue.createVNode("div", null, [message, action])
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
exports.notifyHandle = notifyHandle;
|
|
26
|
-
//# sourceMappingURL=notify.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sources":["../../../../../src/layouts/components/header/notify.tsx"],"sourcesContent":["import { ElButton, ElNotification, NotificationParamsTyped } from \"element-plus\";\r\nimport { h, isVNode, VNode, VNodeTypes } from \"vue\";\r\n\r\nexport enum NotifyType {\r\n success = \"success\",\r\n info = \"info\",\r\n warning = \"warning\",\r\n error = \"error\",\r\n}\r\n\r\nexport const notifyHandle = (infos: { type?: NotifyType, title: string, message: string, action?: VNode | String }) => {\r\n\r\n const message = isVNode(infos.message) ? infos.message : <div v-html={infos.message}> </div >\r\n const action = isVNode(infos.action) ? infos.action : h(ElButton, { onClick: () => { notify.close() }, link: true, type: \"primary\" }, { default: () => \"关闭\" })\r\n\r\n const notify = ElNotification({\r\n type: infos.type,\r\n title: infos.title,\r\n showClose: false,\r\n message:\r\n <div>\r\n {message}\r\n {action}\r\n </div>,\r\n });\r\n}"],"names":["notifyHandle","infos","message","isVNode","_createVNode","_createTextVNode","action","h","ElButton","onClick","notify","close","link","type","default","ElNotification","title","showClose"],"mappings":";;;;AAUaA,MAAAA,eAAgBC,WAA0F;AAEnH,QAAMC,UAAUC,IAAO,QAACF,MAAMC,OAAO,IAAID,MAAMC,UAAOE,IAAA,YAAA,OAAA;AAAA,IAAA,aAAgBH,MAAMC;AAAAA,EAAO,GAAA,CAAAG,IAAA,gBAAU,GAAA,CAAA,CAAA;AAC7F,QAAMC,SAASH,IAAO,QAACF,MAAMK,MAAM,IAAIL,MAAMK,SAASC,IAAC,EAACC,sBAAU;AAAA,IAAEC,SAASA,MAAM;AAAEC,aAAOC,MAAK;AAAA,IAAI;AAAA,IAAEC,MAAM;AAAA,IAAMC,MAAM;AAAA,EAAU,GAAG;AAAA,IAAEC,SAASA,MAAM;AAAA,EAAK,CAAC;AAE7J,QAAMJ,SAASK,YAAAA,eAAe;AAAA,IAC1BF,MAAMZ,MAAMY;AAAAA,IACZG,OAAOf,MAAMe;AAAAA,IACbC,WAAW;AAAA,IACXf,SAAOE,IAAA,YAEEF,OAAAA,MAAAA,CAAAA,SACAI,MAAM,CAAA;AAAA,EAEnB,CAAC;AACL;;"}
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
const vue = require("vue");
|
|
3
|
-
const dm = require("@maketribe/dm");
|
|
4
|
-
const request = require("@maketribe/request");
|
|
5
|
-
const elementPlus = require("element-plus");
|
|
6
|
-
require("@maketribe/utils");
|
|
7
|
-
require("../../../core/DataModelDefines.js");
|
|
8
|
-
const MSAppClient = require("../../../core/MSAppClient.js");
|
|
9
|
-
const _hoisted_1 = { class: "mk-message__header" };
|
|
10
|
-
const _hoisted_2 = ["onClick"];
|
|
11
|
-
const _hoisted_3 = { class: "mk-message__body-item-header" };
|
|
12
|
-
const _hoisted_4 = { class: "mk-message__body-item-content" };
|
|
13
|
-
const _hoisted_5 = { class: "mk-message__body-item-footer" };
|
|
14
|
-
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
15
|
-
__name: "index",
|
|
16
|
-
props: {
|
|
17
|
-
showMessageList: {
|
|
18
|
-
type: Boolean,
|
|
19
|
-
default: false
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
emits: ["update:showMessageList"],
|
|
23
|
-
setup(__props, { emit: __emit }) {
|
|
24
|
-
var _a;
|
|
25
|
-
const httpRequest = (_a = MSAppClient.MSAppClient.instance) == null ? void 0 : _a.httpRequest;
|
|
26
|
-
const props = __props;
|
|
27
|
-
const buttonName = vue.ref("all");
|
|
28
|
-
const selectValue = vue.ref("");
|
|
29
|
-
const loading = vue.ref(false);
|
|
30
|
-
const pageNum = vue.ref(1);
|
|
31
|
-
const messageList = vue.ref([{
|
|
32
|
-
id: 1,
|
|
33
|
-
title: "系统消息",
|
|
34
|
-
content: "恭喜您!成功获得微信同款研发管理工具免费资格!恭喜您!成功获得微信同款研发管理工具免费资格!",
|
|
35
|
-
type: 1,
|
|
36
|
-
isRead: true,
|
|
37
|
-
createdAt: "2024-08-14 13:44:26"
|
|
38
|
-
}, {
|
|
39
|
-
id: 2,
|
|
40
|
-
title: "上级消息",
|
|
41
|
-
content: "未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读",
|
|
42
|
-
type: 2,
|
|
43
|
-
isRead: false,
|
|
44
|
-
createdAt: "2024-08-14 13:44:26"
|
|
45
|
-
}]);
|
|
46
|
-
const load = async (scroll) => {
|
|
47
|
-
const dom = document.querySelector(".mk-message__body").children[0];
|
|
48
|
-
if (dom.scrollHeight - dom.offsetHeight - scroll.scrollTop < 300) {
|
|
49
|
-
const result = await messageQuery.listWithResponse({
|
|
50
|
-
pc: 10,
|
|
51
|
-
pn: pageNum.value
|
|
52
|
-
});
|
|
53
|
-
pageNum.value++;
|
|
54
|
-
messageList.value.concat(result.data.data);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const messageType = vue.ref([
|
|
58
|
-
{
|
|
59
|
-
type: 1,
|
|
60
|
-
name: "类型1",
|
|
61
|
-
actions: (row) => {
|
|
62
|
-
console.log(row, "类型1");
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 2,
|
|
67
|
-
name: "类型2",
|
|
68
|
-
actions: (row) => {
|
|
69
|
-
console.log(row, "类型2");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
]);
|
|
73
|
-
const messageDv = request.DvOpt.createInstance({
|
|
74
|
-
name: "message",
|
|
75
|
-
moduleName: "ms"
|
|
76
|
-
});
|
|
77
|
-
const buttonGroup = new request.Group();
|
|
78
|
-
const selectGroup = new request.Group();
|
|
79
|
-
const messageQuery = messageDv.query().addGroup((group) => {
|
|
80
|
-
group.group.addGroup(buttonGroup).addGroup(selectGroup);
|
|
81
|
-
}).addOrderItem("createdAt", request.OrderType.DESC);
|
|
82
|
-
const refreshList = async (pc = 10) => {
|
|
83
|
-
return await messageQuery.list({
|
|
84
|
-
pc,
|
|
85
|
-
pn: 1
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
const emit = __emit;
|
|
89
|
-
const showMessageList = vue.computed({
|
|
90
|
-
get() {
|
|
91
|
-
return vue.unref(props.showMessageList);
|
|
92
|
-
},
|
|
93
|
-
set(value) {
|
|
94
|
-
emit("update:showMessageList", value);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
const readAllHandle = async () => {
|
|
98
|
-
const isConfirm = await dm.Dialoger.confirm({
|
|
99
|
-
title: "提示",
|
|
100
|
-
message: "确定将所有消息全部标记为已读吗?",
|
|
101
|
-
type: "warning"
|
|
102
|
-
});
|
|
103
|
-
if (!isConfirm) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
loading.value = true;
|
|
108
|
-
const result = await (httpRequest == null ? void 0 : httpRequest.post("/message/readAll"));
|
|
109
|
-
if ((result == null ? void 0 : result.data.code) !== 200) {
|
|
110
|
-
dm.Messager.error({ message: (result == null ? void 0 : result.data.msg) || "操作失败" });
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
messageList.value = await refreshList();
|
|
114
|
-
} catch (e) {
|
|
115
|
-
console.error(e);
|
|
116
|
-
} finally {
|
|
117
|
-
loading.value = false;
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
const selectHandle = async () => {
|
|
121
|
-
selectGroup.clear();
|
|
122
|
-
if (selectValue.value) {
|
|
123
|
-
buttonGroup.addCondition("type", "=", selectValue.value);
|
|
124
|
-
}
|
|
125
|
-
messageList.value = await refreshList();
|
|
126
|
-
};
|
|
127
|
-
vue.watch(buttonName, async () => {
|
|
128
|
-
buttonGroup.clear();
|
|
129
|
-
if (buttonName.value != "all") {
|
|
130
|
-
buttonGroup.addCondition("isRead", "=", 1);
|
|
131
|
-
}
|
|
132
|
-
messageList.value = await refreshList();
|
|
133
|
-
});
|
|
134
|
-
return (_ctx, _cache) => {
|
|
135
|
-
const _component_ElOption = vue.resolveComponent("ElOption");
|
|
136
|
-
return showMessageList.value ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElDrawer), {
|
|
137
|
-
key: 0,
|
|
138
|
-
class: "mk-message",
|
|
139
|
-
title: "通知消息",
|
|
140
|
-
modelValue: showMessageList.value,
|
|
141
|
-
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showMessageList.value = $event)
|
|
142
|
-
}, {
|
|
143
|
-
default: vue.withCtx(() => [
|
|
144
|
-
vue.createElementVNode("div", _hoisted_1, [
|
|
145
|
-
vue.createVNode(vue.unref(elementPlus.ElButtonGroup), { class: "mk-message__header-buttonGroup" }, {
|
|
146
|
-
default: vue.withCtx(() => [
|
|
147
|
-
vue.createVNode(vue.unref(elementPlus.ElButton), {
|
|
148
|
-
size: "small",
|
|
149
|
-
class: vue.normalizeClass([buttonName.value == "all" ? "active" : "", "mk-message__header-buttonGroup-button"]),
|
|
150
|
-
onClick: _cache[0] || (_cache[0] = () => {
|
|
151
|
-
buttonName.value = "all";
|
|
152
|
-
})
|
|
153
|
-
}, {
|
|
154
|
-
default: vue.withCtx(() => [
|
|
155
|
-
vue.createTextVNode(" 全部 ")
|
|
156
|
-
]),
|
|
157
|
-
_: 1
|
|
158
|
-
}, 8, ["class"]),
|
|
159
|
-
vue.createVNode(vue.unref(elementPlus.ElButton), {
|
|
160
|
-
size: "small",
|
|
161
|
-
class: vue.normalizeClass([buttonName.value == "unRead" ? "active" : "", "mk-message__header-buttonGroup-button"]),
|
|
162
|
-
onClick: _cache[1] || (_cache[1] = () => {
|
|
163
|
-
buttonName.value = "unRead";
|
|
164
|
-
})
|
|
165
|
-
}, {
|
|
166
|
-
default: vue.withCtx(() => [
|
|
167
|
-
vue.createTextVNode("未读")
|
|
168
|
-
]),
|
|
169
|
-
_: 1
|
|
170
|
-
}, 8, ["class"])
|
|
171
|
-
]),
|
|
172
|
-
_: 1
|
|
173
|
-
}),
|
|
174
|
-
vue.createVNode(vue.unref(elementPlus.ElSelect), {
|
|
175
|
-
placeholder: "请选择类型",
|
|
176
|
-
size: "small",
|
|
177
|
-
modelValue: selectValue.value,
|
|
178
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectValue.value = $event),
|
|
179
|
-
onChange: selectHandle,
|
|
180
|
-
clearable: ""
|
|
181
|
-
}, {
|
|
182
|
-
default: vue.withCtx(() => [
|
|
183
|
-
vue.createVNode(_component_ElOption, {
|
|
184
|
-
value: "1",
|
|
185
|
-
label: "测试"
|
|
186
|
-
})
|
|
187
|
-
]),
|
|
188
|
-
_: 1
|
|
189
|
-
}, 8, ["modelValue"]),
|
|
190
|
-
vue.createVNode(vue.unref(elementPlus.ElButton), {
|
|
191
|
-
link: "",
|
|
192
|
-
type: "primary",
|
|
193
|
-
size: "small",
|
|
194
|
-
onClick: readAllHandle
|
|
195
|
-
}, {
|
|
196
|
-
default: vue.withCtx(() => [
|
|
197
|
-
vue.createTextVNode("全部已读")
|
|
198
|
-
]),
|
|
199
|
-
_: 1
|
|
200
|
-
})
|
|
201
|
-
]),
|
|
202
|
-
vue.createVNode(vue.unref(elementPlus.ElScrollbar), {
|
|
203
|
-
class: "mk-message__body",
|
|
204
|
-
onScroll: load
|
|
205
|
-
}, {
|
|
206
|
-
default: vue.withCtx(() => [
|
|
207
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(messageList.value, (item) => {
|
|
208
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
209
|
-
class: vue.normalizeClass(["mk-message__body-item", { "is-read": item.isRead }]),
|
|
210
|
-
key: item.id,
|
|
211
|
-
onClick: ($event) => {
|
|
212
|
-
var _a2;
|
|
213
|
-
return (_a2 = messageType.value.find((a) => a.type == item.type)) == null ? void 0 : _a2.actions(item);
|
|
214
|
-
}
|
|
215
|
-
}, [
|
|
216
|
-
vue.createElementVNode("div", _hoisted_3, vue.toDisplayString(item.title), 1),
|
|
217
|
-
vue.createElementVNode("div", _hoisted_4, vue.toDisplayString(item.content), 1),
|
|
218
|
-
vue.createElementVNode("div", _hoisted_5, [
|
|
219
|
-
vue.createVNode(vue.unref(elementPlus.ElTag), null, {
|
|
220
|
-
default: vue.withCtx(() => {
|
|
221
|
-
var _a2;
|
|
222
|
-
return [
|
|
223
|
-
vue.createTextVNode(vue.toDisplayString((_a2 = messageType.value.find((a) => a.type == item.type)) == null ? void 0 : _a2.name), 1)
|
|
224
|
-
];
|
|
225
|
-
}),
|
|
226
|
-
_: 2
|
|
227
|
-
}, 1024),
|
|
228
|
-
vue.createTextVNode(" " + vue.toDisplayString(item.createdAt), 1)
|
|
229
|
-
])
|
|
230
|
-
], 10, _hoisted_2);
|
|
231
|
-
}), 128))
|
|
232
|
-
]),
|
|
233
|
-
_: 1
|
|
234
|
-
})
|
|
235
|
-
]),
|
|
236
|
-
_: 1
|
|
237
|
-
}, 8, ["modelValue"])) : vue.createCommentVNode("", true);
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
module.exports = _sfc_main;
|
|
242
|
-
//# sourceMappingURL=index.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../src/layouts/components/message-list/index.vue"],"sourcesContent":["<template>\r\n <ElDrawer class=\"mk-message\" title=\"通知消息\" v-model=\"showMessageList as any\" v-if=\"showMessageList\">\r\n <div class=\"mk-message__header\">\r\n <ElButtonGroup class=\"mk-message__header-buttonGroup\">\r\n <ElButton size=\"small\"\r\n :class=\"[buttonName == 'all' ? 'active' : '', 'mk-message__header-buttonGroup-button']\"\r\n @click=\"() => { buttonName = 'all' }\">\r\n 全部\r\n </ElButton>\r\n <ElButton size=\"small\"\r\n :class=\"[buttonName == 'unRead' ? 'active' : '', 'mk-message__header-buttonGroup-button']\"\r\n @click=\"() => { buttonName = 'unRead' }\">未读</ElButton>\r\n </ElButtonGroup>\r\n <ElSelect placeholder=\"请选择类型\" size=\"small\" v-model=\"selectValue\" @change=\"selectHandle\" clearable>\r\n <ElOption value=\"1\" label=\"测试\"></ElOption>\r\n </ElSelect>\r\n <ElButton link type=\"primary\" size=\"small\" @click=\"readAllHandle\">全部已读</ElButton>\r\n </div>\r\n <ElScrollbar class=\"mk-message__body\" @scroll=\"load\">\r\n <div v-for=\"item in messageList\" class=\"mk-message__body-item\" :class=\"{ 'is-read': item.isRead }\"\r\n :key=\"item.id\" @click=\"messageType.find((a) => a.type == item.type)?.actions(item)\">\r\n <div class=\"mk-message__body-item-header\">\r\n {{ item.title }}\r\n </div>\r\n <div class=\"mk-message__body-item-content\">\r\n {{ item.content }}\r\n </div>\r\n <div class=\"mk-message__body-item-footer\">\r\n <ElTag>{{ messageType.find((a) => a.type == item.type)?.name }}</ElTag>\r\n {{ item.createdAt }}\r\n </div>\r\n </div>\r\n </ElScrollbar>\r\n </ElDrawer>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { Dialoger, Messager } from \"@maketribe/dm\";\r\nimport { DvOpt, Group, OrderType } from \"@maketribe/request\";\r\nimport { ElButtonGroup, ElDrawer, ElButton, ElSelect, ElScrollbar, ElTag } from \"element-plus\";\r\nimport { MSAppClient } from \"../../../core\";\r\nimport { ref, unref, computed, Ref, watch } from \"vue\";\r\n\r\nconst httpRequest = MSAppClient.instance?.httpRequest;\r\nconst props = defineProps({\r\n showMessageList: {\r\n type: Boolean,\r\n default: false,\r\n }\r\n});\r\n\r\ninterface Message {\r\n id: number;\r\n title: string;\r\n content?: string;\r\n type: number;\r\n isRead: boolean;\r\n createdAt: string;\r\n}\r\n\r\nconst buttonName = ref('all');\r\nconst selectValue = ref('');\r\nconst loading = ref(false);\r\nconst pageNum = ref(1);\r\nconst messageList: Ref<Message[]> = ref([{\r\n id: 1,\r\n title: \"系统消息\",\r\n content: \"恭喜您!成功获得微信同款研发管理工具免费资格!恭喜您!成功获得微信同款研发管理工具免费资格!\",\r\n type: 1,\r\n isRead: true,\r\n createdAt: \"2024-08-14 13:44:26\"\r\n}, {\r\n id: 2,\r\n title: \"上级消息\",\r\n content: \"未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读\",\r\n type: 2,\r\n isRead: false,\r\n createdAt: \"2024-08-14 13:44:26\"\r\n}])\r\n\r\nconst load = async (scroll: { scrollTop: number }) => {\r\n const dom = document.querySelector(\".mk-message__body\")!.children[0] as HTMLElement;\r\n if (dom.scrollHeight - dom.offsetHeight - scroll.scrollTop < 300) {\r\n\r\n const result = await messageQuery.listWithResponse({\r\n pc: 10,\r\n pn: pageNum.value\r\n })\r\n pageNum.value++\r\n messageList.value.concat(result.data.data)\r\n }\r\n}\r\n\r\nconst messageType = ref([\r\n {\r\n type: 1,\r\n name: \"类型1\",\r\n actions: (row: any) => {\r\n console.log(row, \"类型1\");\r\n }\r\n },\r\n {\r\n type: 2,\r\n name: \"类型2\",\r\n actions: (row: any) => {\r\n console.log(row, \"类型2\");\r\n }\r\n }\r\n])\r\n\r\nconst messageDv = DvOpt.createInstance({\r\n name: \"message\",\r\n moduleName: \"ms\"\r\n})\r\nconst buttonGroup = new Group();\r\nconst selectGroup = new Group();\r\nconst messageQuery = messageDv.query()\r\n .addGroup((group) => { group.group.addGroup(buttonGroup).addGroup(selectGroup); })\r\n .addOrderItem(\"createdAt\", OrderType.DESC)\r\nconst refreshList = async (pc: number = 10) => {\r\n return await messageQuery.list({\r\n pc: pc,\r\n pn: 1\r\n }) as Message[];\r\n}\r\n\r\n\r\n\r\nconst emit = defineEmits([\"update:showMessageList\"]);\r\n\r\nconst showMessageList: Ref<Boolean> = computed({\r\n get() {\r\n return unref(props.showMessageList);\r\n },\r\n set(value: Boolean) {\r\n emit(\"update:showMessageList\", value);\r\n }\r\n});\r\n\r\n//将未读全部变成已读\r\nconst readAllHandle = async () => {\r\n const isConfirm = await Dialoger.confirm({\r\n title: \"提示\",\r\n message: \"确定将所有消息全部标记为已读吗?\",\r\n type: \"warning\"\r\n });\r\n\r\n if (!isConfirm) {\r\n return;\r\n }\r\n\r\n try {\r\n loading.value = true;\r\n const result = await httpRequest?.post(\"/message/readAll\");\r\n if (result?.data.code !== 200) {\r\n Messager.error({ message: result?.data.msg || \"操作失败\" });\r\n return;\r\n }\r\n messageList.value = await refreshList()\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n loading.value = false;\r\n }\r\n}\r\n\r\n//筛选选中的消息类型\r\nconst selectHandle = async () => {\r\n selectGroup.clear();\r\n if (selectValue.value) {\r\n buttonGroup.addCondition(\"type\", \"=\", selectValue.value)\r\n }\r\n messageList.value = await refreshList()\r\n}\r\n\r\n//根据当前选择的是全部还是未读\r\nwatch(buttonName, async () => {\r\n buttonGroup.clear();\r\n if (buttonName.value != 'all') {\r\n buttonGroup.addCondition(\"isRead\", \"=\", 1)\r\n }\r\n messageList.value = await refreshList()\r\n})\r\n\r\n</script>\r\n<style lang='scss'></style>"],"names":["MSAppClient","ref","DvOpt","Group","OrderType","computed","unref","Dialoger","Messager","watch"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { defineComponent, ref, onMounted, createVNode, unref } from "vue";
|
|
2
|
-
import { ElBadge } from "element-plus";
|
|
3
|
-
import { MKSvgIcon } from "../../../components/basic/svg-icon/index.js";
|
|
4
|
-
import _sfc_main from "../message-list/index.vue.js";
|
|
5
|
-
import * as SignalR from "@microsoft/signalr";
|
|
6
|
-
import { notifyHandle } from "./notify.js";
|
|
7
|
-
import "@maketribe/dm";
|
|
8
|
-
import "@maketribe/utils";
|
|
9
|
-
import "../../../core/DataModelDefines.js";
|
|
10
|
-
import { MSAppClient } from "../../../core/MSAppClient.js";
|
|
11
|
-
import "@maketribe/request";
|
|
12
|
-
const MKMessage = /* @__PURE__ */ defineComponent({
|
|
13
|
-
name: "MKMessage",
|
|
14
|
-
setup() {
|
|
15
|
-
const showMessageList = ref(false);
|
|
16
|
-
const num = ref(0);
|
|
17
|
-
console.log(localStorage.getItem("access-token"));
|
|
18
|
-
const connection = new SignalR.HubConnectionBuilder().withUrl("/api/ms/hubs/notification", {
|
|
19
|
-
accessTokenFactory: () => localStorage.getItem("access-token")
|
|
20
|
-
}).withAutomaticReconnect({
|
|
21
|
-
nextRetryDelayInMilliseconds: function(val) {
|
|
22
|
-
let arr = [1e3, 5e3, 1e4, 3e4];
|
|
23
|
-
if (val.previousRetryCount <= 3) {
|
|
24
|
-
return arr[val.previousRetryCount];
|
|
25
|
-
} else {
|
|
26
|
-
return arr[3];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}).build();
|
|
30
|
-
connection.on('Notification"', (infos) => {
|
|
31
|
-
console.log(infos);
|
|
32
|
-
notifyHandle(infos);
|
|
33
|
-
getUnreadMessageNum();
|
|
34
|
-
});
|
|
35
|
-
window.connection = connection;
|
|
36
|
-
const start = async () => {
|
|
37
|
-
try {
|
|
38
|
-
await connection.start();
|
|
39
|
-
console.log("SignalR Connected.");
|
|
40
|
-
} catch (err) {
|
|
41
|
-
console.log(err);
|
|
42
|
-
setTimeout(start, 5e3);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
connection.onclose(async () => {
|
|
46
|
-
await start();
|
|
47
|
-
});
|
|
48
|
-
const getUnreadMessageNum = async () => {
|
|
49
|
-
const httpRequest = MSAppClient.instance.httpRequest;
|
|
50
|
-
const result = await httpRequest.get("/ms/dv/message/unread/count");
|
|
51
|
-
if (result.data.code == 200) {
|
|
52
|
-
num.value = result.data.data;
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
onMounted(() => {
|
|
56
|
-
getUnreadMessageNum();
|
|
57
|
-
});
|
|
58
|
-
return () => {
|
|
59
|
-
return createVNode("div", null, [createVNode(ElBadge, {
|
|
60
|
-
"value": num.value
|
|
61
|
-
}, {
|
|
62
|
-
default: () => [createVNode(MKSvgIcon, {
|
|
63
|
-
"iconClass": "Message",
|
|
64
|
-
"class": "mk-header__tools-message",
|
|
65
|
-
"onClick": () => showMessageList.value = true
|
|
66
|
-
}, null)]
|
|
67
|
-
}), createVNode(_sfc_main, {
|
|
68
|
-
"showMessageList": unref(showMessageList),
|
|
69
|
-
"onUpdate:showMessageList": (v) => showMessageList.value = v
|
|
70
|
-
}, null)]);
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
export {
|
|
75
|
-
MKMessage
|
|
76
|
-
};
|
|
77
|
-
//# sourceMappingURL=message.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sources":["../../../../../src/layouts/components/header/message.tsx"],"sourcesContent":["import { ElBadge, ElButton, ElNotification } from \"element-plus\";\r\nimport { MKSvgIcon } from \"../../../components/basic/svg-icon\";\r\nimport { defineComponent, h, isVNode, onMounted, ref, Ref, unref } from \"vue\";\r\nimport MessageList from \"../message-list/index.vue\"\r\nimport * as SignalR from \"@microsoft/signalr\"\r\nimport { notifyHandle, NotifyType } from \"./notify\";\r\nimport { MSAppClient } from \"../../../core\"\r\n\r\n\r\n\r\nexport const MKMessage = defineComponent({\r\n name: \"MKMessage\",\r\n setup() {\r\n\r\n const showMessageList: Ref<boolean> | undefined = ref(false)\r\n const num: Ref<number> = ref(0)\r\n console.log(localStorage.getItem(\"access-token\"));\r\n //signalR连接\r\n const connection = new SignalR.HubConnectionBuilder()\r\n .withUrl(\"/api/ms/hubs/notification\", { accessTokenFactory: () => localStorage.getItem(\"access-token\") as string })\r\n //自动连接\r\n .withAutomaticReconnect({\r\n nextRetryDelayInMilliseconds: function (val) {\r\n // _this.$TF.closeLoading()\r\n let arr = [1000, 5000, 10000, 30000]\r\n if (val.previousRetryCount <= 3) {\r\n return arr[val.previousRetryCount]\r\n } else {\r\n return arr[3]\r\n }\r\n }\r\n })\r\n .build();\r\n //接收消息\r\n connection.on('Notification\"', (infos) => {\r\n console.log(infos);\r\n notifyHandle(infos);\r\n getUnreadMessageNum();\r\n });\r\n (window as any).connection = connection\r\n const start = async () => {\r\n try {\r\n await connection.start();\r\n console.log(\"SignalR Connected.\");\r\n } catch (err) {\r\n console.log(err);\r\n setTimeout(start, 5000);\r\n }\r\n };\r\n\r\n connection.onclose(async () => {\r\n await start();\r\n });\r\n\r\n //Start the connection.启动\r\n // start();\r\n\r\n const getUnreadMessageNum = async () => {\r\n const httpRequest = MSAppClient.instance!.httpRequest\r\n const result = await httpRequest.get(\"/ms/dv/message/unread/count\")\r\n if (result.data.code == 200) {\r\n num.value = result.data.data\r\n }\r\n\r\n }\r\n onMounted(() => {\r\n getUnreadMessageNum();\r\n })\r\n return () => {\r\n return (<div>\r\n <ElBadge value={num.value}>\r\n <MKSvgIcon iconClass=\"Message\" class=\"mk-header__tools-message\" onClick={() => (showMessageList.value = true)} />\r\n </ElBadge>\r\n <MessageList showMessageList={unref(showMessageList)} onUpdate:showMessageList={(v) => (showMessageList.value = v)}>\r\n\r\n </MessageList>\r\n </div>)\r\n }\r\n }\r\n})"],"names":["MKMessage","defineComponent","name","setup","showMessageList","ref","num","console","log","localStorage","getItem","connection","SignalR","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","nextRetryDelayInMilliseconds","val","arr","previousRetryCount","build","on","infos","notifyHandle","getUnreadMessageNum","window","start","err","setTimeout","onclose","httpRequest","MSAppClient","instance","result","get","data","code","value","onMounted","_createVNode","ElBadge","default","MKSvgIcon","onClick","MessageList","unref","v"],"mappings":";;;;;;;;;;;AAUaA,MAAAA,YAAYC,gCAAgB;AAAA,EACrCC,MAAM;AAAA,EACNC,QAAQ;AAEJ,UAAMC,kBAA4CC,IAAI,KAAK;AAC3D,UAAMC,MAAmBD,IAAI,CAAC;AAC9BE,YAAQC,IAAIC,aAAaC,QAAQ,cAAc,CAAC;AAEhD,UAAMC,aAAa,IAAIC,QAAQC,qBAAoB,EAC9CC,QAAQ,6BAA6B;AAAA,MAAEC,oBAAoBA,MAAMN,aAAaC,QAAQ,cAAc;AAAA,KAAa,EAEjHM,uBAAuB;AAAA,MACpBC,8BAA8B,SAAUC,KAAK;AAEzC,YAAIC,MAAM,CAAC,KAAM,KAAM,KAAO,GAAK;AACnC,YAAID,IAAIE,sBAAsB,GAAG;AAC7B,iBAAOD,IAAID,IAAIE,kBAAkB;AAAA,QACrC,OAAO;AACH,iBAAOD,IAAI,CAAC;AAAA,QAChB;AAAA,MACJ;AAAA,IACJ,CAAC,EACAE,MAAK;AAEVV,eAAWW,GAAG,iBAAkBC,WAAU;AACtChB,cAAQC,IAAIe,KAAK;AACjBC,mBAAaD,KAAK;AAClBE;IACJ,CAAC;AACAC,WAAef,aAAaA;AAC7B,UAAMgB,QAAQ,YAAY;AACtB,UAAI;AACA,cAAMhB,WAAWgB;AACjBpB,gBAAQC,IAAI,oBAAoB;AAAA,MACnC,SAAQoB,KAAK;AACVrB,gBAAQC,IAAIoB,GAAG;AACfC,mBAAWF,OAAO,GAAI;AAAA,MAC1B;AAAA;AAGJhB,eAAWmB,QAAQ,YAAY;AAC3B,YAAMH,MAAK;AAAA,IACf,CAAC;AAKD,UAAMF,sBAAsB,YAAY;AACpC,YAAMM,cAAcC,YAAYC,SAAUF;AAC1C,YAAMG,SAAS,MAAMH,YAAYI,IAAI,6BAA6B;AAClE,UAAID,OAAOE,KAAKC,QAAQ,KAAK;AACzB/B,YAAIgC,QAAQJ,OAAOE,KAAKA;AAAAA,MAC5B;AAAA;AAGJG,cAAU,MAAM;AACZd;IACJ,CAAC;AACD,WAAO,MAAM;AACT,aAAAe,YAAA,OAAA,MAAA,CAAAA,YAAAC,SAAA;AAAA,QAAA,SACoBnC,IAAIgC;AAAAA,MAAK,GAAA;AAAA,QAAAI,SAAAA,MAAAF,CAAAA,YAAAG,WAAA;AAAA,UAAA,aAAA;AAAA,UAAA,SAAA;AAAA,UAAA,WACoDC,MAAOxC,gBAAgBkC,QAAQ;AAAA,QAAK,GAAA,IAAA,CAAA;AAAA,OAAAE,GAAAA,YAAAK,WAAA;AAAA,QAAA,mBAEnFC,MAAM1C,eAAe;AAAA,QAAC,4BAA6B2C,OAAO3C,gBAAgBkC,QAAQS;AAAAA,MAAE,GAAA,IAAA,CAAA,CAAA;AAAA;EAK9H;AACJ,CAAC;"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { isVNode, createVNode, createTextVNode, h } from "vue";
|
|
2
|
-
import { ElButton, ElNotification } from "element-plus";
|
|
3
|
-
const notifyHandle = (infos) => {
|
|
4
|
-
const message = isVNode(infos.message) ? infos.message : createVNode("div", {
|
|
5
|
-
"innerHTML": infos.message
|
|
6
|
-
}, [createTextVNode(" ")]);
|
|
7
|
-
const action = isVNode(infos.action) ? infos.action : h(ElButton, {
|
|
8
|
-
onClick: () => {
|
|
9
|
-
notify.close();
|
|
10
|
-
},
|
|
11
|
-
link: true,
|
|
12
|
-
type: "primary"
|
|
13
|
-
}, {
|
|
14
|
-
default: () => "关闭"
|
|
15
|
-
});
|
|
16
|
-
const notify = ElNotification({
|
|
17
|
-
type: infos.type,
|
|
18
|
-
title: infos.title,
|
|
19
|
-
showClose: false,
|
|
20
|
-
message: createVNode("div", null, [message, action])
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
export {
|
|
24
|
-
notifyHandle
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=notify.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sources":["../../../../../src/layouts/components/header/notify.tsx"],"sourcesContent":["import { ElButton, ElNotification, NotificationParamsTyped } from \"element-plus\";\r\nimport { h, isVNode, VNode, VNodeTypes } from \"vue\";\r\n\r\nexport enum NotifyType {\r\n success = \"success\",\r\n info = \"info\",\r\n warning = \"warning\",\r\n error = \"error\",\r\n}\r\n\r\nexport const notifyHandle = (infos: { type?: NotifyType, title: string, message: string, action?: VNode | String }) => {\r\n\r\n const message = isVNode(infos.message) ? infos.message : <div v-html={infos.message}> </div >\r\n const action = isVNode(infos.action) ? infos.action : h(ElButton, { onClick: () => { notify.close() }, link: true, type: \"primary\" }, { default: () => \"关闭\" })\r\n\r\n const notify = ElNotification({\r\n type: infos.type,\r\n title: infos.title,\r\n showClose: false,\r\n message:\r\n <div>\r\n {message}\r\n {action}\r\n </div>,\r\n });\r\n}"],"names":["notifyHandle","infos","message","isVNode","_createVNode","_createTextVNode","action","h","ElButton","onClick","notify","close","link","type","default","ElNotification","title","showClose"],"mappings":";;AAUaA,MAAAA,eAAgBC,WAA0F;AAEnH,QAAMC,UAAUC,QAAQF,MAAMC,OAAO,IAAID,MAAMC,UAAOE,YAAA,OAAA;AAAA,IAAA,aAAgBH,MAAMC;AAAAA,EAAO,GAAA,CAAAG,gBAAU,GAAA,CAAA,CAAA;AAC7F,QAAMC,SAASH,QAAQF,MAAMK,MAAM,IAAIL,MAAMK,SAASC,EAAEC,UAAU;AAAA,IAAEC,SAASA,MAAM;AAAEC,aAAOC,MAAK;AAAA,IAAI;AAAA,IAAEC,MAAM;AAAA,IAAMC,MAAM;AAAA,EAAU,GAAG;AAAA,IAAEC,SAASA,MAAM;AAAA,EAAK,CAAC;AAE7J,QAAMJ,SAASK,eAAe;AAAA,IAC1BF,MAAMZ,MAAMY;AAAAA,IACZG,OAAOf,MAAMe;AAAAA,IACbC,WAAW;AAAA,IACXf,SAAOE,YAEEF,OAAAA,MAAAA,CAAAA,SACAI,MAAM,CAAA;AAAA,EAEnB,CAAC;AACL;"}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, unref, watch, resolveComponent, openBlock, createBlock, withCtx, createElementVNode, createVNode, normalizeClass, createTextVNode, createElementBlock, Fragment, renderList, toDisplayString, createCommentVNode } from "vue";
|
|
2
|
-
import { Dialoger, Messager } from "@maketribe/dm";
|
|
3
|
-
import { DvOpt, Group, OrderType } from "@maketribe/request";
|
|
4
|
-
import { ElDrawer, ElButtonGroup, ElButton, ElSelect, ElScrollbar, ElTag } from "element-plus";
|
|
5
|
-
import "@maketribe/utils";
|
|
6
|
-
import "../../../core/DataModelDefines.js";
|
|
7
|
-
import { MSAppClient } from "../../../core/MSAppClient.js";
|
|
8
|
-
const _hoisted_1 = { class: "mk-message__header" };
|
|
9
|
-
const _hoisted_2 = ["onClick"];
|
|
10
|
-
const _hoisted_3 = { class: "mk-message__body-item-header" };
|
|
11
|
-
const _hoisted_4 = { class: "mk-message__body-item-content" };
|
|
12
|
-
const _hoisted_5 = { class: "mk-message__body-item-footer" };
|
|
13
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
14
|
-
__name: "index",
|
|
15
|
-
props: {
|
|
16
|
-
showMessageList: {
|
|
17
|
-
type: Boolean,
|
|
18
|
-
default: false
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
emits: ["update:showMessageList"],
|
|
22
|
-
setup(__props, { emit: __emit }) {
|
|
23
|
-
var _a;
|
|
24
|
-
const httpRequest = (_a = MSAppClient.instance) == null ? void 0 : _a.httpRequest;
|
|
25
|
-
const props = __props;
|
|
26
|
-
const buttonName = ref("all");
|
|
27
|
-
const selectValue = ref("");
|
|
28
|
-
const loading = ref(false);
|
|
29
|
-
const pageNum = ref(1);
|
|
30
|
-
const messageList = ref([{
|
|
31
|
-
id: 1,
|
|
32
|
-
title: "系统消息",
|
|
33
|
-
content: "恭喜您!成功获得微信同款研发管理工具免费资格!恭喜您!成功获得微信同款研发管理工具免费资格!",
|
|
34
|
-
type: 1,
|
|
35
|
-
isRead: true,
|
|
36
|
-
createdAt: "2024-08-14 13:44:26"
|
|
37
|
-
}, {
|
|
38
|
-
id: 2,
|
|
39
|
-
title: "上级消息",
|
|
40
|
-
content: "未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读",
|
|
41
|
-
type: 2,
|
|
42
|
-
isRead: false,
|
|
43
|
-
createdAt: "2024-08-14 13:44:26"
|
|
44
|
-
}]);
|
|
45
|
-
const load = async (scroll) => {
|
|
46
|
-
const dom = document.querySelector(".mk-message__body").children[0];
|
|
47
|
-
if (dom.scrollHeight - dom.offsetHeight - scroll.scrollTop < 300) {
|
|
48
|
-
const result = await messageQuery.listWithResponse({
|
|
49
|
-
pc: 10,
|
|
50
|
-
pn: pageNum.value
|
|
51
|
-
});
|
|
52
|
-
pageNum.value++;
|
|
53
|
-
messageList.value.concat(result.data.data);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const messageType = ref([
|
|
57
|
-
{
|
|
58
|
-
type: 1,
|
|
59
|
-
name: "类型1",
|
|
60
|
-
actions: (row) => {
|
|
61
|
-
console.log(row, "类型1");
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
type: 2,
|
|
66
|
-
name: "类型2",
|
|
67
|
-
actions: (row) => {
|
|
68
|
-
console.log(row, "类型2");
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
]);
|
|
72
|
-
const messageDv = DvOpt.createInstance({
|
|
73
|
-
name: "message",
|
|
74
|
-
moduleName: "ms"
|
|
75
|
-
});
|
|
76
|
-
const buttonGroup = new Group();
|
|
77
|
-
const selectGroup = new Group();
|
|
78
|
-
const messageQuery = messageDv.query().addGroup((group) => {
|
|
79
|
-
group.group.addGroup(buttonGroup).addGroup(selectGroup);
|
|
80
|
-
}).addOrderItem("createdAt", OrderType.DESC);
|
|
81
|
-
const refreshList = async (pc = 10) => {
|
|
82
|
-
return await messageQuery.list({
|
|
83
|
-
pc,
|
|
84
|
-
pn: 1
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
const emit = __emit;
|
|
88
|
-
const showMessageList = computed({
|
|
89
|
-
get() {
|
|
90
|
-
return unref(props.showMessageList);
|
|
91
|
-
},
|
|
92
|
-
set(value) {
|
|
93
|
-
emit("update:showMessageList", value);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
const readAllHandle = async () => {
|
|
97
|
-
const isConfirm = await Dialoger.confirm({
|
|
98
|
-
title: "提示",
|
|
99
|
-
message: "确定将所有消息全部标记为已读吗?",
|
|
100
|
-
type: "warning"
|
|
101
|
-
});
|
|
102
|
-
if (!isConfirm) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
try {
|
|
106
|
-
loading.value = true;
|
|
107
|
-
const result = await (httpRequest == null ? void 0 : httpRequest.post("/message/readAll"));
|
|
108
|
-
if ((result == null ? void 0 : result.data.code) !== 200) {
|
|
109
|
-
Messager.error({ message: (result == null ? void 0 : result.data.msg) || "操作失败" });
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
messageList.value = await refreshList();
|
|
113
|
-
} catch (e) {
|
|
114
|
-
console.error(e);
|
|
115
|
-
} finally {
|
|
116
|
-
loading.value = false;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
const selectHandle = async () => {
|
|
120
|
-
selectGroup.clear();
|
|
121
|
-
if (selectValue.value) {
|
|
122
|
-
buttonGroup.addCondition("type", "=", selectValue.value);
|
|
123
|
-
}
|
|
124
|
-
messageList.value = await refreshList();
|
|
125
|
-
};
|
|
126
|
-
watch(buttonName, async () => {
|
|
127
|
-
buttonGroup.clear();
|
|
128
|
-
if (buttonName.value != "all") {
|
|
129
|
-
buttonGroup.addCondition("isRead", "=", 1);
|
|
130
|
-
}
|
|
131
|
-
messageList.value = await refreshList();
|
|
132
|
-
});
|
|
133
|
-
return (_ctx, _cache) => {
|
|
134
|
-
const _component_ElOption = resolveComponent("ElOption");
|
|
135
|
-
return showMessageList.value ? (openBlock(), createBlock(unref(ElDrawer), {
|
|
136
|
-
key: 0,
|
|
137
|
-
class: "mk-message",
|
|
138
|
-
title: "通知消息",
|
|
139
|
-
modelValue: showMessageList.value,
|
|
140
|
-
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showMessageList.value = $event)
|
|
141
|
-
}, {
|
|
142
|
-
default: withCtx(() => [
|
|
143
|
-
createElementVNode("div", _hoisted_1, [
|
|
144
|
-
createVNode(unref(ElButtonGroup), { class: "mk-message__header-buttonGroup" }, {
|
|
145
|
-
default: withCtx(() => [
|
|
146
|
-
createVNode(unref(ElButton), {
|
|
147
|
-
size: "small",
|
|
148
|
-
class: normalizeClass([buttonName.value == "all" ? "active" : "", "mk-message__header-buttonGroup-button"]),
|
|
149
|
-
onClick: _cache[0] || (_cache[0] = () => {
|
|
150
|
-
buttonName.value = "all";
|
|
151
|
-
})
|
|
152
|
-
}, {
|
|
153
|
-
default: withCtx(() => [
|
|
154
|
-
createTextVNode(" 全部 ")
|
|
155
|
-
]),
|
|
156
|
-
_: 1
|
|
157
|
-
}, 8, ["class"]),
|
|
158
|
-
createVNode(unref(ElButton), {
|
|
159
|
-
size: "small",
|
|
160
|
-
class: normalizeClass([buttonName.value == "unRead" ? "active" : "", "mk-message__header-buttonGroup-button"]),
|
|
161
|
-
onClick: _cache[1] || (_cache[1] = () => {
|
|
162
|
-
buttonName.value = "unRead";
|
|
163
|
-
})
|
|
164
|
-
}, {
|
|
165
|
-
default: withCtx(() => [
|
|
166
|
-
createTextVNode("未读")
|
|
167
|
-
]),
|
|
168
|
-
_: 1
|
|
169
|
-
}, 8, ["class"])
|
|
170
|
-
]),
|
|
171
|
-
_: 1
|
|
172
|
-
}),
|
|
173
|
-
createVNode(unref(ElSelect), {
|
|
174
|
-
placeholder: "请选择类型",
|
|
175
|
-
size: "small",
|
|
176
|
-
modelValue: selectValue.value,
|
|
177
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectValue.value = $event),
|
|
178
|
-
onChange: selectHandle,
|
|
179
|
-
clearable: ""
|
|
180
|
-
}, {
|
|
181
|
-
default: withCtx(() => [
|
|
182
|
-
createVNode(_component_ElOption, {
|
|
183
|
-
value: "1",
|
|
184
|
-
label: "测试"
|
|
185
|
-
})
|
|
186
|
-
]),
|
|
187
|
-
_: 1
|
|
188
|
-
}, 8, ["modelValue"]),
|
|
189
|
-
createVNode(unref(ElButton), {
|
|
190
|
-
link: "",
|
|
191
|
-
type: "primary",
|
|
192
|
-
size: "small",
|
|
193
|
-
onClick: readAllHandle
|
|
194
|
-
}, {
|
|
195
|
-
default: withCtx(() => [
|
|
196
|
-
createTextVNode("全部已读")
|
|
197
|
-
]),
|
|
198
|
-
_: 1
|
|
199
|
-
})
|
|
200
|
-
]),
|
|
201
|
-
createVNode(unref(ElScrollbar), {
|
|
202
|
-
class: "mk-message__body",
|
|
203
|
-
onScroll: load
|
|
204
|
-
}, {
|
|
205
|
-
default: withCtx(() => [
|
|
206
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(messageList.value, (item) => {
|
|
207
|
-
return openBlock(), createElementBlock("div", {
|
|
208
|
-
class: normalizeClass(["mk-message__body-item", { "is-read": item.isRead }]),
|
|
209
|
-
key: item.id,
|
|
210
|
-
onClick: ($event) => {
|
|
211
|
-
var _a2;
|
|
212
|
-
return (_a2 = messageType.value.find((a) => a.type == item.type)) == null ? void 0 : _a2.actions(item);
|
|
213
|
-
}
|
|
214
|
-
}, [
|
|
215
|
-
createElementVNode("div", _hoisted_3, toDisplayString(item.title), 1),
|
|
216
|
-
createElementVNode("div", _hoisted_4, toDisplayString(item.content), 1),
|
|
217
|
-
createElementVNode("div", _hoisted_5, [
|
|
218
|
-
createVNode(unref(ElTag), null, {
|
|
219
|
-
default: withCtx(() => {
|
|
220
|
-
var _a2;
|
|
221
|
-
return [
|
|
222
|
-
createTextVNode(toDisplayString((_a2 = messageType.value.find((a) => a.type == item.type)) == null ? void 0 : _a2.name), 1)
|
|
223
|
-
];
|
|
224
|
-
}),
|
|
225
|
-
_: 2
|
|
226
|
-
}, 1024),
|
|
227
|
-
createTextVNode(" " + toDisplayString(item.createdAt), 1)
|
|
228
|
-
])
|
|
229
|
-
], 10, _hoisted_2);
|
|
230
|
-
}), 128))
|
|
231
|
-
]),
|
|
232
|
-
_: 1
|
|
233
|
-
})
|
|
234
|
-
]),
|
|
235
|
-
_: 1
|
|
236
|
-
}, 8, ["modelValue"])) : createCommentVNode("", true);
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
export {
|
|
241
|
-
_sfc_main as default
|
|
242
|
-
};
|
|
243
|
-
//# sourceMappingURL=index.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../src/layouts/components/message-list/index.vue"],"sourcesContent":["<template>\r\n <ElDrawer class=\"mk-message\" title=\"通知消息\" v-model=\"showMessageList as any\" v-if=\"showMessageList\">\r\n <div class=\"mk-message__header\">\r\n <ElButtonGroup class=\"mk-message__header-buttonGroup\">\r\n <ElButton size=\"small\"\r\n :class=\"[buttonName == 'all' ? 'active' : '', 'mk-message__header-buttonGroup-button']\"\r\n @click=\"() => { buttonName = 'all' }\">\r\n 全部\r\n </ElButton>\r\n <ElButton size=\"small\"\r\n :class=\"[buttonName == 'unRead' ? 'active' : '', 'mk-message__header-buttonGroup-button']\"\r\n @click=\"() => { buttonName = 'unRead' }\">未读</ElButton>\r\n </ElButtonGroup>\r\n <ElSelect placeholder=\"请选择类型\" size=\"small\" v-model=\"selectValue\" @change=\"selectHandle\" clearable>\r\n <ElOption value=\"1\" label=\"测试\"></ElOption>\r\n </ElSelect>\r\n <ElButton link type=\"primary\" size=\"small\" @click=\"readAllHandle\">全部已读</ElButton>\r\n </div>\r\n <ElScrollbar class=\"mk-message__body\" @scroll=\"load\">\r\n <div v-for=\"item in messageList\" class=\"mk-message__body-item\" :class=\"{ 'is-read': item.isRead }\"\r\n :key=\"item.id\" @click=\"messageType.find((a) => a.type == item.type)?.actions(item)\">\r\n <div class=\"mk-message__body-item-header\">\r\n {{ item.title }}\r\n </div>\r\n <div class=\"mk-message__body-item-content\">\r\n {{ item.content }}\r\n </div>\r\n <div class=\"mk-message__body-item-footer\">\r\n <ElTag>{{ messageType.find((a) => a.type == item.type)?.name }}</ElTag>\r\n {{ item.createdAt }}\r\n </div>\r\n </div>\r\n </ElScrollbar>\r\n </ElDrawer>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { Dialoger, Messager } from \"@maketribe/dm\";\r\nimport { DvOpt, Group, OrderType } from \"@maketribe/request\";\r\nimport { ElButtonGroup, ElDrawer, ElButton, ElSelect, ElScrollbar, ElTag } from \"element-plus\";\r\nimport { MSAppClient } from \"../../../core\";\r\nimport { ref, unref, computed, Ref, watch } from \"vue\";\r\n\r\nconst httpRequest = MSAppClient.instance?.httpRequest;\r\nconst props = defineProps({\r\n showMessageList: {\r\n type: Boolean,\r\n default: false,\r\n }\r\n});\r\n\r\ninterface Message {\r\n id: number;\r\n title: string;\r\n content?: string;\r\n type: number;\r\n isRead: boolean;\r\n createdAt: string;\r\n}\r\n\r\nconst buttonName = ref('all');\r\nconst selectValue = ref('');\r\nconst loading = ref(false);\r\nconst pageNum = ref(1);\r\nconst messageList: Ref<Message[]> = ref([{\r\n id: 1,\r\n title: \"系统消息\",\r\n content: \"恭喜您!成功获得微信同款研发管理工具免费资格!恭喜您!成功获得微信同款研发管理工具免费资格!\",\r\n type: 1,\r\n isRead: true,\r\n createdAt: \"2024-08-14 13:44:26\"\r\n}, {\r\n id: 2,\r\n title: \"上级消息\",\r\n content: \"未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读未读\",\r\n type: 2,\r\n isRead: false,\r\n createdAt: \"2024-08-14 13:44:26\"\r\n}])\r\n\r\nconst load = async (scroll: { scrollTop: number }) => {\r\n const dom = document.querySelector(\".mk-message__body\")!.children[0] as HTMLElement;\r\n if (dom.scrollHeight - dom.offsetHeight - scroll.scrollTop < 300) {\r\n\r\n const result = await messageQuery.listWithResponse({\r\n pc: 10,\r\n pn: pageNum.value\r\n })\r\n pageNum.value++\r\n messageList.value.concat(result.data.data)\r\n }\r\n}\r\n\r\nconst messageType = ref([\r\n {\r\n type: 1,\r\n name: \"类型1\",\r\n actions: (row: any) => {\r\n console.log(row, \"类型1\");\r\n }\r\n },\r\n {\r\n type: 2,\r\n name: \"类型2\",\r\n actions: (row: any) => {\r\n console.log(row, \"类型2\");\r\n }\r\n }\r\n])\r\n\r\nconst messageDv = DvOpt.createInstance({\r\n name: \"message\",\r\n moduleName: \"ms\"\r\n})\r\nconst buttonGroup = new Group();\r\nconst selectGroup = new Group();\r\nconst messageQuery = messageDv.query()\r\n .addGroup((group) => { group.group.addGroup(buttonGroup).addGroup(selectGroup); })\r\n .addOrderItem(\"createdAt\", OrderType.DESC)\r\nconst refreshList = async (pc: number = 10) => {\r\n return await messageQuery.list({\r\n pc: pc,\r\n pn: 1\r\n }) as Message[];\r\n}\r\n\r\n\r\n\r\nconst emit = defineEmits([\"update:showMessageList\"]);\r\n\r\nconst showMessageList: Ref<Boolean> = computed({\r\n get() {\r\n return unref(props.showMessageList);\r\n },\r\n set(value: Boolean) {\r\n emit(\"update:showMessageList\", value);\r\n }\r\n});\r\n\r\n//将未读全部变成已读\r\nconst readAllHandle = async () => {\r\n const isConfirm = await Dialoger.confirm({\r\n title: \"提示\",\r\n message: \"确定将所有消息全部标记为已读吗?\",\r\n type: \"warning\"\r\n });\r\n\r\n if (!isConfirm) {\r\n return;\r\n }\r\n\r\n try {\r\n loading.value = true;\r\n const result = await httpRequest?.post(\"/message/readAll\");\r\n if (result?.data.code !== 200) {\r\n Messager.error({ message: result?.data.msg || \"操作失败\" });\r\n return;\r\n }\r\n messageList.value = await refreshList()\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n loading.value = false;\r\n }\r\n}\r\n\r\n//筛选选中的消息类型\r\nconst selectHandle = async () => {\r\n selectGroup.clear();\r\n if (selectValue.value) {\r\n buttonGroup.addCondition(\"type\", \"=\", selectValue.value)\r\n }\r\n messageList.value = await refreshList()\r\n}\r\n\r\n//根据当前选择的是全部还是未读\r\nwatch(buttonName, async () => {\r\n buttonGroup.clear();\r\n if (buttonName.value != 'all') {\r\n buttonGroup.addCondition(\"isRead\", \"=\", 1)\r\n }\r\n messageList.value = await refreshList()\r\n})\r\n\r\n</script>\r\n<style lang='scss'></style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0CM,UAAA,eAAc,iBAAY,aAAZ,mBAAsB;AAC1C,UAAM,QAAQ;AAgBR,UAAA,aAAa,IAAI,KAAK;AACtB,UAAA,cAAc,IAAI,EAAE;AACpB,UAAA,UAAU,IAAI,KAAK;AACnB,UAAA,UAAU,IAAI,CAAC;AACf,UAAA,cAA8B,IAAI,CAAC;AAAA,MACrC,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,WAAW;AAAA,IAAA,GACZ;AAAA,MACC,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,WAAW;AAAA,IACd,CAAA,CAAC;AAEI,UAAA,OAAO,OAAO,WAAkC;AAClD,YAAM,MAAM,SAAS,cAAc,mBAAmB,EAAG,SAAS,CAAC;AACnE,UAAI,IAAI,eAAe,IAAI,eAAe,OAAO,YAAY,KAAK;AAExD,cAAA,SAAS,MAAM,aAAa,iBAAiB;AAAA,UAC/C,IAAI;AAAA,UACJ,IAAI,QAAQ;AAAA,QAAA,CACf;AACO,gBAAA;AACR,oBAAY,MAAM,OAAO,OAAO,KAAK,IAAI;AAAA,MAC7C;AAAA,IAAA;AAGJ,UAAM,cAAc,IAAI;AAAA,MACpB;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,CAAC,QAAa;AACX,kBAAA,IAAI,KAAK,KAAK;AAAA,QAC1B;AAAA,MACJ;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,CAAC,QAAa;AACX,kBAAA,IAAI,KAAK,KAAK;AAAA,QAC1B;AAAA,MACJ;AAAA,IAAA,CACH;AAEK,UAAA,YAAY,MAAM,eAAe;AAAA,MACnC,MAAM;AAAA,MACN,YAAY;AAAA,IAAA,CACf;AACK,UAAA,cAAc,IAAI;AAClB,UAAA,cAAc,IAAI;AACxB,UAAM,eAAe,UAAU,MAC1B,EAAA,SAAS,CAAC,UAAU;AAAE,YAAM,MAAM,SAAS,WAAW,EAAE,SAAS,WAAW;AAAA,IAAI,CAAA,EAChF,aAAa,aAAa,UAAU,IAAI;AACvC,UAAA,cAAc,OAAO,KAAa,OAAO;AACpC,aAAA,MAAM,aAAa,KAAK;AAAA,QAC3B;AAAA,QACA,IAAI;AAAA,MAAA,CACP;AAAA,IAAA;AAKL,UAAM,OAAO;AAEb,UAAM,kBAAgC,SAAS;AAAA,MAC3C,MAAM;AACK,eAAA,MAAM,MAAM,eAAe;AAAA,MACtC;AAAA,MACA,IAAI,OAAgB;AAChB,aAAK,0BAA0B,KAAK;AAAA,MACxC;AAAA,IAAA,CACH;AAGD,UAAM,gBAAgB,YAAY;AACxB,YAAA,YAAY,MAAM,SAAS,QAAQ;AAAA,QACrC,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA,CACT;AAED,UAAI,CAAC,WAAW;AACZ;AAAA,MACJ;AAEI,UAAA;AACA,gBAAQ,QAAQ;AAChB,cAAM,SAAS,OAAM,2CAAa,KAAK;AACnC,aAAA,iCAAQ,KAAK,UAAS,KAAK;AAC3B,mBAAS,MAAM,EAAE,UAAS,iCAAQ,KAAK,QAAO,QAAQ;AACtD;AAAA,QACJ;AACY,oBAAA,QAAQ,MAAM;eACrB,GAAG;AACR,gBAAQ,MAAM,CAAC;AAAA,MAAA,UACjB;AACE,gBAAQ,QAAQ;AAAA,MACpB;AAAA,IAAA;AAIJ,UAAM,eAAe,YAAY;AAC7B,kBAAY,MAAM;AAClB,UAAI,YAAY,OAAO;AACnB,oBAAY,aAAa,QAAQ,KAAK,YAAY,KAAK;AAAA,MAC3D;AACY,kBAAA,QAAQ,MAAM;IAAY;AAI1C,UAAM,YAAY,YAAY;AAC1B,kBAAY,MAAM;AACd,UAAA,WAAW,SAAS,OAAO;AACf,oBAAA,aAAa,UAAU,KAAK,CAAC;AAAA,MAC7C;AACY,kBAAA,QAAQ,MAAM;IAAY,CACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|