|
|
@@ -30,8 +30,9 @@ import { EComponentType } from "@/consts/enum";
|
|
|
interface Props {
|
|
|
components: TComponentItem[];
|
|
|
editMode?: boolean;
|
|
|
+ isVisitor?: boolean; // 是否是访客
|
|
|
}
|
|
|
-export default ({ components, editMode = false }: Props) => {
|
|
|
+export default ({ components, editMode = false, isVisitor = true }: Props) => {
|
|
|
const {
|
|
|
delComponent,
|
|
|
setCurrentComponent,
|
|
|
@@ -50,7 +51,7 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
const {handleChooseAddress, openNavigation} = useAddress()
|
|
|
|
|
|
const handleMapClick = (editMode:boolean, c: TComponentItem)=> {
|
|
|
- if(editMode){
|
|
|
+ if(editMode || !isVisitor){
|
|
|
handleChooseAddress(c.data, c)
|
|
|
}else{
|
|
|
openNavigation(c.data)
|
|
|
@@ -59,6 +60,15 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
|
|
|
const showMediaLink = (mediaItem: TSocialMediaItem, link: string, c: TEntityComponent) => {
|
|
|
console.log(c, SocialMediaType.shiping.value, link)
|
|
|
+ if(!isVisitor){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(link.length <= 0 ){
|
|
|
+ Taro.showToast({
|
|
|
+ title: '链接未配置'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
// 微信公众号直接跳转
|
|
|
if(c?.type === SocialMediaType.wechat.value){
|
|
|
// 跳转的公众号需与小程序为同主体或关联主体
|
|
|
@@ -83,17 +93,20 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
setCurrentMediaItem(mediaItem);
|
|
|
setCurrentLink(link);
|
|
|
setShow(true);
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
const handleDelete = (c: TComponentItem) => {
|
|
|
-
|
|
|
+
|
|
|
delComponent(c);
|
|
|
};
|
|
|
const handleNavigate = (c: TComponentItem, url: string) => {
|
|
|
+ if(isVisitor){
|
|
|
+ return
|
|
|
+ }
|
|
|
setInsertIndex(-1);
|
|
|
setCurrentComponent(c);
|
|
|
let _url = url;
|
|
|
@@ -105,9 +118,9 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
Taro.navigateTo({ url: _url });
|
|
|
};
|
|
|
|
|
|
-
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
const handleSort = async (c: TComponentItem, direction: number) => {
|
|
|
console.log(c, direction)
|
|
|
@@ -145,7 +158,7 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
};
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
// 渲染组件列表
|
|
|
const renderComponents = () => {
|
|
|
if (!components) {
|
|
|
@@ -193,7 +206,7 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
),
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 联系人
|
|
|
if(c.type === "bluebook"){
|
|
|
return {
|
|
|
@@ -210,7 +223,6 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
onMove={handleSort}
|
|
|
onStyleChanged={changeStyle}
|
|
|
onClick={() =>
|
|
|
- editMode &&
|
|
|
handleNavigate(
|
|
|
c,
|
|
|
`/pages/editor-pages/editor-link-contact/index`
|
|
|
@@ -220,15 +232,15 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
),
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 社交媒体组件
|
|
|
if (c?.type && SocialMediaType[c?.type]) {
|
|
|
-
|
|
|
+
|
|
|
const { value } = SocialMediaType[c.type];
|
|
|
return {
|
|
|
component: c,
|
|
|
renderer: (
|
|
|
- <SocialMedia
|
|
|
+ <SocialMedia
|
|
|
index={index}
|
|
|
mediaItem={SocialMediaType[c.type]}
|
|
|
onSwitchChanged={handleSwitchChanged}
|
|
|
@@ -236,12 +248,12 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
components={components}
|
|
|
editMode={editMode}
|
|
|
onDelete={handleDelete}
|
|
|
- onClick={() =>
|
|
|
- editMode &&
|
|
|
- handleNavigate(
|
|
|
- c,
|
|
|
- `/pages/editor-pages/editor-link-social/index?mediaType=${value}`
|
|
|
- )
|
|
|
+ onClick={() =>{
|
|
|
+ handleNavigate(
|
|
|
+ c,
|
|
|
+ `/pages/editor-pages/editor-link-social/index?mediaType=${value}`
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
onMove={handleSort}
|
|
|
showMediaLink={(mediaItem, link)=> showMediaLink(mediaItem, link, c)}
|
|
|
@@ -294,7 +306,6 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
<WidgetContent
|
|
|
editMode={editMode}
|
|
|
onClick={() =>
|
|
|
- editMode &&
|
|
|
handleNavigate(
|
|
|
c,
|
|
|
`/pages/editor-pages/editor-textarea/index`
|
|
|
@@ -311,15 +322,16 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
// 普通链接及公众号文章
|
|
|
if (c.type === 'link' || c.type === 'wechatArticle') {
|
|
|
-
|
|
|
+
|
|
|
return {
|
|
|
component: c,
|
|
|
renderer: (
|
|
|
<CardLink
|
|
|
index={index}
|
|
|
+ isVisitor={isVisitor}
|
|
|
onSwitchChanged={handleSwitchChanged}
|
|
|
components={components}
|
|
|
component={c}
|
|
|
@@ -328,13 +340,13 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
onMove={handleSort}
|
|
|
onStyleChanged={changeStyle}
|
|
|
onClick={(c, link, mediaItem) =>{
|
|
|
- if(editMode){
|
|
|
+ if(!isVisitor){
|
|
|
handleNavigate(
|
|
|
c,
|
|
|
`/pages/editor-pages/editor-link/index?linkType=${c.data.linkType}&title=${c.data.title}`,
|
|
|
)
|
|
|
}else{
|
|
|
-
|
|
|
+
|
|
|
showMediaLink(mediaItem, link, c)
|
|
|
}
|
|
|
}}
|
|
|
@@ -343,15 +355,15 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
// 电话
|
|
|
if (c.type === "tel") {
|
|
|
return {
|
|
|
component: c,
|
|
|
renderer: (
|
|
|
- <CardTel
|
|
|
+ <CardTel
|
|
|
index={index}
|
|
|
onSwitchChanged={handleSwitchChanged}
|
|
|
component={c}
|
|
|
@@ -385,9 +397,9 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
components={components}
|
|
|
editMode={editMode}
|
|
|
onDelete={() => handleDelete(c)}
|
|
|
- onClick={() =>
|
|
|
- editMode &&
|
|
|
- handleNavigate(c, "/pages/editor-pages/editor-media/index")
|
|
|
+ onClick={() => {
|
|
|
+ handleNavigate(c, "/pages/editor-pages/editor-media/index")
|
|
|
+ }
|
|
|
}
|
|
|
onMove={handleSort}
|
|
|
onStyleChanged={changeStyle}
|
|
|
@@ -424,7 +436,7 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
>
|
|
|
{c.data.name}
|
|
|
</WidgetMap>
|
|
|
-
|
|
|
+
|
|
|
</WidgetCard>
|
|
|
</>
|
|
|
),
|
|
|
@@ -432,7 +444,7 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
}
|
|
|
})
|
|
|
.filter((item) => !!item);
|
|
|
-
|
|
|
+
|
|
|
// 如果是编辑模式则显示 “添加组件” 按钮
|
|
|
if (editMode) {
|
|
|
const _components: JSX.Element[] = [renderNewCompButton(-1)];
|
|
|
@@ -445,9 +457,9 @@ export default ({ components, editMode = false }: Props) => {
|
|
|
}
|
|
|
return componentsWithJSX.map((item) => item.renderer);
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
return (
|
|
|
-
|
|
|
+
|
|
|
<>
|
|
|
{currentMediaItem && (
|
|
|
<PopupLinkCopyer
|