Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
罗超
confucius
Commits
8e3fed1c
Commit
8e3fed1c
authored
Jul 02, 2021
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
into master
parents
99bb3d5f
a2a7cbe9
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
2295 additions
and
189 deletions
+2295
-189
quasar.conf.js
quasar.conf.js
+6
-5
index.js
src/api/course/index.js
+72
-0
user.js
src/api/users/user.js
+24
-0
UeEditor.vue
src/components/editor/UeEditor.vue
+6
-1
baseSet.vue
src/pages/course/baseSet.vue
+3
-3
chapter.vue
src/pages/course/chapter.vue
+385
-66
chapterEditor.vue
src/pages/course/chapterEditor.vue
+619
-0
classManage.vue
src/pages/course/classManage.vue
+11
-4
course.vue
src/pages/course/course.vue
+8
-6
courseinfo.vue
src/pages/course/courseinfo.vue
+12
-7
CashAccount.vue
src/pages/financial/CashAccount.vue
+46
-19
CompanyAccount.vue
src/pages/financial/CompanyAccount.vue
+51
-20
TeamRevenueReport.vue
src/pages/financial/TeamRevenueReport.vue
+1
-5
CashAccDetail.vue
src/pages/financial/accDetail/CashAccDetail.vue
+3
-0
CompanyAccDetail.vue
src/pages/financial/accDetail/CompanyAccDetail.vue
+2
-0
PlatformAccDetail.vue
src/pages/financial/accDetail/PlatformAccDetail.vue
+2
-0
newCashReport.vue
src/pages/financial/accDetail/newCashReport.vue
+320
-0
newTransferReport.vue
src/pages/financial/accDetail/newTransferReport.vue
+305
-0
FinancialDocuments.vue
src/pages/financial/financalDocument/FinancialDocuments.vue
+3
-3
RecPayQuery.vue
src/pages/financial/financalDocument/RecPayQuery.vue
+91
-4
orderCompleteStatistics.vue
src/pages/financial/orderCompleteStatistics.vue
+4
-2
studentsClassfee.vue
src/pages/financial/studentsClassfee.vue
+1
-0
teacherclassfee.vue
src/pages/financial/teacherclassfee.vue
+40
-5
personalData.vue
src/pages/user/personalData.vue
+222
-36
routes.js
src/router/routes.js
+13
-3
validate.js
src/utils/validate.js
+45
-0
No files found.
quasar.conf.js
View file @
8e3fed1c
...
...
@@ -32,13 +32,12 @@ module.exports = function (ctx) {
// https://github.com/quasarframework/quasar/tree/dev/extras
extras
:
[
// 'ionicons-v4',
//
'mdi-v5',
'mdi-v5'
,
// 'fontawesome-v5',
// 'eva-icons',
// 'themify',
// 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
'roboto-font'
,
// optional, you are not bound to it
'material-icons'
// optional, you are not bound to it
],
...
...
@@ -49,8 +48,8 @@ module.exports = function (ctx) {
env
:
ctx
.
dev
?
{
//API: 'http://192.168.1.36:8300/api'
API
:
'https://localhost:5001/api'
,
// API: 'http://192.168.20.24:8300
/api',
//
API: 'https://localhost:5001/api',
API
:
'http://192.168.20.51:8088
/api'
,
// API: 'http://testeduapi.oytour.com/api',
// API: 'http://192.168.20.9:8085/api',
// API: 'http://192.168.20.17:8017/api',
...
...
@@ -158,7 +157,9 @@ module.exports = function (ctx) {
'QRadio'
,
'QBtnGroup'
],
// directives: [],
directives
:
[
'ClosePopup'
],
// Quasar plugins
plugins
:
[
...
...
src/api/course/index.js
View file @
8e3fed1c
...
...
@@ -203,6 +203,78 @@ export function queryChapterTree(data) {
})
}
/**
* 保存课程章节
* @param {JSON参数} data
*/
export
function
saveChapter
(
data
)
{
return
request
({
url
:
"/Course/SetChapter"
,
method
:
'post'
,
data
})
}
/**
* 保存课程章节
* @param {JSON参数} data
*/
export
function
getCourseRate
(
data
)
{
return
request
({
url
:
"/Course/GetCourseRateEnumList"
,
method
:
'post'
,
data
})
}
/**
* 保存课程章节
* @param {JSON参数} data
*/
export
function
deleteChapters
(
data
)
{
return
request
({
url
:
"/Course/BatchRemoveChapter"
,
method
:
'post'
,
data
})
}
/**
* 保存课程章节
* @param {JSON参数} data
*/
export
function
setChaptersRate
(
data
)
{
return
request
({
url
:
"/Course/BatchSetChapterRate"
,
method
:
'post'
,
data
})
}
/**
* 批量更新章节编号和ID
* @param {JSON参数} data
*/
export
function
batchUpdateChapterNo
(
data
)
{
return
request
({
url
:
"/Course/SetBatchChapterNo"
,
method
:
'post'
,
data
})
}
/**
* 修改章节名称
* @param {JSON参数} data
*/
export
function
updateChapterName
(
data
)
{
return
request
({
url
:
"/Course/SetChapterName"
,
method
:
'post'
,
data
})
}
/**
* 获取课程销售端口
*/
...
...
src/api/users/user.js
View file @
8e3fed1c
...
...
@@ -87,3 +87,27 @@ export function getEmployeeAddrBook(data)
data
})
}
/**
* 个人资料修改
*/
export
function
setEmployeeBaseInfo
(
data
)
{
return
request
({
url
:
'/UserInfo/SetEmployeeBaseInfo'
,
method
:
'post'
,
data
})
}
/**
* 个人资料-修改密码
*/
export
function
updateUserPassword
(
data
)
{
return
request
({
url
:
'/UserInfo/UpdateUserPassword'
,
method
:
'post'
,
data
})
}
src/components/editor/UeEditor.vue
View file @
8e3fed1c
...
...
@@ -69,7 +69,8 @@
},
watch
:
{
value
(
newVal
,
oldVal
)
{
if
(
!
this
.
isInputChange
&&
newVal
)
{
console
.
log
(
"监听到变化1"
,
newVal
,
this
.
ue
.
isReady
,
this
.
isInputChange
)
if
(
!
this
.
isInputChange
)
{
if
(
this
.
ue
)
{
if
(
this
.
ue
.
isReady
!==
1
)
{
let
self
=
this
;
...
...
@@ -84,6 +85,7 @@
},
100
);
return
;
}
console
.
log
(
"监听到变化"
,
newVal
)
this
.
ue
.
setContent
(
newVal
);
}
else
{
this
.
tempContent
=
newVal
;
...
...
@@ -222,6 +224,9 @@
fileType
+
'" class="ans-insertaudio-module" module="_insertaudio">'
+
' </iframe></p>'
;
},
reloadNewValue
(){
this
.
isInputChange
=
false
},
loadUe
()
{
const
_this
=
this
;
//上传附件
...
...
src/pages/course/baseSet.vue
View file @
8e3fed1c
...
...
@@ -127,10 +127,9 @@
<q-input
filled
stack-label
:dense=
"false"
maxlength=
"8"
v-model=
"addMsg.DefaultClassNum"
label=
"默认班级人数"
ref=
"DefaultClassNum"
class=
"q-pb-lg"
@
keyup
.
native=
"checkInteger(addMsg,'DefaultClassNum')"
:rules=
"[val => !!val || '请填写默认班级人数']"
/>
<q-input
filled
stack-label
:dense=
"false"
maxlength=
"8"
v-model=
"addMsg.ClassNoPrefix"
label=
"班级编码
"
ref=
"ClassNoPrefix"
class=
"q-pb-lg"
@
keyup
.
native=
"checkInteger(addMsg,'ClassNoPrefix
')"
<q-input
filled
stack-label
maxlength=
"8"
v-model=
"addMsg.ClassNoPrefix"
label=
"班级编码(字母)
"
class=
"q-pb-lg"
onkeyup=
"this.value=this.value.replace(/[^a-zA-Z]/g,'
')"
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"persistent=false"
/>
<q-btn
label=
"确认"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
@
click=
"saveClassType()"
/>
...
...
@@ -219,6 +218,7 @@
CTypeName
:
''
,
//类型名称
AddHourFee
:
''
,
//课时费加价
DefaultClassNum
:
''
,
//默认班级人数
ClassNoPrefix
:
''
,
},
//列表数据参数
tabeMsg
:
{
...
...
src/pages/course/chapter.vue
View file @
8e3fed1c
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-body"
style=
"height: calc(100% - 30px);"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
</div>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
></div>
<div
class=
"page-option"
>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"编辑章节"
@
click=
"EditChapter(null)"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"编辑章节"
@
click=
"EditChapter(null)"
/>
</div>
</div>
<div
class=
"page-content"
>
<div
class=
"q-table-container q-table-dense"
>
<el-table
:data=
"data"
style=
"width: 100%;margin-bottom: 20px;"
row-key=
"ChapterId"
border
default-expand-all
:tree-props=
"
{children: 'ChildList'}">
<el-table-column
prop=
"ChapterName"
label=
"目录"
>
<div
class=
"page-content"
style=
"height:calc(100% - 42px)"
>
<q-scroll-area
:thumb-style=
"thumbStyle"
:content-style=
"contentStyle"
:content-active-style=
"contentActiveStyle"
style=
"height: 100%; width: 100%;"
>
<el-table
:data=
"dataList"
v-loading=
"loading"
:expand-row-keys=
"expandKeys"
:default-expand-all=
"true"
:row-class-name=
"tableRowClassName"
class=
"tree-tab-chapter"
style=
"width: 100%;margin-bottom: 20px;"
row-key=
"ChapterId"
ref=
"chapterTab"
@
row-click=
"rowsClick"
:tree-props=
"
{ children: 'ChildList', hasChildren: 'hasChildren' }"
>
<el-table-column
prop=
"date"
label=
"章节"
width=
"450"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
ChapterNo
}}
{{
scope
.
row
.
ChapterName
}}
</span>
<div
style=
"display: inline-block;"
>
<div
class=
"flex q-ml-md"
>
<div
class=
"catalog_num"
v-if=
"scope.row.ChapterNo.indexOf('.') == -1"
>
<span>
<i>
{{
scope
.
row
.
ChapterNo
}}
</i>
</span>
</div>
<div
style=
"margin-left: 36px;width:360px;"
class=
"ellipsis"
v-if=
"scope.row.ChapterNo.indexOf('.') == -1"
>
{{
scope
.
row
.
ChapterName
}}
</div>
<div
v-if=
"scope.row.ChapterNo.indexOf('.') != -1"
:style=
"
{ marginLeft: 20 * (scope.row.ChapterNo.split('.').length+1 - 2) + 'px' }"
>
{{
scope
.
row
.
ChapterNo
}}
</div>
<div
v-if=
"scope.row.ChapterNo.indexOf('.') != -1"
style=
"margin-left: 12px;"
class=
"ellipsis"
:style=
"
{width:(350-(20 * (scope.row.ChapterNo.split('.').length+1 - 2)))+'px'}"
>
{{
scope
.
row
.
ChapterName
}}
</div>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"OpenStatus"
label=
"开发状态"
width=
"200"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.OpenStatus==1||scope.row.OpenStatus==2"
>
<span>
开放
</span>
<el-table-column
prop=
"name"
label=
"课时"
sortable
width=
"100"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
StudyHours
}}
课时
</
template
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"章节详情"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<q-btn
flat
color=
"primary"
v-if=
"scope.row.ChapterNo.indexOf('.') != -1"
@
click
.
stop=
"viewDetail(scope.row)"
>
章节详情
</q-btn>
</
template
>
</el-table-column>
<el-table-column
prop=
"
Progress"
label=
"进度"
width=
"2
00"
>
<el-table-column
prop=
"
address"
label=
"状态"
width=
"1
00"
>
<
template
slot-scope=
"scope"
>
<q-linear-progress
stripe
size=
"10px"
:value=
"scope.row.Progress/100.0"
/>
<div
class=
"text-negative"
v-if=
"scope.row.OpenStatus == 0"
>
隐藏
</div>
<div
class=
"text-dark"
v-if=
"scope.row.OpenStatus == 1"
>
开放
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"200"
>
<el-table-column
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<a>
编辑
</a>
<a>
设置
</a>
<div
class=
"text-right op-box"
>
<q-btn
size=
"xs"
class=
"q-mr-md"
color=
"dark"
@
click
.
stop=
"EditChapter(scope.row.ChapterId)"
>
修改
</q-btn
>
<!--
<q-btn
size=
"xs"
flat
color=
"primary"
@
click
.
stop=
""
class=
"q-mr-md"
>
设置
</q-btn
>
-->
<q-btn
size=
"xs"
flat
color=
"negative"
@
click
.
stop=
"deleteObj(scope.row)"
>
删除
</q-btn
>
</div>
</
template
>
</el-table-column>
</el-table>
</
div
>
</
q-scroll-area
>
</div>
<q-dialog
v-model=
"isViewer"
v-if=
"viewObj"
>
<q-card
style=
"width: 540px;max-height:80%;"
>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"text-h6"
>
{{ viewObj.ChapterName }}
</div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<q-card-section>
<div
class=
"text-subtitle1 q-mb-md"
>
章节学习内容
</div>
<div
v-html=
"viewObj.ChapterContent"
v-if=
"viewObj.ChapterContent!=''"
class=
"q-pa-md bg-grey-2 rounded-borders"
></div>
<div
class=
"text-grey-3 text-center"
v-else
>
未添加内容
</div>
</q-card-section>
<q-card-section>
<div
class=
"text-subtitle1 q-mb-md"
>
教学重点
</div>
<div
v-html=
"viewObj.Objectives"
v-if=
"viewObj.ChapterContent!=''"
></div>
<div
class=
"text-grey-3 text-center"
v-else
>
未添加内容
</div>
</q-card-section>
<q-card-section>
<div
class=
"text-subtitle1 q-mb-md"
>
学生学习要求
</div>
<div
v-html=
"viewObj.Requirement"
v-if=
"viewObj.ChapterContent!=''"
></div>
<div
class=
"text-grey-3 text-center"
v-else
>
未添加内容
</div>
</q-card-section>
</q-card>
</q-dialog>
</div>
</template>
<
script
>
import
{
queryChapterTree
}
from
'../../api/course/index'
import
{
queryChapterTree
,
batchUpdateChapterNo
,
deleteChapters
}
from
"../../api/course/index"
;
import
{
openURL
}
from
"quasar"
;
export
default
{
meta
:
{
title
:
"章节管理"
},
computed
:
{},
watch
:
{},
data
()
{
return
{
currentUrl
:
""
,
selectedRowID
:
{},
dataList
:
[],
loading
:
true
,
msg
:
{
CourseId
:
0
},
CourseId
:
0
,
contentStyle
:
{
backgroundColor
:
"rgba(0,0,0,0.02)"
,
color
:
"#555"
},
contentActiveStyle
:
{
backgroundColor
:
"#eee"
,
color
:
"black"
},
export
default
{
meta
:
{
title
:
"章节管理"
thumbStyle
:
{
right
:
"2px"
,
borderRadius
:
"5px"
,
backgroundColor
:
"#027be3"
,
width
:
"5px"
,
opacity
:
0.75
},
expandKeys
:
[],
updateChapters
:
[],
updateNo
:
false
,
viewObj
:
null
,
isViewer
:
false
};
},
created
()
{
if
(
this
.
$route
.
query
.
CourseId
)
{
this
.
CourseId
=
this
.
$route
.
query
.
CourseId
;
this
.
msg
.
CourseId
=
this
.
CourseId
;
}
},
mounted
()
{
this
.
currentUrl
=
this
.
$route
.
path
;
this
.
getchaperTree
();
},
methods
:
{
viewDetail
(
obj
){
try
{
obj
.
ChapterContent
=
decodeURIComponent
(
obj
.
ChapterContent
)
obj
.
Objectives
=
decodeURIComponent
(
obj
.
Objectives
)
obj
.
Requirement
=
decodeURIComponent
(
obj
.
Requirement
)
}
catch
(
error
)
{
}
this
.
viewObj
=
obj
this
.
isViewer
=
true
},
components
:
{
tableRowClassName
({
row
,
rowIndex
})
{
if
(
row
.
ChapterNo
.
indexOf
(
"."
)
==
-
1
)
{
return
"first-level-node"
;
}
return
""
;
},
computed
:
{
deleteObj
(
data
)
{
this
.
$q
.
dialog
({
title
:
"删除确认"
,
message
:
"删除章节节点将会连同下属章节也会一并删除且无法恢复,你确定要这样执行吗"
,
cancel
:
{
label
:
"取消删除"
,
flat
:
true
},
ok
:
{
label
:
"确认"
,
flat
:
true
,
focus
:
true
,
color
:
"negative"
}
})
.
onOk
(()
=>
{
deleteChapters
({
CourseId
:
this
.
msg
.
CourseId
,
ChapterNo
:
data
.
ChapterNo
+
"."
,
ChapterId
:
data
.
ChapterId
}).
then
(
r
=>
{
this
.
updateNo
=
true
;
this
.
getchaperTree
();
//this.$refs.chapterTree.remove(data.ChapterId);
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"删除成功!"
,
position
:
"top"
});
});
})
.
onCancel
(()
=>
{
// console.log('>>>> Cancel')
});
},
watch
:
{
batchUpdate
()
{
batchUpdateChapterNo
(
this
.
updateChapters
).
then
(
r
=>
{});
},
data
()
{
return
{
currentUrl
:
""
,
selectedRowID
:
{},
data
:
[],
loading
:
true
,
msg
:
{
CourseId
:
0
,
},
CourseId
:
0
,
}
genernalNo
(
parentNo
,
list
)
{
list
.
forEach
((
x
,
i
)
=>
{
if
(
parentNo
!=
""
)
{
x
.
ChapterNo
=
parentNo
+
"."
+
(
i
+
1
);
}
else
{
x
.
ChapterNo
=
(
i
+
1
).
toString
();
}
this
.
updateChapters
.
push
({
ChapterNo
:
x
.
ChapterNo
,
ChapterId
:
x
.
ChapterId
,
ParentId
:
x
.
ParentId
});
if
(
x
.
ChildList
&&
x
.
ChildList
.
length
>
0
)
{
x
.
ChildList
=
this
.
genernalNo
(
x
.
ChapterNo
,
x
.
ChildList
);
}
});
return
list
;
},
created
()
{
if
(
this
.
$route
.
query
.
CourseId
)
{
this
.
CourseId
=
this
.
$route
.
query
.
CourseId
this
.
msg
.
CourseId
=
this
.
CourseId
;
}
rowsClick
(
row
,
column
,
event
)
{
//console.log(row,event)
this
.
$refs
.
chapterTab
.
toggleRowExpansion
(
row
);
},
mounted
()
{
this
.
currentUrl
=
this
.
$route
.
path
this
.
getchaperTree
();
//新增修改章节
EditChapter
(
obj
)
{
// this.$router.push({
// path: '/chapter-editor?courseId='+this.CourseId
// });
if
(
!
obj
)
{
openURL
(
window
.
location
.
origin
+
"/#/course/chapter-editor?courseId="
+
this
.
CourseId
);
}
else
{
openURL
(
window
.
location
.
origin
+
"/#/course/chapter-editor?courseId="
+
this
.
CourseId
+
"&chapter="
+
obj
);
}
},
methods
:
{
//新增修改章节
EditChapter
(
obj
)
{
//获取菜单分页列表
getchaperTree
()
{
this
.
loading
=
true
;
queryChapterTree
(
this
.
msg
)
.
then
(
res
=>
{
this
.
loading
=
false
;
res
.
Data
.
forEach
(
x
=>
{
this
.
expandKeys
.
push
(
x
.
ChapterId
);
});
console
.
log
(
this
.
expandKeys
);
},
//获取菜单分页列表
getchaperTree
()
{
this
.
loading
=
true
;
queryChapterTree
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
this
.
data
=
res
.
Data
;
}).
catch
(()
=>
{
this
.
loading
=
false
this
.
dataList
=
res
.
Data
;
if
(
this
.
updateNo
)
{
this
.
updateNo
=
false
;
this
.
updateChapters
=
[]
;
this
.
genernalNo
(
""
,
this
.
dataList
);
if
(
this
.
updateChapters
&&
this
.
updateChapters
.
length
>
0
)
{
this
.
batchUpdate
()
;
}
}
})
},
.
catch
(()
=>
{
this
.
loading
=
false
;
});
}
}
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
<
style
>
.tree-tab-chapter
thead
{
display
:
none
;
}
.tree-tab-chapter
td
{
border-bottom
:
none
!important
;
padding
:
5px
0
!important
;
}
.tree-tab-chapter
::before
{
display
:
none
!important
;
}
.tree-tab-chapter
.el-table__expand-icon
{
/* display: none !important; */
margin-right
:
0
!important
;
}
.tree-tab-chapter
.catalog_num
{
height
:
20px
;
padding-left
:
14px
;
background
:
#d0d5db
;
border-radius
:
10px
;
margin
:
10px
20px
0
0
;
position
:
absolute
;
left
:
15px
;
top
:
50%
;
margin-top
:
-10px
;
}
.tree-tab-chapter
.catalog_num
>
span
{
min-width
:
24px
;
height
:
24px
;
padding
:
4px
;
margin
:
-2px
-4px
0
0
;
background
:
#d0d5db
;
display
:
block
;
border-radius
:
20px
;
}
.tree-tab-chapter
.catalog_num
>
span
>
i
{
min-width
:
16px
;
height
:
16px
;
padding
:
0
2px
;
line-height
:
16px
;
background
:
#fff
;
font-size
:
12px
;
font-family
:
Arial
;
color
:
#a8a8b3
;
border-radius
:
20px
;
display
:
block
;
text-align
:
center
;
font-style
:
normal
;
}
.tree-tab-chapter
.first-level-node
{
background-color
:
#f5f7fa
!important
;
}
.tree-tab-chapter
.first-level-node
td
:first-child
{
border-top-left-radius
:
12px
;
border-bottom-left-radius
:
12px
;
}
.tree-tab-chapter
.first-level-node
td
:last-child
{
border-top-right-radius
:
12px
;
border-bottom-right-radius
:
12px
;
}
.tree-tab-chapter
tr
.op-box
{
display
:
none
;
}
.tree-tab-chapter
tr
:hover
.op-box
{
display
:
block
;
}
.tree-tab-chapter
.el-table__indent
{
display
:
none
!important
;
}
.tree-tab-chapter
.el-table__expand-icon
{
display
:
none
!important
;
}
/**@import url('~assets/css/table.sass')*/
</
style
>
src/pages/course/chapterEditor.vue
0 → 100644
View file @
8e3fed1c
<
template
>
<!--
<div
class=
"flex flex-start window-height"
style=
"min-width:1300px;overflow-x:auto;"
>
-->
<div
class=
"flex flex-start window-height"
>
<q-splitter
v-model=
"splitterModel"
:limits=
"[30, 100]"
style=
"height: 100%;width:100%"
>
<template
v-slot:before
>
<div
class=
"q-pa-lg full-height"
style=
"min-width:380px;"
>
<q-card
class=
"q-pa-md bg-dark text-white q-mb-lg"
>
<span>
{{
courseInfo
.
CourseName
}}
</span>
</q-card>
<div
class=
"q-gutter-xs q-pb-lg"
style=
"border-bottom:1px solid #f5f5f5;"
>
<q-btn
color=
"primary"
size=
"xs"
unelevated
label=
"同级目录"
@
click=
"addSameLevel"
></q-btn>
<q-btn
color=
"primary"
size=
"xs"
unelevated
label=
"子目录"
@
click=
"addChildLevel"
></q-btn>
<q-btn
color=
"primary"
size=
"xs"
title=
"向上移动"
:disable=
"!canUp"
@
click=
"moveUp"
outline
icon=
"iconfont icon-up"
></q-btn>
<q-btn
color=
"primary"
size=
"xs"
title=
"向下移动"
:disable=
"!canDown"
@
click=
"moveDown"
outline
icon=
"iconfont icon-down1"
></q-btn>
<q-btn
color=
"primary"
size=
"xs"
unelevated
label=
"导入 ..."
>
<q-tooltip>
此功能正在开发中。。。
</q-tooltip>
</q-btn>
</div>
<div
class=
"q-mt-lg"
style=
"height:calc(100% - 140px)"
>
<q-scroll-area
:thumb-style=
"thumbStyle"
:content-style=
"contentStyle"
:content-active-style=
"contentActiveStyle"
style=
"height: 100%; width: 100%;padding-right:10px;"
>
<el-tree
ref=
"chapterTree"
:default-expanded-keys=
"defaultChapterId"
@
node-click=
"changeNode"
v-loading=
"canOptions"
class=
"chapter-tree"
:data=
"dataList"
empty-text=
"暂无章节数据,请点击”添加同级“开始录入开始吧"
:props=
"defaultProps"
node-key=
"ChapterId"
@
node-drag-start=
"handleDragStart"
@
node-drag-enter=
"handleDragEnter"
@
node-drag-leave=
"handleDragLeave"
@
node-drag-over=
"handleDragOver"
@
node-drag-end=
"handleDragEnd"
@
node-drop=
"handleDrop"
draggable
:allow-drop=
"allowDrop"
:allow-drag=
"allowDrag"
>
<div
class=
"row chapter-node full-width"
slot-scope=
"
{ node, data }">
<div
class=
"q-mr-md"
>
{{
data
.
ChapterNo
.
length
>
1
?
data
.
ChapterNo
:
`0${data.ChapterNo
}
`
}}
<
/div
>
<
div
class
=
"col q-mr-xs"
v
-
if
=
"editorNodeId==data.ChapterId"
>
<
input
type
=
"text"
@
blur
=
"changeChapterName(data)"
maxlength
=
"100"
draggable
=
"true"
class
=
"tree-input"
v
-
focus
v
-
model
=
"data.ChapterName"
@
focus
=
"selectValue($event)"
/>
<
/div
>
<
div
class
=
"col q-mr-md ellipsis"
v
-
if
=
"editorNodeId!=data.ChapterId"
>
{{
data
.
ChapterName
}}
<
/div
>
<
div
class
=
"oops-box q-mr-xs"
v
-
if
=
"editorNodeId!=data.ChapterId"
>
<
q
-
btn
size
=
"xs"
flat
color
=
"primary"
label
=
"编辑"
@
click
.
stop
=
"editorNodeId=data.ChapterId"
><
/q-btn
>
<
q
-
btn
size
=
"xs"
flat
color
=
"negative"
label
=
"删除"
@
click
.
stop
=
"deleteObj(data)"
><
/q-btn
>
<
/div
>
<
div
class
=
"q-mr-xs rate-box"
>
<
q
-
badge
class
=
"bg-white text-grey-8"
>
{{
data
.
CourseRateName
.
replace
(
'课程'
,
''
)
}}
<
/q-badge
>
<
q
-
badge
class
=
"q-ml-xs bg-grey-3 text-dark"
>
{{
data
.
StudyMinutes
}}
分钟
<
/q-badge
>
<
/div
>
<
/div
>
<
/el-tree
>
<
/q-scroll-area
>
<
/div
>
<
/div
>
<
/template
>
<
template
v
-
slot
:
after
>
<
div
class
=
"col full-height q-pa-lg chapter-content scroll"
style
=
"min-width:900px;"
>
<
div
v
-
if
=
"chapter"
>
<
div
class
=
"text-h6 q-mb-md"
>
章节学习内容
<
/div
>
<
div
class
=
"row q-mb-md"
>
<
div
class
=
"col q-mr-md"
>
<
q
-
input
square
filled
label
=
"消耗分钟"
v
-
model
=
"chapter.StudyMinutes"
suffix
=
"分钟"
mask
=
"#"
fill
-
mask
=
"0"
reverse
-
fill
-
mask
><
/q-input
>
<
/div
>
<
div
class
=
"col"
>
<
q
-
select
:
options
=
"rateList"
option
-
label
=
"Name"
option
-
value
=
"Id"
square
filled
label
=
"关联等级"
v
-
model
=
"defauRateObj"
><
/q-select
>
<
/div
>
<
/div
>
<!--
<
div
v
-
if
=
"chapter.ParentId!=0"
>
-->
<
div
>
<
div
class
=
"text-h6 q-mb-md"
>
章节学习内容
<
/div
>
<
div
class
=
"q-mb-md"
>
<
editor
v
-
model
=
"chapter.ChapterContent"
@
blur
=
"changeContent"
placeHolder
=
"请输入章节学习内容"
:
config
=
"config"
ref
=
"chapterContent"
><
/editor
>
<
/div
>
<
div
class
=
"text-h6 q-mb-md"
>
教学重点
<
/div
>
<
div
class
=
"q-mb-md"
>
<
editor
v
-
model
=
"chapter.Objectives"
placeHolder
=
"请输入章节教学重点"
:
config
=
"config"
ref
=
"objectives"
><
/editor
>
<
/div
>
<
div
class
=
"text-h6 q-mb-md"
>
学生学习要求
<
/div
>
<
div
class
=
"q-mb-md"
>
<
editor
v
-
model
=
"chapter.Requirement"
placeHolder
=
"请输入章节学生学习要求"
:
config
=
"config"
ref
=
"requirement"
>
<
/editor
>
<
/div
>
<
/div
>
<!--
<
div
v
-
else
class
=
"text-center text-h5 text-grey-4 q-mt-lg"
>
单元节点不支持编辑相关内容
<
/div> --
>
<
/div
>
<
/div
>
<
/template
>
<
/q-splitter
>
<
q
-
btn
round
padding
=
"md"
v
-
if
=
"chapter && chapter.ChapterId>0"
@
click
=
"saveChapterUpdate"
:
loading
=
"submiting"
color
=
"primary"
class
=
"fixed-bottom-right"
label
=
"保存"
style
=
"z-index:9999999;right:20px;bottom:100px;"
>
<
template
v
-
slot
:
loading
>
<
q
-
spinner
-
ios
/>
<
/template
>
<
/q-btn
>
<
/div
>
<
/template
>
<
script
>
import
editor
from
"../../components/editor/UeEditor"
;
import
{
queryChapterTree
,
saveChapter
,
batchUpdateChapterNo
,
updateChapterName
,
getCourseRate
,
queryCourseInfo
,
deleteChapters
,
setChaptersRate
}
from
"../../api/course/index"
;
import
{
compareObject
}
from
'../../utils/validate'
import
{
extend
}
from
'quasar'
export
default
{
meta
:
{
title
:
"课程章节详情"
}
,
components
:
{
editor
}
,
directives
:
{
focus
:
{
// 指令的定义
inserted
:
function
(
el
)
{
el
.
focus
()
}
}
}
,
data
()
{
return
{
chapter
:
null
,
config
:
{
initialFrameWidth
:
null
,
initialFrameHeight
:
400
}
,
showContent
:
true
,
courseId
:
0
,
dataList
:
[],
defaultProps
:
{
children
:
'ChildList'
,
label
:
'ChapterName'
}
,
currentNode
:
null
,
canOptions
:
true
,
updateChapters
:
[],
editorNodeId
:
0
,
canUp
:
false
,
canDown
:
false
,
rateList
:
[],
defauRateObj
:
{
Id
:
8
,
Name
:
"其它"
}
,
courseInfo
:
{
}
,
submiting
:
false
,
bakObj
:
{
}
,
contentStyle
:
{
backgroundColor
:
'rgba(0,0,0,0.02)'
,
color
:
'#555'
}
,
contentActiveStyle
:
{
backgroundColor
:
'#eee'
,
color
:
'black'
}
,
thumbStyle
:
{
right
:
'2px'
,
borderRadius
:
'5px'
,
backgroundColor
:
'#027be3'
,
width
:
'5px'
,
opacity
:
0.75
}
,
defaultChapterId
:
0
,
splitterModel
:
30
//左侧默认占据多大
}
;
}
,
created
()
{
if
(
this
.
$route
.
query
.
chapter
)
{
this
.
defaultChapterId
=
this
.
$route
.
query
.
chapter
;
}
if
(
this
.
$route
.
query
.
courseId
)
{
this
.
courseId
=
this
.
$route
.
query
.
courseId
;
this
.
initTree
();
this
.
initRateList
();
this
.
getCourseInfo
();
}
}
,
mounted
()
{
this
.
showContent
=
false
;
setTimeout
(()
=>
{
this
.
showContent
=
true
;
}
,
3000
);
}
,
methods
:
{
changeContent
()
{
}
,
getCourseInfo
()
{
queryCourseInfo
({
CourseId
:
this
.
courseId
}
).
then
(
res
=>
{
this
.
courseInfo
=
res
.
Data
;
}
)
}
,
initRateList
()
{
getCourseRate
({
}
).
then
(
r
=>
{
this
.
rateList
=
r
.
Data
}
)
}
,
changeNode
(
data
,
node
,
ev
)
{
if
(
this
.
chapter
&&
this
.
chapter
.
ChapterId
>
0
)
{
if
(
this
.
defauRateObj
.
Id
!=
0
)
{
this
.
chapter
.
CourseRate
=
this
.
defauRateObj
.
Id
this
.
chapter
.
CourseRateName
=
this
.
defauRateObj
.
Name
}
if
(
!
compareObject
(
this
.
bakObj
,
this
.
chapter
,
false
))
{
this
.
saveChapterUpdate
()
if
(
this
.
bakObj
.
CourseRate
!=
this
.
chapter
.
CourseRate
)
{
if
(
this
.
chapter
.
ChildList
&&
this
.
chapter
.
ChildList
.
length
>
0
)
{
this
.
updateRate
()
this
.
updateRateNode
(
this
.
chapter
.
ChildList
)
}
}
}
}
try
{
data
.
ChapterContent
=
decodeURIComponent
(
data
.
ChapterContent
)
data
.
Objectives
=
decodeURIComponent
(
data
.
Objectives
)
data
.
Requirement
=
decodeURIComponent
(
data
.
Requirement
)
}
catch
(
error
)
{
}
data
.
StudyMinutes
=
data
.
StudyMinutes
.
toString
()
this
.
chapter
=
data
extend
(
this
.
bakObj
,
data
)
if
(
this
.
$refs
.
chapterContent
)
{
this
.
$refs
.
chapterContent
.
reloadNewValue
()
this
.
$refs
.
objectives
.
reloadNewValue
()
this
.
$refs
.
requirement
.
reloadNewValue
()
}
this
.
checkMove
(
node
)
this
.
rateList
.
forEach
(
x
=>
{
if
(
x
.
Id
==
data
.
CourseRate
)
{
this
.
defauRateObj
=
x
}
}
)
}
,
updateRate
()
{
setChaptersRate
({
CourseRate
:
this
.
defauRateObj
.
CourseRate
,
CourseId
:
this
.
courseId
,
ChapterNo
:
this
.
chapter
.
ChapterNo
+
"."
}
).
then
(
r
=>
{
//this.initTree()
}
)
}
,
updateRateNode
(
arr
)
{
arr
.
forEach
(
x
=>
{
x
.
CourseRate
=
this
.
defauRateObj
.
Id
x
.
CourseRateName
=
this
.
defauRateObj
.
Name
if
(
x
.
ChildList
&&
x
.
ChildList
.
length
>
0
)
{
this
.
updateRateNode
(
x
.
ChildList
)
}
}
)
}
,
deleteObj
(
data
)
{
this
.
$q
.
dialog
({
title
:
'删除确认'
,
message
:
'删除章节节点将会连同下属章节也会一并删除且无法恢复,你确定要这样执行吗'
,
cancel
:
{
label
:
"取消删除"
,
flat
:
true
}
,
ok
:
{
label
:
"确认"
,
flat
:
true
,
focus
:
true
,
color
:
"negative"
}
}
).
onOk
(()
=>
{
deleteChapters
({
CourseId
:
this
.
courseId
,
ChapterNo
:
data
.
ChapterNo
+
"."
,
ChapterId
:
data
.
ChapterId
}
).
then
(
r
=>
{
//this.initTree()
this
.
$refs
.
chapterTree
.
remove
(
data
.
ChapterId
)
this
.
updateChapters
=
[]
this
.
genernalNo
(
""
,
this
.
dataList
)
if
(
this
.
updateChapters
&&
this
.
updateChapters
.
length
>
0
)
{
this
.
batchUpdate
()
}
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'删除成功!'
,
position
:
'top'
}
)
}
)
}
).
onCancel
(()
=>
{
// console.log('>>>> Cancel')
}
)
}
,
saveChapterUpdate
()
{
if
(
!
this
.
submiting
)
{
this
.
submiting
=
true
if
(
this
.
defauRateObj
.
Id
!=
0
)
{
this
.
chapter
.
CourseRate
=
this
.
defauRateObj
.
Id
this
.
chapter
.
CourseRateName
=
this
.
defauRateObj
.
Name
}
let
msg
=
{
}
extend
(
msg
,
this
.
chapter
)
msg
.
ChapterContent
=
encodeURIComponent
(
msg
.
ChapterContent
)
msg
.
Objectives
=
encodeURIComponent
(
msg
.
Objectives
)
msg
.
Requirement
=
encodeURIComponent
(
msg
.
Requirement
)
saveChapter
(
msg
).
then
(
r
=>
{
this
.
submiting
=
false
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
}
)
if
(
this
.
bakObj
.
CourseRate
!=
this
.
defauRateObj
.
Id
)
{
if
(
this
.
chapter
.
ChildList
&&
this
.
chapter
.
ChildList
.
length
>
0
)
{
this
.
updateRate
()
this
.
updateRateNode
(
this
.
chapter
.
ChildList
)
}
extend
(
this
.
bakObj
,
this
.
chapter
)
}
}
).
catch
(
e
=>
{
this
.
submiting
=
false
}
)
}
}
,
checkMove
(
node
)
{
let
noTemp
=
node
.
data
.
ChapterNo
.
split
(
'.'
)
let
no
=
parseInt
(
noTemp
[
noTemp
.
length
-
1
])
let
p
=
node
.
parent
.
data
this
.
canUp
=
no
!=
1
this
.
canDown
=
no
!=
p
.
length
}
,
moveUp
()
{
let
data
=
this
.
$refs
.
chapterTree
.
getCurrentNode
()
let
node
=
this
.
$refs
.
chapterTree
.
getNode
(
data
.
ChapterId
)
console
.
log
(
data
)
if
(
node
)
{
let
noTemp
=
data
.
ChapterNo
.
toString
().
split
(
'.'
)
let
no
=
parseInt
(
noTemp
[
noTemp
.
length
-
1
])
-
1
let
p
=
node
.
parent
.
data
if
(
data
.
ParentId
==
0
)
{
p
=
this
.
swapArray
(
p
,
no
,
no
-
1
)
}
else
{
p
.
ChildList
=
this
.
swapArray
(
p
.
ChildList
,
no
,
no
-
1
)
}
node
.
parent
.
childNodes
=
this
.
swapArray
(
node
.
parent
.
childNodes
,
no
,
no
-
1
)
this
.
updateChapters
=
[]
this
.
genernalNo
(
""
,
this
.
dataList
)
this
.
checkMove
(
this
.
$refs
.
chapterTree
.
getNode
(
data
.
ChapterId
))
if
(
this
.
updateChapters
&&
this
.
updateChapters
.
length
>
0
)
{
this
.
batchUpdate
()
}
}
}
,
moveDown
()
{
let
data
=
this
.
$refs
.
chapterTree
.
getCurrentNode
()
let
node
=
this
.
$refs
.
chapterTree
.
getNode
(
data
.
ChapterId
)
console
.
log
(
data
)
if
(
node
)
{
let
noTemp
=
data
.
ChapterNo
.
toString
().
split
(
'.'
)
let
no
=
parseInt
(
noTemp
[
noTemp
.
length
-
1
])
-
1
let
p
=
node
.
parent
.
data
if
(
data
.
ParentId
==
0
)
{
p
=
this
.
swapArray
(
p
,
no
,
no
+
1
)
}
else
{
p
.
ChildList
=
this
.
swapArray
(
p
.
ChildList
,
no
,
no
+
1
)
}
node
.
parent
.
childNodes
=
this
.
swapArray
(
node
.
parent
.
childNodes
,
no
,
no
+
1
)
this
.
updateChapters
=
[]
this
.
genernalNo
(
""
,
this
.
dataList
)
this
.
checkMove
(
this
.
$refs
.
chapterTree
.
getNode
(
data
.
ChapterId
))
if
(
this
.
updateChapters
&&
this
.
updateChapters
.
length
>
0
)
{
this
.
batchUpdate
()
}
}
}
,
swapArray
(
arr
,
index1
,
index2
)
{
arr
[
index1
]
=
arr
.
splice
(
index2
,
1
,
arr
[
index1
])[
0
];
return
arr
;
}
,
selectValue
(
e
)
{
e
.
currentTarget
.
select
();
}
,
changeChapterName
(
data
)
{
this
.
editorNodeId
=
0
let
msg
=
{
ChapterId
:
data
.
ChapterId
,
ChapterName
:
data
.
ChapterName
}
updateChapterName
(
msg
).
then
(
r
=>
{
}
)
}
,
addSameLevel
()
{
let
temp
=
this
.
$refs
.
chapterTree
.
getCurrentNode
()
if
(
!
temp
||
temp
.
ParentId
==
0
)
{
let
no
=
this
.
dataList
&&
this
.
dataList
.
length
>
0
?
(
this
.
dataList
.
length
+
1
)
:
1
let
t
=
this
.
createNewNode
(
0
,
no
,
8
,
'其它'
)
saveChapter
(
t
).
then
(
r
=>
{
t
.
ChapterId
=
r
.
Data
.
ChapterId
this
.
dataList
.
push
(
t
)
}
)
}
else
{
let
parentTemp
=
this
.
$refs
.
chapterTree
.
getNode
(
temp
.
ParentId
).
data
let
no
=
parentTemp
.
ChildList
&&
parentTemp
.
ChildList
.
length
>
0
?
(
parentTemp
.
ChildList
.
length
+
1
)
:
1
no
=
parentTemp
.
ChapterNo
+
"."
+
no
let
t
=
this
.
createNewNode
(
parentTemp
.
ChapterId
,
no
,
parentTemp
.
CourseRate
,
parentTemp
.
CourseRateName
)
saveChapter
(
t
).
then
(
r
=>
{
t
.
ChapterId
=
r
.
Data
.
ChapterId
parentTemp
.
ChildList
.
push
(
t
)
}
)
}
}
,
addChildLevel
()
{
let
temp
=
this
.
$refs
.
chapterTree
.
getCurrentNode
()
if
(
!
temp
)
{
let
no
=
this
.
dataList
&&
this
.
dataList
.
length
>
0
?
(
this
.
dataList
.
length
+
1
)
:
1
let
t
=
this
.
createNewNode
(
0
,
no
,
8
,
'其它'
)
saveChapter
(
t
).
then
(
r
=>
{
t
.
ChapterId
=
r
.
Data
.
ChapterId
this
.
dataList
.
push
(
t
)
}
)
}
else
{
if
(
!
temp
.
ChildList
)
{
this
.
$set
(
temp
,
'ChildList'
,
[])
}
let
no
=
temp
.
ChildList
&&
temp
.
ChildList
.
length
>
0
?
(
temp
.
ChildList
.
length
+
1
)
:
1
no
=
temp
.
ChapterNo
+
"."
+
no
let
t
=
this
.
createNewNode
(
temp
.
ChapterId
,
no
,
temp
.
CourseRate
,
temp
.
CourseRateName
)
saveChapter
(
t
).
then
(
r
=>
{
t
.
ChapterId
=
r
.
Data
.
ChapterId
temp
.
ChildList
.
push
(
t
)
}
)
}
}
,
handleDragStart
(
node
,
ev
)
{
console
.
log
(
'drag start'
,
node
);
}
,
handleDragEnter
(
draggingNode
,
dropNode
,
ev
)
{
console
.
log
(
'tree drag enter: '
,
dropNode
.
label
);
}
,
handleDragLeave
(
draggingNode
,
dropNode
,
ev
)
{
console
.
log
(
'tree drag leave: '
,
dropNode
.
label
);
}
,
handleDragOver
(
draggingNode
,
dropNode
,
ev
)
{
console
.
log
(
'tree drag over: '
,
dropNode
.
label
);
}
,
handleDragEnd
(
draggingNode
,
dropNode
,
dropType
,
ev
)
{
console
.
log
(
draggingNode
,
dropNode
,
dropType
)
this
.
updateChapters
=
[]
if
(
dropType
==
'inner'
)
{
draggingNode
.
data
.
ParentId
=
dropNode
.
data
.
ChapterId
}
else
{
draggingNode
.
data
.
ParentId
=
dropNode
.
data
.
ParentId
}
this
.
genernalNo
(
""
,
this
.
dataList
)
if
(
this
.
updateChapters
&&
this
.
updateChapters
.
length
>
0
)
{
this
.
batchUpdate
()
}
}
,
handleDrop
(
draggingNode
,
dropNode
,
dropType
,
ev
)
{
}
,
allowDrop
(
draggingNode
,
dropNode
,
type
)
{
// if (dropNode.data.ChapterName === '二级 3-1')
{
// return type !== 'inner';
//
}
else
{
return
true
;
//
}
}
,
allowDrag
(
draggingNode
)
{
return
true
;
}
,
initTree
()
{
this
.
canOptions
=
true
queryChapterTree
({
CourseId
:
this
.
courseId
}
).
then
(
r
=>
{
console
.
log
(
r
);
this
.
dataList
=
r
.
Data
this
.
canOptions
=
false
if
(
this
.
defaultChapterId
!=
0
)
{
setTimeout
(()
=>
{
this
.
$refs
.
chapterTree
.
setCurrentKey
(
this
.
defaultChapterId
)
let
t
=
this
.
$refs
.
chapterTree
.
getNode
(
this
.
defaultChapterId
)
this
.
changeNode
(
t
.
data
,
t
,
null
)
}
,
1000
);
}
}
);
}
,
createNewNode
(
pid
,
no
,
rate
,
crn
)
{
if
(
this
.
canOptions
)
return
;
let
name
=
""
if
(
pid
==
0
)
{
name
=
`第${this.toChinesNum(no)
}
单元`
}
else
{
let
d
=
no
.
split
(
'.'
)
name
=
`第${this.toChinesNum(d[d.length-1])
}
课时`
}
return
{
ChapterId
:
0
,
ParentId
:
pid
,
ChapterContent
:
""
,
ChapterName
:
name
,
CourseId
:
this
.
courseId
,
ChapterNo
:
no
.
toString
(),
OpenStatus
:
1
,
Progress
:
0
,
Objectives
:
""
,
Requirement
:
""
,
StudyMinutes
:
0
,
ChildList
:
[],
CourseRate
:
rate
,
CourseRateName
:
crn
}
}
,
toChinesNum
(
num
)
{
let
changeNum
=
[
'零'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'七'
,
'八'
,
'九'
];
//changeNum[0] = "零"
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
);
}
,
genernalNo
(
parentNo
,
list
)
{
list
.
forEach
((
x
,
i
)
=>
{
if
(
parentNo
!=
""
)
{
x
.
ChapterNo
=
parentNo
+
"."
+
(
i
+
1
)
}
else
{
x
.
ChapterNo
=
(
i
+
1
).
toString
()
}
this
.
updateChapters
.
push
({
ChapterNo
:
x
.
ChapterNo
,
ChapterId
:
x
.
ChapterId
,
ParentId
:
x
.
ParentId
}
)
if
(
x
.
ChildList
&&
x
.
ChildList
.
length
>
0
)
{
x
.
ChildList
=
this
.
genernalNo
(
x
.
ChapterNo
,
x
.
ChildList
)
}
}
)
return
list
}
,
batchUpdate
()
{
batchUpdateChapterNo
(
this
.
updateChapters
).
then
(
r
=>
{
console
.
log
(
x
)
}
)
}
}
}
;
<
/script
>
<
style
>
.
chapter
-
tree
.
chapter
-
node
.
oops
-
box
,
.
chapter
-
tree
.
chapter
-
node
:
hover
.
rate
-
box
{
display
:
none
;
}
.
chapter
-
tree
.
chapter
-
node
:
hover
.
oops
-
box
,
.
chapter
-
tree
.
chapter
-
node
.
rate
-
box
{
display
:
block
;
}
.
chapter
-
tree
.
el
-
tree
-
node__content
{
height
:
32
px
!
important
;
padding
-
right
:
20
px
;
}
.
chapter
-
tree
.
el
-
tree
-
node__content
:
hover
,
.
chapter
-
tree
.
is
-
current
>
.
el
-
tree
-
node__content
{
background
:
#
eaeff7
!
important
;
}
.
chapter
-
tree
.
el
-
tree
-
node__content
{
border
-
radius
:
4
px
;
}
.
chapter
-
tree
.
tree
-
input
{
outline
:
none
;
border
:
none
;
padding
:
0
5
px
;
font
-
size
:
14
px
;
width
:
100
%
}
<
/style
>
src/pages/course/classManage.vue
View file @
8e3fed1c
...
...
@@ -65,10 +65,17 @@
</
template
>
<
template
v-slot:body-cell-ClassName=
"props"
>
<q-td
auto-width
:props=
"props"
>
<q-avatar
size=
"md"
style=
"background:#d4dfff;color:#2961FE;font-weight:bold;"
v-if=
"props.row.ClassName"
>
{{
GetFirst
(
props
.
row
.
ClassName
)
}}
</q-avatar>
<span
style=
"color:#2961FE;margin-left:10px;cursor:pointer;"
@
click=
"getClassInfo(props.row)"
title=
"点击查看详情"
>
{{
props
.
row
.
ClassName
}}
</span>
<div
style=
"display: flex;align-items: center;"
>
<q-avatar
size=
"md"
style=
"background:#d4dfff;color:#2961FE;font-weight:bold;"
v-if=
"props.row.ClassName"
>
{{
GetFirst
(
props
.
row
.
ClassName
)
}}
</q-avatar>
<div
>
<span
style=
"color:#2961FE;margin-left:10px;cursor:pointer;"
@
click=
"getClassInfo(props.row)"
title=
"点击查看详情"
>
{{
props
.
row
.
ClassName
}}
</span>
<div
style=
"margin-left: 10px;"
>
{{
props
.
row
.
ClassNo
}}
</div>
</div>
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-OtherCourseName=
"props"
>
...
...
src/pages/course/course.vue
View file @
8e3fed1c
...
...
@@ -144,9 +144,9 @@
<q-item-label>
恢复
</q-item-label>
</q-item-section>
</q-item>
<q-item
style=
"display:none;"
clickable
v-close-popup
@
click=
"goMycourse(props.row)"
>
<q-item
clickable
v-close-popup
@
click=
"goMycourse(props.row)"
>
<q-item-section>
<q-item-label>
详情
</q-item-label>
<q-item-label>
课程
详情
</q-item-label>
</q-item-section>
</q-item>
</q-list>
...
...
@@ -172,6 +172,7 @@
import
courseForm
from
"../../components/course/course-form"
;
import
coursepriceForm
from
"../../components/course/courseprice-form"
;
import
selectTree
from
"../../components/common/select-tree"
;
import
{
openURL
}
from
"quasar"
;
import
{
mapState
}
from
"vuex"
;
...
...
@@ -452,10 +453,11 @@
},
//跳转至我的课程
goMycourse
(
obj
)
{
var
tempStr
=
"/course/courseinfo?CourseId="
+
obj
.
CourseId
;
this
.
$router
.
push
({
path
:
tempStr
});
var
tempStr
=
window
.
location
.
origin
+
"/#/course/courseinfo?CourseId="
+
obj
.
CourseId
;
// this.$router.push({
// path: tempStr
// });
openURL
(
tempStr
)
}
}
};
...
...
src/pages/course/courseinfo.vue
View file @
8e3fed1c
...
...
@@ -76,7 +76,12 @@
<div
class=
"full-width course-menu-box q-pt-md"
>
<q-list
style=
"width:180px;overflow:hidden"
>
<div
class=
"classD1"
>
<img
style=
"width:100%;height:100%;"
alt=
""
:src=
"courseInfo.CoverImg"
/>
<template
v-if=
"courseInfo.CoverImg"
>
<img
style=
"width:100%;height:100%;"
alt=
""
:src=
"courseInfo.CoverImg"
/>
</
template
>
<
template
v-else
>
<img
style=
"width:100%;height:100%;"
alt=
""
src=
"../../assets/images/default.png"
/>
</
template
>
</div>
<div
class=
"text_Degree"
>
{{courseInfo.CourseName}}
</div>
<div
class=
"nav-content"
>
...
...
@@ -84,15 +89,15 @@
<!-- <li :class="{'checkedLi':commonIndex==1}" @click="gotoPage('question',1)">
<i class="iconfont icon-tiku"></i>题库
</li> -->
<li
:class=
"
{'checkedLi':commonIndex==2}" @click="gotoPage('teachplan',2)">
<
!-- <
li :class="{'checkedLi':commonIndex==2}" @click="gotoPage('teachplan',2)">
<i style="font-size:20px;" class="iconfont icon-PPT"></i>教案
</li>
</li>
-->
<li
:class=
"{'checkedLi':commonIndex==3}"
@
click=
"gotoPage('chapter',3)"
>
<i
class=
"iconfont icon-icon_zhangjielianxi"
></i>
章节
</li>
<li
:class=
"
{'checkedLi':commonIndex==4}" @click="gotoPage('coursejob',4)">
<
!-- <
li :class="{'checkedLi':commonIndex==4}" @click="gotoPage('coursejob',4)">
<i class="iconfont icon-icon_zhangjielianxi"></i>作业
</li>
</li>
-->
</ul>
</div>
</q-list>
...
...
@@ -130,7 +135,7 @@
opacity
:
0.5
},
CourseId
:
0
,
commonIndex
:
2
,
//选中
commonIndex
:
3
,
//选中
courseInfo
:
{},
//课程信息
}
},
...
...
@@ -166,7 +171,7 @@
this
.
getCourseInfo
();
},
mounted
()
{
this
.
gotoPage
(
'
teachplan'
,
2
);
this
.
gotoPage
(
'
chapter'
,
3
);
},
methods
:
{
//获取课程信息
...
...
src/pages/financial/CashAccount.vue
View file @
8e3fed1c
...
...
@@ -407,8 +407,8 @@
</el-form-item>
</el-col>
<el-col
:span=
"4"
:gutter=
"35"
class=
"_BranchIdS"
>
<el-form-item
label=
"校区"
prop=
"Branch
IdS
"
>
<el-select
filterable
v-model=
'addMsg.BranchIdS
'
>
<el-form-item
label=
"校区"
prop=
"Branch
List
"
>
<el-select
filterable
multiple
v-model=
'addMsg.BranchList
'
>
<el-option
v-for=
'item in CompanyList'
:label=
'item.SName'
:value=
'item.SId'
:key=
'item.SId'
:disabled=
"item.disabled"
>
</el-option>
...
...
@@ -609,7 +609,10 @@
required
:
true
,
message
:
this
.
$t
(
'rule.qxzfyleixing'
),
trigger
:
'change'
},
]
},
],
BranchList
:[{
type
:
'array'
,
required
:
true
,
message
:
'请选择校区'
,
trigger
:
'change'
}]
},
addCuren
:
true
,
ed
:
false
,
...
...
@@ -657,14 +660,18 @@
methods
:
{
goUrlNew
(
item
)
{
let
path
=
"CashAccDetail"
;
this
.
$router
.
push
({
name
:
path
,
query
:
{
"TypeId"
:
item
.
TypeId
,
// this.$router.push({
// name: path,
// query: {
// "TypeId": item.TypeId,
// 'ID': item.ID,
// blank: "y",
// }
// })
this
.
OpenNewUrl
(
'/financial/accDetail/'
+
path
,
{
"TypeId"
:
item
.
TypeId
,
'ID'
:
item
.
ID
,
blank
:
"y"
,
}
})
});
},
regNum
(
n
,
t
)
{
// 判断数字 n 值 t 类型
let
reg
=
/^
\d
+
(\.\d{0,6})?
$/
...
...
@@ -804,11 +811,16 @@
ID
:
id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
.
data
))
;
data
.
BranchIdS
=
data
.
BranchList
[
0
].
RB_Branch_Id
;
// this.remoteMethod(data.InemName)
// this.remoteMethod2(data.OutemName)
this
.
addMsg
=
data
;
//6-30新加 校区可以多选
this
.
addMsg
.
BranchList
=
[]
res
.
data
.
data
.
BranchList
.
forEach
(
x
=>
{
this
.
addMsg
.
BranchList
.
push
(
x
.
RB_Branch_Id
)
})
// this.disabledOption();
}
else
{
this
.
tips
(
res
.
data
.
message
,
'error'
);
...
...
@@ -887,7 +899,7 @@
},
err
=>
{})
},
addInstitutions
()
{
// 保存 修改、新增
this
.
addMsg
.
BranchList
=
[];
//
this.addMsg.BranchList = [];
if
(
!
this
.
addMsg
.
RiskLimitMoney
)
{
this
.
addMsg
.
RiskLimitMoney
=
0
;
}
...
...
@@ -895,13 +907,28 @@
obj
=
this
.
CompanyList
.
find
(
item
=>
{
return
item
.
SId
===
this
.
addMsg
.
BranchIdS
;
//筛选出匹配数据
});
let
msg
=
{
ID
:
0
,
Type
:
2
,
RB_Branch_Id
:
this
.
addMsg
.
BranchIdS
,
RB_BranchName
:
obj
.
SName
}
this
.
addMsg
.
BranchList
.
push
(
msg
);
// let msg = {
// ID: 0,
// Type: 2,
// RB_Branch_Id: this.addMsg.BranchIdS,
// RB_BranchName: obj.SName
// }
// this.addMsg.BranchList.push(msg);
let
data
=
[];
this
.
addMsg
.
BranchList
.
forEach
(
x
=>
{
this
.
CompanyList
.
map
(
j
=>
{
//筛选出匹配数据
if
(
x
==
j
.
SId
){
let
msg
=
{
ID
:
0
,
Type
:
2
,
RB_Branch_Id
:
j
.
SId
,
RB_BranchName
:
j
.
SName
}
data
.
push
(
msg
)
}
})
})
this
.
addMsg
.
BranchList
=
data
;
this
.
apipost
(
'BankAccount_post_SetCashAccount'
,
this
.
addMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
tips
(
'保存成功!'
,
'success'
)
...
...
src/pages/financial/CompanyAccount.vue
View file @
8e3fed1c
...
...
@@ -413,6 +413,7 @@
</span></span>
</el-tooltip>
</p>
<p
v-if=
"item.IsStandardCurrency!=1"
>
<span
class=
"_name"
>
{{
$t
(
'fnc.sqisunyi'
)
}}
</span>
<span
class=
"fr"
v-if=
"item.ProfitLossMoney&&item.ProfitLossMoney!=0"
...
...
@@ -518,8 +519,8 @@
</el-form-item>
</el-col>
<el-col
:span=
"4"
:gutter=
"35"
class=
"_BranchIdS"
>
<el-form-item
label=
"校区"
prop=
"BranchIdS
"
>
<el-select
filterable
v-model=
'addMsg.BranchIdS
'
>
<el-form-item
label=
"校区"
prop=
"BranchList
"
>
<el-select
filterable
multiple
v-model=
'addMsg.BranchList
'
>
<el-option
v-for=
'item in CompanyList'
:label=
'item.SName'
:value=
'item.SId'
:key=
'item.SId'
:disabled=
"item.disabled"
>
</el-option>
...
...
@@ -724,7 +725,11 @@
required
:
true
,
message
:
this
.
$t
(
'rule.qxzfyleixing'
),
trigger
:
'change'
},
]
},
],
BranchList
:[{
type
:
'array'
,
required
:
true
,
message
:
'请选择校区'
,
trigger
:
'change'
}]
},
addCuren
:
true
,
ed
:
false
,
...
...
@@ -845,14 +850,19 @@
},
goUrlNew
(
item
)
{
let
path
=
"CompanyAccDetail"
;
this
.
$router
.
push
({
name
:
path
,
query
:
{
"TypeId"
:
item
.
TypeId
,
'ID'
:
item
.
ID
,
blank
:
"y"
,
}
})
// this.$router.push({
// name: path,
// query: {
// "TypeId": item.TypeId,
// 'ID': item.ID,
// blank: "y",
// }
// })
this
.
OpenNewUrl
(
'/financial/accDetail/'
+
path
,
{
"TypeId"
:
item
.
TypeId
,
'ID'
:
item
.
ID
,
});
},
goUrl
(
path
,
id
,
name
,
source
,
CurrencyId
)
{
this
.
$router
.
push
({
...
...
@@ -921,9 +931,14 @@
ID
:
id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
;
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
.
data
))
;
data
.
BranchIdS
=
data
.
BranchList
[
0
].
RB_Branch_Id
;
this
.
addMsg
=
data
;
//6-30新加 校区可以多选
this
.
addMsg
.
BranchList
=
[]
res
.
data
.
data
.
BranchList
.
forEach
(
x
=>
{
this
.
addMsg
.
BranchList
.
push
(
x
.
RB_Branch_Id
)
})
// this.disabledOption();
}
else
{
this
.
tips
(
res
.
data
.
message
,
'error'
);
...
...
@@ -1006,7 +1021,7 @@
},
err
=>
{})
},
addInstitutions
()
{
// 保存 修改、新增
this
.
addMsg
.
BranchList
=
[];
//
this.addMsg.BranchList = [];
if
(
!
this
.
addMsg
.
RiskLimitMoney
)
{
this
.
addMsg
.
RiskLimitMoney
=
0
;
}
...
...
@@ -1014,13 +1029,29 @@
obj
=
this
.
CompanyList
.
find
(
item
=>
{
return
item
.
SId
===
this
.
addMsg
.
BranchIdS
;
//筛选出匹配数据
});
let
msg
=
{
ID
:
0
,
Type
:
2
,
RB_Branch_Id
:
this
.
addMsg
.
BranchIdS
,
RB_BranchName
:
obj
.
SName
}
this
.
addMsg
.
BranchList
.
push
(
msg
);
let
data
=
[];
this
.
addMsg
.
BranchList
.
forEach
(
x
=>
{
this
.
CompanyList
.
map
(
j
=>
{
//筛选出匹配数据
if
(
x
==
j
.
SId
){
let
msg
=
{
ID
:
0
,
Type
:
2
,
RB_Branch_Id
:
j
.
SId
,
RB_BranchName
:
j
.
SName
}
data
.
push
(
msg
)
}
})
})
// let msg = {
// ID: 0,
// Type: 2,
// RB_Branch_Id: this.addMsg.BranchIdS,
// RB_BranchName: obj.SName
// }
// this.addMsg.BranchList.push(msg);
this
.
addMsg
.
BranchList
=
data
;
this
.
apipost
(
'bankaccount_post_Set'
,
this
.
addMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
tips
(
this
.
$t
(
'tips.saveYes'
),
"success"
);
...
...
src/pages/financial/TeamRevenueReport.vue
View file @
8e3fed1c
...
...
@@ -1069,7 +1069,6 @@
titleAlign
:
"left"
,
columnAlign
:
"left"
,
isResize
:
true
,
isFrozen
:
true
,
},
{
field
:
"ClassState"
,
...
...
@@ -1080,7 +1079,6 @@
isResize
:
true
,
result
:
[],
type
:
"select"
,
isFrozen
:
true
,
formatter
:
function
(
rowData
,
rowIndex
,
pagingIndex
,
field
)
{
let
state
=
rowData
.
ClassState
let
text
=
''
...
...
@@ -1104,7 +1102,6 @@
isResize
:
true
,
result
:
[],
type
:
"select"
,
isFrozen
:
true
},
{
field
:
"TeacherName"
,
...
...
@@ -1113,12 +1110,11 @@
titleAlign
:
"left"
,
columnAlign
:
"left"
,
isResize
:
true
,
isFrozen
:
true
,
},
{
field
:
"YingShou"
,
formatter
:
this
.
moneyFormat
,
title
:
"
应收
"
,
title
:
"
原价
"
,
width
:
100
,
titleAlign
:
"left"
,
columnAlign
:
"right"
,
...
...
src/pages/financial/accDetail/CashAccDetail.vue
View file @
8e3fed1c
...
...
@@ -501,6 +501,9 @@
this
.
msg
.
eTradeDate
=
this
.
$route
.
query
.
eTradeDate
;
this
.
productionDate
=
[
this
.
msg
.
sTradeDate
,
this
.
msg
.
eTradeDate
];
this
.
productionDateByTC
=
[
this
.
msg
.
QStartDate
,
this
.
msg
.
QEndDate
];
this
.
msg
.
RB_Branch_Id
=
Number
(
this
.
$route
.
query
.
RB_Branch_Id
)
this
.
getList
();
this
.
BankAccount_post_GetCashAccountList
(
"query"
);
}
...
...
src/pages/financial/accDetail/CompanyAccDetail.vue
View file @
8e3fed1c
...
...
@@ -565,6 +565,8 @@
this
.
msg
.
eTradeDate
=
this
.
$route
.
query
.
eTradeDate
?
this
.
$route
.
query
.
eTradeDate
:
""
;
this
.
productionDate
=
[
this
.
msg
.
sTradeDate
,
this
.
msg
.
eTradeDate
];
this
.
productionDateByTC
=
[
this
.
msg
.
QStartDate
,
this
.
msg
.
QEndDate
];
this
.
msg
.
RB_Branch_Id
=
Number
(
this
.
$route
.
query
.
RB_Branch_Id
)
this
.
getList
();
this
.
bankaccount_post_GetListS
(
"query"
);
}
...
...
src/pages/financial/accDetail/PlatformAccDetail.vue
View file @
8e3fed1c
...
...
@@ -460,6 +460,8 @@
this
.
msg
.
eTradeDate
=
this
.
$route
.
query
.
eTradeDate
;
this
.
productionDate
=
[
this
.
msg
.
sTradeDate
,
this
.
msg
.
eTradeDate
];
this
.
productionDateByTC
=
[
this
.
msg
.
QStartDate
,
this
.
msg
.
QEndDate
];
this
.
msg
.
RB_Branch_Id
=
Number
(
this
.
$route
.
query
.
RB_Branch_Id
)
this
.
getList
();
this
.
BankAccount_post_GetPlatformList
(
"query"
);
}
...
...
src/pages/financial/accDetail/newCashReport.vue
0 → 100644
View file @
8e3fed1c
<
style
scoped
>
@import
"../css/cssReset.css"
;
.page_fnDm
{
background-color
:
white
}
.query-box
{
overflow
:
inherit
}
.query-box
{
border
:
none
}
.query-box
ul
{
overflow
:
initial
;
}
.query-box
li
:last-child
{
float
:
left
}
.query-box
>
ul
>
li
:last-child
{
float
:
right
;
}
.query-box
.hight_query
ul
.el-input
{
width
:
inherit
}
.page_CashReport
.query-box
li
:last-child
{
top
:
35px
;
}
.page_CashReport
._fnDm_content
{
width
:
100%
;
}
.page_CashReport
.singeRowTable
tr
th
{
border
:
1px
solid
#d2d2d2
;
}
</
style
>
<
template
>
<div
class=
"page_fnDm page_CashReport page-body"
@
keyup
.
enter=
"getList()"
>
<div
class=
"query-box"
>
<el-form
class=
"_info_box clearfix"
label-width=
"110px"
>
<el-row
style=
"padding:15px 20px 0 0;"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"交易日期:"
>
<el-date-picker
class=
"h34"
v-model=
"transactionDate"
@
change=
"timeAdd(3)"
type=
"daterange"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
label=
"校区"
>
<el-select
filterable
v-model=
'msg.RB_Branch_Id'
@
change=
'getList'
>
<el-option
:value=
"-1"
label=
"不限"
></el-option>
<el-option
v-for=
'item in CompanyList'
:label=
'item.SName'
:value=
'item.SId'
:key=
'item.SId'
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<ul
class=
"clearfix"
style=
"position: absolute;right: 20px;top: 20px;"
>
<div>
<span>
</span>
<!--
<button
class=
"hollowFixedBtn"
@
click=
"getList()"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
-->
<q-btn
color=
"primary"
size=
"11px"
:label=
"$t('pub.searchBtn')"
@
click=
"getList()"
style=
"marginRight:10px"
/>
<!--
<button
class=
"normalBtn"
@
click=
"method5()"
>
导出
</button>
-->
<q-btn
color=
"primary"
size=
"11px"
label=
"导出"
@
click=
"method5()"
/>
</div>
</ul>
</div>
<div
class=
"_fnDm_content"
v-loading=
'loading'
>
<table
class=
"singeRowTable"
cellspacing=
"0"
cellpadding=
"0"
style=
"border: 1px solid rgb(230, 230, 230);"
>
<tr>
<th
colspan=
"16"
>
{{
branchName
}}
资金日报表
</th>
</tr>
<tr>
<!--
<th>
校区
</th>
-->
<th>
银行
</th>
<th
colspan=
"2"
>
上期余额
</th>
<th
colspan=
"2"
>
本期借方发生额
</th>
<th
colspan=
"2"
>
本期贷方发生额
</th>
<th
colspan=
"2"
>
本期收据
</th>
<th
colspan=
"2"
>
本期余额
</th>
<th>
借方笔数
</th>
<th>
贷方笔数
</th>
</tr>
<template
v-for=
"item in dataObj.resultList"
>
<tr>
<th
>
{{
item
.
AName
}}
</th>
<th>
外币
</th>
<th>
本位币
</th>
<th>
外币
</th>
<th>
本位币
</th>
<th>
外币
</th>
<th>
本位币
</th>
<th>
外币
</th>
<th>
本位币
</th>
<th>
外币
</th>
<th>
本位币
</th>
<th></th>
<th></th>
</tr>
<tr
v-for=
"(subItem, index) in item.SubList"
>
<!--
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
BName
}}
</td>
-->
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
Alias
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
WBAgoMoney
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
AgoMoney
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
AgoIncome
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
Income
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
AgoOutCome
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
OutCome
}}
</td>
<td>
{{
subItem
.
ReceiptWBMoney
}}
</td>
<td>
{{
subItem
.
ReceiptMoney
}}
</td>
<!--
<td
@
click=
"goUrlNew(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
ReceiptWBMoney
}}
</td>
<td
@
click=
"goUrlNew(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
ReceiptMoney
}}
</td>
-->
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
AgoIncom
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
NowIncome
}}
</td>
<!--
<a
style=
"cursor:pointer;"
@
click=
"goUrl('CashAccDetail',subItem.BankID,subItem.TradeWay)"
>
-->
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
IncomeCount
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
OutComeCount
}}
</td>
</tr>
<tr
v-if=
"item.TotalList"
>
<td
>
{{
item
.
AName
}}
合计
</td>
<td>
{{
item
.
TotalList
.
WBAgoMoney
}}
</td>
<td>
{{
item
.
TotalList
.
AgoMoney
}}
</td>
<td>
{{
item
.
TotalList
.
AgoIncome
}}
</td>
<td>
{{
item
.
TotalList
.
Income
}}
</td>
<td>
{{
item
.
TotalList
.
AgoOutCome
}}
</td>
<td>
{{
item
.
TotalList
.
OutCome
}}
</td>
<td>
{{
item
.
TotalList
.
ReceiptWBMoney
}}
</td>
<td>
{{
item
.
TotalList
.
ReceiptMoney
}}
</td>
<td>
{{
item
.
TotalList
.
AgoIncom
}}
</td>
<td>
{{
item
.
TotalList
.
NowIncome
}}
</td>
<td>
{{
item
.
TotalList
.
IncomeCount
}}
</td>
<td>
{{
item
.
TotalList
.
OutComeCount
}}
</td>
</tr>
</
template
>
<tr
v-for=
"item in dataObj.sumList"
>
<td
>
{{item.BName}}总计
</td>
<td>
{{item.WBAgoMoney}}
</td>
<td>
{{item.AgoMoney}}
</td>
<td>
{{item.AgoIncome}}
</td>
<td>
{{item.Income}}
</td>
<td>
{{item.AgoOutCome}}
</td>
<td>
{{item.OutCome}}
</td>
<td>
{{item.ReceiptWBMoney}}
</td>
<td>
{{item.ReceiptMoney}}
</td>
<td>
{{item.AgoIncom}}
</td>
<td>
{{item.NowIncome}}
</td>
<td>
{{item.IncomeCount}}
</td>
<td>
{{item.OutComeCount}}
</td>
</tr>
<tr
v-if=
"dataObj.sumObj"
>
<td
>
总计
</td>
<td>
{{dataObj.sumObj.WBAgoMoney}}
</td>
<td>
{{dataObj.sumObj.AgoMoney}}
</td>
<td>
{{dataObj.sumObj.AgoIncome}}
</td>
<td>
{{dataObj.sumObj.Income}}
</td>
<td>
{{dataObj.sumObj.AgoOutCome}}
</td>
<td>
{{dataObj.sumObj.OutCome}}
</td>
<td>
{{dataObj.sumObj.ReceiptWBMoney}}
</td>
<td>
{{dataObj.sumObj.ReceiptMoney}}
</td>
<td>
{{dataObj.sumObj.AgoIncom}}
</td>
<td>
{{dataObj.sumObj.NowIncome}}
</td>
<td>
{{dataObj.sumObj.IncomeCount}}
</td>
<td>
{{dataObj.sumObj.OutComeCount}}
</td>
</tr>
</table>
</div>
</div>
</template>
<
script
>
// 自定义列组件
import
{
getSchoolDropdown
}
from
'../../../api/school/index'
export
default
{
data
()
{
return
{
showID
:
false
,
active
:
1
,
userId
:
0
,
msg
:
{
BankID
:
-
1
,
TradeWay
:
-
1
,
sTradeDate
:
new
Date
().
Format
(
'yyyy-MM-dd'
),
eTradeDate
:
new
Date
().
Format
(
'yyyy-MM-dd'
),
EmployeeId
:
0
,
//1-银行,2-现金
IsBank
:
2
,
RB_Branch_Id
:
-
1
,
},
accountList
:
[],
BranchAccountList
:
[],
transactionDate
:
[
new
Date
().
Format
(
'yyyy-MM-dd'
),
new
Date
().
Format
(
'yyyy-MM-dd'
)],
AccList
:
[],
loading
:
false
,
currentPage
:
1
,
total
:
0
,
dataList
:
[],
dataObj
:
{},
branchName
:
''
,
CompanyList
:[],
}
},
created
()
{
},
components
:
{},
mounted
()
{
let
userInfo
=
this
.
getLocalStorage
();
this
.
getList
();
this
.
getBranchList
()
this
.
branchName
=
userInfo
.
GroupName
this
.
msg
.
EmployeeId
=
userInfo
.
EmployeeId
;
},
methods
:
{
goUrlNew
(
obj
)
{
this
.
$router
.
push
({
path
:
"DocumentStatistics"
,
query
:
{
"AccountId"
:
obj
.
BankID
,
"StartTime"
:
this
.
msg
.
sTradeDate
,
"EndTime"
:
this
.
msg
.
eTradeDate
,
"blank"
:
'y'
,
"tab"
:
'财务收据'
}
})
},
goUrl
(
obj
)
{
this
.
OpenNewUrl
(
'/financial/accDetail/CashAccDetail'
,
{
"Is_Cashier"
:
1
,
"TypeId"
:
obj
.
TypeId
,
"BankID"
:
obj
.
BankID
,
"sTradeDate"
:
this
.
msg
.
sTradeDate
,
"eTradeDate"
:
this
.
msg
.
eTradeDate
,
"DayReport"
:
1
,
'RB_Branch_Id'
:
this
.
msg
.
RB_Branch_Id
});
// this.$router.push({
// path: "CashAccDetail",
// query: {
// "Is_Cashier": 1,
// "TypeId": obj.TypeId,
// "BankID": obj.BankID,
// "sTradeDate": this.msg.sTradeDate,
// "eTradeDate": this.msg.eTradeDate,
// "DayReport": 1,
// "blank": 'y',
// "tab": '现金账户明细'
// }
// })
},
getList
:
function
()
{
this
.
loading
=
true
;
this
.
dataObj
=
{};
this
.
apipost
(
'Financial_post_GetReportListForEdu'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataObj
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
this
.
loading
=
false
;
},
err
=>
{})
},
AccountType_post_GetList
()
{
//获取账户类型下拉
this
.
apipost
(
'AccountType_post_GetList'
,
this
.
queryAccMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
AccList
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
err
=>
{})
},
timeAdd
(
t
)
{
// 日期格式
if
(
!
this
.
transactionDate
)
{
this
.
msg
.
sTradeDate
=
''
;
this
.
msg
.
eTradeDate
=
''
;
return
}
this
.
msg
.
sTradeDate
=
this
.
transactionDate
[
0
];
this
.
msg
.
eTradeDate
=
this
.
transactionDate
[
1
];
this
.
getList
()
},
queryInfoInit
()
{
// 初始化msg
},
getBranchList
()
{
//获取校区
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
CompanyList
=
res
.
Data
;
}).
catch
(()
=>
{
})
},
resetPageIndex
()
{
// 重置页码
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
},
method5
:
function
()
{
this
.
GetErpLocalFile
(
"Financial_post_CashOutToGetReportListForEdu"
,
this
.
msg
,
"现金日报表.xls"
);
},
}
}
</
script
>
\ No newline at end of file
src/pages/financial/accDetail/newTransferReport.vue
0 → 100644
View file @
8e3fed1c
<
style
scoped
>
@import
"../css/cssReset.css"
;
.page_fnDm
{
background-color
:
white
}
.query-box
{
overflow
:
inherit
}
.query-box
{
border
:
none
}
.query-box
ul
{
overflow
:
initial
;}
.query-box
li
:last-child
{
float
:
left
}
.query-box
>
ul
>
li
:last-child
{
float
:
right
;}
.query-box
.hight_query
ul
.el-input
{
width
:
inherit
}
.page_CashReport
._fnDm_content
{
width
:
100%
;
}
.page_CashReport
.singeRowTable
tr
th
{
border
:
1px
solid
#d2d2d2
;
}
</
style
>
<
template
>
<div
class=
"page_fnDm page_CashReport page-body"
@
keyup
.
enter=
"getList()"
>
<div
class=
"query-box"
>
<el-form
class=
"_info_box clearfix"
label-width=
"110px"
>
<el-row
style=
"padding:15px 20px 0 0;"
>
<!--
<el-col
:span=
"4"
>
<el-form-item
label=
"交易方式:"
>
<el-select
filterable
v-model=
'msg.TradeWay'
@
change=
"getAccountList(msg.AccountType,msg.TradeWay),msg.ClientID=''"
>
<el-option
:value=
"-1"
label=
"不限"
></el-option>
<el-option
v-for=
'item in BranchAccountList'
:label=
'item.Name'
:value=
'item.ID'
:key=
'item.ID'
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
label=
"银行账户:"
>
<el-select
filterable
v-model=
'msg.BankID'
>
<el-option
:value=
"-1"
label=
"不限"
></el-option>
<el-option
v-for=
'item in accountList'
:label=
'item.Name'
:value=
'item.ID'
:key=
'item.ID'
>
</el-option>
</el-select>
</el-form-item>
</el-col>
-->
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('fnc.jiaoyiriqi')+':'"
>
<el-date-picker
class=
"h34"
v-model=
"transactionDate"
@
change=
"timeAdd(3)"
type=
"daterange"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
label=
"校区"
>
<el-select
filterable
v-model=
'msg.RB_Branch_Id'
@
change=
"getList()"
>
<el-option
:value=
"-1"
label=
"不限"
></el-option>
<el-option
v-for=
'item in CompanyList'
:label=
'item.SName'
:value=
'item.SId'
:key=
'item.SId'
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<ul
class=
"clearfix"
style=
"position: absolute;right: 20px;top: 20px;"
>
<div
class=
"hight_query"
>
<span>
</span>
<!--
<button
class=
"hollowFixedBtn"
@
click=
"getList()"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
-->
<q-btn
color=
"primary"
size=
"11px"
:label=
"$t('pub.searchBtn')"
@
click=
"getList()"
style=
"marginRight:10px"
/>
<!--
<button
class=
"normalBtn"
@
click=
"method5()"
>
{{
$t
(
'visa.v_daochu'
)
}}
</button>
-->
<q-btn
color=
"primary"
size=
"11px"
:label=
"$t('visa.v_daochu')"
@
click=
"method5()"
/>
</div>
</ul>
</div>
<div
class=
"_fnDm_content"
v-loading=
'loading'
>
<table
class=
"singeRowTable"
cellspacing=
"0"
cellpadding=
"0"
style=
"border: 1px solid rgb(230, 230, 230);"
>
<tr>
<th
colspan=
"10"
>
{{
branchName
}}{{
$t
(
'fnc.a_xjrbaobiao'
)
}}
</th>
</tr>
<tr>
<!--
<th>
{{
$t
(
'system.table_company'
)
}}
</th>
-->
<th>
{{
$t
(
'fnc.yinhang'
)
}}
</th>
<th>
{{
$t
(
'fnc.a_sqyue'
)
}}
</th>
<th>
{{
$t
(
'fnc.a_bqjffshenge'
)
}}
</th>
<th>
{{
$t
(
'fnc.a_bqdffshenge'
)
}}
</th>
<th>
本期收据
</th>
<th>
本期未付账
</th>
<th>
{{
$t
(
'fnc.a_bqyue'
)
}}
</th>
<th>
{{
$t
(
'fnc.a_jfbishu'
)
}}
</th>
<th>
{{
$t
(
'fnc.a_dfbishu'
)
}}
</th>
</tr>
<template
v-for=
"item in dataObj.resultList"
>
<tr>
<th
>
{{
item
.
AName
}}
</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
<tr
v-for=
"(subItem, index) in item.SubList"
>
<!--
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
BName
}}
</td>
-->
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
Alias
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
AgoMoney
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
Income
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
OutCome
}}
</td>
<td>
{{
subItem
.
ReceiptMoney
}}
</td>
<td>
{{
subItem
.
NONPaymentMoney
}}
</td>
<!--
<td
@
click=
"goUrlNew('Manfunds',subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
ReceiptMoney
}}
</td>
<td
@
click=
"goUrlNew('OutstandingAccounts',subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
NONPaymentMoney
}}
</td>
-->
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
NowIncome
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
IncomeCount
}}
</td>
<td
@
click=
"goUrl(subItem)"
style=
"cursor: pointer"
>
{{
subItem
.
OutComeCount
}}
</td>
</tr>
<tr
v-if=
"item.TotalList"
>
<td>
{{
item
.
AName
}}
合计
</td>
<td>
{{
item
.
TotalList
.
AgoMoney
}}
</td>
<td>
{{
item
.
TotalList
.
Income
}}
</td>
<td>
{{
item
.
TotalList
.
OutCome
}}
</td>
<td
>
{{
item
.
TotalList
.
ReceiptMoney
}}
</td>
<td
>
{{
item
.
TotalList
.
NONPaymentMoney
}}
</td>
<td>
{{
item
.
TotalList
.
NowIncome
}}
</td>
<td>
{{
item
.
TotalList
.
IncomeCount
}}
</td>
<td>
{{
item
.
TotalList
.
OutComeCount
}}
</td>
</tr>
</
template
>
<tr
v-for=
"item in dataObj.sumList"
>
<td
>
{{item.BName}}总计
</td>
<td>
{{item.AgoMoney}}
</td>
<td>
{{item.Income}}
</td>
<td>
{{item.OutCome}}
</td>
<td>
{{item.ReceiptMoney}}
</td>
<td>
{{item.NONPaymentMoney}}
</td>
<td>
{{item.NowIncome}}
</td>
<td>
{{item.IncomeCount}}
</td>
<td>
{{item.OutComeCount}}
</td>
</tr>
<tr
v-if=
"dataObj.sumObj"
>
<td
>
总计
</td>
<td>
{{dataObj.sumObj.AgoMoney}}
</td>
<td>
{{dataObj.sumObj.Income}}
</td>
<td>
{{dataObj.sumObj.OutCome}}
</td>
<td>
{{dataObj.sumObj.ReceiptMoney}}
</td>
<td>
{{dataObj.sumObj.NONPaymentMoney}}
</td>
<td>
{{dataObj.sumObj.NowIncome}}
</td>
<td>
{{dataObj.sumObj.IncomeCount}}
</td>
<td>
{{dataObj.sumObj.OutComeCount}}
</td>
</tr>
</table>
</div>
</div>
</template>
<
script
>
// 自定义列组件
import
{
getSchoolDropdown
}
from
'../../../api/school/index'
export
default
{
data
()
{
return
{
showID
:
false
,
active
:
1
,
userId
:
0
,
msg
:
{
BankID
:
-
1
,
TradeWay
:
-
1
,
sTradeDate
:
new
Date
().
Format
(
'yyyy-MM-dd'
),
eTradeDate
:
new
Date
().
Format
(
'yyyy-MM-dd'
),
//1-银行,2-现金
IsBank
:
1
,
EmployeeId
:
0
,
RB_Branch_Id
:
-
1
,
},
accountList
:
[],
BranchAccountList
:
[],
transactionDate
:
[
new
Date
().
Format
(
'yyyy-MM-dd'
),
new
Date
().
Format
(
'yyyy-MM-dd'
)],
AccList
:
[],
loading
:
false
,
currentPage
:
1
,
total
:
0
,
GZAllList
:
[],
SZAllList
:
[],
PZAllList
:
[],
GZAll
:
{},
SZAll
:
{},
PZAll
:
{},
comPanyALLList
:
[],
ALLMoney
:
[],
dataObj
:
{},
branchName
:
''
,
CompanyList
:[],
}
},
created
()
{
},
components
:
{},
mounted
()
{
let
userInfo
=
this
.
getLocalStorage
();
this
.
branchName
=
userInfo
.
GroupName
this
.
getList
();
this
.
getBranchList
()
this
.
msg
.
EmployeeId
=
userInfo
.
EmployeeId
;
},
methods
:
{
goUrlNew
(
path
,
obj
){
let
name
=
path
;
this
.
$router
.
push
({
path
:
name
,
query
:{
"BankType"
:
obj
.
TradeWay
,
"BankID"
:
obj
.
BankID
,
"StartTime"
:
this
.
msg
.
sTradeDate
,
"EndTime"
:
this
.
msg
.
eTradeDate
,
"blank"
:
'y'
,
"tab"
:
'未认款'
}
})
},
goUrl
:
function
(
obj
)
{
let
name
=
''
;
let
type
=
0
;
if
(
obj
.
TradeWay
===
2
)
{
// 平台
name
=
'PlatformAccDetail'
;
type
=
1
;
}
else
if
(
obj
.
TradeWay
===
1
)
{
// 银行
name
=
'CompanyAccDetail'
;
type
=
1
;
}
else
if
(
obj
.
TradeWay
===
3
)
{
//资金池
name
=
'PoolAccDetail'
}
this
.
OpenNewUrl
(
'/financial/accDetail/'
+
name
,
{
"Is_Cashier"
:
1
,
"TypeId"
:
obj
.
TypeId
,
"BankID"
:
obj
.
BankID
,
"sTradeDate"
:
this
.
msg
.
sTradeDate
,
"eTradeDate"
:
this
.
msg
.
eTradeDate
,
"DayReport"
:
type
,
'RB_Branch_Id'
:
this
.
msg
.
RB_Branch_Id
});
// this.$router.push({
// path: name,
// query:{
// "Is_Cashier":1,
// "TypeId": obj.TypeId,
// "BankID": obj.BankID,
// "sTradeDate": this.msg.sTradeDate,
// "eTradeDate": this.msg.eTradeDate,
// "DayReport":type,
// "blank": 'y',
// "tab": '现金账户明细'
// }
// })
},
getList
:
function
()
{
this
.
loading
=
true
;
this
.
dataObj
=
{};
this
.
apipost
(
'Financial_post_GetReportListForEdu'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataObj
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
this
.
loading
=
false
;
},
err
=>
{})
},
AccountType_post_GetList
()
{
//获取账户类型下拉
this
.
apipost
(
'AccountType_post_GetList'
,
this
.
queryAccMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
AccList
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
err
=>
{})
},
timeAdd
(
t
)
{
// 日期格式
if
(
!
this
.
transactionDate
)
{
this
.
msg
.
sTradeDate
=
''
;
this
.
msg
.
eTradeDate
=
''
;
return
}
this
.
msg
.
sTradeDate
=
this
.
transactionDate
[
0
];
this
.
msg
.
eTradeDate
=
this
.
transactionDate
[
1
];
this
.
getList
()
},
resetPageIndex
()
{
// 重置页码
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
},
getBranchList
()
{
//获取校区
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
CompanyList
=
res
.
Data
;
}).
catch
(()
=>
{
})
},
method5
:
function
()
{
this
.
GetErpLocalFile
(
"Financial_post_OutToGetReportListForEdu"
,
this
.
msg
,
"银行日报表.xls"
);
},
}
}
</
script
>
\ No newline at end of file
src/pages/financial/financalDocument/FinancialDocuments.vue
View file @
8e3fed1c
...
...
@@ -1035,7 +1035,7 @@
@
click=
"dialogFormVisible=true,updateMsg.FrID=item.FrID,updateMsg.OTradeDate=item.TradeDate"
></i>
</el-tooltip>
<el-tooltip
class=
"item"
content=
"交易方式"
placement=
"top"
v-if=
"active==2 && istransaction == true"
>
<i
v-if=
"active==2"
class=
"iconfont icon-jiaoyi"
<i
v-if=
"active==2
&& istransaction == true
"
class=
"iconfont icon-jiaoyi"
@
click=
"showjiaoyi(item.FrID)"
></i>
</el-tooltip>
</td>
...
...
@@ -2549,10 +2549,10 @@
}
msg
.
push
(
obj
)
})
this
.
apipost
(
'Financial_
pos
t_SetFinanceTrabeInfo'
,
msg
,
res
=>
{
this
.
apipost
(
'Financial_
ge
t_SetFinanceTrabeInfo'
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
transactionmode
=
tru
e
this
.
transactionmode
=
fals
e
this
.
getPageList
()
}
else
{
this
.
Error
(
res
.
data
.
message
);
...
...
src/pages/financial/financalDocument/RecPayQuery.vue
View file @
8e3fed1c
...
...
@@ -475,7 +475,9 @@
._TCIDAndTCNUMList
{
display
:
flex
;
}
.caoz
i
{
margin-bottom
:
5px
;
}
</
style
>
<
template
>
...
...
@@ -713,6 +715,14 @@
border-radius: 4px;"
>
收入
</span>
<span
v-if=
"scope.row.Type==4"
style=
"display: inline-block;
padding: 2px 8px;
color: white;
background-color: #2BB87C;
line-height: 16px;
border-radius: 4px;"
>
调拨
</span>
<span
v-if=
"scope.row.Type==5"
style=
"display: inline-block;
padding: 2px 8px;
color: white;
...
...
@@ -838,7 +848,7 @@
<el-table-column
prop=
"StatusStr"
label=
"当前状态"
></el-table-column>
<el-table-column
prop=
"Remark"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<div>
<div
class=
"caoz"
>
<span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"查看"
placement=
"top"
>
<i
v-if=
"scope.row.Type !== 4"
style=
"width: 30px;
...
...
@@ -898,6 +908,21 @@
outline: none;"
class=
"iconfont icon-fapiao"
v-if=
"Finance_InvoiceUpdate==true && scope.row.Type==2"
@
click=
"setdaju(scope.row)"
>
</i>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"费用类型"
placement=
"top"
>
<!--
<i
v-if=
"scope.row.isExchange"
style=
"width: 30px;-->
<i
style=
"width: 30px;
height: 30px;
display: inline-block;
color: white !important;
border-radius: 50%;
text-align: center;
line-height: 30px;
margin-right: 10px;
cursor: pointer;
background-color: #47BF8C;
outline: none;"
class=
"iconfont icon-caiwu"
v-if=
"Finance_ExpenseType==true && (scope.row.Type==2 || scope.row.Type==1)"
@
click=
"showfeiyong(scope.row)"
>
</i>
</el-tooltip>
</span>
</div>
</
template
>
...
...
@@ -962,6 +987,26 @@
</div>
</
template
>
</el-dialog>
<!-- 修改费用类型 -->
<el-dialog
title=
"修改费用类型"
width=
"400px"
:visible
.
sync=
"costmode"
center
>
<el-form
label-width=
"110px"
>
<div
class=
"rb_top_row _r_mb5"
v-for=
'(x,y) in trabeList'
:key=
'y'
>
<p>
费用类型:
<el-select
filterable
v-model=
'x.CostTypeId'
placeholder=
""
@
change=
"getAccountList2(x.CostTypeId,y)"
class=
"w250 _border_b_1"
>
<el-option
v-for=
'item in GetCostTypeList'
:label=
'item.Name'
:value=
'item.ID'
:key=
'item.ID'
>
</el-option>
</el-select>
</p>
</div>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
class=
"hollowFixedBtn"
@
click=
"costmode=false"
>
{{$t('pub.cancelBtn')}}
</el-button>
<el-button
class=
"normalBtn"
type=
"primary"
@
click=
"preservetransaction()"
>
{{$t('pub.sureBtn')}}
</el-button>
</div>
</el-dialog>
</div>
</template>
...
...
@@ -996,6 +1041,7 @@ import treeItemVue from 'src/components/common/tree-table/tree-item.vue';
widthSon
:
'700px'
,
colorSon
:
"#f5f5f5"
,
Finance_InvoiceUpdate
:
false
,
Finance_ExpenseType
:
false
,
msg
:
{
pageIndex
:
1
,
pageSize
:
5
,
...
...
@@ -1111,7 +1157,8 @@ import treeItemVue from 'src/components/common/tree-table/tree-item.vue';
},
xgfpBox
:
false
,
getInvoiceList
:[],
costmode
:
false
,
//费用类型的修改弹窗
trabeList
:[],
//修改费用类型的下啦数据
}
},
created
()
{
...
...
@@ -1159,9 +1206,12 @@ import treeItemVue from 'src/components/common/tree-table/tree-item.vue';
let
ActionMenuList
=
JSON
.
parse
(
localStorageData
).
data
.
ActionMenuList
if
(
ActionMenuList
&&
ActionMenuList
.
length
>
0
)
{
ActionMenuList
.
forEach
(
x
=>
{
if
(
x
.
FunctionCode
==
'Finance_InvoiceUpdate'
)
{
if
(
x
.
FunctionCode
==
'Finance_InvoiceUpdate'
)
{
//发票修改权限
this
.
Finance_InvoiceUpdate
=
true
}
if
(
x
.
FunctionCode
==
'Finance_ExpenseType'
){
//费用类型修改权限
this
.
Finance_ExpenseType
=
true
}
})
}
},
...
...
@@ -1785,6 +1835,43 @@ import treeItemVue from 'src/components/common/tree-table/tree-item.vue';
"pageIndex"
:
pageIndex
}
})
},
showfeiyong
(
row
){
this
.
apipost
(
'Financial_get_GetFinanceCostTypeList'
,
{
FrId
:
row
.
FrID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
trabeList
=
res
.
data
.
data
this
.
costmode
=
true
}
},
err
=>
{})
},
getAccountList2
(
val
,
index
){
this
.
GetCostTypeList
.
map
((
x
)
=>
{
if
(
x
.
ID
==
val
){
this
.
trabeList
[
index
].
CostTypeName
=
x
.
Name
;
return
}
})
},
preservetransaction
(){
//保存费用类型的修改
let
msg
=
[]
this
.
trabeList
.
forEach
(
x
=>
{
let
obj
=
{
ID
:
x
.
ID
,
FinanceId
:
x
.
FinanceId
,
CostTypeId
:
x
.
CostTypeId
,
CostTypeName
:
x
.
CostTypeName
,
}
msg
.
push
(
obj
)
})
this
.
apipost
(
'Financial_get_SetFinanceCostTypeInfo'
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
costmode
=
false
this
.
getPageList
()
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{})
}
}
...
...
src/pages/financial/orderCompleteStatistics.vue
View file @
8e3fed1c
...
...
@@ -169,7 +169,7 @@
<div
style=
"width:100%; overflow-x:auto"
>
<table
:boeder=
"1"
class=
"singeRowTable orderCompleteStatistics"
style=
"width:3000px;border:1px solid #E6E6E6;"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<th
colspan=
"1
4
"
style=
"border-right:1px solid #999;border-bottom:1px solid #999"
>
合同信息
</th>
<th
colspan=
"1
5
"
style=
"border-right:1px solid #999;border-bottom:1px solid #999"
>
合同信息
</th>
<th
colspan=
"6"
style=
"border-right:1px solid #999;border-bottom:1px solid #999"
>
收款信息
</th>
<th
colspan=
"2"
style=
"border-right:1px solid #999;border-bottom:1px solid #999"
>
合同有效金额
</th>
<th
colspan=
"7"
style=
"border-right:1px solid #999;border-bottom:1px solid #999"
>
消费情况
</th>
...
...
@@ -182,6 +182,7 @@
<th
:width=
'200'
>
签订时间
</th>
<th
:width=
'220'
>
合同编号
</th>
<th
:width=
'400'
>
产品名称
</th>
<th
:width=
'200'
>
班号
</th>
<th
:width=
'400'
>
班级
</th>
<th
:width=
'150'
>
学员名称
</th>
<th
:width=
'120'
>
业务员
</th>
...
...
@@ -223,7 +224,8 @@
<td>
{{
item
.
CreateTime
}}
</td>
<td
@
click=
"goUrl('/sale/contractManage',item.ContractNo)"
><span
style=
"cursor: pointer;text-decoration: underline;"
>
{{
item
.
ContractNo
}}
</span></td>
<td
@
click=
"goUrl('/course/course',item.CourseName)"
><span
style=
"cursor: pointer;text-decoration: underline;"
>
{{
item
.
CourseName
}}
</span></td>
<td
@
click=
"goUrl2('/course/classManage',item.ClassName)"
><span
style=
"cursor: pointer;text-decoration: underline;"
>
{{
item
.
ClassName
}}
</span></td>
<td
>
{{
item
.
ClassNo
}}
</td>
<td
@
click=
"goUrl2('/course/classManage',item.ClassName)"
><div
style=
"cursor: pointer;text-decoration: underline;"
>
{{
item
.
ClassName
}}
</div></td>
<td>
{{
item
.
StudentName
}}
</td>
<td>
{{
item
.
CreateByName
}}
</td>
<td>
{{
item
.
TotalClassHours
}}
</td>
...
...
src/pages/financial/studentsClassfee.vue
View file @
8e3fed1c
...
...
@@ -139,6 +139,7 @@
<el-table-column
prop=
"ClassDate"
label=
"上课日期"
></el-table-column>
<el-table-column
prop=
"TimeBucket"
label=
"上课时间段"
>
</el-table-column>
<el-table-column
prop=
"GuestName"
label=
"学生名称"
>
</el-table-column>
<el-table-column
prop=
"ClassNo"
width=
'120'
label=
"班号"
></el-table-column>
<el-table-column
prop=
"ClassName"
label=
"上课班级"
width=
'200'
>
</el-table-column>
<el-table-column
prop=
"CourseName"
label=
"课程"
width=
'200'
></el-table-column>
<el-table-column
prop=
"TeacherName"
label=
"老师名称"
></el-table-column>
...
...
src/pages/financial/teacherclassfee.vue
View file @
8e3fed1c
...
...
@@ -68,7 +68,7 @@
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
ref=
"TId"
:options=
"TeacherList"
label=
"老师"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<
!--
<
div
class=
"col-3"
>
<q-select
filled
stack-label
use-input
input-debounce=
"0"
option-value=
"ClassId"
clearable
@
input=
"getList"
option-label=
"ClassName"
v-model=
"msg.ClassId"
:options=
"ClassList"
label=
"班级"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
...
...
@@ -80,7 +80,7 @@
</q-item>
</
template
>
</q-select>
</div>
</div>
-->
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"handleCurrentChanges(1)"
option-value=
"Id"
option-label=
"Name"
v-model=
"datetype"
ref=
"Id"
...
...
@@ -121,7 +121,12 @@
<el-table-column
prop=
"Date"
label=
"上课日期"
></el-table-column>
<el-table-column
prop=
"TimeBucket"
label=
"上课时间段"
>
</el-table-column>
<el-table-column
prop=
"TeacherName"
label=
"老师名称"
></el-table-column>
<el-table-column
prop=
"ClassName"
label=
"上课班级"
width=
'200'
>
</el-table-column>
<el-table-column
prop=
"ClassNo"
label=
"班号"
></el-table-column>
<el-table-column
prop=
"ClassName"
label=
"上课班级"
width=
'200'
:filters=
'ClassNameList'
:filter-method=
"filterHandler"
>
<template
slot=
"header"
>
<span>
上课班级
<span
style=
"font-size: 10px;color: #409EFF;"
>
(筛选)
</span>
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"CourseName"
label=
"课程"
width=
'230'
></el-table-column>
<el-table-column
prop=
"UnitPrice"
label=
"课时单价"
></el-table-column>
<el-table-column
prop=
"KSNum"
label=
"上课课时"
></el-table-column>
...
...
@@ -132,7 +137,9 @@
</el-table>
<div
style=
"margin-top: 10px;text-align: center;"
>
<el-pagination
background
@
current-change=
"handleCurrentChanges"
layout=
"total,prev, pager, next, jumper"
:current-page
.
sync=
"msg.pageIndex"
@
size-change=
"handleSizeChange"
layout=
"total,sizes,prev, pager, next, jumper"
:current-page
.
sync=
"msg.pageIndex"
:page-sizes=
"[15, 1000, 10000]"
:page-size=
"msg.pageSize"
:total=
'total'
>
</el-pagination>
</div>
...
...
@@ -189,6 +196,7 @@
],
ClassList
:
[],
allClassList
:
[],
ClassNameList
:[],
}
},
created
()
{
...
...
@@ -231,10 +239,28 @@
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
tableData
=
res
.
Data
.
PageData
this
.
ClassNameList
=
[],
this
.
tableData
.
forEach
(
x
=>
{
let
obj
=
{
text
:
x
.
ClassName
,
value
:
x
.
ClassName
}
this
.
ClassNameList
.
push
(
obj
)
})
this
.
ClassNameList
=
this
.
unique
(
this
.
ClassNameList
)
this
.
total
=
res
.
Data
.
Count
}
})
},
unique
(
arr
,
Name
)
{
//数组根据字段去重
const
res
=
new
Map
();
return
arr
.
filter
(
(
list
)
=>
!
res
.
has
(
list
.
text
)
&&
res
.
set
(
list
.
text
,
1
)
);
},
setClass
(
item
)
{
//班级
this
.
isShowClass
=
true
;
getClassDropDownList
({
...
...
@@ -300,6 +326,11 @@
this
.
msg
.
pageIndex
=
val
;
this
.
getList
()
},
handleSizeChange
(
val
){
this
.
msg
.
pageIndex
=
1
;
this
.
msg
.
pageSize
=
val
;
this
.
getList
()
},
txexport
(){
let
text
=
''
;
...
...
@@ -353,7 +384,11 @@
var
diff
=
m2
-
m1
;
return
diff
;
}
},
filterHandler
(
value
,
row
,
column
)
{
const
property
=
column
[
'property'
];
return
row
[
property
]
===
value
;
},
},
...
...
src/pages/user/personalData.vue
View file @
8e3fed1c
...
...
@@ -43,9 +43,11 @@
font-weight
:
bold
;
color
:
#FFFFFF
;
padding-left
:
39px
;
margin-top
:
55px
;
/* margin-top: 55px; */
margin-top
:
8px
;
}
.personalData
.box_l_cen
{
.personalData
.box_l_cen
{
width
:
100%
;
height
:
50px
;
line-height
:
50px
;
...
...
@@ -57,22 +59,39 @@
margin-top
:
8px
;
justify-content
:
space-between
;
}
.personalData
.headportrait
{
.personalData
.headportrait
{
width
:
120px
;
height
:
120px
;
border-radius
:
20px
;
position
:
relative
;
margin-top
:
20px
;
}
.personalData
.box_r_title
{
font-size
:
12px
;
font-weight
:
bold
;
color
:
#000000
;
margin-top
:
27px
.personalData
.editbianji
{
position
:
absolute
;
right
:
-10px
;
top
:
-10px
;
width
:
26px
;
height
:
26px
;
background
:
#FFFFFF
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
box-shadow
:
0px
0px
10px
0px
rgba
(
2
,
44
,
66
,
0.15
);
}
.personalData
.box_r_title
{
font-size
:
12px
;
font-weight
:
bold
;
color
:
#000000
;
margin-top
:
27px
}
.personalData
.box_r_input
{
.personalData
.box_r_input
{
width
:
55%
;
height
:
54px
;
padding
:
10px
22px
;
border-radius
:
4px
;
background
:
#F0F5FB
;
margin-top
:
20px
;
}
</
style
>
...
...
@@ -102,41 +121,98 @@
<span
class=
"box_l_t_l"
>
电话:
</span>
<span>
{{
showObj
.
UserMobile
}}
</span>
</div>
<div
class=
"box_l_t"
>
<div
class=
"box_l_t"
style=
"margin-bottom: 55px;"
>
<span
class=
"box_l_t_l"
>
部门:
</span>
<span>
{{
showObj
.
DeptName
}}
</span>
</div>
<
div
class=
"box_l_title"
>
概要信息
</div
>
<div
class=
"box_l_cen"
>
预警信息
</div>
<div
class=
"box_l_cen"
>
账户资料
</div>
<div
class=
"box_l_cen"
>
密码修改
</div>
<
!--
<div
class=
"box_l_title"
style=
"margin-top: 55px;"
>
概要信息
</div>
--
>
<div
:class=
"rightType==3?'box_l_title':'box_l_cen'"
@
click=
'rightType=3'
>
预警信息
</div>
<div
:class=
"rightType==1?'box_l_title':'box_l_cen'"
@
click=
'rightType=1'
>
账户资料
</div>
<div
:class=
"rightType==2?'box_l_title':'box_l_cen'"
@
click=
'rightType=2'
>
密码修改
</div>
</div>
<div
class=
"box_r"
>
<template
v-if=
'rightType == 1'
>
<div
style=
"font-size: 16px;font-weight: bold;color: #000000;"
>
账户资料
</div>
<div
class=
"box_r_title"
>
账户资料
</div>
<div
class=
"box_r_title"
>
账户资料
</div>
<div
class=
"headportrait"
>
<q-avatar
size=
"120px"
font-size=
"36px"
rounded
style=
"background:#C9F7F5"
text-color=
"white"
>
<img
:src=
"
showObj.UserIcon"
v-if=
"showObj
.UserIcon"
>
<img
:src=
"
datamodify.UserIcon"
v-if=
"datamodify
.UserIcon"
>
<span
v-else
>
{{
showObj
.
AccountName
.
substring
(
0
,
1
)
}}
</span>
</q-avatar>
<el-upload
class=
"editbianji"
:http-request=
"uploadFileBtn"
:multiple=
"false"
action=
''
accept=
".JPG, .PNG, .JPEG,.jpg, .png, .jpeg"
:show-file-list=
"false"
>
<q-icon
name=
"edit"
/>
</el-upload>
</div>
<div
style=
"font-size: 12px;color: #999999;margin-top: 12px;"
>
图片格式:png、jpg、jpeg
</div>
<div
class=
"box_r_title"
>
基础资料
</div>
<div
class=
"box_r_title"
>
基础资料
</div>
<div
class=
"box_r_input"
>
<q-input
v-model=
"datamodify.EmployeeName"
label=
"姓名"
:rules=
"[val => !!val || '姓名不能为空']"
lazy-rules
filled
maxlength=
"20"
/>
</div>
<div
class=
"box_r_input"
></div>
<div
class=
"box_r_title"
>
联系方式
</div>
<div
class=
"box_r_input"
>
<q-select
filled
stack-label
option-value=
"SId"
option-label=
"SName"
v-model=
"datamodify.School_Id"
ref=
"SId"
:options=
"CompanyList"
label=
"校区"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"box_r_title"
>
联系方式
</div>
<div
class=
"box_r_input"
>
<q-input
v-model=
"datamodify.EmployeeTel"
label=
"电话"
type=
'number'
:rules=
"[val => !!val || '电话不能为空']"
lazy-rules
filled
maxlength=
"11"
/>
</div>
<div
class=
"box_r_input"
>
<q-input
v-model=
"datamodify.Email"
label=
"邮箱"
:rules=
"[val => !!val || '邮箱不能为空']"
lazy-rules
filled
maxlength=
"20"
/>
</div>
<q-btn
color=
"primary"
style=
"width: 300px;margin-top: 50px;"
:loading=
"loading1"
@
click=
'dataSubmit'
>
<div
class=
"ellipsis"
>
提交
</div>
</q-btn>
</
template
>
<
template
v-if=
'rightType == 2'
>
<div
style=
"font-size: 16px;font-weight: bold;color: #000000;"
>
密码修改
</div>
<form
@
submit
.
prevent
.
stop=
"passwordSubmit"
class=
"q-gutter-md"
>
<div
class=
"box_r_title"
>
原密码
</div>
<div
class=
"box_r_input"
>
<q-input
v-model=
"passwordMsg.OldPassWord"
label=
"请输入旧密码"
type=
'password'
ref=
'OldPassWord'
:rules=
"[val => !!val || '请输入旧密码']"
lazy-rules
filled
/>
</div>
<div
class=
"box_r_title"
>
新密码
</div>
<div
class=
"box_r_input"
>
<q-input
v-model=
"passwordMsg.NewPassWord"
label=
"请输入新密码"
type=
'password'
ref=
'NewPassWord'
:rules=
"[val => !!val || '请输入新密码']"
lazy-rules
filled
/>
</div>
<div
class=
"box_r_input"
>
<q-input
v-model=
"passwordMsg.NewSurePassWord"
label=
"请再次输入新密码"
type=
'password'
ref=
'NewSurePassWord'
:rules=
"[val => !!val || '请再次输入新密码']"
lazy-rules
filled
/>
</div>
<q-btn
color=
"primary"
style=
"width: 300px;margin-top: 50px;"
:loading=
"loading2"
label=
"确定修改"
type=
"submit"
>
</q-btn>
</form>
</
template
>
</div>
</div>
</template>
<
script
>
import
{
queryStudentBackClassPage
,
}
from
'../../api/sale/bill'
setEmployeeBaseInfo
,
updateUserPassword
}
from
'../../api/users/user'
import
{
getSchoolDropdown
,
}
from
'../../api/school/index'
import
{
UploadSelfFile
}
from
'../../api/common/common'
const
defaultpassword
=
{
OldPassWord
:
''
,
NewPassWord
:
''
,
NewSurePassWord
:
''
,
}
export
default
{
meta
:
{
title
:
"个人资料"
...
...
@@ -146,30 +222,51 @@
},
data
()
{
return
{
loading1
:
false
,
loading2
:
false
,
showObj
:
{},
rightType
:
1
,
//右边显示类型
rightType
:
1
,
//右边显示类型
datamodify
:
{},
CompanyList
:
[],
passwordMsg
:
Object
.
assign
({},
defaultpassword
),
}
},
created
()
{
this
.
showObj
=
this
.
getLocalStorage
();
this
.
datamodify
=
{
EmployeeName
:
this
.
showObj
.
AccountName
,
UserIcon
:
this
.
showObj
.
UserIcon
,
EmployeeTel
:
this
.
showObj
.
UserMobile
,
Email
:
this
.
showObj
.
Email
,
School_Id
:
this
.
showObj
.
School_Id
,
}
},
mounted
()
{
// this.getStuBackBill();
this
.
getBranchList
()
},
methods
:
{
//获取退课单据分页列表
getStuBackBill
()
{
queryStudentBackClassPage
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
getBranchList
()
{
//获取校区
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
CompanyList
=
res
.
Data
;
var
obj
=
{
SName
:
'全部'
,
SId
:
0
}
this
.
CompanyList
.
unshift
(
obj
)
;
}).
catch
(()
=>
{
this
.
loading
=
false
;
})
},
logout
()
{
uploadFileBtn
(
file
)
{
//上传
UploadSelfFile
(
'studentIcon'
,
file
.
file
,
x
=>
{
if
(
x
.
Code
==
1
)
{
this
.
datamodify
.
UserIcon
=
x
.
FileUrl
}
},
1
);
},
logout
()
{
//退出登录
this
.
$store
.
dispatch
(
'LogOut'
)
.
then
(()
=>
{
...
...
@@ -179,6 +276,95 @@
})
},
dataSubmit
()
{
//资料提交
if
(
this
.
datamodify
.
UserIcon
==
null
||
this
.
datamodify
.
UserIcon
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`照片不能为空`
})
return
}
if
(
this
.
datamodify
.
EmployeeName
==
null
||
this
.
datamodify
.
EmployeeName
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`姓名不能为空`
})
return
}
if
(
this
.
datamodify
.
EmployeeTel
==
null
||
this
.
datamodify
.
EmployeeTel
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`电话不能为空`
})
return
}
if
(
this
.
datamodify
.
Email
==
null
||
this
.
datamodify
.
Email
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`邮箱不能为空`
})
return
}
setEmployeeBaseInfo
(
this
.
datamodify
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
type
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
position
:
"top"
,
message
:
res
.
Message
})
this
.
showObj
.
AccountName
=
this
.
datamodify
.
EmployeeName
this
.
showObj
.
UserIcon
=
this
.
datamodify
.
UserIcon
this
.
showObj
.
UserMobile
=
this
.
datamodify
.
EmployeeTel
this
.
showObj
.
Email
=
this
.
datamodify
.
Email
this
.
showObj
.
School_Id
=
this
.
datamodify
.
School_Id
let
localStorageobj
=
{
data
:
this
.
showObj
}
localStorage
.
setItem
(
"loginUserInfo"
,
JSON
.
stringify
(
localStorageobj
)
);
location
.
reload
();
}
}).
catch
(()
=>
{
})
},
passwordSubmit
()
{
this
.
$refs
.
OldPassWord
.
validate
()
this
.
$refs
.
NewPassWord
.
validate
()
this
.
$refs
.
NewSurePassWord
.
validate
()
if
(
this
.
$refs
.
OldPassWord
.
hasError
||
this
.
$refs
.
NewPassWord
.
hasError
||
this
.
$refs
.
NewSurePassWord
.
hasError
)
{
this
.
formHasError
=
true
}
else
{
// 掉接口
updateUserPassword
(
this
.
passwordMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
type
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
position
:
"top"
,
message
:
res
.
Message
})
this
.
passwordMsg
=
Object
.
assign
({},
defaultpassword
)
}
}).
catch
(()
=>
{
})
}
},
},
...
...
src/router/routes.js
View file @
8e3fed1c
...
...
@@ -426,14 +426,19 @@ const routes = [{
component
:
()
=>
import
(
"pages/financial/accDetail/TransferReport.vue"
)
},
{
path
:
"/financial/accDetail/newTransferReport"
,
//新银行日报表
component
:
()
=>
import
(
"pages/financial/accDetail/newTransferReport.vue"
)
},
{
path
:
"/financial/accDetail/CashReport"
,
//现金日报表
component
:
()
=>
import
(
"pages/financial/accDetail/CashReport.vue"
)
},
{
path
:
"/financial/accDetail/
CashReport"
,
//
现金日报表
path
:
"/financial/accDetail/
newCashReport"
,
//新
现金日报表
component
:
()
=>
import
(
"pages/financial/accDetail/CashReport.vue"
)
import
(
"pages/financial/accDetail/
new
CashReport.vue"
)
},
{
path
:
"/financial/financalDocument/ChoiceAddFinancialDocuments"
,
...
...
@@ -820,6 +825,7 @@ const routes = [{
component
:
()
=>
import
(
"pages/course/chapter.vue"
)
},
{
path
:
"/course/coursejob"
,
//作业管理
component
:
()
=>
...
...
@@ -968,7 +974,11 @@ const routes = [{
title
:
'资产管理'
},
},
{
path
:
"/course/chapter-editor"
,
//章节管理
component
:
()
=>
import
(
"pages/course/chapterEditor.vue"
)
},
{
path
:
"*"
,
component
:
()
=>
...
...
src/utils/validate.js
View file @
8e3fed1c
...
...
@@ -24,4 +24,49 @@ export function validateUpperCase(str) {
export
function
validatAlphabets
(
str
)
{
const
reg
=
/^
[
A-Za-z
]
+$/
return
reg
.
test
(
str
)
}
/** 比对数组是否相同 */
export
function
compareArray
(
arrA
,
arrB
)
{
let
isSame
=
true
if
(
arrA
.
length
!==
arrB
.
length
)
{
return
false
}
else
{
arrA
.
some
((
el
,
idx
)
=>
{
if
(
el
!==
arrB
[
idx
])
{
isSame
=
false
return
true
}
})
}
return
isSame
}
/** 比对对象是否相同 */
export
function
compareObject
(
objA
,
objB
,
ignoreArray
,
endLoop
)
{
let
isSame
=
true
let
isArray
=
'[object Array]'
let
isObject
=
'[object Object]'
for
(
var
key
in
objA
)
{
if
(
objB
[
key
]
!==
''
&&
!
objB
[
key
]
&&
typeof
objB
[
key
]
!==
'number'
)
{
isSame
=
false
break
}
let
type
=
Object
.
prototype
.
toString
.
call
(
objA
[
key
])
if
(
type
===
isArray
&&
ignoreArray
)
{
isSame
=
compareArray
(
objA
[
key
],
objB
[
key
])
}
else
if
(
type
===
isObject
)
{
isSame
=
compareObject
(
objA
[
key
],
objB
[
key
],
ignoreArray
)
}
else
if
(
objA
[
key
]
!==
objB
[
key
])
{
isSame
=
false
}
if
(
!
isSame
)
{
return
isSame
}
}
if
(
isSame
&&
!
endLoop
)
{
isSame
=
compareObject
(
objB
,
objA
,
ignoreArray
,
true
)
}
return
isSame
}
\ No newline at end of file
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