Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
admin-base
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
new-sing
admin-base
Commits
4e44ee79
Commit
4e44ee79
authored
Aug 31, 2018
by
王
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'development' of
http://git.singsingenglish.com/new-sing/admin
into development
parents
e562ee35
14570439
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
441 additions
and
175 deletions
+441
-175
dev.env.js
config/dev.env.js
+1
-1
prod.env.js
config/prod.env.js
+1
-1
test.env.js
config/test.env.js
+1
-1
radio.png
src/assets/mould/refueling1/radio.png
+0
-0
editor.vue
src/components/resources/editor.vue
+350
-152
editorDialog.vue
src/components/resources/editorDialog.vue
+19
-3
api.js
src/service/api.js
+19
-4
index.js
src/service/index.js
+16
-9
actions.js
src/store/actions.js
+3
-0
index.js
src/store/index.js
+1
-0
mutations.js
src/store/mutations.js
+13
-0
resourceMould.js
src/util/resourceMould.js
+17
-4
No files found.
config/dev.env.js
View file @
4e44ee79
...
@@ -5,7 +5,7 @@ const prodEnv = require('./prod.env');
...
@@ -5,7 +5,7 @@ const prodEnv = require('./prod.env');
module
.
exports
=
merge
(
prodEnv
,
{
module
.
exports
=
merge
(
prodEnv
,
{
NODE_ENV
:
'"development"'
,
NODE_ENV
:
'"development"'
,
API_URL
:
'"/"'
,
API_URL
:
'"/"'
,
MAX_FILESIZE
:
'1024*1024*
5
'
,
MAX_FILESIZE
:
'1024*1024*
10
'
,
IMAGE_URL_HEAD
:
'"http://cdn.singsingenglish.com/"'
,
IMAGE_URL_HEAD
:
'"http://cdn.singsingenglish.com/"'
,
INVITE_URL
:
'"http://wechat.test.singsingenglish.com"'
,
INVITE_URL
:
'"http://wechat.test.singsingenglish.com"'
,
});
});
config/prod.env.js
View file @
4e44ee79
...
@@ -3,5 +3,5 @@ module.exports = {
...
@@ -3,5 +3,5 @@ module.exports = {
NODE_ENV
:
'"production"'
,
NODE_ENV
:
'"production"'
,
IMAGE_URL_HEAD
:
'"http://cdn.singsingenglish.com/"'
,
IMAGE_URL_HEAD
:
'"http://cdn.singsingenglish.com/"'
,
API_URL
:
'"/"'
,
API_URL
:
'"/"'
,
MAX_FILESIZE
:
'1024*1024*
5
'
,
MAX_FILESIZE
:
'1024*1024*
10
'
,
}
}
config/test.env.js
View file @
4e44ee79
...
@@ -6,5 +6,5 @@ module.exports = merge(prodEnv, {
...
@@ -6,5 +6,5 @@ module.exports = merge(prodEnv, {
NODE_ENV
:
'"production"'
,
NODE_ENV
:
'"production"'
,
IMAGE_URL_HEAD
:
'"http://cdn.singsingenglish.com/"'
,
IMAGE_URL_HEAD
:
'"http://cdn.singsingenglish.com/"'
,
API_URL
:
'"/"'
,
API_URL
:
'"/"'
,
MAX_FILESIZE
:
'1024*1024*
5
'
,
MAX_FILESIZE
:
'1024*1024*
10
'
,
})
})
src/assets/mould/refueling1/radio.png
View replaced file @
e562ee35
View file @
4e44ee79
8.99 KB
|
W:
|
H:
3.89 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/components/resources/editor.vue
View file @
4e44ee79
...
@@ -3,9 +3,6 @@
...
@@ -3,9 +3,6 @@
<el-container>
<el-container>
<el-header
height=
"80px"
>
<el-header
height=
"80px"
>
<div
class=
"head-top"
>
<div
class=
"head-top"
>
<el-button
size=
"mini"
>
课程基本信息编辑
</el-button>
缩放:
<el-input-number
v-model=
"bigNum"
size=
"mini"
:min=
"30"
:max=
"150"
:step=
"10"
></el-input-number>
缩放:
<el-input-number
v-model=
"bigNum"
size=
"mini"
:min=
"30"
:max=
"150"
:step=
"10"
></el-input-number>
<el-button
size=
"mini"
type=
"success"
style=
"float: right"
@
click=
"setOpen()"
>
<el-button
size=
"mini"
type=
"success"
style=
"float: right"
@
click=
"setOpen()"
>
编辑当前页参数
编辑当前页参数
...
@@ -31,6 +28,7 @@
...
@@ -31,6 +28,7 @@
</div>
</div>
</el-aside>
</el-aside>
<el-main>
<el-main>
<!--爸妈看一看1-->
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'look1'"
>
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'look1'"
>
<div
class=
"look1"
:style=
"
{backgroundImage:`url(${mouldImg.look1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"look1"
:style=
"
{backgroundImage:`url(${mouldImg.look1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"bg-block"
>
<div
class=
"bg-block"
>
...
@@ -70,6 +68,7 @@
...
@@ -70,6 +68,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!--音频1-->
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'radio1'"
>
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'radio1'"
>
<div
class=
"look1 radio1"
:style=
"
{backgroundImage:`url(${selectedMould[nowIndex].content.titleType === 0 ? mouldImg.radio1.bg:mouldImg.radio1.moerduoBg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"look1 radio1"
:style=
"
{backgroundImage:`url(${selectedMould[nowIndex].content.titleType === 0 ? mouldImg.radio1.bg:mouldImg.radio1.moerduoBg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"bg-block"
:style=
"
{backgroundImage:`url(${mouldImg.radio1.contentBg}`}">
<div
class=
"bg-block"
:style=
"
{backgroundImage:`url(${mouldImg.radio1.contentBg}`}">
...
@@ -117,11 +116,15 @@
...
@@ -117,11 +116,15 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!--视频玩一玩1-->
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'play1'"
>
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'play1'"
>
<div
class=
"look1 play1"
:style=
"
{backgroundImage:`url(${mouldImg.play1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"look1 play1"
:style=
"
{backgroundImage:`url(${mouldImg.play1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"bg-block"
>
<div
class=
"bg-block"
>
<div
class=
"video-block"
>
<div
class=
"video-block"
>
<img
:src=
"mouldImg.play1.play"
/>
<div
class=
"icon-class"
>
<img
:src=
"mouldImg.play1.play"
/>
</div>
<video
v-if=
"selectedMould[nowIndex].content.videoUrl.length > 0"
:poster=
"selectedMould[nowIndex].content.banner[0].url"
:src=
"selectedMould[nowIndex].content.videoUrl[0].url"
></video>
</div>
</div>
<img
:src=
"mouldImg.play1.radio"
class=
"radio-img"
/>
<img
:src=
"mouldImg.play1.radio"
class=
"radio-img"
/>
<img
:src=
"mouldImg.play1.backBtn"
class=
"btn back"
/>
<img
:src=
"mouldImg.play1.backBtn"
class=
"btn back"
/>
...
@@ -129,6 +132,7 @@
...
@@ -129,6 +132,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!--爸妈秀宝贝1-->
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'show1'"
>
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'show1'"
>
<div
class=
"look1 show1"
:style=
"
{backgroundImage:`url(${mouldImg.show1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"look1 show1"
:style=
"
{backgroundImage:`url(${mouldImg.show1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<img
:src=
"mouldImg.show1.haiou"
class=
"haiou"
/>
<img
:src=
"mouldImg.show1.haiou"
class=
"haiou"
/>
...
@@ -149,7 +153,7 @@
...
@@ -149,7 +153,7 @@
</div>
</div>
<div
class=
"text-block"
>
<div
class=
"text-block"
>
解释说明:
解释说明:
<div
class=
"text-content"
>
1231231231
</div>
<div
class=
"text-content"
v-html=
"selectedMould[nowIndex].content.text"
>
</div>
</div>
</div>
<div
class=
"sub-block"
>
<div
class=
"sub-block"
>
<img
:src=
"mouldImg.show1.subBtn"
>
<img
:src=
"mouldImg.show1.subBtn"
>
...
@@ -161,169 +165,305 @@
...
@@ -161,169 +165,305 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!--唱学加油包1-->
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'refueling1'"
>
<div
v-if=
"selectedMould[nowIndex] && selectedMould[nowIndex].key === 'refueling1'"
>
<div
class=
"look1 refueling1"
:style=
"
{backgroundImage:`url(${mouldImg.refueling1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"look1 refueling1"
:style=
"
{backgroundImage:`url(${mouldImg.refueling1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}">
<div
class=
"bg-block"
>
<div
class=
"bg-block"
>
<img
:src=
"mouldImg.refueling1.title"
>
<img
:src=
"mouldImg.refueling1.title"
>
<div
class=
"content-img"
>
<div
class=
"content-img"
:style=
"
{backgroundImage:selectedMould[nowIndex].content.banner[0] ? `url(${selectedMould[nowIndex].content.banner[0].url}`:''}"
>
<img
:src=
"mouldImg.refueling1.radio"
class=
"radio-icon"
>
<img
:src=
"mouldImg.refueling1.radio"
class=
"radio-icon"
>
</div>
</div>
</div>
</div>
<div
class=
"bottom-block"
>
<div
class=
"bottom-block"
>
<img
:src=
"mouldImg.refueling1.backBtn"
/>
<img
:src=
"mouldImg.refueling1.backBtn"
/>
<img
:src=
"mouldImg.refueling1.next"
/>
<img
:src=
"mouldImg.refueling1.next"
v-if=
"selectedMould[nowIndex].content.nextType"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</el-main>
</el-main>
</el-container>
</el-container>
</el-container>
</el-container>
<el-dialog
<el-dialog
title=
"编辑"
title=
"编辑"
:visible
.
sync=
"dialogVisible"
:visible
.
sync=
"dialogVisible"
:modal=
"false"
:modal=
"false"
width=
"30%"
>
width=
"30%"
>
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'look1'"
>
<!--爸妈看一看1-->
<el-form-item
label=
"音频"
>
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'look1'"
>
<el-upload
<el-form-item
label=
"音频"
>
class=
"upload-demo"
<el-upload
action=
"/api/public/upload"
class=
"upload-demo"
multiple
action=
"/api/public/upload"
:limit=
"1"
multiple
:on-exceed=
"handleExceed"
:limit=
"1"
:on-success=
"uploadSuccess"
:on-exceed=
"handleExceed"
:file-list=
"selectedMould[nowIndex].content.radioUrl"
>
:on-success=
"uploadSuccess"
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
:file-list=
"selectedMould[nowIndex].content.radioUrl"
>
</el-upload>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
</el-form-item>
</el-upload>
<el-form-item
label=
"今日目标"
>
</el-form-item>
<el-input
type=
"textarea"
v-model=
"selectedMould[nowIndex].content.today"
placeholder=
"今日目标换行输入
<br>
">
</el-input>
<el-form-item
label=
"今日目标"
>
</el-form-item>
<el-input
type=
"textarea"
v-model=
"selectedMould[nowIndex].content.today"
placeholder=
"今日目标换行输入
<br>
">
</el-input>
<el-form-item
label=
"陪玩指南"
>
</el-form-item>
<el-input
type=
"textarea"
v-model=
"selectedMould[nowIndex].content.directory"
placeholder=
"陪玩指南换行输入
<br>
">
</el-input>
<el-form-item
label=
"陪玩指南"
>
</el-form-item>
<el-input
type=
"textarea"
v-model=
"selectedMould[nowIndex].content.directory"
placeholder=
"陪玩指南换行输入
<br>
">
</el-input>
<el-form-item
label=
"下一页序号"
>
</el-form-item>
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
<el-form-item
label=
"下一页序号"
>
<el-option
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
v-for=
"(item,index) in selectedMould"
<el-option
:key=
"index"
v-for=
"(item,index) in selectedMould"
:label=
"index"
:key=
"index"
:value=
"index"
>
:label=
"index"
</el-option>
:value=
"index"
>
</el-select>
</el-option>
</el-form-item>
</el-select>
<el-form-item
label=
"停留时长"
>
</el-form-item>
<el-input-number
v-model=
"selectedMould[nowIndex].content.timeLang"
></el-input-number>
<el-form-item
label=
"停留时长"
>
</el-form-item>
<el-input-number
v-model=
"selectedMould[nowIndex].content.timeLang"
></el-input-number>
</el-form>
</el-form-item>
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'radio1'"
>
</el-form>
<el-form-item
label=
"音频"
>
<!--音频1-->
<el-upload
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'radio1'"
>
class=
"upload-demo"
<el-form-item
label=
"音频"
>
action=
"/api/public/upload"
<el-upload
multiple
class=
"upload-demo"
:on-exceed=
"handleExceed"
action=
"/api/public/upload"
:on-success=
"uploadSuccessRadio1"
multiple
:file-list=
"selectedMould[nowIndex].content.radio"
>
:on-exceed=
"handleExceed"
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
:on-success=
"uploadSuccessRadio1"
</el-upload>
:file-list=
"selectedMould[nowIndex].content.radio"
>
</el-form-item>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
v-for=
"(data,index) in selectedMould[nowIndex].content.radio"
>
</el-upload>
<el-form-item
label=
"音频名字"
>
</el-form-item>
<el-input
v-model=
"data.title"
placeholder=
"请输入音频显示标题"
></el-input>
<div
v-for=
"(data,index) in selectedMould[nowIndex].content.radio"
>
<el-form-item
label=
"音频名字"
>
<el-input
v-model=
"data.title"
placeholder=
"请输入音频显示标题"
></el-input>
</el-form-item>
<el-form-item
label=
"音频作者"
>
<el-input
v-model=
"data.lable"
placeholder=
"请输入音频来源作者"
></el-input>
</el-form-item>
</div>
<el-form-item
label=
"上一步序号"
>
<el-select
v-model=
"selectedMould[nowIndex].content.lastIndex"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"下一步序号"
>
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"标题类型"
>
<el-select
v-model=
"selectedMould[nowIndex].content.titleType"
placeholder=
"请选择"
>
<el-option
:value=
"0"
label=
"宝贝玩一玩"
>
</el-option>
<el-option
:value=
"1"
label=
"磨耳朵"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"按钮组"
>
<el-select
v-model=
"selectedMould[nowIndex].content.buttonType"
placeholder=
"请选择"
>
<el-option
:value=
"0"
label=
"返回看一看 + 爸妈秀宝贝"
>
</el-option>
<el-option
:value=
"1"
label=
"返回玩一玩 + 完成今日学习"
>
</el-option>
<el-option
:value=
"2"
label=
"上一页 + 完成今日学习"
>
</el-option>
<el-option
:value=
"3"
label=
"返回玩一玩 + 下一页"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"视频切换"
>
<el-switch
v-model=
"selectedMould[nowIndex].content.tabVideo.type"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"视频目标"
v-if=
"selectedMould[nowIndex].content.tabVideo.type"
>
<el-select
v-model=
"selectedMould[nowIndex].content.tabVideo.index"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"停留时长"
>
<el-input-number
v-model=
"selectedMould[nowIndex].content.timeLang"
></el-input-number>
</el-form-item>
</el-form>
<!--视频玩一玩1-->
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'play1'"
>
<el-form-item
label=
"视频"
>
<el-upload
class=
"upload-demo"
action=
"/api/public/upload"
:http-request=
"uploadFile"
multiple
:limit=
"1"
:disabled=
"(fileUid && progress
<
99
)"
:file-list=
"selectedMould[nowIndex].content.radio"
>
<el-button
size=
"small"
type=
"primary"
:disabled=
"(fileUid && progress
<
99
)"
>
点击上传
</el-button>
<div
style=
"width: 300px"
>
<el-progress
v-if=
"fileUid"
:percentage=
"progress"
></el-progress>
</div>
</el-upload>
</el-form-item>
<el-form-item
label=
"视频封面"
>
<el-upload
class=
"upload-demo"
action=
"/api/public/upload"
:http-request=
"uploadFileVideo1Banner"
list-type=
"picture-card"
multiple
:limit=
"1"
:disabled=
"(fileUid && progress
<
99
)"
:file-list=
"selectedMould[nowIndex].content.radio"
>
</el-upload>
</el-form-item>
<el-form-item
label=
"是否切换"
>
<el-switch
v-model=
"selectedMould[nowIndex].content.tabRadio.type"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"切换目标"
v-if=
"selectedMould[nowIndex].content.tabRadio.type"
>
<el-select
v-model=
"selectedMould[nowIndex].content.tabRadio.index"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"上一步序号"
>
<el-select
v-model=
"selectedMould[nowIndex].content.lastIndex"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"下一步序号"
>
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<!--爸妈秀宝贝1-->
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'refueling1'"
>
<el-form-item
label=
"音频"
>
<el-upload
class=
"upload-demo"
action=
"/api/public/upload"
:http-request=
"uploadFileRadio"
multiple
:limit=
"1"
:disabled=
"(fileUid && progress
<
99
)"
:file-list=
"selectedMould[nowIndex].content.radio"
>
<el-button
size=
"small"
type=
"primary"
:disabled=
"(fileUid && progress
<
99
)"
>
点击上传
</el-button>
<div
style=
"width: 300px"
>
<el-progress
v-if=
"fileUid"
:percentage=
"progress"
></el-progress>
</div>
</el-upload>
</el-form-item>
</el-form-item>
<el-form-item
label=
"音频作者"
>
<el-form-item
label=
"图片"
>
<el-input
v-model=
"data.lable"
placeholder=
"请输入音频来源作者"
></el-input>
<el-upload
class=
"upload-demo"
action=
"/api/public/upload"
:http-request=
"uploadFileVideo1Banner"
list-type=
"picture-card"
multiple
:limit=
"1"
:disabled=
"(fileUid && progress
<
99
)"
:file-list=
"selectedMould[nowIndex].content.radio"
>
</el-upload>
</el-form-item>
</el-form-item>
</div>
<el-form-item
label=
"上一步序号"
>
<el-form-item
label=
"上一步序号"
>
<el-select
v-model=
"selectedMould[nowIndex].content.lastIndex"
placeholder=
"请选择"
>
<el-select
v-model=
"selectedMould[nowIndex].content.lastIndex"
placeholder=
"请选择"
>
<el-option
<el-option
v-for=
"(item,index) in selectedMould"
v-for=
"(item,index) in selectedMould"
:key=
"index"
:key=
"index"
:label=
"index"
:label=
"index"
:value=
"index"
>
:value=
"index"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"下一页"
>
<el-form-item
label=
"下一步序号"
>
<el-switch
v-model=
"selectedMould[nowIndex].content.nextType"
>
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
</el-switch>
<el-option
</el-form-item>
v-for=
"(item,index) in selectedMould"
<el-form-item
label=
"下一步序号"
v-if=
"selectedMould[nowIndex].content.nextType"
>
:key=
"index"
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
:label=
"index"
<el-option
:value=
"index"
>
v-for=
"(item,index) in selectedMould"
</el-option>
:key=
"index"
</el-select>
:label=
"index"
</el-form-item>
:value=
"index"
>
<el-form-item
label=
"标题类型"
>
</el-option>
<el-select
v-model=
"selectedMould[nowIndex].content.titleType"
placeholder=
"请选择"
>
</el-select>
<el-option
</el-form-item>
:value=
"0"
</el-form>
label=
"宝贝玩一玩"
>
<!--唱学加油包1-->
</el-option>
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'show1'"
>
<el-option
<el-form-item
label=
"说明文字"
>
:value=
"1"
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"selectedMould[nowIndex].content.text"
></el-input>
label=
"磨耳朵"
>
</el-form-item>
</el-option>
<el-form-item
label=
"解锁限制"
>
</el-select>
<el-switch
v-model=
"selectedMould[nowIndex].content.check"
>
</el-form-item>
</el-switch>
<el-form-item
label=
"按钮组"
>
</el-form-item>
<el-select
v-model=
"selectedMould[nowIndex].content.buttonType"
placeholder=
"请选择"
>
<el-form-item
label=
"上一步序号"
>
<el-option
<el-select
v-model=
"selectedMould[nowIndex].content.lastIndex"
placeholder=
"请选择"
>
:value=
"0"
<el-option
label=
"返回看一看 + 爸妈秀宝贝"
>
v-for=
"(item,index) in selectedMould"
</el-option>
:key=
"index"
<el-option
:label=
"index"
:value=
"1"
:value=
"index"
>
label=
"返回玩一玩 + 完成今日学习"
>
</el-option>
</el-option>
</el-select>
<el-option
</el-form-item>
:value=
"2"
<el-form-item
label=
"下一步序号"
>
label=
"上一页 + 完成今日学习"
>
<el-select
v-model=
"selectedMould[nowIndex].content.nextIndex"
placeholder=
"请选择"
>
</el-option>
<el-option
<el-option
v-for=
"(item,index) in selectedMould"
:value=
"3"
:key=
"index"
label=
"返回玩一玩 + 下一页"
>
:label=
"index"
</el-option>
:value=
"index"
>
</el-select>
</el-option>
</el-form-item>
</el-select>
<el-form-item
label=
"视频切换"
>
</el-form-item>
<el-switch
v-model=
"selectedMould[nowIndex].content.tabVideo.type"
>
</el-form>
</el-switch>
</el-dialog>
</el-form-item>
<el-form-item
label=
"视频目标"
v-if=
"selectedMould[nowIndex].content.tabVideo.type"
>
<el-select
v-model=
"selectedMould[nowIndex].content.tabVideo.index"
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in selectedMould"
:key=
"index"
:label=
"index"
:value=
"index"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"停留时长"
>
<el-input-number
v-model=
"selectedMould[nowIndex].content.timeLang"
></el-input-number>
</el-form-item>
</el-form>
<el-form
label-width=
"100px"
v-if=
"selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'play1'"
>
<el-form-item
label=
"音频"
>
<el-upload
class=
"upload-demo"
action=
"/api/public/upload"
:http-request=
"uploadFile"
multiple
:on-exceed=
"handleExceed"
:on-success=
"uploadSuccessRadio1"
:file-list=
"selectedMould[nowIndex].content.radio"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
</el-upload>
</el-form-item>
</el-form>
</el-dialog>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
mouldImg
from
'../../util/mouldImgUrl'
import
mouldImg
from
'../../util/mouldImgUrl'
import
{
uploadFileApi
}
from
"../../service/api"
;
import
{
uploadFileApi
}
from
"../../service/api"
;
...
@@ -332,32 +472,77 @@
...
@@ -332,32 +472,77 @@
name
:
"editor"
,
name
:
"editor"
,
props
:[
props
:[
'selectedMould'
,
'selectedMould'
,
'editorObj'
],
],
data
(){
data
(){
return
{
return
{
// 放大缩小参数
bigNum
:
100
,
bigNum
:
100
,
// 弹窗参数
dialogVisible
:
false
,
dialogVisible
:
false
,
// 当前对象下标
nowIndex
:
0
,
nowIndex
:
0
,
// 模板图片集
mouldImg
:
mouldImg
,
mouldImg
:
mouldImg
,
// 文件上传Uid
fileUid
:
null
}
},
mounted
(){
console
.
log
(
this
.
editorObj
)
},
computed
:{
progress
(){
return
this
.
$store
.
state
.
progressList
.
find
(
i
=>
{
return
i
.
id
===
this
.
fileUid
}).
num
<
100
?
this
.
$store
.
state
.
progressList
.
find
(
i
=>
{
return
i
.
id
===
this
.
fileUid
}).
num
:
100
}
}
},
},
methods
:{
methods
:{
initPage
(){
switch
(
this
.
editorObj
.
type
)
{
case
0
:
this
.
selectedMould
=
[]
}
},
// 打开设置弹窗
setOpen
(){
setOpen
(){
this
.
dialogVisible
=
true
;
this
.
dialogVisible
=
true
;
},
},
// 上传Banner
uploadFileVideo1Banner
(
a
){
this
.
$store
.
dispatch
(
'setProgress'
,{
type
:
'new'
,
id
:
a
.
file
.
uid
});
uploadFileApi
({
file
:
a
.
file
,
type
:
'local'
}).
then
(
res
=>
{
this
.
selectedMould
[
this
.
nowIndex
].
content
.
banner
[
0
]
=
{
name
:
res
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
res
.
url
,
title
:
''
,
lable
:
''
}
})
},
// 上传音频
uploadFileRadio
(
a
){
this
.
$store
.
dispatch
(
'setProgress'
,{
type
:
'new'
,
id
:
a
.
file
.
uid
});
this
.
fileUid
=
a
.
file
.
uid
;
uploadFileApi
({
file
:
a
.
file
,
type
:
'local'
}).
then
(
res
=>
{
this
.
selectedMould
[
this
.
nowIndex
].
content
.
radio
[
0
]
=
{
name
:
res
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
res
.
url
,
title
:
''
,
lable
:
''
}
})
},
// 上传视频
uploadFile
(
a
){
uploadFile
(
a
){
uploadFileApi
(
a
.
file
).
then
(
res
=>
{
this
.
$store
.
dispatch
(
'setProgress'
,{
type
:
'new'
,
id
:
a
.
file
.
uid
});
this
.
fileUid
=
a
.
file
.
uid
;
uploadFileApi
({
file
:
a
.
file
,
type
:
'local'
}).
then
(
res
=>
{
this
.
selectedMould
[
this
.
nowIndex
].
content
.
videoUrl
[
0
]
=
{
name
:
res
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
res
.
url
,
title
:
''
,
lable
:
''
}
})
})
},
},
// 列表选择
chooseThat
(
data
){
chooseThat
(
data
){
this
.
nowIndex
=
data
;
this
.
nowIndex
=
data
;
},
},
// 超出个数显示
handleExceed
(){
handleExceed
(){
this
.
$message
.
error
(
'超出文件限制个数'
);
this
.
$message
.
error
(
'超出文件限制个数'
);
},
},
// 源生上传成功回调
uploadSuccess
(
a
){
uploadSuccess
(
a
){
this
.
selectedMould
[
this
.
nowIndex
].
content
.
radioUrl
.
push
({
name
:
a
.
data
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
a
.
data
.
url
})
this
.
selectedMould
[
this
.
nowIndex
].
content
.
radioUrl
.
push
({
name
:
a
.
data
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
a
.
data
.
url
})
},
},
// 源生上传成功音频回调
uploadSuccessRadio1
(
a
){
uploadSuccessRadio1
(
a
){
this
.
selectedMould
[
this
.
nowIndex
].
content
.
radio
.
push
({
name
:
a
.
data
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
a
.
data
.
url
,
title
:
''
,
lable
:
''
})
this
.
selectedMould
[
this
.
nowIndex
].
content
.
radio
.
push
({
name
:
a
.
data
.
url
,
url
:
process
.
env
.
IMAGE_URL_HEAD
+
a
.
data
.
url
,
title
:
''
,
lable
:
''
})
}
}
...
@@ -459,6 +644,14 @@
...
@@ -459,6 +644,14 @@
height: 100%;
height: 100%;
width: 1000px;
width: 1000px;
position: relative;
position: relative;
.icon-class{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0,0,0,0.3);
}
img{
img{
position: absolute;
position: absolute;
top: 50%;
top: 50%;
...
@@ -466,6 +659,9 @@
...
@@ -466,6 +659,9 @@
margin-top: -50px;
margin-top: -50px;
margin-left: -50px;
margin-left: -50px;
}
}
video{
width: 1000px;
}
}
}
}
}
}
}
...
@@ -601,6 +797,8 @@
...
@@ -601,6 +797,8 @@
position: relative;
position: relative;
height: 832px;
height: 832px;
background: #333;
background: #333;
background-repeat: no-repeat;
background-size: 100% 100%;
margin: 20px;
margin: 20px;
border-radius: 8px;
border-radius: 8px;
.radio-icon{
.radio-icon{
...
...
src/components/resources/editorDialog.vue
View file @
4e44ee79
...
@@ -23,14 +23,27 @@
...
@@ -23,14 +23,27 @@
</el-card>
</el-card>
</div>
</div>
</div>
</div>
</el-aside>
</el-aside>
<el-main>
<el-main>
<editor
:selectedMould=
"selectedMould"
/>
<el-button
size=
"mini"
@
click=
"showDialog = true"
>
课程基本信息编辑
</el-button>
<el-button
size=
"mini"
>
保存
</el-button>
<editor
:selectedMould=
"selectedMould"
:editorObj=
"editorObj"
/>
</el-main>
</el-main>
</el-container>
</el-container>
<el-dialog>
<el-dialog
title=
"信息编辑"
:modal=
"false"
:visible
.
sync=
"showDialog"
width=
"30%"
>
<el-form>
<el-form-item>
</el-form-item>
</el-form>
</el-dialog>
</el-dialog>
</el-dialog>
</el-dialog>
</
template
>
</
template
>
...
@@ -39,6 +52,8 @@
...
@@ -39,6 +52,8 @@
import
addUrl
from
'../../assets/editor/Group 7.png'
import
addUrl
from
'../../assets/editor/Group 7.png'
import
{
MOULDLIST
}
from
"../../util/resourceMould"
;
import
{
MOULDLIST
}
from
"../../util/resourceMould"
;
import
editor
from
'./editor'
import
editor
from
'./editor'
import
{
addCategoryApi
}
from
"../../service/api"
;
export
default
{
export
default
{
props
:[
props
:[
'editorObj'
'editorObj'
...
@@ -50,6 +65,7 @@
...
@@ -50,6 +65,7 @@
return
{
return
{
selectedMould
:[],
selectedMould
:[],
addUrl
:
addUrl
,
addUrl
:
addUrl
,
showDialog
:
false
,
mouldList
:
MOULDLIST
,
mouldList
:
MOULDLIST
,
age
:[
0
,
0
],
age
:[
0
,
0
],
level
:[
0
,
0
],
level
:[
0
,
0
],
...
...
src/service/api.js
View file @
4e44ee79
...
@@ -143,12 +143,12 @@ const getCategoryUrl = `${_baseUrl}api/admin/category/list/0`;
...
@@ -143,12 +143,12 @@ const getCategoryUrl = `${_baseUrl}api/admin/category/list/0`;
export
const
getCategoryApi
=
function
(
pid
)
{
export
const
getCategoryApi
=
function
(
pid
)
{
return
Vue
.
prototype
.
$fetch
(
getCategoryUrl
,{
'pid'
:
pid
})
return
Vue
.
prototype
.
$fetch
(
getCategoryUrl
,{
'pid'
:
pid
})
};
};
//删除
元素
分类
//删除分类
const
delCategoryUrl
=
`
${
_baseUrl
}
api/admin/category`
;
const
delCategoryUrl
=
`
${
_baseUrl
}
api/admin/category`
;
export
const
delCategoryApi
=
function
(
id
)
{
export
const
delCategoryApi
=
function
(
id
)
{
return
Vue
.
prototype
.
$del
(
`
${
delCategoryUrl
}
/
${
id
}
`
)
return
Vue
.
prototype
.
$del
(
`
${
delCategoryUrl
}
/
${
id
}
`
)
};
};
//
元素
排序修改
//
分类
排序修改
const
sortCategoryUrl
=
`
${
_baseUrl
}
api/admin/category/sort`
;
const
sortCategoryUrl
=
`
${
_baseUrl
}
api/admin/category/sort`
;
export
const
sortCategoryApi
=
function
(
json
)
{
export
const
sortCategoryApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$patch
(
sortCategoryUrl
,
json
)
return
Vue
.
prototype
.
$patch
(
sortCategoryUrl
,
json
)
...
@@ -158,6 +158,21 @@ const getCateDetailListUrl = `${_baseUrl}api/admin/element/list/0`;
...
@@ -158,6 +158,21 @@ const getCateDetailListUrl = `${_baseUrl}api/admin/element/list/0`;
export
const
getCateListApi
=
function
(
id
)
{
export
const
getCateListApi
=
function
(
id
)
{
return
Vue
.
prototype
.
$fetch
(
getCateDetailListUrl
,
id
)
return
Vue
.
prototype
.
$fetch
(
getCateDetailListUrl
,
id
)
};
};
// 添加元素
const
addElementUrl
=
`
${
_baseUrl
}
api/admin/element/add/`
;
export
const
addElementApi
=
function
(
json
,
id
)
{
return
Vue
.
prototype
.
$post
(
`
${
addElementUrl
}${
id
}
`
,
json
)
};
// 查询元素详情
const
getElemenetDetailUrl
=
`
${
_baseUrl
}
api/admin/element/`
;
export
const
getElemenetDetailApi
=
function
(
id
)
{
return
Vue
.
prototype
.
$fetch
(
`
${
getElemenetDetailUrl
}${
id
}
`
)
};
// 编辑元素
const
editElementUrl
=
`
${
_baseUrl
}
api/admin/element/`
;
export
const
editElementApi
=
function
(
id
,
json
)
{
return
Vue
.
prototype
.
$put
(
`
${
editElementUrl
}${
id
}
`
,
json
)
};
// 获取单品列表
// 获取单品列表
const
getSingleListUrl
=
`
${
_baseUrl
}
api/admin/item/stock/list`
;
const
getSingleListUrl
=
`
${
_baseUrl
}
api/admin/item/stock/list`
;
export
const
getSingleListApi
=
function
(
name
)
{
export
const
getSingleListApi
=
function
(
name
)
{
...
@@ -256,8 +271,8 @@ export const getMediaListApi = function (json) {
...
@@ -256,8 +271,8 @@ export const getMediaListApi = function (json) {
// const getGoodsListUrl = `${_baseUrl}api/admin/goods/list`;
// const getGoodsListUrl = `${_baseUrl}api/admin/goods/list`;
// 文件上传
// 文件上传
const
uploadFileUrl
=
`
${
_baseUrl
}
api/public/upload/zone`
;
const
uploadFileUrl
=
`
${
_baseUrl
}
api/public/upload/zone`
;
export
const
uploadFileApi
=
function
(
data
)
{
export
const
uploadFileApi
=
function
(
json
)
{
return
Vue
.
prototype
.
$upload
(
uploadFileUrl
,
data
)
return
Vue
.
prototype
.
$upload
(
uploadFileUrl
,
json
)
};
};
// 获取菜单列表
// 获取菜单列表
const
getMenuListUrl
=
`
${
_baseUrl
}
api/admin/category/list/2`
;
const
getMenuListUrl
=
`
${
_baseUrl
}
api/admin/category/list/2`
;
...
...
src/service/index.js
View file @
4e44ee79
import
axios
from
'axios'
;
import
axios
from
'axios'
;
import
md5
from
'js-md5'
;
import
md5
from
'js-md5'
;
import
store
from
"@/store"
import
{
MessageBox
,
Message
}
from
'element-ui'
;
import
{
MessageBox
,
Message
}
from
'element-ui'
;
import
router
from
'../router'
import
router
from
'../router'
import
Cookie
from
'../util/cookie'
import
Cookie
from
'../util/cookie'
...
@@ -65,29 +66,35 @@ axios.interceptors.response.use(
...
@@ -65,29 +66,35 @@ axios.interceptors.response.use(
* @param params
* @param params
* @returns {Promise}
* @returns {Promise}
*/
*/
export
function
upload
(
url
,
data
)
{
export
function
upload
(
url
,
json
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
//开启分片
//开启分片
let
size
=
parseInt
(
Number
(
data
.
size
)
/
Number
(
process
.
env
.
MAX_FILESIZE
)
+
1
);
let
size
=
parseInt
(
Number
(
json
.
file
.
size
)
/
Number
(
process
.
env
.
MAX_FILESIZE
)
+
1
);
let
y
=
0
;
let
y
=
0
;
let
fun
=
function
(){
let
fun
=
function
(){
let
formData
=
new
FormData
();
let
formData
=
new
FormData
();
let
file
=
data
.
slice
(
y
*
process
.
env
.
MAX_FILESIZE
,(
y
+
1
)
*
process
.
env
.
MAX_FILESIZE
)
let
file
=
json
.
file
.
slice
(
y
*
process
.
env
.
MAX_FILESIZE
,(
y
+
1
)
*
process
.
env
.
MAX_FILESIZE
);
console
.
log
(
data
)
console
.
log
(
json
.
file
);
formData
.
append
(
'chunk'
,
y
);
formData
.
append
(
'chunk'
,
y
);
formData
.
append
(
'file_name'
,
data
.
name
);
formData
.
append
(
'file_name'
,
json
.
file
.
name
);
formData
.
append
(
'count'
,
size
);
formData
.
append
(
'count'
,
size
);
formData
.
append
(
'file'
,
file
);
formData
.
append
(
'file'
,
file
);
axios
.
post
(
url
,
formData
,{
headers
:
{
axios
.
post
(
url
,
formData
,{
headers
:
{
'Content-Type'
:
'multipart/form-data'
'Content-Type'
:
'multipart/form-data'
},
timeout
:
60000
})
},
timeout
:
60000
,
onUploadProgress
:
progressEvent
=>
{
if
(
store
.
state
.
progressList
.
find
(
i
=>
{
return
i
.
id
===
json
.
file
.
uid
})){
let
progress
=
((
Number
(
progressEvent
.
loaded
)
+
Number
(
y
*
process
.
env
.
MAX_FILESIZE
))
/
Number
(
json
.
file
.
size
)
*
100
|
0
);
store
.
dispatch
(
'setProgress'
,{
type
:
'change'
,
id
:
json
.
file
.
uid
,
num
:
progress
});
}
},})
.
then
(
response
=>
{
.
then
(
response
=>
{
if
(
response
.
data
.
code
===
200
){
if
(
response
.
data
.
code
===
200
){
y
++
;
if
(
y
+
1
<
size
){
if
(
y
<
size
){
y
++
;
fun
()
fun
()
}
else
{
}
else
{
y
=
0
;
resolve
(
response
.
data
.
data
);
resolve
(
response
.
data
.
data
);
}
}
}
else
{
}
else
{
...
...
src/store/actions.js
View file @
4e44ee79
...
@@ -7,4 +7,7 @@ export default{
...
@@ -7,4 +7,7 @@ export default{
setUserName
({
commit
},
name
){
setUserName
({
commit
},
name
){
commit
(
'setUserName'
,
name
);
commit
(
'setUserName'
,
name
);
},
},
setProgress
({
commit
},
data
){
commit
(
'progress'
,
data
);
},
}
}
src/store/index.js
View file @
4e44ee79
...
@@ -14,6 +14,7 @@ export default new vuex.Store({
...
@@ -14,6 +14,7 @@ export default new vuex.Store({
menuList
:
menu
,
menuList
:
menu
,
menuType
:
false
,
menuType
:
false
,
nowTab
:
'first'
,
nowTab
:
'first'
,
progressList
:[],
openedTab
:[
openedTab
:[
{
{
value
:
'首页'
,
value
:
'首页'
,
...
...
src/store/mutations.js
View file @
4e44ee79
...
@@ -19,6 +19,19 @@ const mutations={
...
@@ -19,6 +19,19 @@ const mutations={
},
},
changeParentRouter
(
state
,
data
){
changeParentRouter
(
state
,
data
){
state
.
menuList
.
find
((
a
)
=>
{
return
a
.
name
===
data
.
name
}).
routerName
=
data
.
to
.
name
state
.
menuList
.
find
((
a
)
=>
{
return
a
.
name
===
data
.
name
}).
routerName
=
data
.
to
.
name
},
progress
(
state
,
data
){
switch
(
data
.
type
)
{
case
'new'
:
state
.
progressList
.
push
({
num
:
0
,
id
:
data
.
id
});
break
;
case
'change'
:
state
.
progressList
.
find
((
x
)
=>
{
return
x
.
id
===
data
.
id
}).
num
=
data
.
num
;
break
;
case
'delete'
:
delete
state
.
progressList
.
find
((
x
)
=>
{
return
x
.
id
===
data
.
id
});
break
}
}
}
};
};
export
default
mutations
;
export
default
mutations
;
src/util/resourceMould.js
View file @
4e44ee79
...
@@ -41,8 +41,8 @@ export const MOULDLIST = [
...
@@ -41,8 +41,8 @@ export const MOULDLIST = [
name
:
'玩-video-1'
,
name
:
'玩-video-1'
,
key
:
'play1'
,
key
:
'play1'
,
content
:{
content
:{
videoUrl
:
''
,
videoUrl
:
[]
,
banner
:
""
,
banner
:
[]
,
nextIndex
:
''
,
nextIndex
:
''
,
lastIndex
:
''
,
lastIndex
:
''
,
tabRadio
:{
tabRadio
:{
...
@@ -54,11 +54,24 @@ export const MOULDLIST = [
...
@@ -54,11 +54,24 @@ export const MOULDLIST = [
title
:
'唱学加油包'
,
title
:
'唱学加油包'
,
imgUrl
:
RefuelingUrl
,
imgUrl
:
RefuelingUrl
,
name
:
'加油包-1'
,
name
:
'加油包-1'
,
key
:
'refueling1'
key
:
'refueling1'
,
content
:{
radio
:[],
banner
:[],
nextIndex
:
''
,
nextType
:
true
,
lastIndex
:
''
,
}
},{
},{
title
:
'爸妈秀宝贝'
,
title
:
'爸妈秀宝贝'
,
imgUrl
:
showBabyUrl
,
imgUrl
:
showBabyUrl
,
name
:
'秀宝贝-1'
,
name
:
'秀宝贝-1'
,
key
:
'show1'
key
:
'show1'
,
content
:{
text
:
''
,
check
:
true
,
nextIndex
:
''
,
lastIndex
:
''
,
}
},
},
];
];
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