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
8f836f96
Commit
8f836f96
authored
Jun 23, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Plain Diff
修改
parents
16588b52
e90a3643
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1049 additions
and
193 deletions
+1049
-193
activeSignUpList.vue
src/pages/activity/activeSignUpList.vue
+63
-28
activityList.vue
src/pages/activity/activityList.vue
+13
-3
materialMan.vue
src/pages/activity/materialMan.vue
+202
-150
payment.vue
src/pages/activity/payment.vue
+533
-0
salesRules.vue
src/pages/financial/salesRules.vue
+11
-2
appointManagement.vue
src/pages/sale/appointManagement.vue
+65
-9
routes.js
src/router/routes.js
+5
-0
erpindex.js
src/utils/erpindex.js
+157
-1
No files found.
src/pages/activity/activeSignUpList.vue
View file @
8f836f96
...
...
@@ -147,14 +147,22 @@
</div>
</q-td>
</template> -->
<
template
v-slot:body-cell-
Money
=
"props"
>
<
template
v-slot:body-cell-
Status
=
"props"
>
<q-td
:props=
"props"
>
<span
v-if=
"props.row.PaymentWay == 6"
>
星星支付:
{{
props
.
row
.
TotalPoint
}}
点
</span
>
<span
v-if=
"props.row.PaymentWay == 1"
>
现金支付:
{{
props
.
row
.
Money
}}
元
</span
>
<span
v-if=
"props.row.Status===0"
>
正常
</span>
<span
v-if=
"props.row.Status===1"
>
删除
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-OrderStatus=
"props"
>
<q-td
:props=
"props"
>
<span
v-if=
"props.row.OrderStatus===0"
>
未支付
</span>
<span
v-if=
"props.row.OrderStatus===1"
>
已支付
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-IsApplyForCancel=
"props"
>
<q-td
:props=
"props"
>
<span
v-if=
"props.row.IsApplyForCancel===1"
>
是
</span>
<span
v-if=
"props.row.IsApplyForCancel===2"
>
否
</span>
</q-td>
</
template
>
<!-- <template v-slot:body-cell-optioned="props">
...
...
@@ -186,14 +194,14 @@
data
:
[],
loading
:
true
,
msg
:
{
// pageIndex: 1,
// pageSize: 10,
LinkMan
:
''
,
EnrollState
:
1
,
ActivityId
:
0
pageIndex
:
1
,
pageSize
:
10
,
ActivityName
:
""
},
pageCount
:
0
,
columns
:
[{
columns
:
[
{
name
:
"LinkMan"
,
label
:
"联系人"
,
field
:
"LinkMan"
,
...
...
@@ -206,16 +214,47 @@
align
:
"left"
},
{
name
:
"PeopleNum"
,
required
:
true
,
label
:
"人数"
,
field
:
"PeopleNum"
,
name
:
"UnitPrice"
,
label
:
"单价"
,
field
:
"UnitPrice"
,
align
:
"left"
,
},
{
{
name
:
"Money"
,
label
:
"
付款方式
"
,
label
:
"
应收
"
,
field
:
"Money"
,
align
:
"left"
,
},
{
name
:
"Status"
,
label
:
"状态"
,
field
:
"Status"
,
align
:
"left"
},
{
name
:
"OrderNo"
,
required
:
true
,
label
:
"订单号"
,
field
:
"OrderNo"
,
align
:
"left"
,
},
{
name
:
"OrderStatus"
,
required
:
true
,
label
:
"订单状态"
,
field
:
"OrderStatus"
,
align
:
"left"
,
},
{
name
:
"PaymentTime"
,
label
:
"支付时间"
,
field
:
"PaymentTime"
,
align
:
"left"
},
{
name
:
" IsApplyForCancel"
,
label
:
"是否申请取消"
,
field
:
" IsApplyForCancel"
,
align
:
"left"
},
{
...
...
@@ -224,12 +263,8 @@
field
:
"Remark"
,
align
:
"left"
},
{
name
:
"CreateTimeStr"
,
label
:
"报名时间"
,
field
:
"CreateTimeStr"
,
align
:
"left"
},
// {
// name: 'optioned',
// label: '操作',
...
...
@@ -242,15 +277,15 @@
},
mounted
()
{
if
(
this
.
$route
.
query
.
Id
){
this
.
msg
.
Activity
Id
=
this
.
$route
.
query
.
Id
;
if
(
this
.
$route
.
query
.
ActivityName
){
this
.
msg
.
Activity
Name
=
this
.
$route
.
query
.
name
;
}
this
.
getList
();
},
methods
:
{
getList
(){
this
.
loading
=
true
;
this
.
apipostDS
(
"/api/Education/GetCommerceConsultPage"
,
this
.
msg
,(
res
)
=>
{
this
.
apipostDS
(
"/api/Education/GetCommerceConsult
AndFinance
Page"
,
this
.
msg
,(
res
)
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
===
1
){
this
.
data
=
res
.
data
.
data
;
...
...
src/pages/activity/activityList.vue
View file @
8f836f96
...
...
@@ -199,7 +199,7 @@
color=
"accent"
style=
"font-weight:400"
label=
"删除"
@
click=
"delActive(props.row)"
/>
<q-btn-dropdown
flat
size=
"xs"
color=
"dark"
label=
"更多"
style=
"margin-left:10px;"
>
<q-list>
<q-item
clickable
v-close-popup
@
click=
"goUrl('/activity/activeSignUpList',props.row)"
>
<q-item
clickable
v-close-popup
@
click=
"goUrl('/activity/activeSignUpList',props.row
,1
)"
>
<q-item-section>
<q-item-label>
报名列表
</q-item-label>
</q-item-section>
...
...
@@ -471,13 +471,23 @@ import ActiveForm from '../../components/activity/active-from'
closeruleset
()
{
this
.
showForm
=
false
;
},
goUrl
(
url
,
item
){
this
.
$router
.
push
({
goUrl
(
url
,
item
,
type
=
0
){
if
(
type
===
1
){
this
.
$router
.
push
({
path
:
url
,
query
:{
name
:
item
.
ActivityName
}
})
}
else
{
this
.
$router
.
push
({
path
:
url
,
query
:{
Id
:
item
.
Id
}
})
}
}
}
}
...
...
src/pages/activity/materialMan.vue
View file @
8f836f96
This diff is collapsed.
Click to expand it.
src/pages/activity/payment.vue
0 → 100644
View file @
8f836f96
This diff is collapsed.
Click to expand it.
src/pages/financial/salesRules.vue
View file @
8f836f96
...
...
@@ -34,7 +34,7 @@
<template
v-slot:top=
"props"
>
<q-space
/>
<div
class=
"page-option"
>
<q-btn
color=
"accent"
size=
"sm"
icon=
"add"
@
click=
"preservation()"
ref=
"addBtn"
label=
"保存规则"
/>
<q-btn
color=
"accent"
size=
"sm"
v-if=
'isSalerule_preserve == true'
@
click=
"preservation()"
ref=
"addBtn"
label=
"保存规则"
/>
</div>
</
template
>
<
template
v-slot:body=
"props"
>
...
...
@@ -181,9 +181,18 @@
pageCount
:
0
,
persistent
:
false
,
listData
:
{},
isSalerule_preserve
:
false
,
}
},
created
()
{},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"Salerule_preserve"
){
//判断是否有保存的权限
this
.
isSalerule_preserve
=
true
;
return
}
})
},
mounted
()
{
this
.
getRuleList
();
//获取规则
...
...
src/pages/sale/appointManagement.vue
View file @
8f836f96
<
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-4"
>
<div
class=
"col-4 Sysuser_Date"
>
<q-field
filled
>
<template
v-slot:control
>
<el-date-picker
v-model=
"msg.StartClassDate"
value-format=
"yyyy-MM-dd"
type=
"date"
placeholder=
"开始时间"
size=
"small"
style=
"width:47%;"
@
change=
"resetSearch"
clear-icon=
"iconfont icon-guanbi"
>
</el-date-picker>
至
<el-date-picker
v-model=
"msg.EndClassDate"
value-format=
"yyyy-MM-dd"
type=
"date"
placeholder=
"结束时间"
size=
"small"
style=
"width:47%;"
@
change=
"resetSearch"
clear-icon=
"iconfont icon-guanbi"
>
</el-date-picker>
</
template
>
</q-field>
</div>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
filled
option-value=
"TId"
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
:options=
"TeacherList"
emit-value
map-options
label=
"老师"
clearable
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
filled
stack-label
option-value=
"RoomId"
option-label=
"RoomName"
v-model=
"msg.ClassRoomId"
ref=
"ClassRoomId"
:options=
"ClassRoomList"
label=
"关联教室"
clearable
:dense=
"false"
class=
"col-6 q-pb-lg"
emit-value
map-options
/>
</div>
</div>
</div>
<q-table
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
"name"
>
<
template
v-slot:top=
"props"
>
...
...
@@ -23,7 +51,7 @@
<q-item-label>
流单
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
@
click=
"OperateVitior(props.row,3)"
>
<q-item
clickable
v-close-popup
@
click=
"OperateVitior(props.row,3)"
>
<q-item-section>
<q-item-label>
取消
</q-item-label>
</q-item-section>
...
...
@@ -40,6 +68,7 @@
<yuekeForm
v-if=
"isShowYue"
:ChoiceType=
"ChoiceType"
:save-obj=
"visitorItem"
@
close=
"closeYuekeForm"
@
success=
"refreshPage"
></yuekeForm>
<exorderForm
v-if=
"isShowExOrder"
:save-obj=
"orderObj"
@
close=
"closeOrderForm"
@
success=
"refreshPage"
></exorderForm>
<appodetailForm
v-if=
"isShowDetail"
:save-obj=
"orderObj"
@
close=
"closeAppForm"
></appodetailForm>
<exorderForm
v-if=
"isShowExOrder"
:save-obj=
"visitorItem"
@
close=
"closeOrderForm"
@
success=
"refreshPage"
></exorderForm>
</div>
</template>
...
...
@@ -47,6 +76,10 @@
import
{
queryVisitorReservePage
}
from
'../../api/scheduling/schedu'
import
{
getTeacherDropDownList
,
queryClassRoomList
}
from
"../../api/school/index"
;
import
yuekeForm
from
'../../components/schedul/yueke-form'
import
exorderForm
from
'../../components/schedul/exorder-form'
import
appodetailForm
from
'../../components/schedul/appodetail-form'
...
...
@@ -63,7 +96,12 @@
return
{
msg
:
{
pageIndex
:
1
,
pageSize
:
10
pageSize
:
10
,
rowsPerPage
:
10
,
StartClassDate
:
""
,
//开始日期
EndClassDate
:
""
,
//结束日期
TeacherId
:
""
,
ClassRoomId
:
""
,
},
dataList
:
[],
loading
:
false
,
...
...
@@ -130,11 +168,30 @@
isShowDetail
:
false
//显示详情
}
},
created
()
{
this
.
GetTeacherList
();
this
.
getClassRoomList
();
},
mounted
()
{
this
.
getList
()
},
methods
:
{
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
}
});
},
//获取教室下拉
getClassRoomList
()
{
queryClassRoomList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
ClassRoomList
=
res
.
Data
;
}
})
},
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
...
...
@@ -154,13 +211,12 @@
})
},
//预约操作按钮
OperateVitior
(
item
,
type
)
{
OperateVitior
(
item
,
type
)
{
this
.
ChoiceType
=
type
;
this
.
isShowYue
=
true
;
this
.
visitorItem
=
item
;
this
.
visitorItem
=
item
;
},
//关闭弹窗
//关闭弹窗
closeYuekeForm
()
{
this
.
isShowYue
=
false
;
},
...
...
@@ -169,13 +225,13 @@
},
closeAppForm
(){
this
.
isShowDetail
=
false
;
},
},
//刷新页面
refreshPage
()
{
this
.
getList
();
},
ExchangeOrder
(
item
){
this
.
orderObj
=
item
;
this
.
visitorItem
=
item
;
this
.
isShowExOrder
=
true
;
},
//查看详情
...
...
src/router/routes.js
View file @
8f836f96
...
...
@@ -675,6 +675,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/activity/materialMan.vue"
)
},
{
path
:
"/activity/payment"
,
//活动 活动收支
component
:
()
=>
import
(
"pages/activity/payment.vue"
)
},
{
path
:
"/sale/appointManagement"
,
//销售 约课管理
component
:
()
=>
...
...
src/utils/erpindex.js
View file @
8f836f96
...
...
@@ -83,15 +83,21 @@ export default {
let
domainUrl
=
'http://192.168.20.24'
;
let
viewFileUrl
=
'http://192.168.20.214:8120'
;
let
mallUrl
=
"http://192.168.20.17:8014"
;
let
vtUploadUrl
=
"http://192.168.20.214:8120"
;
let
vtViewUrl
=
"http://192.168.20.214:8130"
;
let
locationName
=
window
.
location
.
hostname
;
if
(
locationName
.
indexOf
(
'testerp.oytour'
)
!==
-
1
)
{
domainUrl
=
"http://testapi.oytour.com"
;
viewFileUrl
=
"http://upload.oytour.com"
;
mallUrl
=
"https://mallapi.oytour.com"
;
vtUploadUrl
=
"http://upload.oytour.com"
;
vtViewUrl
=
"https://imgfile.oytour.com"
;
}
else
if
(
locationName
.
indexOf
(
'oytour'
)
!==
-
1
)
{
domainUrl
=
"http://reborn.oytour.com"
;
viewFileUrl
=
"http://upload.oytour.com"
;
mallUrl
=
"https://mallapi.oytour.com"
;
vtUploadUrl
=
"http://upload.oytour.com"
;
vtViewUrl
=
"https://imgfile.oytour.com"
;
}
var
obj
=
{
//主地址
...
...
@@ -106,7 +112,9 @@ export default {
LocalFileStreamDownLoadUrl
:
domainUrl
+
"/api/file/GetFileFromWebApi"
,
//文件预览地址
ViewFileUrl
:
viewFileUrl
,
mallUrl
:
mallUrl
mallUrl
:
mallUrl
,
VTUploadUrl
:
vtUploadUrl
,
vtViewUrl
:
vtViewUrl
};
return
obj
;
},
...
...
@@ -390,6 +398,125 @@ export default {
});
window
.
open
(
newUrl
.
href
,
'_blank'
);
},
//文件类型数组
Vue
.
prototype
.
FileType
=
function
()
{
var
fileTypeJson
=
{
//主地址npm
UserImg
:
"User"
,
//用户相图片
//常用提交数据URL
GoodsImg
:
"Goods"
,
//素材相关文件
SetImg
:
"Set"
,
//用户相图片
Video
:
"Video"
,
//视频
};
return
fileTypeJson
;
},
//上传文件到云存储
Vue
.
prototype
.
UploadFileToTencent
=
function
(
path
,
fileObj
,
callback
)
{
// debugger;
var
upInfo
=
JSON
.
parse
(
localStorage
.
uploadInfo
);
let
maxSize
=
500
*
1024
if
((
fileObj
.
type
==
"image/png"
||
fileObj
.
type
==
"image/jpeg"
)
&&
fileObj
.
size
>
maxSize
)
{
let
that
=
this
lrz
(
fileObj
,
{
width
:
750
,
quality
:
0.8
})
.
then
(
function
(
rst
)
{
//成功时执行
var
arr
=
rst
.
base64
.
split
(
','
);
var
mime
=
arr
[
0
].
match
(
/:
(
.*
?)
;/
)[
1
];
var
bstr
=
atob
(
arr
[
1
]);
var
n
=
bstr
.
length
;
var
u8arr
=
new
Uint8Array
(
n
);
while
(
n
--
)
{
u8arr
[
n
]
=
bstr
.
charCodeAt
(
n
);
}
var
newFile
=
new
File
([
u8arr
],
fileObj
.
name
,
{
type
:
mime
});
if
(
upInfo
&&
upInfo
.
IsDefault
==
1
)
{
if
(
upInfo
.
StoreType
==
1
)
{
that
.
uploadStart
(
path
,
newFile
,
callback
)
}
if
(
upInfo
.
StoreType
==
2
)
{
that
.
uploadToAli
(
path
,
newFile
,
callback
)
}
}
else
{
that
.
Error
(
'请先配置上传'
);
}
}).
catch
(
function
(
error
)
{
if
(
upInfo
&&
upInfo
.
IsDefault
==
1
)
{
if
(
upInfo
.
StoreType
==
1
)
{
that
.
uploadStart
(
path
,
fileObj
,
callback
)
}
if
(
upInfo
.
StoreType
==
2
)
{
that
.
uploadToAli
(
path
,
fileObj
,
callback
)
}
}
else
{
that
.
Error
(
'请先配置上传'
);
}
}).
always
(
function
()
{
//不管成功或失败,都会执行
})
}
else
{
if
(
upInfo
&&
upInfo
.
IsDefault
==
1
)
{
if
(
upInfo
.
StoreType
==
1
)
{
this
.
uploadStart
(
path
,
fileObj
,
callback
)
}
if
(
upInfo
.
StoreType
==
2
)
{
this
.
uploadToAli
(
path
,
fileObj
,
callback
)
}
}
else
{
this
.
Error
(
'请先配置上传'
);
}
}
},
Vue
.
prototype
.
uploadStart
=
function
(
path
,
fileObj
,
callback
)
{
var
upInfo
=
JSON
.
parse
(
localStorage
.
uploadInfo
);
//获取文件扩展名
var
filename
=
fileObj
.
name
;
var
index
=
filename
.
lastIndexOf
(
"."
);
var
suffix
=
filename
.
substr
(
index
);
var
timestamp1
=
Date
.
parse
(
new
Date
())
+
"_"
+
(
Math
.
ceil
(
Math
.
random
()
*
1000
));
let
str
=
''
;
if
(
this
.
isOnline
())
{
str
=
"/Test"
}
var
newFileName
=
str
+
'/Upload/'
+
path
+
"/"
+
timestamp1
+
""
+
suffix
;
var
uploadMsg
=
{
Bucket
:
upInfo
.
Bucket
,
Region
:
upInfo
.
Region
,
SecretId
:
upInfo
.
SecretId
,
SecretKey
:
upInfo
.
SecretKey
,
};
var
COS
=
require
(
'cos-js-sdk-v5'
);
var
cos
=
new
COS
({
SecretId
:
uploadMsg
.
SecretId
,
SecretKey
:
uploadMsg
.
SecretKey
,
});
cos
.
putObject
({
Bucket
:
uploadMsg
.
Bucket
,
Region
:
uploadMsg
.
Region
,
//存储桶所在地域,必须字段
Key
:
newFileName
,
//文件名
StorageClass
:
'STANDARD'
,
Body
:
fileObj
,
// 上传文件对象
onProgress
:
function
(
progressData
)
{
}
},
function
(
err
,
data
)
{
if
(
data
&&
data
.
statusCode
==
200
)
{
var
uploadResult
=
{
resultCode
:
1
,
FileName
:
fileObj
.
name
,
FileUrl
:
"https://"
+
data
.
Location
}
if
(
callback
)
{
callback
(
uploadResult
);
}
}
else
{
/*上传文件异常*/
console
.
log
(
err
||
data
);
}
});
},
//公用判断图片地址 判断是否包含http
Vue
.
prototype
.
getIconLink
=
function
(
url
)
{
let
str
=
''
...
...
@@ -401,6 +528,35 @@ export default {
}
return
str
;
}
},
//是否是线上环境【发布时修改为true】
Vue
.
prototype
.
isOnline
=
function
()
{
return
process
.
env
.
NODE_ENV
!==
'development'
;
},
//上传文件到本地服务器
Vue
.
prototype
.
UploadSelfFile
=
function
(
path
,
file
,
callback
)
{
var
that
=
this
;
that
.
Info
(
'上传中...'
)
var
newPath
=
'/Upload/'
+
path
+
"/"
;
var
formData
=
new
FormData
();
var
uploadUrl
=
that
.
domainManager
().
VTUploadUrl
+
"/Upload?filePath="
+
newPath
+
"&isCreateCover=1"
;
formData
.
append
(
"myfile"
,
file
);
that
.
$http
.
post
(
uploadUrl
,
formData
,
{})
.
then
(
res
=>
{
if
(
res
&&
res
.
status
==
200
&&
res
.
data
&&
res
.
data
.
FilePath
)
{
var
uploadResult
=
{
resultCode
:
1
,
FileName
:
file
.
name
,
FileUrl
:
that
.
domainManager
().
VTViewUrl
+
res
.
data
.
FilePath
,
VideoCoverImg
:
that
.
domainManager
().
VTViewUrl
+
res
.
data
.
VideoCoverImg
}
if
(
callback
)
{
callback
(
uploadResult
);
}
}
}).
catch
(
function
(
reason
)
{
console
.
log
(
reason
)
});
}
}
}
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