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
b13dcce1
Commit
b13dcce1
authored
Mar 29, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
f3f60cd6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1815 additions
and
1 deletion
+1815
-1
App.vue
src/App.vue
+1
-1
contract.js
src/api/sale/contract.js
+86
-0
eduinfo-form.vue
src/components/sale/eduinfo-form.vue
+144
-0
contractConfirm.vue
src/pages/contractConfirm.vue
+402
-0
contractAudit.vue
src/pages/sale/contractAudit.vue
+255
-0
contractEdit.vue
src/pages/sale/contractEdit.vue
+541
-0
contractManage.vue
src/pages/sale/contractManage.vue
+366
-0
routes.js
src/router/routes.js
+20
-0
No files found.
src/App.vue
View file @
b13dcce1
...
@@ -12,7 +12,7 @@ export default {
...
@@ -12,7 +12,7 @@ export default {
<
style
>
<
style
>
@import
url('~assets/css/font.css')
;
@import
url('~assets/css/font.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
xtjfp2lxt9g
.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
8mt7fp1wle5
.css')
;
html
,
html
,
body
,
body
,
...
...
src/api/sale/contract.js
0 → 100644
View file @
b13dcce1
import
request
from
'../../utils/request'
/**
* 获取日语培训列表
*
*/
export
function
GetEducationContractPageList
(
data
)
{
return
request
({
url
:
'/EducationContract/GetEducationContractPageList'
,
method
:
'post'
,
data
})
}
/**
* 获取合同详情
*
*/
export
function
GetEducationContractInfo
(
data
)
{
return
request
({
url
:
'/EducationContract/GetEducationContractInfo'
,
method
:
'post'
,
data
})
}
/**
* 保存合同
*
*/
export
function
SetEducationContractInfo
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractInfo'
,
method
:
'post'
,
data
})
}
/**
* 合同操作
*
*/
export
function
SetEducationContractAudit
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractAudit'
,
method
:
'post'
,
data
})
}
/**
* 合同操作-下载pdf
*
*/
export
function
GetDownLoadEducationContract
(
data
)
{
return
request
({
url
:
'/EducationContract/GetDownLoadEducationContract'
,
method
:
'post'
,
data
})
}
/**
* 合同操作-复制
*
*/
export
function
SetEducationContractCopy
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractCopy'
,
method
:
'post'
,
data
})
}
/**
* 保存签名
*
*/
export
function
SetEducationContractSign
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractSign'
,
method
:
'post'
,
data
})
}
src/components/sale/eduinfo-form.vue
0 → 100644
View file @
b13dcce1
<
template
>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 800px;max-width:900px;"
>
<q-card-section>
<div
class=
"text-h6"
>
{{
objOption
.
Id
==
0
?
'新增合同'
:
'修改合同'
}}
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
>
基本资料
</div>
<div
class=
"row wrap"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
v-model=
"objOption.CType"
ref=
"CType"
:options=
"CTypeList"
label=
"类型"
:dense=
"false"
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
:rules=
"[val => !!val || '请选择所属校区']"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.StudentName"
ref=
"StudentName"
class=
"col-6 q-pb-lg"
label=
"学生姓名"
:rules=
"[val => !!val || '请填写学生姓名']"
/>
<q-input
filled
stack-label
maxlength=
"100"
:dense=
"false"
v-model=
"objOption.SchoolName"
ref=
"SchoolName"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"学校名称"
:rules=
"[val => !!val || '请填写学校名称']"
/>
<q-input
filled
stack-label
maxlength=
"100"
:dense=
"false"
v-model=
"objOption.CourseName"
ref=
"CourseName"
class=
"col-6 q-pb-lg"
label=
"课程名称"
:rules=
"[val => !!val || '请填写课程名称']"
/>
<q-input
filled
stack-label
maxlength=
"300"
:dense=
"false"
v-model=
"objOption.CourseContent"
ref=
"CourseContent"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"课程内容"
:rules=
"[val => !!val || '请填写课程内容']"
/>
<q-input
filled
stack-label
maxlength=
"300"
:dense=
"false"
v-model=
"objOption.CNYCaps"
ref=
"CNYCaps"
class=
"col-6 q-pb-lg"
label=
"人民币大写"
:rules=
"[val => !!val || '请填写人民币大写金额']"
/>
<q-input
filled
stack-label
:dense=
"false"
@
keyup
.
native=
"checkPrice(objOption,'Money')"
v-model=
"objOption.Money"
ref=
"Money"
class=
"col-6 q-pb-lg q-pr-lg"
label=
"金额"
:rules=
"[val => !!val || '请填写金额']"
/>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"objOption.Exam"
ref=
"Exam"
class=
"col-6 q-pb-lg"
label=
"乙方当前选择考试"
/>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"saveContract"
/>
</q-card-actions>
</q-card>
</q-dialog>
</
template
>
<
script
>
import
{
SetEducationContractInfo
,
GetEducationContractInfo
}
from
'../../api/sale/contract'
export
default
{
props
:
{
setingObj
:
{
type
:
Object
,
default
:
null
}
},
data
()
{
return
{
persistent
:
true
,
objOption
:
{
Id
:
0
,
CType
:
1
,
//类型1培训 2留学
StudentName
:
''
,
//学生姓名,
SchoolName
:
''
,
//学校名称
CourseName
:
''
,
//课程名称
CourseContent
:
''
,
//课程内容
CNYCaps
:
''
,
//人民币大写
Money
:
''
,
//金额
Exam
:
''
//乙方当前选择考试
},
//类型下拉
CTypeList
:
[{
Id
:
1
,
Name
:
'培训'
},
{
Id
:
2
,
Name
:
'留学'
}],
saveLoading
:
false
,
}
},
created
()
{},
mounted
()
{
this
.
initObj
()
},
methods
:
{
//保存合同
saveContract
()
{
this
.
$refs
.
StudentName
.
validate
()
this
.
$refs
.
SchoolName
.
validate
()
this
.
$refs
.
CourseName
.
validate
()
this
.
$refs
.
CourseContent
.
validate
()
this
.
$refs
.
CNYCaps
.
validate
()
this
.
$refs
.
Money
.
validate
()
if
(
!
this
.
$refs
.
StudentName
.
hasError
&&
!
this
.
$refs
.
SchoolName
.
hasError
&&
!
this
.
$refs
.
CourseName
.
hasError
&&
!
this
.
$refs
.
CourseContent
.
hasError
&&
!
this
.
$refs
.
CNYCaps
.
hasError
&&
!
this
.
$refs
.
Money
.
hasError
)
{
SetEducationContractInfo
(
this
.
objOption
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'修改成功!'
,
position
:
'top'
})
}
this
.
$emit
(
'success'
);
})
}
},
initObj
()
{
if
(
this
.
setingObj
&&
this
.
setingObj
.
Id
>
0
)
{
GetEducationContractInfo
({
ContractId
:
this
.
setingObj
.
Id
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
tempObj
=
res
.
Data
;
this
.
objOption
.
Id
=
tempObj
.
Id
;
this
.
objOption
.
CType
=
tempObj
.
CType
;
this
.
objOption
.
StudentName
=
tempObj
.
StudentName
;
this
.
objOption
.
SchoolName
=
tempObj
.
SchoolName
;
this
.
objOption
.
CourseName
=
tempObj
.
CourseName
;
this
.
objOption
.
CourseContent
=
tempObj
.
CourseContent
;
this
.
objOption
.
CNYCaps
=
tempObj
.
CNYCaps
;
this
.
objOption
.
Money
=
tempObj
.
Money
;
this
.
objOption
.
Exam
=
tempObj
.
Exam
;
}
})
}
},
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
},
watch
:
{
},
}
</
script
>
<
style
>
</
style
>
src/pages/contractConfirm.vue
0 → 100644
View file @
b13dcce1
This diff is collapsed.
Click to expand it.
src/pages/sale/contractAudit.vue
0 → 100644
View file @
b13dcce1
<
style
>
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.OrderId"
label=
"订单id"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.CType"
:options=
"CTypeList"
emit-value
map-options
label=
"类型"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
v-model=
"msg.Status"
:options=
"StatusOpts"
option-value=
"Id"
option-label=
"Name"
label=
"状态"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.ContractNo"
label=
"合同编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.StudentName"
label=
"学生姓名"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table"
separator=
"none"
title=
"合同信息"
:data=
"dataList"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
合同信息
</div>
<q-space
/>
</
template
>
<
template
v-slot:body-cell-CreateByName=
"props"
>
<q-td
:props=
"props"
>
<q-avatar
rounded
size=
"sm"
v-if=
"props.row.CreateByPhoto"
>
<img
:src=
"props.row.CreateByPhoto"
/>
</q-avatar>
<q-avatar
rounded
size=
"sm"
color=
"teal-10"
text-color=
"white"
v-if=
"!props.row.CreateByPhoto"
>
{{
props
.
value
.
substring
(
0
,
1
)
}}
</q-avatar>
{{
props
.
row
.
CreateByName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-StudentName=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.Sign"
style=
"color:#e95252;"
>
【
{{
props
.
row
.
Sign
}}
】
</span>
<span
v-else
style=
"color:#e95252;"
>
【未签字】
</span>
{{
props
.
row
.
StudentName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-Status=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.Status==1"
style=
"color:#409EFF;"
>
待审核
</span>
<span
v-if=
"props.row.Status==2"
style=
"color:#67C23A;"
>
审合通过
</span>
<span
v-if=
"props.row.Status==3"
style=
"color:#F56C6C;"
>
已驳回
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-IsCompanySeal=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.IsCompanySeal==0"
style=
"color:#e95252;"
>
未盖章
</span>
<span
v-if=
"props.row.IsCompanySeal==1"
style=
"color:#67C23A;"
>
已盖章
</span>
</q-td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<div>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
@
click=
"operationContract(props.row,2)"
label=
"审核通过"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
@
click=
"operationContract(props.row,3)"
label=
"驳回"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
v-if=
"props.row.IsCompanySeal==0"
style=
"font-weight:400"
@
click=
"operationContract(props.row,5)"
label=
"盖章"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-View"
color=
"accent"
@
click=
"goContract(props.row)"
style=
"font-weight:400"
label=
"查看"
/>
</div>
</q-td>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
GetEducationContractPageList
,
SetEducationContractAudit
}
from
'../../api/sale/contract'
export
default
{
meta
:
{
title
:
"合同审核"
},
components
:
{
},
data
()
{
return
{
columns
:
[{
name
:
'ContractNo'
,
label
:
'合同编号'
,
align
:
'left'
,
field
:
'ContractNo'
,
},
{
name
:
'StudentName'
,
label
:
'学生名称'
,
field
:
'StudentName'
,
align
:
'left'
},
{
name
:
'CourseName'
,
label
:
'课程名称'
,
align
:
'left'
,
field
:
'CourseName'
},
{
name
:
'CTypeName'
,
label
:
'状态'
,
align
:
'left'
,
field
:
'CTypeName'
},
{
name
:
'CourseContent'
,
label
:
'课程内容'
,
align
:
'left'
,
field
:
'CourseContent'
},
{
name
:
'CreateByName'
,
label
:
'创建人'
,
align
:
'left'
,
field
:
'CreateByName'
},
{
name
:
'Status'
,
label
:
'合同状态'
,
align
:
'left'
,
field
:
'Status'
},
{
name
:
'IsCompanySeal'
,
label
:
'是否盖章'
,
align
:
'left'
,
field
:
'Status'
},
{
name
:
'optioned'
,
label
:
'操作'
,
field
:
'RoomId'
}
],
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
OrderId
:
0
,
//订单id
CType
:
0
,
//1培训 2留学
Status
:
1
,
//0草稿 1提交审核 2审核通过 3驳回 4取消
ContractNo
:
''
,
//合同编号
StudentName
:
''
//学生姓名
},
pageCount
:
0
,
dataList
:
[],
//类型下拉
CTypeList
:
[{
Id
:
0
,
Name
:
'不限'
},{
Id
:
1
,
Name
:
'培训'
},
{
Id
:
2
,
Name
:
'留学'
}],
//状态下拉
StatusOpts
:
[{
Id
:
1
,
Name
:
'待审'
},{
Id
:
2
,
Name
:
'审核通过'
},
{
Id
:
3
,
Name
:
'驳回'
}],
}
},
created
()
{
},
mounted
()
{
this
.
getList
()
},
methods
:
{
//获取校区列表
getList
()
{
this
.
loading
=
true
;
GetEducationContractPageList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
console
.
log
(
res
,
'数据'
);
}
})
},
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getList
();
},
//分页改变
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
//跳转至编辑
goContract
(
item
){
this
.
$router
.
push
({
path
:
'contractEdit'
,
query
:
{
"Id"
:
item
.
Id
}
})
},
//合同操作
operationContract
(
item
,
type
){
let
msg
=
{
ContractId
:
item
.
Id
,
State
:
type
}
SetEducationContractAudit
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'修改成功!'
,
position
:
'top'
})
this
.
getList
();
}
})
}
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/contractEdit.vue
0 → 100644
View file @
b13dcce1
This diff is collapsed.
Click to expand it.
src/pages/sale/contractManage.vue
0 → 100644
View file @
b13dcce1
This diff is collapsed.
Click to expand it.
src/router/routes.js
View file @
b13dcce1
...
@@ -456,6 +456,21 @@ const routes = [{
...
@@ -456,6 +456,21 @@ const routes = [{
component
:
()
=>
component
:
()
=>
import
(
"pages/sale/myOrder.vue"
)
import
(
"pages/sale/myOrder.vue"
)
},
},
{
path
:
"/sale/contractManage"
,
//销售 合同管理
component
:
()
=>
import
(
"pages/sale/contractManage.vue"
)
},
{
path
:
"/sale/contractEdit"
,
//销售 新增-编辑-查看合同
component
:
()
=>
import
(
"pages/sale/contractEdit.vue"
)
},
{
path
:
"/sale/contractAudit"
,
//销售 合同审核
component
:
()
=>
import
(
"pages/sale/contractAudit.vue"
)
},
{
{
path
:
"/sale/studentList"
,
//销售 学生名单
path
:
"/sale/studentList"
,
//销售 学生名单
component
:
()
=>
component
:
()
=>
...
@@ -551,6 +566,11 @@ const routes = [{
...
@@ -551,6 +566,11 @@ const routes = [{
},
},
// Always leave this as last one,
// Always leave this as last one,
// but you can also remove it
// but you can also remove it
{
path
:
"/contractConfirm"
,
component
:
()
=>
import
(
"pages/contractConfirm.vue"
)
},
{
{
path
:
"/financial/financalDocument/PrintPage"
,
//财务单据打印
path
:
"/financial/financalDocument/PrintPage"
,
//财务单据打印
component
:
()
=>
component
:
()
=>
...
...
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