Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
ElectricitySheep
Project
Project
Details
Activity
Releases
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
黄媛媛
ElectricitySheep
Commits
f3dd7192
Commit
f3dd7192
authored
Oct 28, 2020
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加页面
parent
9b8b1645
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2686 additions
and
4 deletions
+2686
-4
ServiceMannage.vue
src/components/offlineService/ServiceMannage.vue
+320
-0
offlineIndex.vue
src/components/offlineService/offlineIndex.vue
+3
-0
serviceProductEdit.vue
src/components/offlineService/serviceProductEdit.vue
+2347
-0
index.js
src/router/index.js
+16
-4
No files found.
src/components/offlineService/ServiceMannage.vue
0 → 100644
View file @
f3dd7192
<
template
>
<div
class=
"navigation"
>
<template
v-if=
"NavIconIsShowAdd"
>
<div
class=
"head-title"
>
导航图标列表
<el-button
@
click=
"NavIconIsShowAdd=false"
style=
"float:right;margin-top: -5px;"
size=
"small"
type=
"primary"
>
添加导航图标
</el-button>
</div>
<div
class=
"content"
>
<div>
<div
class=
"searchInput"
>
<el-input
style=
"display:inline-block;width:225px;height:30px"
placeholder=
"请输入搜索内容"
v-model=
"msg.NavIconName"
size=
"small"
clearable
@
keyup
.
enter
.
native=
"msg.pageIndex=1,getList()"
>
</el-input>
<span
class=
"el-icon-search"
style=
"color:#979dad;font-size:14px;position:relative;top:1px"
@
click=
"msg.pageIndex=1,getList()"
>
</span>
</div>
</div>
<el-table
:data=
"dataList"
v-loading=
"loading"
border
style=
"width: 100%;margin:20px 0"
>
<el-table-column
prop=
"NavIconId"
label=
"编号"
width=
"100"
>
</el-table-column>
<el-table-column
prop=
"NavIconName"
width=
"120"
label=
"名称"
>
</el-table-column>
<el-table-column
label=
"导航图标"
width=
"80"
>
<template
slot-scope=
"scope"
>
<img
:src=
"scope.row.NavIconImg"
style=
"width:35px;height:35px;"
>
</
template
>
</el-table-column>
<el-table-column
prop=
"NavIconUrl"
label=
"导航链接"
>
</el-table-column>
<el-table-column
prop=
"NavIconSort"
label=
"排序"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"NavIconIsShowStr"
label=
"是否显示"
width=
"120"
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<img
@
click=
"EditNavIcon(scope.row)"
src=
"../../assets/img/userman/edit.png"
alt=
""
>
<img
@
click=
"RemmoveNavIcon(scope.row)"
style=
"margin-left:10px;"
src=
"../../assets/img/userman/del.png"
alt=
""
>
</
template
>
</el-table-column>
</el-table>
<el-pagination
style=
"text-align:right"
background
@
current-change=
"handleCurrentChange"
:page-size=
"msg.pageSize"
layout=
"prev, pager, next"
:total=
"total"
>
</el-pagination>
</div>
</template>
<
template
v-else
>
<div
class=
"head-title"
>
<span
@
click=
"NavIconIsShowAdd=true"
style=
"color:rgb(64, 158, 255);cursor:pointer;"
>
导航图标列表
</span><span
style=
"margin:0 9px;color:#C0C4CC"
>
/
</span><span>
导航图标编辑
</span>
</div>
<div
class=
"content"
>
<el-form
:model=
"addMsg"
:rules=
"rules"
ref=
"addMsg"
label-width=
"80px"
style=
"padding:0 20px;"
>
<el-form-item
label=
"头像"
>
<div>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"建议尺寸:88*88"
placement=
"top-start"
>
<el-button
size=
"small"
@
click=
"choicImg=true"
>
选择文件
</el-button>
</el-tooltip>
</div>
<div
class=
"navNavIconImg"
>
<img
v-if=
"addMsg.headImg"
:src=
"addMsg.headImg"
alt=
""
/>
<img
v-else
src=
"../../assets/img/default.png"
alt=
""
/>
</div>
</el-form-item>
<el-form-item
label=
"名称"
prop=
"name"
>
<el-input
v-model=
"addMsg.name"
class=
"w400"
size=
"small"
placeholder=
"请输入名称"
maxlength=
"20"
/>
</el-form-item>
<el-form-item
label=
"性别"
>
<el-radio
v-model=
"addMsg.sex"
:label=
"1"
>
男
</el-radio>
<el-radio
v-model=
"addMsg.sex"
:label=
"2"
>
女
</el-radio>
</el-form-item>
<el-form-item
label=
"标签"
>
<el-tag
:key=
"tag"
size=
"small"
v-for=
"tag in addMsg.tags"
closable
:disable-transitions=
"false"
@
close=
"handleClose(tag)"
>
{{
tag
}}
</el-tag>
<!--
<el-input
class=
"input-new-tag"
v-if=
"inputVisible"
v-model=
"inputValue"
ref=
"saveTagInput"
size=
"small"
@
keyup
.
enter
.
native=
"handleInputConfirm"
@
blur=
"handleInputConfirm"
>
</el-input>
-->
<el-button
class=
"button-new-tag"
size=
"small"
@
click=
"showInput"
>
+ 标签
</el-button>
</el-form-item>
<el-form-item
label=
"好评率"
>
<el-input
v-model=
"addMsg.Praise"
class=
"w400"
size=
"small"
placeholder=
"请输入好评率"
maxlength=
"20"
/>
</el-form-item>
<el-form-item
label=
"预约次数"
>
<el-input
v-model=
"addMsg.appointment"
class=
"w400"
size=
"small"
placeholder=
"请输入预约次数"
maxlength=
"20"
/>
</el-form-item>
<el-form-item
label=
"电话"
>
<el-input
v-model=
"addMsg.tel"
class=
"w400"
size=
"small"
placeholder=
"请输入电话"
maxlength=
"20"
/>
</el-form-item>
<el-form-item
label=
"关联产品"
>
<el-input
v-model=
"addMsg.AssociatedProducts"
class=
"w400"
size=
"small"
placeholder=
"请输入关联产品"
maxlength=
"20"
/>
</el-form-item>
<el-form-item
label=
"职务"
>
<el-input
v-model=
"addMsg.position"
class=
"w400"
size=
"small"
placeholder=
"职务"
maxlength=
"20"
/>
</el-form-item>
<el-form-item
label=
"关联门店"
>
<el-input
v-model=
"addMsg.AssociatedStores"
class=
"w400"
size=
"small"
placeholder=
"请输入关联门店"
maxlength=
"20"
/>
</el-form-item>
</el-form>
</div>
<el-button
size=
"small"
style=
"margin-top:20px;padding:9px 25px;"
type=
"primary"
@
click=
"submitform('addMsg')"
>
保存
</el-button>
</
template
>
<el-dialog
title=
"选择链接"
:visible
.
sync=
"isShowLink"
width=
"800px"
>
<chooseMenu
ref=
"chooseMenu"
>
</chooseMenu>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"isShowLink=false"
>
取 消
</el-button>
<el-button
size=
"small"
type=
"danger"
@
click=
"getMenu()"
>
确 定
</el-button>
</span>
</el-dialog>
<!-- 选择图片文件 -->
<el-dialog
title=
"选择文件"
:visible
.
sync=
"choicImg"
width=
"1240px"
>
<ChooseImg
@
SelectId=
"SelectId"
></ChooseImg>
</el-dialog>
</div>
</template>
<
script
>
import
chooseMenu
from
"../common/chooseMenu.vue"
;
import
ChooseImg
from
"@/components/global/ChooseImg.vue"
;
export
default
{
data
()
{
let
validataNavIconImg
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
addMsg
.
NavIconImg
==
''
)
{
return
callback
(
new
Error
(
'请选择导航图标'
));
}
else
{
callback
();
}
}
return
{
//选择图片
choicImg
:
false
,
//是否线下链接弹窗
isShowLink
:
false
,
loading
:
false
,
dataList
:
[],
msg
:
{
pageIndex
:
1
,
pageSize
:
15
,
NavIconName
:
""
,
MallBaseId
:
0
,
NavIconIsShow
:
-
1
},
total
:
0
,
NavIconIsShowAdd
:
true
,
addMsg
:
{
headImg
:
''
,
//头像
name
:
''
,
//名称
sex
:
0
,
//性别
tags
:
[],
//标签
Praise
:
0
,
//好评率
appointment
:
0
,
//预约次数
tel
:
''
,
//电话
AssociatedProducts
:
''
,
//关联产品
position
:
''
,
//职务
AssociatedStores
:
''
,
//关联门店
},
rules
:
{
NavIconName
:
[{
required
:
true
,
message
:
"请输入导航名称"
,
trigger
:
"blur"
}],
NavIconSort
:
[{
required
:
true
,
message
:
"请输入导航排序"
,
trigger
:
"blur"
}],
NavIconImg
:
[{
validator
:
validataNavIconImg
,
trigger
:
"blur"
,
required
:
true
}],
NavIconUrl
:
[{
required
:
true
,
message
:
"请选择导航链接"
,
trigger
:
"blur"
}]
},
};
},
components
:
{
chooseMenu
,
ChooseImg
},
created
()
{
},
methods
:
{
//删除标签
handleClose
()
{
},
//新增标签
showInput
()
{
},
getMenu
()
{
//调用子组件方法
var
obj
=
this
.
$refs
.
chooseMenu
.
getChooseMenu
();
this
.
addMsg
.
NavIconUrl
=
obj
.
PageUrl
;
this
.
isShowLink
=
false
;
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
getList
()
{
this
.
apipost
(
"/api/Tenant/GetMiniProgrameNaviconPage"
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataList
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
},
//选择图片
SelectId
(
msg
)
{
this
.
addMsg
.
NavIconImg
=
this
.
getIconLink
(
msg
.
url
);
this
.
choicImg
=
false
;
},
submitform
(
addMsg
)
{
//提交创建、修改表单
this
.
$refs
[
addMsg
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
saveMsg
();
}
else
{
return
false
;
}
});
},
//保存
saveMsg
()
{
this
.
apipost
(
"/api/Tenant/SetMiniProgrameNavicon"
,
this
.
addMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
getList
();
this
.
NavIconIsShowAdd
=
true
;
this
.
addMsg
.
NavIconId
=
0
;
this
.
addMsg
.
NavIconName
=
""
;
this
.
addMsg
.
NavIconSort
=
100
;
this
.
addMsg
.
NavIconImg
=
""
;
this
.
addMsg
.
NavIconUrl
=
""
;
this
.
addMsg
.
NavIconIsShow
=
0
;
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
},
//修改
EditNavIcon
(
item
)
{
this
.
apipost
(
"/api/Tenant/GetMiniProgrameNavicon"
,
{
NavIconId
:
item
.
NavIconId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
addMsg
=
res
.
data
.
data
;
this
.
NavIconIsShowAdd
=
false
;
}
else
{
this
.
Info
(
res
.
data
.
message
);
}
})
},
},
mounted
()
{
this
.
getList
();
}
};
</
script
>
<
style
>
.navNavIconImg
{
width
:
80px
;
height
:
80px
;
}
.navNavIconImg
img
{
width
:
100%
;
height
:
100%
;
}
.navigation
.blue
{
color
:
#409EFF
;
}
.navigation
.content
.searchInput
{
border
:
1px
solid
#DCDFE6
;
border-radius
:
4px
;
}
.navigation
.content
.searchInput
.el-input__inner
{
border
:
none
;
outline
:
none
;
height
:
30px
;
line-height
:
30px
;
}
.navigation
.content
.searchInput
{
line-height
:
normal
;
display
:
inline-table
;
width
:
100%
;
border-collapse
:
separate
;
border-spacing
:
0
;
width
:
250px
;
margin-right
:
20px
;
}
.navigation
.content
{
background
:
#fff
;
margin-top
:
10px
;
padding
:
20px
;
box-sizing
:
border-box
;
}
</
style
>
src/components/offlineService/offlineIndex.vue
View file @
f3dd7192
...
@@ -178,6 +178,9 @@
...
@@ -178,6 +178,9 @@
<li
class=
"menu_item"
:class=
"
{'Fchecked':isChecked=='/serviceProductList'}" @click="isChecked='/serviceProductList',CommonJump('serviceProductList')">
<li
class=
"menu_item"
:class=
"
{'Fchecked':isChecked=='/serviceProductList'}" @click="isChecked='/serviceProductList',CommonJump('serviceProductList')">
<i
class=
"el-icon-menu"
></i><span>
服务产品
</span>
<i
class=
"el-icon-menu"
></i><span>
服务产品
</span>
</li>
</li>
<li
class=
"menu_item"
:class=
"
{'Fchecked':isChecked=='/ServiceMannage'}" @click="isChecked='/ServiceMannage',CommonJump('ServiceMannage')">
<i
class=
"el-icon-menu"
></i><span>
服务人员管理
</span>
</li>
</ul>
</ul>
</div>
</div>
</div>
</div>
...
...
src/components/offlineService/serviceProductEdit.vue
0 → 100644
View file @
f3dd7192
<
template
>
<div
class=
"directorGoodsEdit"
>
<div
class=
"head-title"
>
<span
@
click=
"CommonJump('CourseManagement')"
class=
"blue point"
>
商品列表
</span>
/ 添加商品
</div>
<div
style=
"background:#fff;margin-top:10px;padding:10px 20px 20px"
>
<el-form
class=
"app-batch"
:model=
"addMsg"
:rules=
"rules"
ref=
"addMsg"
label-width=
"180px"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"商品设置"
name=
"first"
>
<el-card
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
选择分类
</span>
</div>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"上架版面"
style=
"display:none;"
>
<el-radio-group
v-model=
"addMsg.GoodsPageType"
@
change=
"getGoodType(addMsg.GoodsPageType)"
>
<el-radio
v-for=
"(item,index) in My_cateList"
:key=
"index"
:label=
"item.Id"
>
{{
item
.
Name
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"商品分类"
>
<template
v-if=
"
addMsg.CategoryList && addMsg.CategoryList.length > 0
"
>
<el-tag
type=
"warning"
style=
"margin-right:10px;"
@
close=
"exitCheck(item, index)"
v-for=
"(item, index) in addMsg.CategoryList"
:key=
"index+'1'"
closable
>
{{
item
.
CategoryName
}}
</el-tag>
</
template
>
<el-button
type=
"primary"
@
click=
"
(flDig = true), (keepCategoryList = addMsg.CategoryList)
"
style=
"margin:0 10px;"
size=
"small"
>
选择分类
</el-button>
<span
@
click=
"CommonJump('addGoodsClass')"
class=
"blue point"
>
添加分类
</span>
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card
style=
"margin-top:20px"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
基本信息
</span>
</div>
<el-row>
<el-col
:span=
"12"
>
<el-form-item>
<label
slot=
"label"
>
课程编码
<el-tooltip
class=
"item"
effect=
"dark"
content=
"只能从商城中获取商品信息,且基本信息与商城商品保持一致"
placement=
"top"
>
<i
class=
"el-icon-info"
></i>
</el-tooltip>
</label>
<el-input
v-model=
"addMsg.Id"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
@
click=
"getcode()"
>
获取
</el-button>
</el-input>
</el-form-item>
<el-form-item
label=
"课程名称"
prop=
"Name"
>
<el-input
v-model=
"addMsg.Name"
size=
"small"
placeholder=
"请输入内容"
maxlength=
"100"
show-word-limit
>
</el-input>
</el-form-item>
<el-form-item
label=
"课程副标题"
>
<el-input
v-model=
"addMsg.SubName"
size=
"small"
placeholder=
"请输入内容"
maxlength=
"100"
show-word-limit
>
</el-input>
</el-form-item>
<el-form-item
label=
"供应商"
prop=
"SupplierId"
>
<el-select
class=
"w150"
style=
"margin-right: 10px;"
v-model=
"SupplierId"
size=
"small"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<label
slot=
"label"
>
课程封面图(单张)
<el-tooltip
class=
"item"
effect=
"dark"
content=
"课程封面图"
placement=
"top"
>
<i
class=
"el-icon-info"
></i>
</el-tooltip>
</label>
<div
class=
"nav_Main"
>
<div
class=
"nav_IconContent"
>
<div
v-for=
"(item, index) in addMsg.CarouselImageList"
:key=
"index+'2'"
style=
"margin-right: 20px; position: relative; "
>
<div
class=
"colapp-image"
:style=
"{
backgroundImage: 'url(' + item.Path + ')'
}"
></div>
<el-button
@
click=
"ClearCarouse(index)"
class=
"delBtn"
type=
"danger"
icon=
"el-icon-close"
circle
></el-button>
</div>
</div>
<div
@
click=
"openChangeDig(1)"
v-if=
"addMsg.CarouselImageList.length==0"
class=
"add-image-btn 2222"
>
+ 添加图片
</div>
</div>
</el-form-item>
<el-form-item
label=
"课程封面视频"
>
<el-input
v-model=
"addMsg.VideoAddress"
size=
"small"
placeholder=
"请输入内容"
>
<el-button
@
click=
"changeState1 = true,videoType=1"
slot=
"append"
>
添加视频
</el-button>
</el-input>
<a
v-if=
"addMsg.VideoAddress != ''"
class=
"blue noline"
:href=
"addMsg.VideoAddress"
target=
"_blank"
>
视频链接
</a>
</el-form-item>
<el-form-item>
<label
slot=
"label"
>
自定义分享标题
<el-tooltip
class=
"item"
effect=
"dark"
content=
"分享给好友时,作为商品名称"
placement=
"top"
>
<i
class=
"el-icon-info"
></i>
</el-tooltip>
</label>
<el-input
v-model=
"addMsg.CustomShareTitles"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
></el-input>
<p
class=
"blue point"
@
click=
"imgDig = true"
>
查看图例
</p>
</el-form-item>
<el-form-item
class=
"commonLabel discount"
>
<label
slot=
"label"
>
自定义分享封面图
<el-tooltip
class=
"item"
effect=
"dark"
content=
"分享给好友时,作为分享图片"
placement=
"top"
>
<i
class=
"el-icon-info"
></i>
</el-tooltip>
</label>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"建议尺寸420*336"
placement=
"top"
>
<el-button
@
click=
"openChangeDig(2)"
size=
"small"
>
选择图片
</el-button>
</el-tooltip>
<div
class=
"app-gallery-item"
style=
"position: relative;width: 100px;margin-top: 10px;border:none"
>
<img
v-if=
"
!addMsg.CustomShareImage ||
addMsg.CustomShareImage == ''
"
src=
"../../assets/img/default.png"
style=
"width:80px;height:80px"
alt=
""
/>
<el-button
@
click=
"clearCustom"
style=
"position: absolute;right: 6px;top: -10px;"
v-if=
"
addMsg.CustomShareImage &&
addMsg.CustomShareImage != ''
"
size=
"mini"
type=
"danger"
icon=
"el-icon-close"
circle
></el-button>
<img
v-if=
"addMsg.CustomShareImage ||addMsg.CustomShareImage !=''"
style=
"width:80px;height:80px"
:src=
"addMsg.CustomShareImage"
alt=
""
/>
</div>
<p
style=
"margin-top:-15px"
class=
"blue f12"
>
<span
class=
"point"
@
click=
"imgDig = true"
>
查看图例
</span>
</p>
</el-form-item>
<el-form-item
label=
"直播商品"
>
<el-switch
v-model=
"addMsg.IsLiveGoods"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"2"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"上架状态"
>
<el-switch
v-model=
"addMsg.GoodsStatus"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"2"
>
</el-switch>
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card
style=
"margin-top:20px"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
售价与讲师
</span>
</div>
<el-row>
<el-col
:span=
"12"
>
<el-form-item>
<label
slot=
"label"
>
排序
<el-tooltip
class=
"item"
effect=
"dark"
content=
"排序值越小排序越靠前"
placement=
"top"
>
<i
class=
"el-icon-info"
></i>
</el-tooltip>
</label>
<el-input
v-model=
"addMsg.Sort"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
></el-input>
</el-form-item>
<el-form-item
label=
"售价"
prop=
"SellingPrice"
>
<el-input
v-model=
"addMsg.SellingPrice"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
>
元
</el-button>
</el-input>
</el-form-item>
<el-form-item
label=
"原价"
prop=
"OriginalPrice"
>
<el-input
v-model=
"addMsg.OriginalPrice"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
>
元
</el-button>
</el-input>
</el-form-item>
<el-form-item
label=
"成本价"
>
<el-input
@
change=
"getSuggestPrice"
v-model=
"addMsg.CostPrice"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
>
元
</el-button>
</el-input>
<span
v-if=
"
SuggestPriceInfo.Status && SuggestPriceInfo.Status == 1
"
class=
"cred"
style=
"position: absolute;width: 400px;margin-left: 15px;"
>
建议零售价:¥{{ SuggestPriceInfo.MPrice }}
</span>
</el-form-item>
<!-- 判断是开启了粉象返佣 -->
<el-form-item
label=
"返佣总金额"
prop=
"Commission"
v-if=
"FxState==1"
>
<el-input
v-model=
"addMsg.Commission"
@
keyup
.
native=
"checkPrice(addMsg,'Commission')"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
>
元
</el-button>
</el-input>
</el-form-item>
<el-form-item
label=
"已售数量"
>
<el-input
v-model=
"addMsg.SalesNum"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
>
件
</el-button>
</el-input>
</el-form-item>
<el-form-item
label=
"关联讲师"
>
<
template
v-if=
"addMsg.TeacherList.length>0"
>
<div>
<div
class=
"Teacher_List"
v-for=
"(item,index) in addMsg.TeacherList"
:key=
"index"
>
<div
class=
"Teacher_tou"
>
<img
style=
"width:100%;height:100%;"
:src=
"item.TeacherLogo"
alt=
""
/>
</div>
{{
item
.
Name
}}
<el-button
@
click=
"yichuTeacher(index)"
class=
"edu_edlBtn"
type=
"danger"
icon=
"el-icon-close"
circle
></el-button>
</div>
</div>
<!--
<el-tag
v-for=
"(item,index) in addMsg.TeacherList"
closable
size=
"small"
@
close=
"yichuTeacher(index)"
style=
"margin-right:5px;"
:key=
"index"
>
{{
item
.
Name
}}
</el-tag>
-->
</
template
>
<el-button
@
click=
"choosejsDig=true"
style=
"position:relative;top:-4px;"
size=
"mini"
>
选择教师
</el-button>
</el-form-item>
<el-form-item
label=
"标签"
size=
"small"
>
<el-tag
:key=
"tag"
size=
"small"
v-for=
"tag in dynamicTags"
closable
:disable-transitions=
"false"
@
close=
"handleClose(tag)"
>
{{tag}}
</el-tag>
<el-input
class=
"input-new-tag"
v-if=
"inputVisible"
v-model=
"inputValue"
ref=
"saveTagInput"
size=
"small"
@
keyup
.
enter
.
native=
"handleInputConfirm"
@
blur=
"handleInputConfirm"
>
</el-input>
<el-button
v-else
class=
"button-new-tag"
size=
"small"
@
click=
"showInput"
>
+ 标签
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card
style=
"margin-top:20px"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
style=
"display:flex;justify-content:space-between;align-items:center;"
>
<span>
课程信息
</span>
<el-button
@
click=
"courseDialog=true,isShowEditBtn=true"
size=
"small"
>
添加课程
</el-button>
</div>
<el-row>
<el-col
:span=
"24"
>
<div
class=
"courseInfo"
>
<div
class=
"courseHeader"
>
<div
style=
"width:100px;"
>
章节排序
</div>
<div
style=
"width:120px;"
>
章节排序名称
</div>
<div
style=
"width:300px;"
>
名称
</div>
<div>
类型
</div>
<div>
试看
</div>
<div
style=
"width:100px;overflow:hidden"
>
试看视频秒/word pdf页
</div>
<div>
缓存
</div>
<div>
附件
</div>
<div>
操作
</div>
</div>
<div
class=
"courseContent"
>
<draggable
v-model=
"addMsg.CourseList"
@
end=
'allow'
>
<div
class=
"courseList"
v-for=
"(subItem,index) in addMsg.CourseList"
:key=
"index"
>
<div
style=
"width:100px;"
>
{{subItem.Sort}}
</div>
<div
style=
"width:120px;"
>
{{subItem.SortName}}
</div>
<div
class=
"edu_fileName"
style=
"width:300px;"
>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"subItem.Name"
placement=
"top"
>
<div
style=
"padding:5px;"
>
{{subItem.Name}}
</div>
</el-tooltip>
</div>
<div>
<span
v-if=
"subItem.Type==1"
>
视频
</span>
<span
v-if=
"subItem.Type==2"
>
WORD
</span>
<span
v-if=
"subItem.Type==3"
>
PDF
</span>
<span
v-if=
"subItem.Type==4"
>
PPT
</span>
</div>
<div>
<span
v-if=
"subItem.IsTrySee==1"
>
可以
</span>
<span
v-if=
"subItem.IsTrySee==2"
>
不可以
</span>
</div>
<div
style=
"width:100px"
>
{{subItem.Number}}
</div>
<div>
<span
v-if=
"subItem.IsCache==1"
>
可以
</span>
<span
v-if=
"subItem.IsCache==2"
>
不可以
</span>
</div>
<div
class=
"courseFileDiv"
>
<div
style=
"text-align:left;width:90px;display:flex;align-items:center;"
>
<div
class=
"eduFileDiv"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"预览文件"
placement=
"top"
>
<img
v-if=
"getFileType(subItem.FilePath)==1"
@
click=
"goUrlVideo(subItem.FilePath)"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/z_video.png"
alt=
""
>
<img
v-if=
"getFileType(subItem.FilePath)==2"
@
click=
"showUpLoadFileT(subItem.FilePath)"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/WORD.png"
alt=
""
>
<img
v-if=
"getFileType(subItem.FilePath)==3"
@
click=
"showUpLoadFileT(subItem.FilePath)"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/pdf.png"
alt=
""
>
<img
v-if=
"getFileType(subItem.FilePath)==4"
@
click=
"showUpLoadFileT(subItem.FilePath)"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/PPT.png"
alt=
""
>
</el-tooltip>
</div>
<div
class=
"courseView"
v-if=
"subItem.Type!=1&&subItem.IsImageOK==1"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"预览图片"
placement=
"top"
>
<img
@
click=
"getImgView(subItem)"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/viewClass.png"
>
</el-tooltip>
</div>
<div
class=
"courseScz"
v-if=
"subItem.Type!=1&&subItem.IsImageOK==2"
>
<span
style=
"font-size:12px;margin-left:5px;color:red;"
>
图片生成中
</span>
</div>
</div>
</div>
<div>
<img
@
click=
"updateCourse(subItem,index),isReplace=index,isShowEditBtn=false"
style=
"width:32px;height:32px"
src=
"../../assets/img/userman/edit.png"
alt=
""
>
<img
@
click=
"deleteCourse(index)"
style=
"width:32px;height:32px;margin:0 10px"
src=
"../../assets/img/userman/del.png"
alt=
""
>
</div>
</div>
</draggable>
</div>
</div>
</el-col>
</el-row>
</el-card>
<el-card
style=
"margin-top:20px"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
营销设置
</span>
</div>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"积分赠送"
>
<el-tooltip
class=
"item"
effect=
"dark"
placement=
"top"
style=
"position: absolute;left: -10px;top:12px"
>
<div
slot=
"content"
>
用户购物赠送的积分,
如果不填写或填写0,则默认为不赠送积分
<br
/>
如果为百分比则为按成交价格的比例计算积分
<br
/>
如: 购买2件,设置10 积分, 不管成交价格是多少,
则购买后获得20积分
<br
/>
如: 购买2件,设置10%积分, 成交价格2 * 200= 400,
则购买后获得 40 积分(400*10%)
<br
/>
</div>
<i
class=
"el-tooltip el-icon-info"
></i>
</el-tooltip>
<el-input
v-model=
"addMsg.IntegralPresent"
style=
"width:100%;margin-left:15px"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<el-button
slot=
"append"
>
分
<el-radio
v-model=
"addMsg.IntegralPresentType"
:label=
"2"
>
固定值
</el-radio>
<el-radio
v-model=
"addMsg.IntegralPresentType"
:label=
"1"
>
百分比
</el-radio>
</el-button>
</el-input>
</el-form-item>
<el-form-item
label=
"积分抵扣"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"如果设置0,则不支持积分抵扣 如果带%则为按成交价格的比例计算抵扣多少元"
placement=
"top"
style=
"position: absolute;left: -10px;top:12px"
>
<i
class=
"el-tooltip el-icon-info"
></i>
</el-tooltip>
<el-input
v-model=
"addMsg.PointsDeduction"
style=
"width:100%;margin-left:15px"
type=
"number"
min=
"1"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
>
<
template
slot=
"prepend"
>
最多抵扣
</
template
>
<el-button
slot=
"append"
>
元
<el-radio
v-model=
"addMsg.PointsDeductionType"
:label=
"2"
>
固定值
</el-radio>
<el-radio
v-model=
"addMsg.PointsDeductionType"
:label=
"1"
>
百分比
</el-radio>
</el-button>
</el-input>
</el-form-item>
<el-form-item
label-width=
"200px"
style=
"display:none;"
>
<el-checkbox
v-model=
"addMsg.IsMultipleDeduction"
:true-label=
"1"
:false-label=
"2"
>
允许多件抵扣
</el-checkbox>
</el-form-item>
<el-form-item
label=
"广告词"
>
<el-input
v-model=
"addMsg.Advertising"
style=
"width:100%;margin-left:15px"
type=
"textarea"
:rows=
"3"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
></el-input>
</el-form-item>
<el-form-item
label=
"标签类型"
>
<el-radio
v-model=
"addMsg.MarketingLogo.iswords"
:label=
"1"
>
文字模式
</el-radio>
<el-radio
v-model=
"addMsg.MarketingLogo.iswords"
:label=
"2"
>
图片模式
</el-radio>
<el-radio
v-model=
"addMsg.MarketingLogo.iswords"
:label=
"0"
>
无模式
</el-radio>
</el-form-item>
<el-form-item
label=
"标签文字"
v-if=
"addMsg.MarketingLogo.iswords==1"
>
<el-input
v-model=
"addMsg.MarketingLogo.words"
style=
"width:100%;margin-left:15px"
size=
"small"
placeholder=
"请输入内容"
class=
"input-with-select"
maxlength=
'10'
show-word-limit
></el-input>
</el-form-item>
<el-form-item
label=
"标签字体颜色"
v-if=
"addMsg.MarketingLogo.iswords==1"
>
<el-color-picker
style=
"width:100%;margin-left:15px"
v-model=
"addMsg.MarketingLogo.wordsColor"
show-alpha
:predefine=
"predefineColors"
>
</el-color-picker>
</el-form-item>
<el-form-item
label=
"标签背景颜色"
v-if=
"addMsg.MarketingLogo.iswords==1"
>
<el-color-picker
style=
"width:100%;margin-left:15px"
v-model=
"addMsg.MarketingLogo.wordsBack"
show-alpha
:predefine=
"predefineColors"
>
</el-color-picker>
</el-form-item>
<el-form-item
class=
"commonLabel discount"
label=
"标签图片"
v-if=
"addMsg.MarketingLogo.iswords==2"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"建议尺寸"
placement=
"top"
>
<el-button
@
click=
"openChangeDig(4)"
size=
"small"
>
选择图片
</el-button>
</el-tooltip>
<div
class=
"app-gallery-item"
style=
"position: relative;width: 100px;margin-top: 10px;border:none"
>
<img
v-if=
"
!addMsg.MarketingLogo.ico ||
addMsg.MarketingLogo.ico == ''
"
src=
"../../assets/img/default.png"
style=
"width:80px;height:80px"
alt=
""
/>
<el-button
@
click=
"addMsg.MarketingLogo.ico = ''"
style=
"position: absolute;right: 6px;top: -10px;"
v-if=
"
addMsg.MarketingLogo.ico &&
addMsg.MarketingLogo.ico != ''
"
size=
"mini"
type=
"danger"
icon=
"el-icon-close"
circle
></el-button>
<img
style=
"width:80px;height:80px"
:src=
"addMsg.MarketingLogo.ico"
alt=
""
/>
</div>
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card
style=
"margin-top:20px"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
课程详情
</span>
</div>
<el-row>
<el-col
:span=
"242"
>
<UE
style=
"width:750px;"
:defaultMsg=
"defaultMsg"
:config=
"config"
:IsMultiple=
"true"
ref=
"ue"
></UE>
</el-col>
</el-row>
</el-card>
</el-tab-pane>
<el-tab-pane
label=
"分销价设置"
name=
"second"
>
<el-form-item
label=
"是否开启单独分销"
>
<el-switch
@
change=
"HpChange"
v-model=
"addMsg.SeparateDistribution"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"0"
>
</el-switch>
</el-form-item>
<
template
v-if=
"addMsg.SeparateDistribution == 1"
>
<el-form-item
label=
"分销佣金类型"
>
<el-radio
v-model=
"addMsg.SeparateDistributionMoneyType"
:label=
"2"
>
固定金额
</el-radio>
<el-radio
v-model=
"addMsg.SeparateDistributionMoneyType"
:label=
"1"
>
百分比
</el-radio>
</el-form-item>
<el-form-item
class=
"111"
>
<div
v-if=
"addMsg.SeparateDistributionType == 1"
class=
"app-attr"
>
<div
class=
"box"
>
<el-form-item
label-width=
"90px"
style=
"display:inline-block"
label=
"批量设置"
>
<el-select
style=
"width:130px"
v-model=
"pusetVal"
size=
"small"
>
<el-option
v-for=
"(item, index) in butorInt"
:label=
"`$
{index + 1}级分销`" :value="index + 1"
:key="index+'8'">
</el-option>
</el-select>
<el-input
style=
"width:150px;position:relative;top:5px"
size=
"small"
v-model=
"ptinput"
placeholder=
"请输入内容"
>
<el-button
slot=
"append"
>
<span
v-if=
"addMsg.SeparateDistributionMoneyType == 2"
>
元
</span>
<span
v-if=
"addMsg.SeparateDistributionMoneyType == 1"
>
%
</span>
</el-button>
</el-input>
<el-button
@
click=
"PuSet"
style=
"position:relative;"
size=
"small"
type=
"primary"
>
设置
</el-button>
</el-form-item>
</div>
<el-table
ref=
"table"
:data=
"GradeCommissionList"
border
style=
"width: 100%"
@
selection-change=
"TbaleSelectionChange2"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
width=
"100"
label=
"等级名称"
>
<template
slot-scope=
"scope"
>
<template
v-for=
"(item2, index) in DropdownList"
>
<span
:key=
"index+'9'"
v-if=
"scope.row.DistributorGrade == item2.Id"
>
{{
item2
.
Name
}}
</span>
</
template
>
</template>
</el-table-column>
<
template
v-for=
"(item, index) in butorIntList"
>
<el-table-column
:key=
"index+'10'"
:label=
"item.Name"
>
<template
slot-scope=
"scope"
>
<span>
<el-input
v-model=
"scope.row.OneCommission"
v-if=
"index == 0"
size=
"small"
>
<el-button
slot=
"append"
>
<span
v-if=
"
addMsg.SeparateDistributionMoneyType == 2
"
>
元
</span>
<span
v-if=
"
addMsg.SeparateDistributionMoneyType == 1
"
>
%
</span>
</el-button>
</el-input>
<el-input
v-model=
"scope.row.TwoCommission"
v-if=
"index == 1"
size=
"small"
>
<el-button
slot=
"append"
>
<span
v-if=
"
addMsg.SeparateDistributionMoneyType == 2
"
>
元
</span>
<span
v-if=
"
addMsg.SeparateDistributionMoneyType == 1
"
>
%
</span>
</el-button>
</el-input>
<el-input
v-model=
"scope.row.ThreeCommission"
v-if=
"index == 2"
size=
"small"
>
<el-button
slot=
"append"
>
<span
v-if=
"
addMsg.SeparateDistributionMoneyType == 2
"
>
元
</span>
<span
v-if=
"
addMsg.SeparateDistributionMoneyType == 1
"
>
%
</span>
</el-button>
</el-input>
</span>
</
template
>
</el-table-column>
</template>
</el-table>
</div>
</el-form-item>
</template>
<
template
v-if=
"hpState==1"
>
<table
class=
"fen-table"
>
<thead>
<tr>
<th>
结算对象
</th>
<th>
结算成本(毛利)
</th>
<th>
预计返佣金额
</th>
</tr>
</thead>
<tbody>
<tr
v-for=
"(x, i) in shareSettings"
:key=
"i"
>
<td>
{{
x
.
GradeName
}}
</td>
<td>
{{
x
.
cb
}}
(
{{
x
.
CommissionRatio
}}
%)
</td>
<td>
{{
x
.
commission
}}
</td>
</tr>
</tbody>
</table>
<div
class=
"fen-sumg"
>
<span
style=
"margin-right:30px"
>
直客卖价:
{{
addMsg
.
SellingPrice
}}
</span>
<span
style=
"margin-right:30px"
>
成本:
{{
addMsg
.
CostPrice
}}
</span>
<span
style=
"margin-right:30px;color:red;"
>
预计公司利润:
{{
companyCommission
}}
</span>
</div>
</
template
>
</el-tab-pane>
<el-tab-pane
label=
"会员价设置"
name=
"third"
>
<el-form-item
label=
"是否享受会员功能"
>
<el-switch
v-model=
"addMsg.EnjoyMember"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"0"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"是否单独设置会员价"
>
<el-switch
v-model=
"addMsg.SeparateSetMember"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"0"
>
</el-switch>
</el-form-item>
<el-form-item
v-if=
"addMsg.SeparateSetMember == 1 && huiyList.length == 0"
label=
"会员价设置"
>
<el-button
@
click=
"CommonJump('setMember')"
size=
"small"
type=
"danger"
>
如需设置请先添加会员
</el-button>
</el-form-item>
<el-form-item
v-if=
"addMsg.SeparateSetMember == 1
"
label=
"默认规格会员价设置"
>
<
template
v-if=
"memberList1&&memberList1[0].GradePriceList.length>0"
>
<div
v-for=
"(item, index) in memberList1[0].GradePriceList"
:key=
"index+'15'"
>
<el-input
style=
"width:700px"
placeholder=
"请输入内容"
v-model=
"item.MemberPrice"
size=
"small"
class=
"input-with-select"
>
<el-button
slot=
"prepend"
>
{{
item
.
MemberGrade
}}
级会员
</el-button>
<el-button
slot=
"append"
>
元
</el-button>
</el-input>
</div>
</
template
>
</el-form-item>
</el-tab-pane>
</el-tabs>
</el-form>
<div
class=
"bottom-div"
style=
"margin-top:20px"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"Save('addMsg')"
>
保存
</el-button>
<!-- <el-button size="small">预览</el-button> -->
</div>
</div>
<!-- 选择分类 -->
<el-dialog
custom-class=
"app-add-cat"
title=
"选择分类"
:visible
.
sync=
"flDig"
width=
"1100px"
>
<el-row>
<el-col
:span=
"8"
style=
"padding:0 10px;box-sizing:border-box"
>
<h3
style=
"padding:15px 0"
>
一级分类
</h3>
<div
class=
"app-goods-cat-list active"
>
<el-checkbox-group
v-model=
"NewCategoryList"
@
change=
"handleCheckChange"
>
<div
v-for=
"(item, index) in fenleiData"
:key=
"index+'19'"
flex=
"dir:left box:first"
class=
"cat-item"
>
<el-checkbox
:label=
"item.Id"
>
<span
style=
"display: none;"
>
{{ item.Name }}
</span>
</el-checkbox>
<div
flex=
"box:last cross:center"
>
<span>
{{ item.Name }}
</span>
<i
v-if=
"item.ChildList.length > 0"
@
click=
"getChild2(item.ChildList)"
class=
"el-icon-arrow-right"
></i>
</div>
</div>
</el-checkbox-group>
</div>
</el-col>
<el-col
v-show=
"childList2.length > 0"
:span=
"8"
style=
"padding:0 10px;box-sizing:border-box"
>
<h3
style=
"padding:15px 0"
>
二级分类
</h3>
<div
class=
"app-goods-cat-list active"
>
<el-checkbox-group
v-model=
"NewCategoryList"
@
change=
"handleCheckChange"
>
<div
v-for=
"(item, index) in childList2"
:key=
"index+'20'"
flex=
"dir:left box:first"
class=
"cat-item"
>
<el-checkbox
:label=
"item.Id"
>
<span
style=
"display: none;"
>
{{ item.Name }}
</span>
</el-checkbox>
<div
flex=
"box:last cross:center"
>
<span>
{{ item.Name }}
</span>
<i
v-if=
"item.ChildList.length > 0"
@
click=
"getChild3(item.ChildList)"
class=
"el-icon-arrow-right"
></i>
</div>
</div>
</el-checkbox-group>
</div>
</el-col>
<el-col
v-show=
"childList3.length > 0"
:span=
"8"
style=
"padding:0 10px;box-sizing:border-box"
>
<h3
style=
"padding:15px 0"
>
三级分类
</h3>
<div
class=
"app-goods-cat-list active"
>
<el-checkbox-group
v-model=
"NewCategoryList"
@
change=
"handleCheckChange"
>
<div
v-for=
"(item, index) in childList3"
:key=
"index+'21'"
flex=
"dir:left box:first"
class=
"cat-item"
>
<el-checkbox
:label=
"item.Id"
>
<span
style=
"display: none;"
>
{{ item.Name }}
</span>
</el-checkbox>
<div
flex=
"box:last cross:center"
>
<span>
{{ item.Name }}
</span>
<i
class=
"el-icon-arrow-right"
></i>
</div>
</div>
</el-checkbox-group>
</div>
</el-col>
</el-row>
<div
class=
"tag-box"
>
<el-tag
@
close=
"exitCheck(item)"
v-for=
"(item, index) in addMsg.CategoryList"
:key=
"index+'22'"
type=
"warning"
closable
style=
"margin-right:5px"
>
{{ item.Name }}
</el-tag>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"
(flDig = false),
(addMsg.CategoryList = keepCategoryList),
ExitCateList()
"
>
取 消
</el-button>
<el-button
@
click=
"(flDig = false), getSuggestPrice()"
size=
"small"
type=
"primary"
>
确 定
</el-button>
</span>
</el-dialog>
<!-- 查看图例 -->
<el-dialog
title=
"查看自定义分享图片图例"
:visible
.
sync=
"imgDig"
width=
"30%"
>
<div
class=
"center"
>
<img
style=
" width: 310px;height: 360px;"
src=
"../../assets/img/userman/app-share-name.png"
alt=
""
/>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"imgDig = false"
size=
"small"
type=
"primary"
>
我知道了
</el-button>
</span>
</el-dialog>
<!-- 选择图片 -->
<el-dialog
title=
"选择图片"
:visible
.
sync=
"changeState"
width=
"1240px"
>
<ChooseImg
@
SelectId=
"SelectId"
></ChooseImg>
</el-dialog>
<!-- 选择视频 -->
<el-dialog
title=
"选择视频"
:visible
.
sync=
"changeState1"
width=
"1240px"
>
<Choosevideo
@
Selectvideo=
"Selectvideo"
></Choosevideo>
</el-dialog>
<!-- 选择其他文件 -->
<el-dialog
title=
"选择文件"
:visible
.
sync=
"fileDialog"
width=
"1240px"
>
<ChooseFile
@
SelectFile=
"SelectFile"
></ChooseFile>
</el-dialog>
<!-- 选择表单 -->
<el-dialog
title=
"选择表单"
top=
"2%"
:visible
.
sync=
"choosebdDig"
width=
"30%"
>
<div>
<el-radio-group
v-model=
"val1"
>
<el-radio
@
change=
"YfSelect1"
style=
"padding-bottom:10px"
class=
"yfradio"
:label=
"{ Name: '默认运费', Id: 0 }"
>
默认表单
</el-radio>
</el-radio-group>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"(choosebdDig = false), (addMsg.FormsId = keepFormsId)"
>
取 消
</el-button>
<el-button
size=
"small"
@
click=
"choosebdDig = false"
type=
"primary"
>
确 定
</el-button>
</span>
</el-dialog>
<!--区域-->
<el-dialog
custom-class=
"regionDig"
title=
"区域"
:visible
.
sync=
"dialogFormVisible"
width=
"950px"
>
<region
_Choice
@
event1=
"change($event)"
:List=
"AreaList"
ref=
"child"
></region
_Choice
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"Addto"
>
确 定
</el-button>
</div>
</el-dialog>
<!-- 选择教师 -->
<el-dialog
title=
"选择教师"
top=
"2%"
:visible
.
sync=
"choosejsDig"
width=
"30%"
>
<div>
<el-checkbox-group
v-model=
"ckedTeacher"
>
<el-checkbox
v-for=
"(item,index) in teacherList"
:label=
"item.ID"
:key=
"index"
>
<div
class=
"teacherHead"
>
<img
:src=
"item.TeacherLogo"
alt=
""
/>
</div>
{{item.Name}}
</el-checkbox>
</el-checkbox-group>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"choosejsDig = false"
>
取 消
</el-button>
<el-button
size=
"small"
@
click=
"getckedTeachArr"
type=
"primary"
>
确 定
</el-button>
</span>
</el-dialog>
<!-- 课程弹窗 -->
<el-dialog
:title=
"commonTitle"
:visible
.
sync=
"courseDialog"
width=
"500px"
>
<el-form
label-width=
"100px"
>
<el-form-item
label=
"名称"
>
<el-input
v-model=
"courseMsg.Name"
size=
"small"
></el-input>
</el-form-item>
<el-form-item
label=
"类型"
>
<el-select
style=
"margin-right: 10px;"
v-model=
"courseMsg.Type"
@
change=
"resetPath"
size=
"small"
placeholder=
"请选择"
>
<el-option
v-for=
"item in fileList"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"试看"
size=
"small"
>
<el-switch
v-model=
"courseMsg.IsTrySee"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"2"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"试看"
>
<el-input
v-model=
"courseMsg.Number"
@
keyup
.
native=
"checkInteger(courseMsg,'Number')"
size=
"small"
>
<
template
slot=
"append"
>
<span
v-if=
"courseMsg.Type==1"
>
秒
</span>
<span
v-else
>
页
</span>
</
template
>
</el-input>
<div
style=
"color:red;"
>
设置为0表示不限制试看
</div>
</el-form-item>
<el-form-item
label=
"缓存"
>
<el-switch
v-model=
"courseMsg.IsCache"
active-color=
"#409EFF"
:active-value=
"1"
:inactive-value=
"2"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"附件路径"
>
<el-input
v-model=
"courseMsg.FilePath"
size=
"small"
placeholder=
"请输入内容"
>
<
template
v-if=
"courseMsg.Type==1"
>
<el-button
@
click=
"changeState1 = true,videoType=2"
slot=
"append"
>
添加视频
</el-button>
</
template
>
<
template
v-else
>
<el-button
@
click=
"fileDialog = true"
slot=
"append"
>
<span
v-if=
"courseMsg.Type==2"
>
添加WORD
</span>
<span
v-if=
"courseMsg.Type==3"
>
添加PDF
</span>
<span
v-if=
"courseMsg.Type==4"
>
添加PPT
</span>
</el-button>
</
template
>
</el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"courseDialog = false"
>
取 消
</el-button>
<el-button
size=
"small"
@
click=
"getCourseList"
v-if=
"isShowEditBtn"
type=
"primary"
>
确 定
</el-button>
<el-button
size=
"small"
@
click=
"resetCourse"
v-else
type=
"primary"
>
确 定
</el-button>
</span>
</el-dialog>
<a
id=
'groupTourOrder_DownLoad'
target=
"_blank"
style=
"display:none"
>
1不要删除
</a>
<div
class=
"videoDiv"
v-show=
"videoDivState"
>
<div
style=
"text-align:right;padding-right:15px;cursor:pointer"
>
<span
@
click=
"Setvideo"
style=
"font-size:30px;color:#fff"
class=
"iconfont icon-weibiaoti4"
></span>
</div>
<video
ref=
"myVideo"
autoplay=
"autoplay"
width=
"100%"
height=
"90%"
:src=
"thisVideoAddress"
controls=
"controls"
>
<source
:src=
"thisVideoAddress"
type=
"video/mp4"
>
<source
:src=
"thisVideoAddress"
type=
"video/ogg"
>
</video>
</div>
<el-image-viewer
v-if=
"showViewer"
:on-close=
"closeViewer"
:url-list=
"images"
/>
</div>
</template>
<
script
>
import
ChooseImg
from
"@/components/global/ChooseImg.vue"
;
import
Choosevideo
from
"@/components/global/Choosevideo.vue"
;
import
ChooseFile
from
"@/components/global/ChooseFile.vue"
;
import
region_Choice
from
"@/components/setup/view/regionChoice"
;
import
UE
from
"@/components/global/UE.vue"
;
import
draggable
from
"vuedraggable"
import
ElImageViewer
from
'element-ui/packages/image/src/image-viewer'
export
default
{
components
:
{
ChooseImg
,
Choosevideo
,
ChooseFile
,
region_Choice
,
UE
,
draggable
,
ElImageViewer
},
data
()
{
return
{
ComTreeList
:
[],
thisType
:
0
,
tableData
:
[],
SpecificationList
:
[],
SpecificationPriceList
:
[],
speciDigActive
:
-
1
,
newSpecificationValueList
:
[],
SpecificationValueList
:
[],
speciList
:
[],
choosebdDig
:
false
,
val2
:
""
,
defaultMsg
:
""
,
config
:
{
initialFrameWidth
:
null
,
initialFrameHeight
:
350
},
changeState1
:
false
,
changeState
:
false
,
imgDig
:
false
,
activeName
:
"first"
,
flDig
:
false
,
addMsg
:
{
Id
:
0
,
GoodsPageType
:
1
,
//上架版面
CategoryList
:
[],
//分类列表
Name
:
""
,
//商品名称
CarouselImageList
:
[],
//轮播图
VideoAddress
:
""
,
//视频地址
CustomShareTitles
:
""
,
// 分享标题
CustomShareImage
:
""
,
//分享图片
GoodsStatus
:
0
,
//商品状态 1销售中 2下架
IsLiveGoods
:
2
,
//是否直播商品 1是 2否
Sort
:
0
,
//排序
SellingPrice
:
0
,
//销售价格
OriginalPrice
:
0
,
//原价
CostPrice
:
0
,
//成本价格
IsAreaBuy
:
2
,
//是否区域购买 1是 2否
IntegralPresent
:
0
,
//积分赠送
IntegralPresentType
:
2
,
//积分赠送类型
PointsDeduction
:
0
,
//积分抵扣
PointsDeductionType
:
2
,
//积分抵扣类型
IsMultipleDeduction
:
2
,
//是否可以多件累计抵扣 1是 2否
GoodsDetails
:
""
,
//商品描述
SeparateDistribution
:
2
,
//分销
SeparateDistributionType
:
1
,
SeparateDistributionMoneyType
:
2
,
//默认显示固定金额
EnjoyMember
:
1
,
//会员价
SeparateSetMember
:
0
,
SupplierId
:
''
,
//供应商id
Commission
:
0
,
// 返佣总金额 (粉象模式开启 才显示)
AreaList
:
[],
//区域列表
DistributionCommissionList
:
[],
//分销佣金
DistributionCommissionTreeList
:
[],
MemberPriceList
:
[],
//会员价格
Advertising
:
''
,
//广告词
SubName
:
''
,
//副标题
MarketingLogo
:
{
//图标
iswords
:
0
,
words
:
""
,
wordsColor
:
""
,
wordsBack
:
""
,
ico
:
""
},
MemberPriceTreeList
:
[],
TeacherList
:
[],
//教师
CourseList
:
[],
//课程
SalesNum
:
0
,
//已售数量
CourseLableList
:[]
//标签
},
predefineColors
:
[
'#000000'
,
'#FFFFFF'
,
'#888888'
,
'#FF4544'
,
],
SupplierId
:
''
,
fenleiData
:
[],
checkList
:
[],
childList2
:
[],
childList3
:
[],
keepCategoryList
:
[],
rules
:
{
CategoryIdNew
:
[{
required
:
true
,
message
:
"分类不能为空"
,
trigger
:
"change"
}],
Name
:
[{
required
:
true
,
message
:
"请输入商品名称"
,
trigger
:
"blur"
}],
SellingPrice
:
[{
required
:
true
,
message
:
"请输入商品售价"
,
trigger
:
"blur"
}],
OriginalPrice
:
[{
required
:
true
,
message
:
"请输入原价"
,
trigger
:
"blur"
}],
Commission
:
[{
required
:
true
,
message
:
"返佣总金额"
,
trigger
:
"blur"
}],
CarNumber
:
[{
required
:
true
,
message
:
"请输入车牌号"
,
trigger
:
"blur"
}],
UseDay
:
[{
required
:
true
,
message
:
"请输入使用天数"
,
trigger
:
"blur"
}],
RideNum
:
[{
required
:
true
,
message
:
"请输入乘坐人数"
,
trigger
:
"blur"
}],
AdvanceDay
:
[{
required
:
true
,
message
:
"请输入提前预定天数"
,
trigger
:
"blur"
}],
LineName
:
[{
required
:
true
,
message
:
"请输入线路名称"
,
trigger
:
"blur"
}]
},
imgType
:
1
,
ruleList
:
[],
val
:
{},
val1
:
{},
AreaList
:
[],
skuList
:
[],
GoodsId
:
""
,
butorInt
:
0
,
butorIntList
:
[],
DropdownList
:
[],
DistributionCommissionTreeList
:
[],
disList1
:
[{
SpecificationSort
:
""
,
GradeCommissionList
:
[]
}],
disList2
:
[],
GradeCommissionList
:
[],
ggpl
:
""
,
ggplList
:
[],
valpl
:
""
,
pusetVal
:
""
,
pusetList
:
[],
ptinput
:
""
,
fxVal
:
""
,
gradeVal
:
""
,
xxList
:
[],
huiyList
:
[],
memberList1
:
[{
Id
:
0
,
SpecificationSort
:
""
,
GradePriceList
:
[]
}],
memberList2
:
[],
memberinput
:
""
,
memberVal
:
""
,
memberCheck
:
[],
imgListIndex1
:
0
,
imgListIndex2
:
0
,
NewCategoryList
:
[],
hpState
:
0
,
FxState
:
0
,
SuggestPriceInfo
:
{},
shareSettings
:
[],
companyCommission
:
0
,
options
:
[],
giveDate
:
false
,
My_cateList
:
[],
dialogFormVisible
:
false
,
choosejsDig
:
false
,
// 选择教师弹窗
teacherList
:
[],
//教师下拉数据
ckedTeacher
:
[],
//选中教师数组
courseDialog
:
false
,
courseMsg
:
{
Id
:
0
,
Sort
:
1
,
SortName
:
''
,
//章节排序名称
Name
:
''
,
//名称
Type
:
1
,
//类型
IsTrySee
:
2
,
//试看 1可以 2不可以
Number
:
1
,
//试看 视频秒/word pdf页
IsCache
:
2
,
//缓存 1可以 2不可以
FilePath
:
''
,
//附件路径
PathType
:
1
,
//文件存储类型 1腾讯云 2阿里云
VideoImage
:
''
,
//视频图片地址
VideoTime
:
''
,
//视频时长
},
fileList
:
[],
//附件枚举
videoType
:
1
,
fileDialog
:
false
,
//选择文件弹窗
isReplace
:
0
,
//是否替换
videoDivState
:
false
,
//视频预览
thisVideoAddress
:
""
,
isShowEditBtn
:
true
,
showViewer
:
false
,
images
:
[],
dynamicTags
:
[],
inputVisible
:
false
,
inputValue
:
''
,
commonTitle
:
'新增课程'
,
};
},
created
()
{
if
(
this
.
$route
.
query
.
hpState
)
{
this
.
hpState
=
this
.
$route
.
query
.
hpState
;
}
if
(
this
.
$route
.
query
.
FxState
)
{
this
.
FxState
=
this
.
$route
.
query
.
FxState
;
}
this
.
gethuiyList
();
this
.
getRule
();
this
.
getSpeciList
();
this
.
getDistributor
();
this
.
getSupplierList
()
this
.
getCateList
();
this
.
getTeacherList
();
this
.
getFileList
();
},
mounted
()
{
this
.
$refs
.
ue
.
loadUe
();
if
(
this
.
$route
.
query
.
GoodsId
)
{
this
.
GoodsId
=
this
.
$route
.
query
.
GoodsId
;
this
.
getData
();
}
else
{
this
.
getTree
();
}
},
methods
:
{
//关闭标签
handleClose
(
tag
)
{
this
.
dynamicTags
.
splice
(
this
.
dynamicTags
.
indexOf
(
tag
),
1
);
},
handleInputConfirm
()
{
let
inputValue
=
this
.
inputValue
;
if
(
inputValue
)
{
this
.
dynamicTags
.
push
(
inputValue
);
}
this
.
inputVisible
=
false
;
this
.
inputValue
=
''
;
},
showInput
()
{
this
.
inputVisible
=
true
;
this
.
$nextTick
(
_
=>
{
this
.
$refs
.
saveTagInput
.
$refs
.
input
.
focus
();
});
},
//预览
getImgView
(
item
)
{
this
.
images
=
[];
item
.
ImageList
.
forEach
(
x
=>
{
if
(
x
.
Path
.
indexOf
(
'http'
)
>
-
1
)
{
x
.
Path
=
x
.
Path
.
replace
(
'http:/'
,
'http://'
)
this
.
images
.
push
(
x
.
Path
);
}
if
(
x
.
Path
.
indexOf
(
'https'
)
>
-
1
)
{
x
.
Path
=
x
.
Path
.
replace
(
'https:/'
,
'https://'
)
this
.
images
.
push
(
x
.
Path
);
}
})
this
.
showViewer
=
true
;
},
closeViewer
()
{
this
.
showViewer
=
false
;
},
initShareSettings
()
{
let
arr
=
[];
this
.
addMsg
.
CategoryList
.
forEach
(
item
=>
{
item
.
Name
=
item
.
CategoryName
;
arr
.
push
(
item
.
CategoryId
);
});
let
CategoryIds
=
arr
.
join
(
","
);
this
.
apipost
(
"/api/user/GetHpDistributorGoodsInfo"
,
{
CategoryIds
:
CategoryIds
,
CostPrice
:
"10"
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
shareSettings
=
res
.
data
.
data
.
RatioList
||
[]
this
.
calcCommission
(
0
)
}
}
);
},
calcCommission
(
t
)
{
if
(
t
==
0
)
{
let
maxratio
=
0
let
minratio
=
100
if
(
this
.
shareSettings
.
length
>
0
)
{
this
.
shareSettings
.
forEach
(
x
=>
{
if
(
x
.
CommissionRatio
>
maxratio
)
{
maxratio
=
x
.
CommissionRatio
}
})
}
if
(
this
.
shareSettings
.
length
>
0
)
{
this
.
shareSettings
.
forEach
(
x
=>
{
x
.
cb
=
parseFloat
(
this
.
addMsg
.
CostPrice
)
/
(
1.00
-
(
parseFloat
(
x
.
CommissionRatio
)
/
100.00
))
x
.
commission
=
(
this
.
addMsg
.
SellingPrice
-
x
.
cb
).
toFixed
(
2
)
x
.
cb
=
x
.
cb
.
toFixed
(
2
)
if
(
x
.
CommissionRatio
<
minratio
)
{
this
.
companyCommission
=
(
this
.
addMsg
.
SellingPrice
-
(
parseFloat
(
x
.
commission
)
+
parseFloat
(
this
.
addMsg
.
CostPrice
))).
toFixed
(
2
)
minratio
=
x
.
CommissionRatio
}
})
}
}
},
HpChange
()
{
if
(
this
.
FxState
==
1
)
{
this
.
Error
(
"已开启粉象分销,请在粉象分销里面配置!"
);
this
.
addMsg
.
SeparateDistribution
=
0
;
}
else
if
(
this
.
hpState
==
1
)
{
this
.
Error
(
"已开启和平分销,请在和平分销里面配置!"
);
this
.
addMsg
.
SeparateDistribution
=
0
;
}
},
//
HySet
()
{
this
.
memberList2
.
forEach
(
item
=>
{
this
.
memberCheck
.
forEach
(
check
=>
{
if
(
item
.
Id
==
check
.
Id
)
{
item
.
GradePriceList
.
forEach
(
list1
=>
{
if
(
list1
.
MemberGrade
==
this
.
memberVal
)
{
list1
.
MemberPrice
=
this
.
memberinput
;
}
});
}
});
});
},
TbaleSelectionChange4
(
val
)
{
this
.
memberCheck
=
val
;
},
gethuiyList
()
{
let
msg
=
{
Grade
:
0
,
Name
:
""
,
Enabled
:
1
};
this
.
apipost
(
"/api/user/GetMemberGradeList"
,
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
let
pageData
=
res
.
data
.
data
;
this
.
huiyList
=
pageData
;
this
.
huiyList
.
forEach
(
item
=>
{
let
obj
=
{
Name
:
item
.
Name
,
MemberGrade
:
item
.
Grade
,
MemberPrice
:
0
};
this
.
memberList1
[
0
].
GradePriceList
.
push
(
obj
);
});
}
});
},
TbaleSelectionChange3
(
val
)
{
this
.
xxList
=
val
;
},
PuSet
()
{
this
.
GradeCommissionList
.
forEach
(
item
=>
{
this
.
pusetList
.
forEach
(
list
=>
{
if
(
item
.
DistributorGrade
==
list
.
DistributorGrade
)
{
if
(
this
.
pusetVal
==
1
)
{
item
.
OneCommission
=
this
.
ptinput
;
}
if
(
this
.
pusetVal
==
2
)
{
item
.
TwoCommission
=
this
.
ptinput
;
}
if
(
this
.
pusetVal
==
3
)
{
item
.
ThreeCommission
=
this
.
ptinput
;
}
}
});
});
},
TbaleSelectionChange2
(
val
)
{
this
.
pusetList
=
val
;
},
Save
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
valid
=>
{
if
(
valid
)
{
let
content
=
this
.
$refs
.
ue
.
getUEContent
();
this
.
addMsg
.
GoodsDetails
=
content
;
if
(
this
.
addMsg
.
CategoryList
.
length
==
0
)
{
this
.
Error
(
'请选择商品分类'
);
return
false
}
if
(
this
.
addMsg
.
SeparateDistributionType
==
1
)
{
this
.
disList1
=
[{
SpecificationSort
:
""
,
GradeCommissionList
:
this
.
GradeCommissionList
}],
this
.
addMsg
.
DistributionCommissionList
=
this
.
disList1
;
}
if
(
this
.
addMsg
.
SeparateSetMember
==
1
)
{
this
.
addMsg
.
MemberPriceList
=
this
.
memberList1
;
this
.
addMsg
.
MemberPriceTreeList
=
this
.
memberList1
;
}
let
mall_userInfo
=
JSON
.
parse
(
localStorage
.
mall_userInfo
)
if
(
mall_userInfo
.
TenantId
==
1
&&
mall_userInfo
.
MallBaseId
==
1
&&
this
.
SupplierId
==
''
)
{
this
.
Error
(
"请选择供应商!"
);
return
}
else
{
this
.
addMsg
.
SupplierId
=
this
.
SupplierId
!=
''
?
this
.
SupplierId
:
0
;
}
if
(
this
.
addMsg
.
PresentFXGrade
==
''
)
{
//没选择的时候默认为0
this
.
addMsg
.
PresentFXGrade
=
0
}
this
.
addMsg
.
CourseLableList
=
this
.
dynamicTags
//标签的判断和处理
if
(
this
.
addMsg
.
MarketingLogo
.
iswords
==
0
)
{
this
.
addMsg
.
MarketingLogo
=
{
iswords
:
0
,
words
:
""
,
wordsColor
:
""
,
wordsBack
:
""
,
ico
:
""
}
}
else
if
(
this
.
addMsg
.
MarketingLogo
.
iswords
==
1
)
{
this
.
addMsg
.
MarketingLogo
.
ico
=
''
}
else
if
(
this
.
addMsg
.
MarketingLogo
.
iswords
==
2
)
{
this
.
addMsg
.
MarketingLogo
.
words
=
''
;
this
.
addMsg
.
MarketingLogo
.
wordsColor
=
''
;
this
.
addMsg
.
MarketingLogo
.
wordsBack
=
''
;
}
this
.
addMsg
.
MarketingLogo
=
JSON
.
stringify
(
this
.
addMsg
.
MarketingLogo
)
this
.
apipost
(
"/api/Education/SetGoodsInfo"
,
this
.
addMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
CommonJump
(
"CourseManagement"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
});
}
else
{
return
false
;
}
});
},
getSpeciList
()
{
let
msg
=
{
pageIndex
:
1
,
pageSize
:
999
,
Name
:
""
,
Id
:
0
,
Content
:
""
};
this
.
apipost
(
"/api/product/GetProductSpecificationPageList"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
pageData
=
res
.
data
.
data
.
pageData
;
this
.
speciList
=
pageData
;
this
.
speciList
.
forEach
(
item
=>
{
item
.
NewSpecList
=
[];
item
.
checkAll
=
false
;
item
.
SpecList
.
forEach
(
val
=>
{
let
obj
=
{
Id
:
item
.
Id
,
Name
:
val
};
item
.
NewSpecList
.
push
(
obj
);
});
});
}
});
},
editQy
()
{
this
.
dialogFormVisible
=
true
;
setTimeout
(()
=>
{
this
.
$refs
.
child
.
Receive
(
this
.
AreaList
);
},
1000
);
},
Addto
()
{
this
.
addMsg
.
AreaList
=
[];
this
.
AreaList
.
forEach
(
item
=>
{
let
obj
=
{
Id
:
item
.
RegionId
,
AreaId
:
item
.
RegionId
,
AreaName
:
item
.
RegionName
};
this
.
addMsg
.
AreaList
.
push
(
obj
);
});
this
.
dialogFormVisible
=
false
;
},
addOf
()
{
this
.
dialogFormVisible
=
true
;
this
.
AreaList
=
[];
this
.
addMsg
.
AreaList
=
[];
setTimeout
(()
=>
{
this
.
$refs
.
child
.
Receive
(
this
.
AreaList
);
},
1000
);
},
change
(
data
)
{
this
.
AreaList
=
data
;
},
YfSelect1
(
val
)
{
this
.
addMsg
.
FormsId
=
val
.
Id
;
this
.
addMsg
.
FormsName
=
val
.
Name
;
},
clearCustom
()
{
this
.
addMsg
.
CustomShareImage
=
""
;
},
Selectvideo
(
val
)
{
if
(
this
.
videoType
==
1
)
{
this
.
addMsg
.
VideoAddress
=
val
.
Path
;
}
else
{
this
.
courseMsg
.
PathType
=
val
.
PathType
;
this
.
courseMsg
.
FilePath
=
val
.
Path
;
this
.
courseMsg
.
VideoImage
=
val
.
Image
;
this
.
courseMsg
.
VideoTime
=
val
.
VideoTime
;
}
this
.
changeState1
=
false
;
},
//选择文件
SelectFile
(
msg
)
{
var
type
=
msg
.
name
.
split
(
'.'
)[
1
];
if
(
this
.
courseMsg
.
Type
==
2
)
{
if
(
type
!=
'doc'
&&
type
!=
'docx'
)
{
this
.
Error
(
'请选择word文件'
);
}
else
{
this
.
courseMsg
.
FilePath
=
msg
.
url
;
this
.
courseMsg
.
PathType
=
msg
.
PathType
;
}
}
if
(
this
.
courseMsg
.
Type
==
3
)
{
if
(
type
!=
'pdf'
)
{
this
.
Error
(
'请选择pdf文件'
);
}
else
{
this
.
courseMsg
.
FilePath
=
msg
.
url
;
this
.
courseMsg
.
PathType
=
msg
.
PathType
;
}
}
if
(
this
.
courseMsg
.
Type
==
4
)
{
if
(
type
!=
'ppt'
&&
type
!=
'pptx'
)
{
this
.
Error
(
'请选择ppt文件'
);
}
else
{
this
.
courseMsg
.
FilePath
=
msg
.
url
;
this
.
courseMsg
.
PathType
=
msg
.
PathType
;
}
}
this
.
fileDialog
=
false
;
},
ClearCarouse
(
index
)
{
this
.
addMsg
.
CarouselImageList
.
splice
(
index
,
1
);
},
openggImg
(
item
,
index
,
item2
,
index2
)
{
this
.
changeState
=
true
;
this
.
imgType
=
3
;
this
.
imgListIndex1
=
index
;
this
.
imgListIndex2
=
index2
;
},
openChangeDig
(
val
)
{
this
.
changeState
=
true
;
this
.
imgType
=
val
;
},
//选择图片
SelectId
(
msg
)
{
let
that
=
this
;
if
(
msg
)
{
if
(
this
.
imgType
==
1
)
{
let
obj
=
{
Id
:
msg
.
selectId
,
Path
:
that
.
getIconLink
(
msg
.
url
),
};
this
.
addMsg
.
CarouselImageList
.
push
(
obj
);
}
if
(
this
.
imgType
==
2
)
{
this
.
addMsg
.
CustomShareImage
=
that
.
getIconLink
(
msg
.
url
);
}
if
(
this
.
imgType
==
3
)
{
let
imgListIndex1
=
this
.
imgListIndex1
;
let
imgListIndex2
=
this
.
imgListIndex2
;
this
.
SpecificationList
[
imgListIndex1
].
SpecificationValueList
[
imgListIndex2
].
Image
=
that
.
getIconLink
(
msg
.
url
);
}
if
(
this
.
imgType
==
4
)
{
that
.
addMsg
.
MarketingLogo
.
ico
=
that
.
getIconLink
(
msg
.
url
)
}
}
this
.
changeState
=
false
;
},
getChild3
(
ChildList
)
{
this
.
childList3
=
ChildList
;
},
getChild2
(
ChildList
)
{
this
.
childList2
=
ChildList
;
},
ExitCateList
()
{
this
.
NewCategoryList
=
[];
this
.
addMsg
.
CategoryList
.
forEach
(
item
=>
{
item
.
Name
=
item
.
CategoryName
;
this
.
NewCategoryList
.
push
(
item
.
CategoryId
);
});
},
handleCheckChange
()
{
this
.
addMsg
.
CategoryList
=
[];
this
.
NewCategoryList
.
forEach
(
list
=>
{
this
.
fenleiData
.
forEach
(
item
=>
{
if
(
list
==
item
.
Id
)
{
item
.
CategoryId
=
item
.
Id
;
this
.
addMsg
.
CategoryList
.
push
(
item
);
}
item
.
ChildList
.
forEach
(
item2
=>
{
if
(
list
==
item2
.
Id
)
{
item2
.
CategoryId
=
item2
.
Id
;
this
.
addMsg
.
CategoryList
.
push
(
item2
);
}
item2
.
ChildList
.
forEach
(
item3
=>
{
if
(
list
==
item3
.
Id
)
{
item3
.
CategoryId
=
item3
.
Id
;
this
.
addMsg
.
CategoryList
.
push
(
item3
);
}
});
});
});
});
},
exitCheck
(
item
,
index
)
{
this
.
addMsg
.
CategoryList
.
forEach
((
list
,
k
)
=>
{
if
(
list
.
Id
==
item
.
Id
)
{
this
.
addMsg
.
CategoryList
.
splice
(
k
,
1
);
}
});
this
.
ExitCateList
();
this
.
getSuggestPrice
();
},
getTree
()
{
let
msg1
=
{
Id
:
0
,
Name
:
""
,
Tier
:
0
,
ParentId
:
0
,
Enabled
:
1
,
IsShow
:
0
,
CategoryPageType
:
this
.
addMsg
.
GoodsPageType
};
this
.
apipost
(
"/api/product/GetProductCategoryTreeList"
,
msg1
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
pageData
=
res
.
data
.
data
;
this
.
fenleiData
=
pageData
;
this
.
fenleiData
.
forEach
(
item
=>
{
item
.
CategoryName
=
item
.
Name
;
item
.
ChildList
.
forEach
(
item2
=>
{
item2
.
CategoryName
=
item2
.
Name
;
item2
.
ChildList
.
forEach
(
item3
=>
{
item3
.
CategoryName
=
item3
.
Name
;
});
});
});
}
});
},
getcode
()
{
//编码获取详情
this
.
GoodsId
=
this
.
addMsg
.
Id
;
this
.
getData
()
},
getData
()
{
this
.
apipost
(
"/api/Education/GetGoodsInfo"
,
{
GoodsId
:
this
.
GoodsId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
addMsg
=
res
.
data
.
data
;
if
(
this
.
addMsg
.
SupplierId
!=
0
)
{
this
.
SupplierId
=
this
.
addMsg
.
SupplierId
;
}
if
(
!
this
.
$route
.
query
.
GoodsId
)
{
this
.
addMsg
.
Id
=
0
}
this
.
initShareSettings
();
this
.
ComTreeList
=
this
.
addMsg
.
DistributionCommissionTreeList
;
if
(
this
.
addMsg
.
SeparateDistributionType
==
1
)
{
this
.
disList1
=
this
.
addMsg
.
DistributionCommissionTreeList
;
if
(
this
.
addMsg
.
DistributionCommissionTreeList
.
length
>
0
)
{
this
.
GradeCommissionList
=
this
.
addMsg
.
DistributionCommissionTreeList
[
0
].
GradeCommissionList
;
}
}
if
(
this
.
addMsg
.
MemberPriceTreeList
.
length
>
0
)
{
this
.
memberList1
=
this
.
addMsg
.
MemberPriceTreeList
;
}
this
.
thisType
=
1
;
this
.
disList1
=
[];
let
objNew
=
{
SpecificationSort
:
""
,
GradeCommissionList
:
this
.
GradeCommissionList
};
this
.
disList1
.
push
(
objNew
);
if
(
this
.
addMsg
.
GoodsDetails
&&
this
.
addMsg
.
GoodsDetails
!=
""
)
{
this
.
defaultMsg
=
this
.
addMsg
.
GoodsDetails
;
}
this
.
NewCategoryList
=
[];
this
.
addMsg
.
CategoryList
.
forEach
(
item
=>
{
item
.
Name
=
item
.
CategoryName
;
this
.
NewCategoryList
.
push
(
item
.
CategoryId
);
});
if
(
this
.
hpState
==
1
)
{
this
.
addMsg
.
SeparateDistribution
=
0
;
}
if
(
this
.
addMsg
.
PresentFXGrade
==
0
)
{
this
.
addMsg
.
PresentFXGrade
=
''
}
if
(
this
.
addMsg
.
CourseLableList
&&
this
.
addMsg
.
CourseLableList
.
length
>
0
){
this
.
dynamicTags
=
this
.
addMsg
.
CourseLableList
}
if
(
this
.
addMsg
.
TeacherList
.
length
>
0
)
{
this
.
addMsg
.
TeacherList
.
forEach
(
x
=>
{
this
.
ckedTeacher
.
push
(
x
.
TeacherId
);
})
}
if
(
!
this
.
addMsg
.
MarketingLogo
||
this
.
addMsg
.
MarketingLogo
==
null
)
{
this
.
addMsg
.
MarketingLogo
=
{
iswords
:
0
,
words
:
""
,
wordsColor
:
""
,
wordsBack
:
""
,
ico
:
""
}
}
else
{
// var tempObj = this.addMsg.MarketingLogo.substring(1, this.addMsg.MarketingLogo.length-1);
// var reg=/\\|\//g;
// var cc = "'"+tempObj.replace(reg,"")+"'";
// var bb = eval("("+cc+")");
// var kk = JSON.parse(bb);
// this.addMsg.MarketingLogo=kk;
this
.
addMsg
.
MarketingLogo
=
JSON
.
parse
(
this
.
addMsg
.
MarketingLogo
);
}
this
.
getSuggestPrice
();
this
.
getFXDGradeList2
();
this
.
getTree
();
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
}
);
},
getSuggestPrice
()
{
//获取和平分销商品建议价格
if
(
this
.
hpState
==
1
&&
Number
(
this
.
addMsg
.
CostPrice
)
>
0
)
{
let
arr
=
[];
this
.
addMsg
.
CategoryList
.
forEach
(
item
=>
{
item
.
Name
=
item
.
CategoryName
;
arr
.
push
(
item
.
CategoryId
);
});
let
CategoryIds
=
arr
.
join
(
","
);
let
msg
=
{
CategoryIds
:
CategoryIds
,
CostPrice
:
this
.
addMsg
.
CostPrice
};
this
.
apipost
(
"/api/user/GetHpGoodsSuggestPrice"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
SuggestPriceInfo
=
res
.
data
.
data
;
}
});
}
},
getRule
()
{
let
msg1
=
{
pageIndex
:
1
,
pageSize
:
999
,
RulesName
:
""
};
this
.
apipost
(
"/api/MallBase/GetLogisticsRulesPage"
,
msg1
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
pageData
=
res
.
data
.
data
.
pageData
;
this
.
ruleList
=
pageData
;
}
});
},
getDistributor
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/user/GetDistributorBasicsInfo"
,
{},
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
butorInt
=
res
.
data
.
data
.
DistributorTier
;
this
.
butorIntList
=
[];
for
(
let
i
=
0
;
i
<
res
.
data
.
data
.
DistributorTier
;
i
++
)
{
let
msg
=
{
Name
:
i
+
1
+
"级分销"
};
this
.
butorIntList
.
push
(
msg
);
}
this
.
GetDropdownList
();
}
});
},
GetDropdownList
()
{
let
msg
=
{
Id
:
0
,
Grade
:
0
,
Name
:
""
,
Enabled
:
1
};
this
.
apipost
(
"/api/user/GetDistributorGradeDropdownList"
,
msg
,
res
=>
{
this
.
DropdownList
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
.
data
));
let
msg
=
{
Grade
:
0
,
GradeCommissionList
:
[],
Name
:
"默认等级"
,
SpecificationSort
:
""
,
Id
:
0
};
this
.
DropdownList
.
unshift
(
msg
);
this
.
disList1
.
GradeCommissionList
=
[];
this
.
disList1
.
SpecificationSort
=
""
;
this
.
DropdownList
.
forEach
(
item
=>
{
item
.
GradeCommissionList
=
[];
item
.
SpecificationSort
=
""
;
for
(
let
i
=
0
;
i
<
this
.
butorInt
;
i
++
)
{
let
obj
=
{
DistributorGrade
:
item
.
Id
,
OneCommission
:
0
,
TwoCommission
:
0
,
ThreeCommission
:
0
};
item
.
GradeCommissionList
.
push
(
obj
);
}
});
this
.
DropdownList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
DropdownList
));
if
(
!
this
.
$route
.
query
.
GoodsId
||
(
this
.
addMsg
.
DistributionCommissionTreeList
&&
this
.
addMsg
.
DistributionCommissionTreeList
.
length
==
0
)
||
this
.
thisType
==
1
)
{
this
.
GradeCommissionList
=
[];
this
.
DropdownList
.
forEach
(
item
=>
{
let
obj2
=
{
DistributorGrade
:
item
.
Id
,
OneCommission
:
0
,
TwoCommission
:
0
,
ThreeCommission
:
0
,
Name
:
item
.
Name
};
this
.
GradeCommissionList
.
push
(
obj2
);
});
this
.
GradeCommissionList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
GradeCommissionList
)
);
this
.
disList2
=
[];
if
(
this
.
$route
.
query
.
GoodsId
)
{
if
(
this
.
addMsg
.
SeparateDistributionType
==
1
)
{
this
.
disList1
=
this
.
addMsg
.
DistributionCommissionTreeList
;
if
(
this
.
addMsg
.
DistributionCommissionTreeList
.
length
>
0
)
{
this
.
GradeCommissionList
=
this
.
addMsg
.
DistributionCommissionTreeList
[
0
].
GradeCommissionList
;
}
}
}
else
{
this
.
disList1
=
[];
let
objNew
=
{
SpecificationSort
:
""
,
GradeCommissionList
:
this
.
GradeCommissionList
};
this
.
disList1
.
push
(
objNew
);
}
this
.
skuList
=
[];
}
});
},
getSupplierList
()
{
this
.
apipost
(
"/api/Supplier/GetSupplierAllList"
,
{},
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
options
=
res
.
data
.
data
;
}
});
},
getFXDGradeList2
()
{
//获取粉象等级下拉列表
this
.
apipost
(
"/api/user/GetFXDistributorGradeList"
,
{
GradeName
:
''
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
res
.
data
.
data
!=
null
)
{
res
.
data
.
data
.
forEach
(
x
=>
{
if
(
x
.
Id
==
this
.
addMsg
.
PresentFXGrade
)
{
if
(
x
.
IsGuest
==
3
)
{
this
.
giveDate
=
true
;
}
else
{
this
.
giveDate
=
false
;
this
.
addMsg
.
PresentFXMonth
=
0
;
}
}
})
}
}
});
},
//获取上架版面下拉
getCateList
()
{
this
.
apipost
(
"/api/Product/GoodsPageTypeEnumList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
My_cateList
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
});
},
//选择上架版面
getGoodType
(
num
)
{
if
(
num
!=
0
)
{
this
.
addMsg
.
CategoryList
=
[];
}
this
.
getTree
()
},
//获取教师下拉数据
getTeacherList
()
{
this
.
apipost
(
"/api/Education/GetTeacherList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
teacherList
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
});
},
getckedTeachArr
()
{
this
.
addMsg
.
TeacherList
=
[];
console
.
log
(
this
.
ckedTeacher
,
'this.ckedTeacher'
);
this
.
ckedTeacher
.
forEach
(
x
=>
{
this
.
teacherList
.
forEach
(
y
=>
{
if
(
x
==
y
.
ID
)
{
this
.
addMsg
.
TeacherList
.
push
({
TeacherId
:
y
.
ID
,
Name
:
y
.
Name
,
TeacherLogo
:
y
.
TeacherLogo
})
}
})
})
this
.
choosejsDig
=
false
;
},
//移除
yichuTeacher
(
index
)
{
this
.
ckedTeacher
=
[];
this
.
addMsg
.
TeacherList
.
splice
(
index
,
1
);
if
(
this
.
addMsg
.
TeacherList
.
length
>
0
)
{
this
.
addMsg
.
TeacherList
.
forEach
(
x
=>
{
this
.
ckedTeacher
.
push
(
x
.
TeacherId
);
})
}
},
//获取附件枚举
getFileList
()
{
this
.
apipost
(
"/api/Education/GetGoodsCourseTypeEnumList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
fileList
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
});
},
//点击确定追加课程
getCourseList
()
{
var
CouLength
=
this
.
addMsg
.
CourseList
.
length
;
this
.
courseMsg
.
Sort
=
CouLength
+
1
;
this
.
courseMsg
.
SortName
=
'第'
+
this
.
getNumParse
(
this
.
courseMsg
.
Sort
)
+
'章'
;
this
.
addMsg
.
CourseList
.
push
(
this
.
courseMsg
);
this
.
courseDialog
=
false
;
var
obj
=
{
Id
:
0
,
Sort
:
1
,
SortName
:
''
,
//章节排序名称
Name
:
''
,
//名称
Type
:
1
,
//类型
IsTrySee
:
1
,
//试看 1可以 2不可以
Number
:
1
,
//试看 视频秒/word pdf页
IsCache
:
1
,
//缓存 1可以 2不可以
FilePath
:
''
,
//附件路径
PathType
:
1
,
//文件存储
VideoImage
:
''
,
VideoTime
:
''
}
this
.
courseMsg
=
JSON
.
parse
(
JSON
.
stringify
(
obj
));
},
//数字转中文
getNumParse
(
num
)
{
let
changeNum
=
[
'零'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'七'
,
'八'
,
'九'
];
let
unit
=
[
""
,
"十"
,
"百"
,
"千"
,
"万"
];
num
=
parseInt
(
num
);
let
getWan
=
(
temp
)
=>
{
let
strArr
=
temp
.
toString
().
split
(
""
).
reverse
();
let
newNum
=
""
;
for
(
var
i
=
0
;
i
<
strArr
.
length
;
i
++
)
{
newNum
=
(
i
==
0
&&
strArr
[
i
]
==
0
?
""
:
(
i
>
0
&&
strArr
[
i
]
==
0
&&
strArr
[
i
-
1
]
==
0
?
""
:
changeNum
[
strArr
[
i
]]
+
(
strArr
[
i
]
==
0
?
unit
[
0
]
:
unit
[
i
])))
+
newNum
;
}
return
newNum
;
}
let
overWan
=
Math
.
floor
(
num
/
10000
);
let
noWan
=
num
%
10000
;
if
(
noWan
.
toString
().
length
<
4
)
{
noWan
=
"0"
+
noWan
;
}
return
overWan
?
getWan
(
overWan
)
+
"万"
+
getWan
(
noWan
)
:
getWan
(
num
);
},
//拖动完成
allow
(
evt
)
{
this
.
addMsg
.
CourseList
.
forEach
((
x
,
index
)
=>
{
x
.
Sort
=
index
+
1
;
x
.
SortName
=
'第'
+
this
.
getNumParse
(
x
.
Sort
)
+
'章'
;
})
this
.
$forceUpdate
();
},
//获取文件类型
getFileType
(
file
)
{
var
num
=
0
;
var
index
=
file
.
lastIndexOf
(
'.'
);
var
str
=
file
.
substring
(
index
+
1
,
file
.
length
);
if
(
str
==
'mp4'
||
str
==
'AVI'
||
str
==
'WMV'
)
{
num
=
1
;
}
if
(
str
==
'doc'
||
str
==
'docx'
)
{
num
=
2
;
}
if
(
str
==
'pdf'
)
{
num
=
3
;
}
if
(
str
==
'ppt'
)
{
num
=
4
;
}
return
num
;
},
//修改课件
updateCourse
(
subItem
,
index
)
{
this
.
commonTitle
=
'修改课程'
;
this
.
isReplace
=
index
;
this
.
courseDialog
=
true
;
this
.
courseMsg
.
Id
=
subItem
.
Id
;
this
.
courseMsg
.
Sort
=
subItem
.
Sort
;
this
.
courseMsg
.
SortName
=
subItem
.
SortName
;
this
.
courseMsg
.
Name
=
subItem
.
Name
;
this
.
courseMsg
.
Type
=
subItem
.
Type
;
this
.
courseMsg
.
IsTrySee
=
subItem
.
IsTrySee
;
this
.
courseMsg
.
Number
=
subItem
.
Number
;
this
.
courseMsg
.
IsCache
=
subItem
.
IsCache
;
this
.
courseMsg
.
FilePath
=
subItem
.
FilePath
;
this
.
courseMsg
.
PathType
=
subItem
.
PathType
;
this
.
courseMsg
.
VideoImage
=
subItem
.
VideoImage
;
this
.
courseMsg
.
VideoTime
=
subItem
.
VideoTime
;
},
//删除课件
deleteCourse
(
index
)
{
this
.
addMsg
.
CourseList
.
splice
(
index
,
1
);
this
.
allow
();
},
//修改课程
resetCourse
()
{
this
.
addMsg
.
CourseList
.
splice
(
this
.
isReplace
,
1
,
this
.
courseMsg
);
this
.
courseDialog
=
false
;
var
obj
=
{
Id
:
0
,
Sort
:
1
,
SortName
:
''
,
//章节排序名称
Name
:
''
,
//名称
Type
:
1
,
//类型
IsTrySee
:
1
,
//试看 1可以 2不可以
Number
:
1
,
//试看 视频秒/word pdf页
IsCache
:
1
,
//缓存 1可以 2不可以
FilePath
:
''
,
//附件路径
PathType
:
1
,
//文件存储
VideoImage
:
''
,
VideoTime
:
''
}
this
.
courseMsg
=
JSON
.
parse
(
JSON
.
stringify
(
obj
));
},
deleteUploadFile
(
i
)
{
// 删除上传文件
this
.
saveMsg
.
splice
(
i
,
1
);
},
showUpLoadFileT
(
Url
)
{
// 预览上传文件
if
(
Url
.
substring
(
Url
.
lastIndexOf
(
'.'
)
+
1
,
Url
.
length
).
toUpperCase
()
==
'PDF'
)
{
this
.
previewPDF
(
Url
)
}
else
{
// let dom = document.querySelector("#groupTourOrder_DownLoad");
// dom.href = Url;
// dom.click();
window
.
open
(
"https://view.officeapps.live.com/op/view.aspx?src="
+
Url
)
}
},
//预览视频
goUrlVideo
(
path
)
{
let
that
=
this
;
that
.
videoDivState
=
true
;
that
.
thisVideoAddress
=
path
;
let
myVideo
=
this
.
$refs
.
myVideo
;
myVideo
.
play
();
},
Setvideo
()
{
this
.
videoDivState
=
false
;
let
myVideo
=
this
.
$refs
.
myVideo
;
myVideo
.
pause
();
},
//重置
resetPath
()
{
this
.
courseMsg
.
FilePath
=
''
;
}
}
};
</
script
>
<
style
>
.app-attr-group
.close
{
position
:
absolute
;
top
:
-4px
;
right
:
-4px
;
font-size
:
16px
;
cursor
:
pointer
;
}
.directorGoodsEdit
.el-image
{
position
:
relative
;
display
:
inline-block
;
overflow
:
hidden
;
}
.directorGoodsEdit
.pendSelect
{
width
:
100px
;
}
.directorGoodsEdit
.el-table
th
>
.cell
{
padding-left
:
20px
!important
;
}
.directorGoodsEdit
.app-attr
.box
{
line-height
:
64px
;
border-top
:
1px
solid
#e8eaee
;
border-left
:
1px
solid
#e8eaee
;
border-right
:
1px
solid
#e8eaee
;
padding
:
0
16px
;
}
.speciDig
.tpl-scrollbar
.el-checkbox
{
display
:
flex
;
-webkit-align-items
:
center
;
align-items
:
center
;
padding
:
10px
0
;
}
.speciDig
.tpl-scrollbar
{
height
:
calc
(
440px
-
44px
-
10px
);
}
.speciDig
.tpl-box
.tpl-head
{
padding
:
0
20px
;
font-size
:
15px
;
color
:
#909399
;
margin-bottom
:
10px
;
line-height
:
44px
;
background
:
#f5f7fa
;
}
.speciDig
.tpl-box
{
width
:
300px
;
height
:
440px
;
}
.directorGoodsEdit
.app-attr-group
.attr-jt
{
background
:
#ffffff
;
width
:
6px
;
height
:
6px
;
border-top
:
1px
solid
rgb
(
235
,
238
,
245
);
border-right
:
1px
solid
#ebeef5
;
transform
:
rotate
(
-45deg
);
-o-transform
:
rotate
(
-45deg
);
-webkit-transform
:
rotate
(
-45deg
);
-moz-transform
:
rotate
(
-45deg
);
-ms-transform
:
rotate
(
-45deg
);
position
:
absolute
;
top
:
-5px
;
}
.directorGoodsEdit
.app-attr-group
.img-box
{
position
:
relative
;
height
:
100px
;
width
:
100px
;
margin-top
:
8px
;
border
:
1px
solid
#ebeef5
;
}
.directorGoodsEdit
.close
{
position
:
absolute
;
top
:
-4px
;
right
:
-4px
;
font-size
:
16px
;
cursor
:
pointer
;
}
.directorGoodsEdit
.attr-list
{
display
:
inline-block
;
margin-right
:
10px
;
margin-bottom
:
10px
;
position
:
relative
;
cursor
:
move
;
}
.directorGoodsEdit
.box-grow-0
{
min-width
:
0
;
-webkit-box-flex
:
0
;
-webkit-flex-grow
:
0
;
-ms-flex-positive
:
0
;
flex-grow
:
0
;
-webkit-flex-shrink
:
0
;
-ms-flex-negative
:
0
;
flex-shrink
:
0
;
}
.directorGoodsEdit
.app-attr-group
.del-img
{
height
:
20px
;
width
:
20px
;
cursor
:
pointer
;
}
.directorGoodsEdit
.app-attr-group
.bg
{
height
:
44px
;
padding
:
0
10px
;
background
:
#f8f8f8
;
}
.regionDig
.regionChoice
.item_b
{
margin-bottom
:
10px
;
}
.directorGoodsEdit
.app-attr-group
.bg
{
height
:
44px
;
padding
:
0
10px
;
background
:
#f8f8f8
;
}
.directorGoodsEdit
.app-attr-group
{
border
:
1px
solid
#ebeef5
;
padding
:
10px
;
}
.directorGoodsEdit
.delBtn
{
position
:
absolute
;
right
:
-8px
;
top
:
-8px
;
padding
:
4px
4px
!important
;
}
.directorGoodsEdit
.add-image-btn
{
width
:
100px
;
height
:
100px
;
line-height
:
100px
;
color
:
#419efb
;
border
:
1px
solid
#e2e2e2
;
cursor
:
pointer
;
text-align
:
center
;
}
.directorGoodsEdit
.colapp-image
{
background-size
:
cover
;
background-position
:
center
center
;
width
:
100px
;
height
:
100px
;
border-radius
:
0%
;
}
.app-add-cat
.el-checkbox-group
{
font-size
:
14px
!important
;
}
.app-add-cat
.el-checkbox
{
margin-right
:
0
;
}
.app-add-cat
.el-dialog__body
{
padding
:
10px
20px
!important
;
}
.app-add-cat
.tag-box
.tag-item
{
margin-right
:
5px
;
}
.app-add-cat
.tag-box
{
margin
:
20px
0
;
}
.app-add-cat
.app-goods-cat-list
.active
{
background
:
#fafafa
;
}
.app-add-cat
.app-goods-cat-list
.cat-item
{
cursor
:
pointer
;
padding
:
5px
10px
;
}
.app-add-cat
.app-goods-cat-list
{
border
:
1px
solid
#e8eaee
;
border-radius
:
5px
;
margin-top
:
-5px
;
padding
:
10px
0
;
overflow
:
scroll
;
height
:
400px
;
}
.directorGoodsEdit
.bottom-div
{
border-top
:
1px
solid
#e3e3e3
;
position
:
fixed
;
bottom
:
0
;
background-color
:
#ffffff
;
z-index
:
999
;
padding
:
10px
;
width
:
80%
;
}
.directorGoodsEdit
.fen-table
{
width
:
100%
;
border-collapse
:
collapse
;
border-spacing
:
0
;
border
:
1px
solid
#eee
;
}
.directorGoodsEdit
.fen-table
td
,
.directorGoodsEdit
.fen-table
th
{
border
:
1px
solid
#eee
;
padding
:
10px
0
;
padding-left
:
10px
;
}
.directorGoodsEdit
.fen-table
td
{
font-size
:
12px
;
}
.directorGoodsEdit
.fen-table
th
{
background
:
#ddd
;
font-weight
:
500
;
}
.directorGoodsEdit
.fen-sumg
{
margin
:
20px
0
;
font-size
:
12px
;
}
@media
(
max-width
:
1920px
)
and
(
min-width
:
1300px
)
{
.directorGoodsEdit
.el-col-12
{
width
:
50%
;
}
}
@media
(
max-width
:
1910px
)
and
(
min-width
:
1200px
)
{
.directorGoodsEdit
.el-col-12
{
width
:
66.66667%
;
}
}
@media
(
max-width
:
1199px
)
and
(
min-width
:
200px
)
{
.directorGoodsEdit
.el-col-12
{
width
:
80%
;
}
}
.edui1_imagescale
img
{
max-width
:
100%
;
}
.directorGoodsEdit
.nav_Main
{
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
flex-start
;
}
.directorGoodsEdit
.nav_IconContent
{
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
flex-start
;
}
.directorGoodsEdit
.nav_IconContent
div
>
div
{
display
:
inline-block
;
}
.directorGoodsEdit
.w90
{
width
:
90px
!important
;
}
.directorGoodsEdit
.w130
{
width
:
130px
!important
;
}
.courseInfo
{
width
:
100%
;
height
:
100%
;
border
:
1px
solid
#EBEEF5
;
border-bottom
:
0
;
}
.courseHeader
{
width
:
100%
;
height
:
60px
;
display
:
flex
;
padding-right
:
4px
;
}
.courseHeader
>
div
{
width
:
12%
;
height
:
100%
;
text-align
:
center
;
line-height
:
60px
;
border-right
:
1px
solid
#EBEEF5
;
border-bottom
:
1px
solid
#EBEEF5
;
}
.courseHeader
>
div
:last-child
{
border-right
:
0
;
}
.courseContent
{
width
:
100%
;
max-height
:
500px
;
overflow-y
:
scroll
;
}
.courseList
{
width
:
100%
;
min-height
:
40px
;
display
:
flex
;
}
.courseList
:hover
{
cursor
:
move
;
}
.courseList
>
div
{
width
:
12%
;
height
:
100%
;
text-align
:
center
;
line-height
:
48px
;
min-height
:
50px
;
border-right
:
1px
solid
#EBEEF5
;
border-bottom
:
1px
solid
#EBEEF5
;
}
.courseList
>
div
:last-child
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
border-right
:
0
;
cursor
:
default
;
}
.courseFileDiv
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
cursor
:
default
;
display
:
flex
;
}
.eduFileDiv
{
width
:
25px
;
height
:
25px
;
cursor
:
pointer
;
}
.eduFileDiv
img
{
width
:
100%
;
height
:
100%
;
}
.videoDiv
{
position
:
fixed
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
z-index
:
999999999
;
background
:
#000
;
}
.courseView
{
width
:
25px
;
height
:
25px
;
margin-left
:
10px
;
cursor
:
pointer
;
}
.courseView
img
{
width
:
100%
;
height
:
100%
;
}
.directorGoodsEdit
.input-new-tag
{
width
:
90px
;
margin-left
:
10px
;
vertical-align
:
bottom
;
}
.directorGoodsEdit
.el-tag
+
.el-tag
{
margin-left
:
10px
;
}
.teacherHead
{
width
:
30px
;
height
:
30px
;
display
:
inline-block
;
border-radius
:
50%
;
overflow
:
hidden
;
position
:
relative
;
top
:
10px
;
margin-right
:
3px
;
}
.directorGoodsEdit
.teacherHead
img
{
width
:
100%
;
height
:
100%
;
}
.directorGoodsEdit
.el-checkbox
{
margin-bottom
:
10px
;
}
.Teacher_List
{
padding
:
2px
5px
;
position
:
relative
;
margin-right
:
5px
;
border
:
1px
solid
#d1d1d1
;
border-radius
:
4px
;
display
:
flex
;
align-items
:
center
;
line-height
:
normal
;
font-size
:
12px
;
float
:
left
;
}
.Teacher_tou
{
width
:
25px
;
height
:
25px
;
overflow
:
hidden
;
margin-right
:
3px
;
border-radius
:
50%
;
display
:
inline-block
;
}
.edu_edlBtn
{
position
:
absolute
;
right
:
-8px
;
top
:
-14px
;
padding
:
1px
1px
!important
;
}
.edu_fileName
{
text-align
:
left
!important
;
line-height
:
normal
!important
;
}
.edu_fileName
>
div
{
text-overflow
:
-o-ellipsis-lastline
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-webkit-box
;
-webkit-line-clamp
:
2
;
line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
}
</
style
>
src/router/index.js
View file @
f3dd7192
...
@@ -380,6 +380,18 @@ export default new Router({
...
@@ -380,6 +380,18 @@ export default new Router({
name
:
'serviceProductList'
,
name
:
'serviceProductList'
,
component
:
resolve
=>
require
([
'@/components/offlineService/serviceProductList'
],
resolve
),
component
:
resolve
=>
require
([
'@/components/offlineService/serviceProductList'
],
resolve
),
},
},
//线下 服务产品列表 新增修改
{
path
:
'/serviceProductEdit'
,
name
:
'serviceProductEdit'
,
component
:
resolve
=>
require
([
'@/components/offlineService/serviceProductEdit'
],
resolve
),
},
//线下 服务人员管理
{
path
:
'/ServiceMannage'
,
name
:
'ServiceMannage'
,
component
:
resolve
=>
require
([
'@/components/offlineService/ServiceMannage'
],
resolve
)
}
]
]
},
},
...
...
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