store content source edit
This commit is contained in:
parent
505f7d48ac
commit
59e8ecfc24
@ -148,25 +148,3 @@ spec:
|
|||||||
name: http
|
name: http
|
||||||
selector:
|
selector:
|
||||||
app: smarketing-frontend
|
app: smarketing-frontend
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: smarketing-frontend-ingress
|
|
||||||
namespace: ${namespace}
|
|
||||||
annotations:
|
|
||||||
nginx.ingress.kubernetes.io/rewrite-target: /
|
|
||||||
nginx.ingress.kubernetes.io/ssl-redirect: "false"
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: ${ingress_host}
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: smarketing-frontend-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
@ -7,14 +7,14 @@ const getApiUrls = () => {
|
|||||||
const config = window.__runtime_config__ || {}
|
const config = window.__runtime_config__ || {}
|
||||||
return {
|
return {
|
||||||
GATEWAY_URL: config.GATEWAY_URL || 'http://20.1.2.3',
|
GATEWAY_URL: config.GATEWAY_URL || 'http://20.1.2.3',
|
||||||
AUTH_URL: config.AUTH_URL || 'http://localhost:8081/api/auth',
|
AUTH_URL: config.AUTH_URL || 'http://smarketing.20.249.184.228.nip.io/api/auth',
|
||||||
MEMBER_URL: config.MEMBER_URL || 'http://localhost:8081/api/member',
|
MEMBER_URL: config.MEMBER_URL || 'http://smarketing.20.249.184.228.nip.io/api/member',
|
||||||
STORE_URL: config.STORE_URL || 'http://localhost:8082/api/store',
|
STORE_URL: config.STORE_URL || 'http://smarketing.20.249.184.228.nip.io/api/store',
|
||||||
CONTENT_URL: config.CONTENT_URL || 'http://localhost:8083/api/content',
|
CONTENT_URL: config.CONTENT_URL || 'http://smarketing.20.249.184.228.nip.io/api/content',
|
||||||
MENU_URL: config.MENU_URL || 'http://localhost:8082/api/menu',
|
MENU_URL: config.MENU_URL || 'http://smarketing.20.249.184.228.nip.io/api/menu',
|
||||||
SALES_URL: config.SALES_URL || 'http://localhost:8082/api/sales',
|
SALES_URL: config.SALES_URL || 'http://smarketing.20.249.184.228.nip.io/api/sales',
|
||||||
RECOMMEND_URL: config.RECOMMEND_URL || 'http://localhost:8084/api/recommendations',
|
RECOMMEND_URL: config.RECOMMEND_URL || 'http://smarketing.20.249.184.228.nip.io/api/recommendations',
|
||||||
IMAGE_URL: config.IMAGE_URL || 'http://localhost:8082/api/images'
|
IMAGE_URL: config.IMAGE_URL || 'http://smarketing.20.249.184.228.nip.io/api/images'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -116,7 +116,7 @@
|
|||||||
<v-text-field
|
<v-text-field
|
||||||
v-if="selectedType === 'poster'"
|
v-if="selectedType === 'poster'"
|
||||||
v-model="formData.menuName"
|
v-model="formData.menuName"
|
||||||
label="음식명"
|
label="메뉴명"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
:rules="menuNameRules"
|
:rules="menuNameRules"
|
||||||
required
|
required
|
||||||
@ -648,7 +648,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-item v-if="currentVersion.menuName || formData.menuName">
|
<v-list-item v-if="currentVersion.menuName || formData.menuName">
|
||||||
<v-list-item-title>음식명</v-list-item-title>
|
<v-list-item-title>메뉴명</v-list-item-title>
|
||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
{{ currentVersion.menuName || formData.menuName }}
|
{{ currentVersion.menuName || formData.menuName }}
|
||||||
</template>
|
</template>
|
||||||
@ -850,8 +850,8 @@ const targetRules = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
const menuNameRules = [
|
const menuNameRules = [
|
||||||
v => !!v || '음식명은 필수입니다',
|
v => !!v || '메뉴명은 필수입니다',
|
||||||
v => (v && v.length <= 50) || '음식명은 50자 이하로 입력해주세요'
|
v => (v && v.length <= 50) || '메뉴명은 50자 이하로 입력해주세요'
|
||||||
]
|
]
|
||||||
|
|
||||||
const eventNameRules = [
|
const eventNameRules = [
|
||||||
|
|||||||
@ -78,17 +78,42 @@
|
|||||||
<v-card-text class="pa-6">
|
<v-card-text class="pa-6">
|
||||||
<v-row>
|
<v-row>
|
||||||
<!-- 매장 이미지 -->
|
<!-- 매장 이미지 -->
|
||||||
|
<!-- 매장 이미지 섹션 -->
|
||||||
<v-col cols="12" md="4" class="text-center">
|
<v-col cols="12" md="4" class="text-center">
|
||||||
<v-avatar size="120" class="mb-3">
|
<div class="store-image-container mb-3">
|
||||||
<v-img
|
<!-- 매장 사진이 있을 때 -->
|
||||||
:src="storeInfo.imageUrl || '/images/store-placeholder.png'"
|
<v-avatar
|
||||||
alt="매장 이미지"
|
v-if="storeInfo.storeImage || storeInfo.imageUrl"
|
||||||
/>
|
size="120"
|
||||||
</v-avatar>
|
class="store-avatar"
|
||||||
|
>
|
||||||
|
<v-img
|
||||||
|
:src="storeInfo.storeImage || storeInfo.imageUrl"
|
||||||
|
alt="매장 이미지"
|
||||||
|
/>
|
||||||
|
</v-avatar>
|
||||||
|
|
||||||
|
<!-- 매장 사진이 없을 때 - 업종별 이모지 표시 -->
|
||||||
|
<div
|
||||||
|
v-else
|
||||||
|
class="store-emoji-container d-flex align-center justify-center"
|
||||||
|
:style="{
|
||||||
|
width: '120px',
|
||||||
|
height: '120px',
|
||||||
|
borderRadius: '50%',
|
||||||
|
backgroundColor: getStoreColor(storeInfo.businessType),
|
||||||
|
fontSize: '48px'
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
{{ getStoreEmoji(storeInfo.businessType) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3 class="text-h6 font-weight-bold">{{ storeInfo.storeName }}</h3>
|
<h3 class="text-h6 font-weight-bold">{{ storeInfo.storeName }}</h3>
|
||||||
<p class="text-grey">{{ storeInfo.businessType }}</p>
|
<p class="text-grey">{{ storeInfo.businessType }}</p>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
|
|
||||||
<!-- 기본 정보 -->
|
<!-- 기본 정보 -->
|
||||||
<v-col cols="12" md="8">
|
<v-col cols="12" md="8">
|
||||||
<v-row>
|
<v-row>
|
||||||
@ -1666,6 +1691,110 @@ onMounted(async () => {
|
|||||||
showSnackbar('매장 정보를 불러오는 중 오류가 발생했습니다', 'error')
|
showSnackbar('매장 정보를 불러오는 중 오류가 발생했습니다', 'error')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 업종별 이모지 반환 함수
|
||||||
|
const getStoreEmoji = (businessType) => {
|
||||||
|
const emojiMap = {
|
||||||
|
'카페': '☕',
|
||||||
|
'레스토랑': '🍽️',
|
||||||
|
'한식': '🍲',
|
||||||
|
'중식': '🥢',
|
||||||
|
'일식': '🍣',
|
||||||
|
'양식': '🍝',
|
||||||
|
'치킨': '🍗',
|
||||||
|
'피자': '🍕',
|
||||||
|
'햄버거': '🍔',
|
||||||
|
'분식': '🍜',
|
||||||
|
'베이커리': '🥐',
|
||||||
|
'디저트': '🧁',
|
||||||
|
'아이스크림': '🍦',
|
||||||
|
'술집': '🍺',
|
||||||
|
'바': '🍸',
|
||||||
|
'펜션': '🏠',
|
||||||
|
'호텔': '🏨',
|
||||||
|
'게스트하우스': '🏡',
|
||||||
|
'마트': '🛒',
|
||||||
|
'편의점': '🏪',
|
||||||
|
'미용실': '💇',
|
||||||
|
'네일샵': '💅',
|
||||||
|
'세탁소': '👔',
|
||||||
|
'약국': '💊',
|
||||||
|
'병원': '🏥',
|
||||||
|
'헬스장': '💪',
|
||||||
|
'학원': '📚',
|
||||||
|
'키즈카페': '🧸',
|
||||||
|
'반려동물': '🐾',
|
||||||
|
'꽃집': '🌸',
|
||||||
|
'문구점': '✏️',
|
||||||
|
'서점': '📖',
|
||||||
|
'화장품': '💄',
|
||||||
|
'옷가게': '👗',
|
||||||
|
'신발가게': '👟',
|
||||||
|
'가구점': '🪑',
|
||||||
|
'전자제품': '📱',
|
||||||
|
'자동차': '🚗',
|
||||||
|
'주유소': '⛽',
|
||||||
|
'세차장': '🚿',
|
||||||
|
'부동산': '🏢',
|
||||||
|
'은행': '🏦',
|
||||||
|
'우체국': '📮',
|
||||||
|
'기타': '🏪'
|
||||||
|
}
|
||||||
|
|
||||||
|
return emojiMap[businessType] || '🏪'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 업종별 배경색 반환 함수
|
||||||
|
const getStoreColor = (businessType) => {
|
||||||
|
const colorMap = {
|
||||||
|
'카페': '#8D6E63',
|
||||||
|
'레스토랑': '#FF7043',
|
||||||
|
'한식': '#D32F2F',
|
||||||
|
'중식': '#F57C00',
|
||||||
|
'일식': '#388E3C',
|
||||||
|
'양식': '#303F9F',
|
||||||
|
'치킨': '#FBC02D',
|
||||||
|
'피자': '#E64A19',
|
||||||
|
'햄버거': '#795548',
|
||||||
|
'분식': '#FF5722',
|
||||||
|
'베이커리': '#F57C00',
|
||||||
|
'디저트': '#E91E63',
|
||||||
|
'아이스크림': '#00BCD4',
|
||||||
|
'술집': '#FF9800',
|
||||||
|
'바': '#9C27B0',
|
||||||
|
'펜션': '#4CAF50',
|
||||||
|
'호텔': '#2196F3',
|
||||||
|
'게스트하우스': '#009688',
|
||||||
|
'마트': '#607D8B',
|
||||||
|
'편의점': '#3F51B5',
|
||||||
|
'미용실': '#E91E63',
|
||||||
|
'네일샵': '#9C27B0',
|
||||||
|
'세탁소': '#00BCD4',
|
||||||
|
'약국': '#4CAF50',
|
||||||
|
'병원': '#2196F3',
|
||||||
|
'헬스장': '#FF5722',
|
||||||
|
'학원': '#673AB7',
|
||||||
|
'키즈카페': '#FFEB3B',
|
||||||
|
'반려동물': '#795548',
|
||||||
|
'꽃집': '#E91E63',
|
||||||
|
'문구점': '#FF9800',
|
||||||
|
'서점': '#795548',
|
||||||
|
'화장품': '#E91E63',
|
||||||
|
'옷가게': '#9C27B0',
|
||||||
|
'신발가게': '#607D8B',
|
||||||
|
'가구점': '#8BC34A',
|
||||||
|
'전자제품': '#607D8B',
|
||||||
|
'자동차': '#424242',
|
||||||
|
'주유소': '#FF5722',
|
||||||
|
'세차장': '#00BCD4',
|
||||||
|
'부동산': '#795548',
|
||||||
|
'은행': '#2196F3',
|
||||||
|
'우체국': '#FF5722',
|
||||||
|
'기타': '#9E9E9E'
|
||||||
|
}
|
||||||
|
|
||||||
|
return colorMap[businessType] || '#9E9E9E'
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@ -2208,4 +2337,23 @@ onMounted(async () => {
|
|||||||
.store-dialog-content::-webkit-scrollbar-thumb:hover {
|
.store-dialog-content::-webkit-scrollbar-thumb:hover {
|
||||||
background: #a8a8a8;
|
background: #a8a8a8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.store-image-container {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.store-avatar {
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.store-emoji-container {
|
||||||
|
margin: 0 auto;
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: transform 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.store-emoji-container:hover {
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
Loading…
x
Reference in New Issue
Block a user