Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄庭坚
jinfa-platform
Commits
1bd26ba0
Commit
1bd26ba0
authored
Nov 29, 2021
by
GuanHua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 渠道能力文案抽取
parent
2b3c0332
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
191 additions
and
136 deletions
+191
-136
common.ts
src/locales/zh-CN/common.ts
+10
-3
shop.ts
src/locales/zh-CN/shop.ts
+56
-14
index.tsx
src/pages/channel/channelInfo/index.tsx
+24
-23
add.tsx
src/pages/channel/channelSeo/add.tsx
+19
-18
index.tsx
src/pages/channel/channelSeo/index.tsx
+15
-14
index.tsx
src/pages/channel/channelTemplate/index.tsx
+4
-4
index.tsx
src/pages/channel/components/templateItem/index.tsx
+7
-6
index.tsx
src/pages/channel/components/useModal/index.tsx
+9
-9
detail.tsx
src/pages/channel/memberList/detail.tsx
+0
-0
index.tsx
src/pages/channel/memberList/index.tsx
+16
-16
index.tsx
src/pages/channel/templateDetail/index.tsx
+16
-14
index.tsx
src/pages/shop/shopInfo/index.tsx
+1
-1
add.tsx
src/pages/shop/shopSeo/add.tsx
+7
-7
index.tsx
src/pages/shop/shopSeo/index.tsx
+6
-6
index.tsx
src/pages/shop/templateDetail/index.tsx
+1
-1
No files found.
src/locales/zh-CN/common.ts
View file @
1bd26ba0
...
...
@@ -5,19 +5,22 @@
/** button */
'common.button.save'
:
'保存'
,
'common.button.add'
:
'新建'
,
'common.button.modify'
:
'修改'
,
'common.button.yes'
:
'是'
,
'common.button.no'
:
'否'
,
'common.button.delete'
:
'删除'
,
'common.button.back'
:
'返回'
,
'common.button.preview'
:
'预览'
,
'common.button.view.details'
:
'查看详情'
,
'common.button.query'
:
'查询'
,
'common.button.reset'
:
'重置'
,
/** tips */
'common.tip.save.confirm'
:
'您还有未保存的内容,是否确定要离开?'
,
'common.tip.option.confirm'
:
'确定要执行这个操作?'
,
/** tab
el
*/
'common.tab
el
.action'
:
"操作"
,
/** tab
le
*/
'common.tab
le
.action'
:
"操作"
,
/** status */
'common.status.effective'
:
'有效'
,
...
...
@@ -27,5 +30,9 @@
'common.unit.individual.chinese'
:
'个汉字'
,
/** text */
'common.text.longest'
:
'最长'
'common.text.longest'
:
'最长'
,
'common.text.select'
:
'选择'
,
/** form */
'common.form.name.placeholder'
:
'请输入姓名'
,
}
src/locales/zh-CN/shop.ts
View file @
1bd26ba0
...
...
@@ -14,8 +14,10 @@ export default {
'shop.form.describe.required'
:
'请输入公司简介'
,
'shop.form.label.workshopPics'
:
'厂房照片'
,
'shop.form.label.honorPics'
:
'资质荣誉'
,
'shop.form.label.honorPics.tip'
:
'如商标注册证书、品牌授权证书等证明材料'
,
'shop.form.label.albumName'
:
'宣传画册'
,
'shop.form.label.shopLink'
:
'店铺链接'
,
'shop.form.label.mallLink'
:
'商城链接'
,
'shop.form.label.phone'
:
'联系电话'
,
'shop.form.label.address'
:
'详细地址'
,
'shop.form.label.currentLink'
:
'当前链接'
,
...
...
@@ -23,26 +25,28 @@ export default {
'shop.form.label.upload.tip'
:
'一次上传一个文件,每个附件大小不能超过 50M<'
,
'shop.option.copy.success'
:
'复制成功!'
,
'shop.seo.tabel.name'
:
"页面名称"
,
'shop.seo.tabel.home'
:
"店铺首页"
,
'shop.seo.tabel.about'
:
"关于我们"
,
'shop.seo.table.name'
:
"页面名称"
,
'shop.seo.table.home'
:
"店铺首页"
,
'shop.seo.table.channelHome'
:
'渠道商场首页'
,
'shop.seo.table.about'
:
"关于我们"
,
'shop.seo.form.name.required'
:
"请选择页面名称"
,
'shop.seo.tab
el
.link'
:
"访问链接"
,
'shop.seo.tab
el
.link.tip'
:
"访问该页面的链接"
,
'shop.seo.tab
el
.status'
:
"状态"
,
'shop.seo.tab
el
.title'
:
"标题"
,
'shop.seo.tab
el
.title.tip'
:
"用于显示在页面title标签的内容,便于搜索引擎抓取"
,
'shop.seo.tab
le
.link'
:
"访问链接"
,
'shop.seo.tab
le
.link.tip'
:
"访问该页面的链接"
,
'shop.seo.tab
le
.status'
:
"状态"
,
'shop.seo.tab
le
.title'
:
"标题"
,
'shop.seo.tab
le
.title.tip'
:
"用于显示在页面title标签的内容,便于搜索引擎抓取"
,
'shop.seo.form.title.required'
:
"标题"
,
'shop.seo.tab
el
.description'
:
"描述"
,
'shop.seo.tab
el
.description.tip'
:
"用于显示在页面Description标签的内容,便于搜索引擎抓取"
,
'shop.seo.tab
le
.description'
:
"描述"
,
'shop.seo.tab
le
.description.tip'
:
"用于显示在页面Description标签的内容,便于搜索引擎抓取"
,
'shop.seo.form.description.required'
:
"描述"
,
'shop.seo.tab
el
.keywords'
:
"关键字"
,
'shop.seo.tab
el
.keywords.tip'
:
"用于显示在页面Keywords标签的内容,便于搜索引擎通过关键词搜索时抓取页面,多个关键词用豆号分隔"
,
'shop.seo.tab
le
.keywords'
:
"关键字"
,
'shop.seo.tab
le
.keywords.tip'
:
"用于显示在页面Keywords标签的内容,便于搜索引擎通过关键词搜索时抓取页面,多个关键词用豆号分隔"
,
'shop.seo.form.keywords.required'
:
"请输入关键字"
,
'shop.seo.tab.basic'
:
"基本信息"
,
'shop.template.create.tip'
:
'您还未创建店铺,请先创建店铺'
,
'shop.template.preview.edit'
:
'暂不支持该类型模板装修'
,
'channel.template.create.tip'
:
'您还未创建渠道商城,请先创建渠道商城'
,
'shop.template.edit.tip'
:
'暂不支持该类型模板装修'
,
'shop.template.preview.tip'
:
'暂不支持该类型模板预览'
,
'shop.template.detail.title'
:
'查看模板'
,
...
...
@@ -58,10 +62,48 @@ export default {
'shop.template.button.state.enable'
:
'使用'
,
'shop.template.tag.default'
:
'默认模板'
,
'shop.template.modal.title.use'
:
'使用店铺模板'
,
'shop.tempalte.modal.use.content1'
:
'您选择的站点'
,
'shop.tempalte.modal.use.content2'
:
'现在使用的模板是'
,
'shop.tempalte.modal.use.content3'
:
'模板'
,
'shop.tempalte.modal.use.content4'
:
'您是否使用'
,
'shop.tempalte.modal.use.content5'
:
'模板,来替换您正在使用的模板'
,
/** 渠道业务员 */
'channel.member.add'
:
'新增业务员'
,
'channel.member.edit'
:
'编辑业务员'
,
'channel.member.preview'
:
'新增业务员'
,
'channel.member.table.userId'
:
'用户ID'
,
'channel.member.table.name'
:
'姓名'
,
'channel.member.table.account'
:
'登录账号'
,
'channel.member.table.account.placeholder'
:
'请输入登录账号'
,
'channel.member.table.phone'
:
'手机号'
,
'channel.member.table.bindphone'
:
'绑定手机号'
,
'channel.member.table.orgName'
:
'所属机构'
,
'channel.member.table.jobTitle'
:
'职位'
,
'channel.member.table.memberId'
:
'会员ID'
,
'channel.member.table.memberName'
:
'会员名称'
,
'channel.member.table.memberTypeName'
:
'会员类型'
,
'channel.member.table.roleName'
:
'会员角色'
,
'channel.member.table.createTime'
:
'申请时间'
,
'channel.member.table.levelTag'
:
'会员等级'
,
'channel.member.table.statusName'
:
'会员状态'
,
'channel.member.table.memberRoleName'
:
'所属角色'
,
'channel.member.relieve.confirm'
:
'确定要解除吗'
,
'channel.member.relieve'
:
'解除绑定关系'
,
'channel.member.relieve.batch'
:
'批量解除绑定关系'
,
'channel.member.select'
:
'请先选择业务员'
,
'channel.member.wait.bind.select'
:
'选择待绑定渠道会员'
,
'channel.form.salesman'
:
'业务员'
,
'channel.modal.member.select'
:
'选择渠道会员'
,
'channel.form.name.placeholder'
:
'输入姓名'
,
'channel.form.modal.salesman.title'
:
'选择业务员'
,
'channel.form.salesman.placeholder'
:
'请选择业务员'
,
'channel.form.orgName.placeholder'
:
'请输入所属机构'
,
'channel.form.orgName.jobTitle'
:
'请输入职位'
,
'channel.form.memberName.placeholder'
:
'请搜索会员名称'
,
'channel.member.tab.manage.subordinate'
:
"管理下级渠道"
,
'channel.template.modal.title.use'
:
'使用渠道模板'
,
'channel.template.button.mall.edit'
:
'渠道商城装修'
,
'channel.template.button.mall.category.edit'
:
'渠道品类导航装修'
,
}
src/pages/channel/channelInfo/index.tsx
View file @
1bd26ba0
import
React
,
{
useState
,
useEffect
}
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Form
,
Input
,
Button
,
Tooltip
,
Select
,
message
,
Upload
,
Typography
}
from
'antd'
import
{
Prompt
}
from
'umi'
import
{
Prompt
,
useIntl
}
from
'umi'
import
{
inject
}
from
'mobx-react'
import
{
QuestionCircleOutlined
,
DeleteOutlined
,
CopyOutlined
,
LinkOutlined
,
UploadOutlined
}
from
'@ant-design/icons'
import
CitySelect
from
'@/components/CitySelect'
...
...
@@ -41,6 +41,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
const
[
promotionPic
,
setPromotionPic
]
=
useState
<
string
>
(
''
)
const
[
shopInfo
,
setShopInfo
]
=
useState
<
any
>
()
const
[
shopId
,
setShopId
]
=
useState
<
number
>
()
const
intl
=
useIntl
()
/** 上传公司画册 */
const
[
file
,
setFile
]
=
useState
<
any
>
({});
...
...
@@ -50,10 +51,10 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
const
PDFList
=
[
'application/pdf'
]
const
isPDF
=
PDFList
.
includes
(
file
.
type
)
if
(
!
isLt50M
)
{
message
.
error
(
'上传文件大小不超过 50M!'
);
message
.
error
(
intl
.
formatMessage
({
id
:
'shop.form.upload.size.limit'
})
);
}
if
(
!
isPDF
)
{
message
.
error
(
'请上传pdf格式文件'
);
message
.
error
(
intl
.
formatMessage
({
id
:
'shop.form.upload.type.required'
})
);
}
return
isLt50M
&&
isPDF
;
}
...
...
@@ -227,14 +228,14 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
const
checkmemberChannelAreas
=
(
shopAreas
)
=>
{
if
(
isEmpty
(
shopAreas
))
{
message
.
destroy
()
message
.
error
(
'请选择归属地市'
)
message
.
error
(
intl
.
formatMessage
({
id
:
'shop.form.memberShopAreas.required'
})
)
return
false
}
return
shopAreas
.
every
(
item
=>
{
if
(
isEmpty
(
item
.
provinceCode
))
{
message
.
destroy
()
message
.
error
(
'请选择归属地市'
)
message
.
error
(
intl
.
formatMessage
({
id
:
intl
.
formatMessage
({
id
:
'shop.form.memberShopAreas.required'
})
})
)
return
false
}
else
{
return
true
...
...
@@ -246,7 +247,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
const
handleCopyLinke
=
(
link
:
string
)
=>
{
if
(
copy
(
link
))
{
message
.
success
(
'复制成功!'
)
message
.
success
(
intl
.
formatMessage
({
id
:
'shop.option.copy.success'
})
)
}
}
...
...
@@ -319,7 +320,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
return
(
<
PageHeaderWrapper
>
<
Prompt
when=
{
formIsHalfFilledOut
}
message=
"您还有未保存的内容,是否确定要离开?"
/>
<
Prompt
when=
{
formIsHalfFilledOut
}
message=
{
intl
.
formatMessage
({
id
:
'common.tip.save.confirm'
})
}
/>
<
div
className=
{
styles
.
shop_info
}
>
<
Form
form=
{
form
}
...
...
@@ -330,8 +331,8 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"memberChannelAreas"
label=
{
<
RequireItem
label=
"归属地市"
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请选择归属地市"
}]
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.memberShopAreas'
})
}
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.form.memberShopAreas.required'
})
}]
}
>
<
CitySelect
selectData=
{
selectCityData
}
...
...
@@ -343,8 +344,8 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"logo"
label=
{
<
RequireItem
label=
"公司LOGO"
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请上传公司LOGO"
}]
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.logo'
})
}
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.form.logo.required'
})
}]
}
>
<
UploadImage
imgUrl=
{
logo
}
...
...
@@ -361,15 +362,15 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"describe"
label=
{
<
RequireItem
label=
"公司简介"
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请输入公司简介"
}]
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.describe'
})
}
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.form.describe.required'
})
}]
}
>
<
Input
.
TextArea
rows=
{
5
}
className=
{
styles
.
form_item
}
placeholder=
"请输入公司简介"
maxLength=
{
200
}
/>
<
Input
.
TextArea
rows=
{
5
}
className=
{
styles
.
form_item
}
placeholder=
{
intl
.
formatMessage
({
id
:
'shop.form.describe.required'
})
}
maxLength=
{
200
}
/>
</
Form
.
Item
>
<
Form
.
Item
labelAlign=
"left"
name=
"workshopPics"
label=
{
<
RequireItem
label=
"厂房照片"
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.workshopPics'
})
}
/>
}
>
<
div
className=
{
styles
.
form_item_wrap
}
>
...
...
@@ -396,7 +397,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"honorPics"
label=
{
<
RequireItem
label=
"资质荣誉"
brief=
{
<
Tooltip
placement=
"top"
title=
"如商标注册证书、品牌授权证书等证明材料"
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.honorPics'
})
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.form.label.honorPics.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
>
<
div
className=
{
styles
.
form_item_wrap
}
>
...
...
@@ -423,7 +424,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"albumName"
label=
{
<
RequireItem
label=
"宣传画册"
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.albumName'
})
}
/>
}
className=
{
styles
.
revise_style
}
>
<
div
className=
{
styles
.
upload_data
}
>
...
...
@@ -453,15 +454,15 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
beforeUpload=
{
beforeDocUpload
}
onChange=
{
handleChange
}
>
<
Button
loading=
{
fileLoading
}
icon=
{
<
UploadOutlined
/>
}
>
上传文件
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
一次上传一个文件,每个附件大小不能超过 50M
</
div
>
<
Button
loading=
{
fileLoading
}
icon=
{
<
UploadOutlined
/>
}
>
{
intl
.
formatMessage
({
id
:
'shop.form.label.upload'
})
}
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
{
intl
.
formatMessage
({
id
:
'shop.form.label.upload.tip'
})
}
</
div
>
</
Upload
>
)
}
</
Form
.
Item
>
<
Form
.
Item
labelAlign=
"left"
name=
"shopId"
label=
{
<
RequireItem
label=
"商城链接"
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.mallLink'
})
}
/>
}
>
<
Select
allowClear
value=
{
shopId
}
className=
{
styles
.
form_item
}
onChange=
{
handleMallSelectChange
}
>
{
...
...
@@ -472,7 +473,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
</
Select
>
{
resUrl
&&
(
<
div
className=
{
styles
.
shop_url
}
>
<
span
>
当前
{
door
}
链接
:
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.form.label.currentLink'
})
}
:
</
span
>
<
label
>
{
resUrl
}
</
label
>
<
CopyOutlined
className=
{
styles
.
copy_icon
}
onClick=
{
()
=>
handleCopyLinke
(
resUrl
)
}
/>
</
div
>
...
...
@@ -481,14 +482,14 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"address"
label=
{
<
RequireItem
label=
"详细地址"
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.address'
})
}
/>
}
>
<
Input
allowClear
autoComplete=
"off"
className=
{
styles
.
form_item
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
{
<
RequireItem
label=
""
/>
}
>
<
Button
loading=
{
confirmLoading
}
type=
"primary"
style=
{
{
marginRight
:
16
}
}
onClick=
{
handleSave
}
>
保存
</
Button
>
<
Button
loading=
{
confirmLoading
}
type=
"primary"
style=
{
{
marginRight
:
16
}
}
onClick=
{
handleSave
}
>
{
intl
.
formatMessage
({
id
:
'common.button.save'
})
}
</
Button
>
</
Form
.
Item
>
</
Form
>
</
div
>
...
...
src/pages/channel/channelSeo/add.tsx
View file @
1bd26ba0
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
history
,
Prompt
}
from
'umi'
;
import
{
history
,
Prompt
,
useIntl
}
from
'umi'
;
import
{
Card
,
Button
,
Tabs
,
Form
,
Select
,
Tooltip
,
Input
,
Typography
}
from
'antd'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
...
...
@@ -21,6 +21,7 @@ const ChannelSeoAdded = () => {
const
[
form
]
=
Form
.
useForm
()
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
<
boolean
>
(
false
);
const
[
formIsHalfFilledOut
,
setFormIsHalfFilledOut
]
=
useState
<
boolean
>
(
false
);
const
intl
=
useIntl
()
const
handleFormValueChange
=
()
=>
{
setFormIsHalfFilledOut
(
true
)
}
...
...
@@ -55,7 +56,7 @@ const ChannelSeoAdded = () => {
useEffect
(()
=>
{
if
(
id
)
{
getTemplateWebSeoWebGet
({
id
}).
then
(
res
=>
{
getTemplateWebSeoWebGet
({
id
:
String
(
id
)
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
}
...
...
@@ -67,17 +68,17 @@ const ChannelSeoAdded = () => {
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
backIcon=
{
<
ReutrnEle
description=
{
intl
.
formatMessage
({
id
:
'common.button.back'
})
}
/>
}
extra=
{
link
!==
'detail'
&&
<
Button
type=
"primary"
loading=
{
confirmLoading
}
onClick=
{
handleSave
}
>
保存
</
Button
>
}
>
<
Prompt
when=
{
formIsHalfFilledOut
}
message=
"您还有未保存的内容,是否确定要离开?"
/>
<
Prompt
when=
{
formIsHalfFilledOut
}
message=
{
intl
.
formatMessage
({
id
:
'common.tip.save.confirm'
})
}
/>
<
Card
>
<
Tabs
type=
"card"
>
<
TabPane
tab=
'基本信息'
key=
'1'
>
<
TabPane
tab=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab.basic'
})
}
key=
'1'
>
<
Form
{
...
layout
}
form=
{
form
}
...
...
@@ -86,40 +87,40 @@ const ChannelSeoAdded = () => {
>
<
Form
.
Item
name=
'type'
label=
{
<
RequireItem
label=
"页面名称"
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请选择页面名称"
}]
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.name'
})
}
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.name.required'
})
}]
}
>
<
Select
disabled=
{
link
===
'detail'
}
>
<
Select
.
Option
value=
{
1
}
>
渠道商场首页
</
Select
.
Option
>
<
Select
.
Option
value=
{
2
}
>
关于我们
</
Select
.
Option
>
<
Select
.
Option
value=
{
1
}
>
{
intl
.
formatMessage
({
id
:
'shop.seo.table.channelHome'
})
}
</
Select
.
Option
>
<
Select
.
Option
value=
{
2
}
>
{
intl
.
formatMessage
({
id
:
'shop.seo.table.about'
})
}
</
Select
.
Option
>
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
name=
'link'
label=
{
<
RequireItem
label=
"访问链接"
brief=
{
<
Tooltip
placement=
"top"
title=
"访问该页面的链接"
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.link'
})
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.link.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
>
<
Input
disabled=
{
link
===
'detail'
}
addonBefore=
{
<
Typography
.
Text
type=
'secondary'
>
http://
</
Typography
.
Text
>
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'title'
label=
{
<
RequireItem
label=
"标题"
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
"用于显示在页面title标签的内容,便于搜索引擎抓取"
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.title'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.title.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请输入标题"
}]
}
>
<
Input
maxLength=
{
50
}
disabled=
{
link
===
'detail'
}
placeholder=
'最长50个汉字'
/>
<
Input
maxLength=
{
50
}
disabled=
{
link
===
'detail'
}
placeholder=
{
`${intl.formatMessage({ id: 'common.text.longest' })}50${intl.formatMessage({ id: 'common.unit.individual.chinese'})}`
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'description'
label=
{
<
RequireItem
label=
"描述"
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
"用于显示在页面Description标签的内容,便于搜索引擎抓取"
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请输入描述"
}]
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.description'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.description.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.description.required'
})
}]
}
>
<
Input
.
TextArea
disabled=
{
link
===
'detail'
}
rows=
{
5
}
placeholder=
"最长200个汉字"
maxLength=
{
200
}
/>
<
Input
.
TextArea
disabled=
{
link
===
'detail'
}
rows=
{
5
}
placeholder=
{
`${intl.formatMessage({ id: 'common.text.longest' })}200${intl.formatMessage({ id: 'common.unit.individual.chinese'})}`
}
maxLength=
{
200
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'keywords'
label=
{
<
RequireItem
label=
"关键字"
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
"用于显示在页面Keywords标签的内容,便于搜索引擎通过关键词搜索时抓取页面,多个关键词用豆号分隔"
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
"请输入关键字"
}]
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.keywords'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table.keywords.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.keywords.required'
})
}]
}
>
<
Input
.
TextArea
disabled=
{
link
===
'detail'
}
rows=
{
5
}
placeholder=
"最长100个汉字"
maxLength=
{
100
}
/>
<
Input
.
TextArea
disabled=
{
link
===
'detail'
}
rows=
{
5
}
placeholder=
{
`${intl.formatMessage({ id: 'common.text.longest' })}100${intl.formatMessage({ id: 'common.unit.individual.chinese'})}`
}
maxLength=
{
100
}
/>
</
Form
.
Item
>
</
Form
>
</
TabPane
>
...
...
src/pages/channel/channelSeo/index.tsx
View file @
1bd26ba0
import
React
,
{
ReactNode
,
useRef
}
from
'react'
;
import
{
ISchema
}
from
'@formily/antd'
;
import
{
history
}
from
'umi'
;
import
{
history
,
useIntl
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Row
,
Col
,
Button
,
Popconfirm
,
Typography
}
from
'antd'
;
import
{
StandardTable
}
from
'god'
;
...
...
@@ -16,6 +16,7 @@ import { getTemplateWebSeoWebPage, postTemplateWebSeoWebDelete, postTemplateWebS
const
ChannelSeo
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
formActions
=
createFormActions
();
const
intl
=
useIntl
()
/** 修改状态 */
const
confirm
=
(
e
:
any
)
=>
{
const
status
=
e
.
status
===
1
?
0
:
1
;
...
...
@@ -44,19 +45,19 @@ const ChannelSeo = () => {
width
:
128
,
},
{
title
:
'页面名称'
,
title
:
intl
.
formatMessage
({
id
:
'shop.seo.table.name'
})
,
key
:
'name'
,
dataIndex
:
'name'
,
// eslint-disable-next-line react/display-name
render
:
(
text
:
any
,
record
:
any
)
=>
<
Typography
.
Link
href=
{
`/memberCenter/shopAbility/shopSeo/detail?id=${record.id}`
}
>
{
text
}
</
Typography
.
Link
>
},
{
title
:
'访问链接'
,
title
:
intl
.
formatMessage
({
id
:
'shop.seo.table.link'
})
,
key
:
'link'
,
dataIndex
:
'link'
,
},
{
title
:
'状态'
,
title
:
intl
.
formatMessage
({
id
:
'shop.seo.table.status'
})
,
key
:
'status'
,
dataIndex
:
'status'
,
width
:
256
,
...
...
@@ -64,15 +65,15 @@ const ChannelSeo = () => {
let
component
:
ReactNode
=
null
component
=
(
<
Popconfirm
title=
"确定要执行这个操作?"
title=
{
intl
.
formatMessage
({
id
:
'common.tip.option.confirm'
})
}
onConfirm=
{
()
=>
confirm
(
record
)
}
okText=
"是"
cancelText=
"否"
okText=
{
intl
.
formatMessage
({
id
:
'common.button.yes'
})
}
cancelText=
{
intl
.
formatMessage
({
id
:
'common.button.no'
})
}
>
<
Button
type=
"link"
style=
{
record
.
status
===
1
?
{
color
:
'#00B37A'
}
:
{
color
:
'red'
}
}
>
{
record
.
status
===
1
?
<>
有效
<
PlayCircleOutlined
/></>
:
<>
无效
<
PauseCircleOutlined
/></>
}
{
record
.
status
===
1
?
<>
{
intl
.
formatMessage
({
id
:
'common.status.effective'
})
}
<
PlayCircleOutlined
/></>
:
<>
{
intl
.
formatMessage
({
id
:
'common.status.invalid'
})
}
<
PauseCircleOutlined
/></>
}
</
Button
>
</
Popconfirm
>
)
...
...
@@ -80,7 +81,7 @@ const ChannelSeo = () => {
}
},
{
title
:
'操作'
,
title
:
intl
.
formatMessage
({
id
:
'common.table.action'
})
,
key
:
'action'
,
dataIndex
:
'action'
,
width
:
256
,
...
...
@@ -88,15 +89,15 @@ const ChannelSeo = () => {
render
:
(
_text
:
any
,
record
:
any
)
=>
(
<>
<
Popconfirm
title=
"确定要执行这个操作?"
title=
{
intl
.
formatMessage
({
id
:
'common.tip.option.confirm'
})
}
onConfirm=
{
()
=>
handleDelete
(
record
.
id
)
}
disabled=
{
record
.
status
===
1
}
okText=
"是"
cancelText=
"否"
okText=
{
intl
.
formatMessage
({
id
:
'common.button.yes'
})
}
cancelText=
{
intl
.
formatMessage
({
id
:
'common.button.no'
})
}
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
>
删除
</
Button
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
>
{
intl
.
formatMessage
({
id
:
'common.button.delete'
})
}
</
Button
>
</
Popconfirm
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/
shopAbility/shopSeo/edit?id=${record.id}`
)
}
>
修改
</
Button
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/
channelAbility/channelSeo/edit?id=${record.id}`
)
}
>
{
intl
.
formatMessage
({
id
:
'common.button.modify'
})
}
</
Button
>
</>
)
}
...
...
src/pages/channel/channelTemplate/index.tsx
View file @
1bd26ba0
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
Row
,
Col
,
message
}
from
'antd'
import
{
history
}
from
'umi'
import
{
history
,
useIntl
}
from
'umi'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
TemplateItem
from
'../components/templateItem'
import
styles
from
'./index.less'
...
...
@@ -9,7 +9,7 @@ import { getTemplateWebPageTemplateWebFindAllShelfChannelTemplate, GetTemplateWe
const
ShopTemplate
:
React
.
FC
=
()
=>
{
const
[
templateList
,
setTemplateList
]
=
useState
<
GetTemplateWebPageTemplateWebFindAllShelfChannelTemplateResponse
>
([])
const
intl
=
useIntl
()
useEffect
(()
=>
{
fetchAllShelfShopTemplate
()
},
[])
...
...
@@ -20,7 +20,7 @@ const ShopTemplate: React.FC = () => {
setTemplateList
(
res
.
data
)
}
else
{
message
.
destroy
()
message
.
info
(
"您还未创建渠道商城,请先创建渠道商城"
)
message
.
info
(
intl
.
formatMessage
({
id
:
'channel.template.create.tip'
})
)
setTimeout
(()
=>
{
history
.
push
(
'/memberCenter/channelAbility/infoManage'
)
},
2000
);
...
...
@@ -35,7 +35,7 @@ const ShopTemplate: React.FC = () => {
{
templateList
.
map
(
item
=>
(
<
Col
xxl=
{
6
}
xl=
{
8
}
lg=
{
12
}
key=
{
item
.
id
}
style=
{
{
marginBottom
:
16
}
}
>
<
TemplateItem
templateInfo=
{
item
}
type=
"
shop
"
/>
<
TemplateItem
templateInfo=
{
item
}
type=
"
channel
"
/>
</
Col
>
))
}
...
...
src/pages/channel/components/templateItem/index.tsx
View file @
1bd26ba0
import
React
from
'react'
import
{
PlayCircleOutlined
}
from
'@ant-design/icons'
import
cx
from
'classnames'
import
{
Link
}
from
'umi'
import
{
Link
,
useIntl
}
from
'umi'
import
styles
from
'./index.less'
interface
TemplateItemPropsType
{
...
...
@@ -29,12 +29,13 @@ const Environment_Status = {
const
TemplateItem
:
React
.
FC
<
TemplateItemPropsType
>
=
(
props
)
=>
{
const
{
templateInfo
,
type
}
=
props
const
intl
=
useIntl
()
return
(
<
div
className=
{
styles
.
template_item
}
>
<
div
className=
{
styles
.
img_box
}
style=
{
{
backgroundImage
:
`url(${templateInfo.templatePicUrl})`
}
}
>
<
div
className=
{
styles
.
img_box_mask
}
>
<
Link
to=
{
`/memberCenter/channelAbility/template/detail?type=${type}&id=${templateInfo.id}`
}
className=
{
styles
.
detail_btn
}
>
查看详情
</
Link
>
<
Link
to=
{
`/memberCenter/channelAbility/template/detail?type=${type}&id=${templateInfo.id}`
}
className=
{
styles
.
detail_btn
}
>
{
intl
.
formatMessage
({
id
:
'common.button.view.details'
})
}
</
Link
>
</
div
>
<
div
className=
{
cx
(
styles
.
type_tag
,
templateInfo
.
environment
===
2
?
styles
.
h5
:
''
)
}
>
{
Environment_Status
[
templateInfo
.
environment
].
name
}
</
div
>
</
div
>
...
...
@@ -42,24 +43,24 @@ const TemplateItem: React.FC<TemplateItemPropsType> = (props) => {
<
div
className=
{
styles
.
template_info_name
}
>
<
span
>
{
templateInfo
.
templateName
}
</
span
>
{
templateInfo
.
isDefault
&&
<
div
className=
{
styles
.
tag
}
>
默认模板
</
div
>
templateInfo
.
isDefault
&&
<
div
className=
{
styles
.
tag
}
>
{
intl
.
formatMessage
({
id
:
'shop.template.tag.default'
})
}
</
div
>
}
</
div
>
<
div
className=
{
cx
(
styles
.
template_info_content
,
type
===
'goods'
?
styles
.
goods
:
''
)
}
>
<
div
className=
{
styles
.
template_info_content_text_wrap
}
>
<
div
className=
{
styles
.
template_info_content_text_line
}
>
<
label
>
使用站点:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.siteName'
})
}
</
label
>
<
span
>
{
templateInfo
.
siteName
}
</
span
>
</
div
>
<
div
className=
{
styles
.
template_info_content_text_line
}
>
<
label
>
使用商城:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.shopName'
})
}
</
label
>
<
span
>
{
templateInfo
.
shopName
}
</
span
>
</
div
>
</
div
>
<
div
className=
{
cx
(
styles
.
template_item_btn
,
templateInfo
.
use
===
1
?
styles
.
active
:
''
)
}
>
<
PlayCircleOutlined
/>
<
label
>
{
templateInfo
.
use
===
1
?
'启用中'
:
'启用'
}
</
label
>
<
label
>
{
templateInfo
.
use
===
1
?
intl
.
formatMessage
({
id
:
'shop.template.button.state.enabling'
})
:
intl
.
formatMessage
({
id
:
'shop.template.button.state.enable'
})
}
</
label
>
</
div
>
</
div
>
</
div
>
...
...
src/pages/channel/components/useModal/index.tsx
View file @
1bd26ba0
import
React
from
'react'
import
{
Modal
}
from
'antd'
import
{
useIntl
}
from
'umi'
import
styles
from
'./index.less'
interface
UseModalPropsType
{
...
...
@@ -13,7 +14,7 @@ interface UseModalPropsType {
const
UseModal
:
React
.
FC
<
UseModalPropsType
>
=
(
props
)
=>
{
const
{
visible
,
onOk
,
onCancel
,
title
,
dataInfo
=
{},
confirmLoading
=
false
}
=
props
const
intl
=
useIntl
()
return
(
<
Modal
...
...
@@ -29,27 +30,26 @@ const UseModal: React.FC<UseModalPropsType> = (props) => {
dataInfo
.
inUseTemplateName
?
(
<>
<
div
className=
{
styles
.
text_line
}
>
<
span
>
您选择的站点
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content1'
})
}
</
span
>
<
label
>
{
dataInfo
.
siteName
}
-
{
dataInfo
.
shopName
}
</
label
>
<
span
>
现在使用的模板是
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content2'
})
}
</
span
>
<
label
>
“
{
dataInfo
.
inUseTemplateName
}
”
</
label
>
<
span
>
模板
,
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content3'
})
}
,
</
span
>
</
div
>
<
div
className=
{
styles
.
text_line
}
>
<
span
>
您是否使用
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content4'
})
}
</
span
>
<
label
>
“
{
dataInfo
.
templateName
}
”
</
label
>
<
span
>
模板,来替换您正在使用的模板
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content5'
})
}
</
span
>
</
div
>
</>
)
:
(
<
div
className=
{
styles
.
text_line
}
>
<
span
>
您是否使用
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content4'
})
}
</
span
>
<
label
>
“
{
dataInfo
.
templateName
}
”
</
label
>
<
span
>
模板
?
</
span
>
<
span
>
{
intl
.
formatMessage
({
id
:
'shop.tempalte.modal.use.content3'
})
}
?
</
span
>
</
div
>
)
}
</
Modal
>
)
}
...
...
src/pages/channel/memberList/detail.tsx
View file @
1bd26ba0
This diff is collapsed.
Click to expand it.
src/pages/channel/memberList/index.tsx
View file @
1bd26ba0
import
React
,
{
useRef
}
from
'react'
;
import
{
history
}
from
'umi'
import
{
history
,
useIntl
}
from
'umi'
import
{
Button
,
Popconfirm
,
Card
}
from
'antd'
;
import
{
PlusOutlined
,
...
...
@@ -17,7 +17,7 @@ const fetchData = async (params) => {
const
ChannelMember
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
intl
=
useIntl
()
const
deleteItem
=
async
(
record
)
=>
{
// 删除该项
await
postMemberAbilitySalesDelete
({
...
...
@@ -32,13 +32,13 @@ const ChannelMember: React.FC<{}> = () => {
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'登录账号'
,
title
:
intl
.
formatMessage
({
id
:
'channel.member.table.account'
})
,
dataIndex
:
'account'
,
align
:
'center'
,
key
:
'account'
,
},
{
title
:
'姓名'
,
title
:
intl
.
formatMessage
({
id
:
'channel.member.table.name'
})
,
dataIndex
:
'name'
,
align
:
'center'
,
key
:
'name'
,
...
...
@@ -46,44 +46,44 @@ const ChannelMember: React.FC<{}> = () => {
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/channelAbility/memberList/detail?id=${record.userId}&preview=1`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'所属机构'
,
title
:
intl
.
formatMessage
({
id
:
'channel.member.table.orgName'
})
,
align
:
'center'
,
dataIndex
:
'orgName'
,
key
:
'orgName'
,
},
{
title
:
'绑定手机号'
,
title
:
intl
.
formatMessage
({
id
:
'channel.member.table.bindphone'
})
,
align
:
'center'
,
dataIndex
:
'phone'
,
key
:
'phone'
,
},
{
title
:
'职位'
,
title
:
intl
.
formatMessage
({
id
:
'channel.member.table.jobTitle'
})
,
align
:
'center'
,
dataIndex
:
'jobTitle'
,
key
:
'jobTitle'
,
},
{
title
:
'所属角色'
,
title
:
intl
.
formatMessage
({
id
:
'channel.member.table.memberRoleName'
})
,
align
:
'center'
,
dataIndex
:
'memberRoleName'
,
key
:
'memberRoleName'
,
},
{
title
:
'操作'
,
title
:
intl
.
formatMessage
({
id
:
'common.table.action'
})
,
dataIndex
:
'option'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
<>
<
Button
type=
'link'
onClick=
{
()
=>
updateItem
(
record
)
}
>
修改
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
updateItem
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'common.button.modify'
})
}
</
Button
>
{
<
Popconfirm
title=
"确定要执行这个操作?"
title=
{
intl
.
formatMessage
({
id
:
'common.tip.option.confirm'
})
}
onConfirm=
{
()
=>
deleteItem
(
record
)
}
okText=
"是"
cancelText=
"否"
okText=
{
intl
.
formatMessage
({
id
:
'common.button.yes'
})
}
cancelText=
{
intl
.
formatMessage
({
id
:
'common.button.no'
})
}
>
<
Button
type=
'link'
>
删除
</
Button
>
<
Button
type=
'link'
>
{
intl
.
formatMessage
({
id
:
'common.button.delete'
})
}
</
Button
>
</
Popconfirm
>
}
</>
...
...
@@ -125,13 +125,13 @@ const ChannelMember: React.FC<{}> = () => {
account
:
{
type
:
'Search'
,
"x-component-props"
:
{
placeholder
:
'请输入登录账号'
placeholder
:
intl
.
formatMessage
({
id
:
'channel.member.table.account.placeholder'
})
}
},
name
:
{
type
:
'Search'
,
"x-component-props"
:
{
placeholder
:
'请输入姓名'
placeholder
:
intl
.
formatMessage
({
id
:
'channel.form.name.placeholder'
})
}
}
}
...
...
src/pages/channel/templateDetail/index.tsx
View file @
1bd26ba0
...
...
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react'
import
{
LayoutOutlined
,
EyeOutlined
,
PushpinOutlined
}
from
'@ant-design/icons'
import
cx
from
'classnames'
import
{
message
}
from
'antd'
import
{
useIntl
}
from
'umi'
import
DetailPage
from
'@/components/DetailPage'
import
UseModal
from
'../components/useModal'
import
{
Environment_Status
}
from
'@/constants'
...
...
@@ -24,6 +25,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
const
[
useModalVisible
,
setUseModalVisible
]
=
useState
<
boolean
>
(
false
)
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
(
false
)
const
[
shopType
,
setShopType
]
=
useState
<
number
>
()
const
intl
=
useIntl
()
useEffect
(()
=>
{
fetchDetail
()
...
...
@@ -70,7 +72,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
// app店铺装修
window
.
location
.
href
=
`/memberCenter/channelAbility/template/mobile/edit?id=
${
detailInfo
.
id
}
&template=
${
detailInfo
.
fileName
}
&type=
${
shopType
}
&shopId=
${
detailInfo
.
shopId
}
`
}
else
{
message
.
info
(
"暂不支持该类型模板装修"
)
message
.
info
(
intl
.
formatMessage
({
id
:
'shop.template.edit.tip'
})
)
}
}
...
...
@@ -80,13 +82,13 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
}
else
if
(
detailInfo
?.
environment
===
4
)
{
window
.
location
.
href
=
`/memberCenter/channelAbility/template/mobile/preview?id=
${
detailInfo
.
id
}
&template=
${
detailInfo
.
fileName
}
&type=
${
shopType
}
&shopId=
${
detailInfo
.
shopId
}
`
}
else
{
message
.
info
(
"暂不支持该类型模板预览"
)
message
.
info
(
intl
.
formatMessage
({
id
:
'shop.template.preview.tip'
})
)
}
}
const
handleJump
=
()
=>
{
if
(
detailInfo
?.
environment
!==
4
)
{
message
.
info
(
"暂不支持该类型模板预览"
)
message
.
info
(
intl
.
formatMessage
({
id
:
'shop.template.preview.tip'
})
)
return
;
}
window
.
location
.
href
=
`/memberCenter/channelAbility/template/categoryNavigation?id=
${
detailInfo
.
id
}
&template=
${
detailInfo
.
fileName
}
&type=
${
shopType
}
&shopId=
${
detailInfo
.
shopId
}
`
...
...
@@ -95,7 +97,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
return
(
<
DetailPage
title=
"查看模板"
title=
{
intl
.
formatMessage
({
id
:
'shop.template.detail.title'
})
}
>
<
div
className=
{
styles
.
template_detail
}
>
<
div
className=
{
styles
.
template_info_wrap
}
>
...
...
@@ -105,50 +107,50 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
</
div
>
<
div
className=
{
styles
.
template_info
}
>
<
div
className=
{
styles
.
template_info_line
}
>
<
label
>
模板名称:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.templateName'
})
}
</
label
>
<
span
>
{
detailInfo
?.
templateName
}
</
span
>
</
div
>
<
div
className=
{
styles
.
template_info_line
}
>
<
label
>
适用环境:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.environment'
})
}
</
label
>
<
span
>
{
Environment_Status
[
detailInfo
?.
environment
]
}
</
span
>
</
div
>
<
div
className=
{
styles
.
template_info_line
}
>
<
label
>
模板描述:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.templateDescribe'
})
}
</
label
>
<
span
>
{
detailInfo
?.
templateDescribe
}
</
span
>
</
div
>
<
div
className=
{
styles
.
template_info_line
}
>
<
label
>
使用站点:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.siteName'
})
}
</
label
>
<
span
>
{
detailInfo
?.
siteName
}
</
span
>
</
div
>
<
div
className=
{
styles
.
template_info_line
}
>
<
label
>
使用商城:
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'shop.template.form.label.shopName'
})
}
</
label
>
<
span
>
{
detailInfo
?.
shopName
}
</
span
>
</
div
>
</
div
>
</
div
>
<
div
className=
{
styles
.
btn
}
onClick=
{
()
=>
handleLinkPreview
()
}
>
<
EyeOutlined
/>
<
label
>
预览
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'common.button.preview'
})
}
</
label
>
</
div
>
<
div
className=
{
cx
(
styles
.
btn
,
styles
.
fit
)
}
onClick=
{
()
=>
handleLinkEdit
()
}
>
<
LayoutOutlined
/>
<
label
>
渠道商城装修
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'channel.template.button.mall.edit'
})
}
</
label
>
</
div
>
{
detailInfo
?.
environment
===
4
&&
(
<
div
className=
{
cx
(
styles
.
btn
,
styles
.
fit
)
}
onClick=
{
handleJump
}
>
<
LayoutOutlined
/>
<
label
>
渠道品类导航装修
</
label
>
<
label
>
{
intl
.
formatMessage
({
id
:
'channel.template.button.mall.category.edit'
})
}
</
label
>
</
div
>
)
}
<
div
className=
{
cx
(
styles
.
btn
,
detailInfo
?.
use
===
1
?
styles
.
use
:
''
)
}
onClick=
{
()
=>
detailInfo
?.
use
!==
1
?
setUseModalVisible
(
true
)
:
{}
}
>
<
PushpinOutlined
/>
<
label
>
{
detailInfo
?.
use
===
1
?
'使用中'
:
'使用'
}
</
label
>
<
label
>
{
detailInfo
?.
use
===
1
?
intl
.
formatMessage
({
id
:
'shop.template.button.state.using'
})
:
intl
.
formatMessage
({
id
:
'shop.template.button.state.use'
})
}
</
label
>
</
div
>
<
UseModal
title=
"使用店铺模板"
title=
{
intl
.
formatMessage
({
id
:
'channel.template.modal.title.use'
})
}
visible=
{
useModalVisible
}
dataInfo=
{
detailInfo
}
confirmLoading=
{
confirmLoading
}
...
...
src/pages/shop/shopInfo/index.tsx
View file @
1bd26ba0
...
...
@@ -391,7 +391,7 @@ const ShopInfo: React.FC<ShopInfoPropsType> = (props) => {
<
Form
.
Item
labelAlign=
"left"
name=
"honorPics"
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.honorPics'
})
}
brief=
{
<
Tooltip
placement=
"top"
title=
"如商标注册证书、品牌授权证书等证明材料"
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.form.label.honorPics'
})
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.form.label.honorPics.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
>
<
div
className=
{
styles
.
form_item_wrap
}
>
<
div
className=
{
styles
.
img_list
}
>
...
...
src/pages/shop/shopSeo/add.tsx
View file @
1bd26ba0
...
...
@@ -87,37 +87,37 @@ const ShopSeoAdded = () => {
>
<
Form
.
Item
name=
'type'
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.name'
})
}
isRequire=
{
true
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.name'
})
}
isRequire=
{
true
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.name.required'
})
}]
}
>
<
Select
disabled=
{
link
===
'detail'
}
>
<
Select
.
Option
value=
{
1
}
>
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.home'
})
}
</
Select
.
Option
>
<
Select
.
Option
value=
{
2
}
>
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.about'
})
}
</
Select
.
Option
>
<
Select
.
Option
value=
{
1
}
>
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.home'
})
}
</
Select
.
Option
>
<
Select
.
Option
value=
{
2
}
>
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.about'
})
}
</
Select
.
Option
>
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
name=
'link'
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el.link'
})
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.tabel
.link.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le.link'
})
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table
.link.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
>
<
Input
disabled=
{
link
===
'detail'
}
addonBefore=
{
<
Typography
.
Text
type=
'secondary'
>
http://
</
Typography
.
Text
>
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'title'
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el.title'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.tabel
.title.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le.title'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table
.title.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.title.required'
})
}]
}
>
<
Input
maxLength=
{
50
}
disabled=
{
link
===
'detail'
}
placeholder=
{
`${intl.formatMessage({ id: 'common.text.longest' })}50${intl.formatMessage({ id: 'common.unit.individual.chinese'})}`
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'description'
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el.description'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.tabel
.description.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le.description'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table
.description.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.description.required'
})
}]
}
>
<
Input
.
TextArea
disabled=
{
link
===
'detail'
}
rows=
{
5
}
placeholder=
{
`${intl.formatMessage({ id: 'common.text.longest' })}200${intl.formatMessage({ id: 'common.unit.individual.chinese'})}`
}
maxLength=
{
200
}
/>
</
Form
.
Item
>
<
Form
.
Item
name=
'keywords'
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
el.keywords'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.tabel
.keywords.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
label=
{
<
RequireItem
label=
{
intl
.
formatMessage
({
id
:
'shop.seo.tab
le.keywords'
})
}
isRequire=
{
true
}
brief=
{
<
Tooltip
placement=
"top"
title=
{
intl
.
formatMessage
({
id
:
'shop.seo.table
.keywords.tip'
})
}
><
QuestionCircleOutlined
/></
Tooltip
>
}
/>
}
rules=
{
[{
required
:
true
,
message
:
intl
.
formatMessage
({
id
:
'shop.seo.form.keywords.required'
})
}]
}
>
<
Input
.
TextArea
disabled=
{
link
===
'detail'
}
rows=
{
5
}
placeholder=
{
`${intl.formatMessage({ id: 'common.text.longest' })}100${intl.formatMessage({ id: 'common.unit.individual.chinese'})}`
}
maxLength=
{
100
}
/>
...
...
src/pages/shop/shopSeo/index.tsx
View file @
1bd26ba0
...
...
@@ -45,18 +45,18 @@ const ShopSeo = () => {
width
:
128
,
},
{
title
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.name'
}),
title
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.name'
}),
key
:
'name'
,
dataIndex
:
'name'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Typography
.
Link
href=
{
`/memberCenter/shopAbility/shopSeo/detail?id=${record.id}`
}
>
{
text
}
</
Typography
.
Link
>
},
{
title
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.link'
}),
title
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.link'
}),
key
:
'link'
,
dataIndex
:
'link'
,
},
{
title
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.status'
}),
title
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.status'
}),
key
:
'status'
,
dataIndex
:
'status'
,
width
:
256
,
...
...
@@ -80,7 +80,7 @@ const ShopSeo = () => {
}
},
{
title
:
intl
.
formatMessage
({
id
:
'common.tab
el
.action'
}),
title
:
intl
.
formatMessage
({
id
:
'common.tab
le
.action'
}),
key
:
'action'
,
dataIndex
:
'action'
,
width
:
256
,
...
...
@@ -95,7 +95,7 @@ const ShopSeo = () => {
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
>
{
intl
.
formatMessage
({
id
:
'common.button.delete'
})
}
</
Button
>
</
Popconfirm
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/shopAbility/shopSeo/edit?id=${record.id}`
)
}
>
修改
</
Button
>
<
Button
disabled=
{
record
.
status
===
1
}
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/shopAbility/shopSeo/edit?id=${record.id}`
)
}
>
{
intl
.
formatMessage
({
id
:
'common.button.modify'
})
}
</
Button
>
</>
)
}
...
...
@@ -150,7 +150,7 @@ const ShopSeo = () => {
},
"x-component-props"
:
{
placeholder
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
el
.name'
}),
placeholder
:
intl
.
formatMessage
({
id
:
'shop.seo.tab
le
.name'
}),
advanced
:
false
}
}
...
...
src/pages/shop/templateDetail/index.tsx
View file @
1bd26ba0
...
...
@@ -66,7 +66,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
// app店铺装修
window
.
location
.
href
=
`/memberCenter/shopAbility/template/mobile/edit?id=
${
detailInfo
.
id
}
&template=
${
detailInfo
.
fileName
}
&shopId=
${
detailInfo
.
shopId
}
&environment=
${
detailInfo
?.
environment
}
`
} else {
message.info(intl.formatMessage({ id: 'shop.template.
preview.edit
' }))
message.info(intl.formatMessage({ id: 'shop.template.
edit.tip
' }))
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment