diff --git a/src/pages-aigc/detail/components/ResultActions/index.vue b/src/pages-aigc/detail/components/ResultActions/index.vue
index 331804f..2f17258 100644
--- a/src/pages-aigc/detail/components/ResultActions/index.vue
+++ b/src/pages-aigc/detail/components/ResultActions/index.vue
@@ -4,7 +4,10 @@
{{ saving ? "保存中..." : "保存图片" }}
-
+
@@ -14,15 +17,29 @@ const props = defineProps({
type: Boolean,
default: false,
},
+ shareReady: {
+ type: Boolean,
+ default: false,
+ },
+ sharePreparing: {
+ type: Boolean,
+ default: false,
+ },
});
-const emit = defineEmits(["save", "share"]);
+const emit = defineEmits(["save", "prepare-share"]);
const handleSave = () => {
if (!props.saving) {
emit("save");
}
};
+
+const handleShare = () => {
+ if (!props.shareReady && !props.sharePreparing) {
+ emit("prepare-share");
+ }
+};
diff --git a/src/pages-aigc/detail/components/SharePreviewPopup/styles/index.scss b/src/pages-aigc/detail/components/SharePreviewPopup/styles/index.scss
deleted file mode 100644
index 7232426..0000000
--- a/src/pages-aigc/detail/components/SharePreviewPopup/styles/index.scss
+++ /dev/null
@@ -1,200 +0,0 @@
-.share-preview-popup {
- width: calc(100vw - 28px);
- max-width: 420px;
- max-height: calc(100vh - 56px);
- overflow-y: auto;
- padding: 18px 16px 14px;
- border: 1px solid rgba(73, 143, 205, 0.42);
- border-radius: 20px;
- background:
- radial-gradient(90% 72% at 100% 0%, rgba(32, 207, 117, 0.15), rgba(32, 207, 117, 0) 60%),
- linear-gradient(180deg, #dceeff 0%, #cfe7fb 100%);
- box-shadow: 0 22px 54px rgba(16, 44, 73, 0.24);
- box-sizing: border-box;
-}
-
-.share-preview-badge,
-.share-preview-heading,
-.share-preview-title,
-.share-preview-variant,
-.share-preview-brand-name,
-.share-preview-brand-type,
-.share-preview-footer-label,
-.share-preview-footer-action {
- display: block;
-}
-
-.share-preview-badge {
- width: max-content;
- margin: 0 auto;
- padding: 3px 9px;
- border-radius: 999px;
- background: rgba(32, 207, 117, 0.13);
- color: #0e9f61;
- font-size: 10px;
- line-height: 16px;
- font-weight: 900;
-}
-
-.share-preview-heading {
- margin-top: 7px;
- color: #173a5f;
- font-size: 20px;
- line-height: 26px;
- font-weight: 900;
- text-align: center;
-}
-
-.share-preview-card {
- margin-top: 12px;
- overflow: hidden;
- border: 1px solid rgba(73, 143, 205, 0.26);
- border-radius: 12px;
- background: rgba(255, 255, 255, 0.62);
- box-shadow: 0 10px 24px rgba(23, 58, 95, 0.08);
-}
-
-.share-preview-brand {
- display: flex;
- align-items: center;
- gap: 10px;
- padding: 12px 12px 7px;
-}
-
-.share-preview-brand-mark {
- flex: 0 0 30px;
- width: 30px;
- height: 30px;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 50%;
- background: #20cf75;
- color: #173a5f;
- font-size: 15px;
- line-height: 30px;
- font-weight: 900;
-}
-
-.share-preview-brand-copy {
- min-width: 0;
-}
-
-.share-preview-brand-name {
- overflow: hidden;
- color: #173a5f;
- font-size: 13px;
- line-height: 18px;
- font-weight: 900;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.share-preview-brand-type {
- margin-top: 1px;
- color: #6b8299;
- font-size: 9px;
- line-height: 12px;
- font-weight: 700;
-}
-
-.share-preview-title {
- overflow: hidden;
- padding: 4px 12px 0;
- color: #172033;
- font-size: 17px;
- line-height: 23px;
- font-weight: 900;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.share-preview-variant {
- padding: 1px 12px 10px;
- color: #4e7394;
- font-size: 11px;
- line-height: 16px;
- font-weight: 800;
-}
-
-.share-preview-image {
- width: 100%;
- height: 232px;
- display: block;
- background: #e8f2f8;
-}
-
-.share-preview-image-placeholder {
- display: flex;
- align-items: center;
- justify-content: center;
- background:
- radial-gradient(80% 85% at 50% 15%, rgba(32, 207, 117, 0.18), rgba(32, 207, 117, 0) 70%),
- #e8f2f8;
- color: #6b8299;
- font-size: 13px;
- line-height: 18px;
- font-weight: 800;
-}
-
-.share-preview-footer {
- min-height: 40px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 12px;
- padding: 0 12px;
-}
-
-.share-preview-footer-label,
-.share-preview-footer-action {
- min-width: 0;
- overflow: hidden;
- color: #4e7394;
- font-size: 10px;
- line-height: 14px;
- font-weight: 800;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.share-preview-footer-action {
- flex: 0 0 auto;
- color: #173a5f;
-}
-
-.share-preview-share-button,
-.share-preview-cancel-button {
- width: 100%;
- height: 44px;
- margin: 12px 0 0;
- padding: 0;
- border: 0;
- border-radius: 10px;
- box-sizing: border-box;
- font-size: 14px;
- line-height: 44px;
- font-weight: 900;
- text-align: center;
-}
-
-.share-preview-share-button {
- background: #20cf75;
- color: #ffffff;
- box-shadow: 0 8px 18px rgba(32, 207, 117, 0.2);
-}
-
-.share-preview-share-button::after {
- border: 0;
-}
-
-.share-preview-cancel-button {
- margin-top: 8px;
- background: rgba(255, 255, 255, 0.45);
- color: #385875;
-}
-
-.share-preview-share-button.is-pressed,
-.share-preview-cancel-button.is-pressed {
- opacity: 0.82;
-}
diff --git a/src/pages-aigc/detail/detail.vue b/src/pages-aigc/detail/detail.vue
index 44826a1..225300c 100644
--- a/src/pages-aigc/detail/detail.vue
+++ b/src/pages-aigc/detail/detail.vue
@@ -6,7 +6,8 @@
-
+
再生成一版
@@ -16,29 +17,28 @@
-
+
+
diff --git a/src/pages-aigc/sharedWork/styles/index.scss b/src/pages-aigc/sharedWork/styles/index.scss
new file mode 100644
index 0000000..23b2f06
--- /dev/null
+++ b/src/pages-aigc/sharedWork/styles/index.scss
@@ -0,0 +1,116 @@
+.shared-work-page {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100vw;
+ height: 100vh;
+ overflow: hidden;
+ color: #173a5f;
+ background: #c5e5f8;
+ box-sizing: border-box;
+}
+
+.shared-work-nav {
+ position: relative;
+ z-index: 3;
+ flex: 0 0 auto;
+ background: rgba(197, 229, 248, 0.96);
+}
+
+.shared-work-nav :deep(.top-nav-bar > .flex) {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+
+.shared-work-nav :deep(.nav-bar-center text) {
+ font-size: 17px;
+ line-height: 23px;
+ font-weight: 900;
+}
+
+.shared-work-scroll {
+ flex: 1 1 0;
+ width: 100%;
+ height: 0;
+ min-height: 0;
+ padding-bottom: 104px;
+ box-sizing: border-box;
+}
+
+.shared-work-media {
+ width: 100%;
+ display: block;
+ background: #b8dced;
+}
+
+.shared-work-media.is-video {
+ height: min(500px, 66vh);
+}
+
+.shared-work-meta {
+ padding: 18px 18px 118px;
+}
+
+.shared-work-title,
+.shared-work-type {
+ display: block;
+}
+
+.shared-work-title {
+ overflow: hidden;
+ color: #173a5f;
+ font-size: 20px;
+ line-height: 27px;
+ font-weight: 900;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.shared-work-type {
+ margin-top: 4px;
+ color: #0b7b60;
+ font-size: 12px;
+ line-height: 17px;
+ font-weight: 800;
+}
+
+.shared-work-empty {
+ min-height: 420px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.shared-work-cta-wrap {
+ position: fixed;
+ z-index: 4;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 18px 16px calc(14px + env(safe-area-inset-bottom));
+ background: linear-gradient(180deg, rgba(197, 229, 248, 0) 0%, #c5e5f8 34%);
+ box-sizing: border-box;
+}
+
+.shared-work-cta {
+ width: 100%;
+ height: 54px;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ border-radius: 8px;
+ background: #20c99a;
+ color: #173a5f;
+ font-size: 16px;
+ line-height: 54px;
+ font-weight: 900;
+ box-shadow: 0 10px 22px rgba(32, 201, 154, 0.2);
+}
+
+.shared-work-cta::after {
+ border: 0;
+}
+
+.shared-work-cta.is-pressed {
+ opacity: 0.84;
+}
diff --git a/src/pages.json b/src/pages.json
index ee05b64..7b81a9c 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -182,6 +182,12 @@
"navigationStyle": "custom"
}
},
+ {
+ "path": "sharedWork/sharedWork",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
{
"path": "recharge/recharge",
"style": {
diff --git a/src/request/api/AigcApi.js b/src/request/api/AigcApi.js
index 49cfe2d..ee4c224 100644
--- a/src/request/api/AigcApi.js
+++ b/src/request/api/AigcApi.js
@@ -36,6 +36,14 @@ function getCreditLedgerPage(args) {
return request.post("/hotelBiz/credit/ledger/page", args);
}
+function createAigcGeneratorTaskShare(args) {
+ return request.post("/hotelBiz/aigcGeneratorTask/share/create", args);
+}
+
+function getAigcGeneratorTaskShareDetail(args) {
+ return request.post("/hotelBiz/aigcGeneratorTask/share/detail", args, { noToken: true });
+}
+
export {
getAigcTemplateList,
getAigcTemplateItemList,
@@ -46,4 +54,6 @@ export {
getRechargeOptions,
rechargeCredit,
getCreditLedgerPage,
+ createAigcGeneratorTaskShare,
+ getAigcGeneratorTaskShareDetail,
};