|
|
@@ -35,7 +35,7 @@ import { computed, ref } from 'vue';
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
import headerBar from "@/components/header-bar/index.vue";
|
|
|
-import marketingEdit from '@/views/components/marketingEdit'
|
|
|
+import marketingEdit from '@/views/components/marketingEdit/index.vue'
|
|
|
import useClientStore from '@/stores/modules/client'
|
|
|
|
|
|
import { saveCustomerTemplate } from '@/apis/other'
|
|
|
@@ -52,28 +52,26 @@ const templateName = ref('')
|
|
|
const showNameDialog = ref(false) // 由"保存"触发,而不是进入页面就弹
|
|
|
const pendingPayload = ref<any | null>(null)
|
|
|
|
|
|
-// 编辑模式:从路由 query 中还原模板数据和名称
|
|
|
+// 编辑模式:从sessionStorage中还原模板数据和名称
|
|
|
if (isEdit) {
|
|
|
- const query: any = route.query || {}
|
|
|
-
|
|
|
- // 还原画布 JSON
|
|
|
- const rawJson = query.customer_template_json as string | undefined
|
|
|
- if (rawJson) {
|
|
|
+ const templateDataStr = sessionStorage.getItem('editTpl_template_data')
|
|
|
+ if (templateDataStr) {
|
|
|
try {
|
|
|
- const decoded = decodeURIComponent(rawJson)
|
|
|
- const parsed = JSON.parse(decoded)
|
|
|
- if (Array.isArray(parsed)) {
|
|
|
- data.value = parsed
|
|
|
- } else {
|
|
|
- data.value = parsed
|
|
|
+ const templateData = JSON.parse(templateDataStr)
|
|
|
+ // 还原画布 JSON
|
|
|
+ if (templateData.customer_template_json && Array.isArray(templateData.customer_template_json)) {
|
|
|
+ data.value = templateData.customer_template_json
|
|
|
}
|
|
|
+
|
|
|
+ // 名称直接取 template_name,取不到则为空
|
|
|
+ templateName.value = (templateData.template_name || '') as string
|
|
|
+
|
|
|
+ // 清理sessionStorage,避免数据残留
|
|
|
+ sessionStorage.removeItem('editTpl_template_data')
|
|
|
} catch (e) {
|
|
|
- console.error('解析 customer_template_json 失败:', e)
|
|
|
+ console.error('解析 editTpl_template_data 失败:', e)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 名称直接取 template_name,取不到则为空
|
|
|
- templateName.value = (query.template_name || '') as string
|
|
|
}
|
|
|
|
|
|
// 默认商品文案
|
|
|
@@ -100,25 +98,41 @@ const defaultGoodsText = [
|
|
|
}
|
|
|
]
|
|
|
|
|
|
-// 从路由 query 中解析 goods_images,如果没有就使用默认示例
|
|
|
-const defaultGoodsImages = [
|
|
|
-]
|
|
|
+// 从sessionStorage中解析 goods_images,如果没有就使用默认示例
|
|
|
+const defaultGoodsImages = []
|
|
|
|
|
|
const goodsImages = computed(() => {
|
|
|
- const raw = route.query.customer_template_images as string | undefined
|
|
|
- if (!raw) return defaultGoodsImages
|
|
|
+ // 新增模式:从sessionStorage获取数据
|
|
|
+ const templateDataStr = sessionStorage.getItem('addTpl_template_data')
|
|
|
+ if (templateDataStr) {
|
|
|
+ try {
|
|
|
+ const templateData = JSON.parse(templateDataStr)
|
|
|
+ if (templateData.customer_template_images && Array.isArray(templateData.customer_template_images)) {
|
|
|
+ // 清理sessionStorage,避免数据残留
|
|
|
+ sessionStorage.removeItem('addTpl_template_data')
|
|
|
+ return templateData.customer_template_images
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error('解析 addTpl_template_data 失败:', e)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- try {
|
|
|
- const decoded = decodeURIComponent(raw)
|
|
|
- const parsed = JSON.parse(decoded)
|
|
|
- if (Array.isArray(parsed) && parsed.length > 0) {
|
|
|
- return parsed
|
|
|
+ // 编辑模式或其他情况返回默认值
|
|
|
+ return defaultGoodsImages
|
|
|
+})
|
|
|
+
|
|
|
+// 新增模式:从sessionStorage中获取template_image_order
|
|
|
+const templateImageOrder = computed(() => {
|
|
|
+ const templateDataStr = sessionStorage.getItem('addTpl_template_data')
|
|
|
+ if (templateDataStr) {
|
|
|
+ try {
|
|
|
+ const templateData = JSON.parse(templateDataStr)
|
|
|
+ return templateData.template_image_order || ''
|
|
|
+ } catch (e) {
|
|
|
+ console.error('解析 addTpl_template_data 失败:', e)
|
|
|
}
|
|
|
- return defaultGoodsImages
|
|
|
- } catch (e) {
|
|
|
- console.error('解析 customer_template_images 失败:', e)
|
|
|
- return defaultGoodsImages
|
|
|
}
|
|
|
+ return ''
|
|
|
})
|
|
|
|
|
|
|
|
|
@@ -144,9 +158,9 @@ const doSave = async (payload: any) => {
|
|
|
requestData.template_cover_image = payload[0].preview
|
|
|
}
|
|
|
requestData.customer_template_images = goodsImages.value
|
|
|
- requestData.template_image_order = route.query.template_image_order as string | undefined
|
|
|
+ requestData.template_image_order = templateImageOrder.value || undefined
|
|
|
// 直接从 goodsText 中获取所有商品文字的 key
|
|
|
- requestData.template_excel_headers = goodsText.map(item => item.key)
|
|
|
+ requestData.template_excel_headers = defaultGoodsText
|
|
|
await saveCustomerTemplate(requestData)
|
|
|
ElMessage.success(isEdit ? '模板保存成功' : '模板创建成功')
|
|
|
router.back()
|