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
16528502
Commit
16528502
authored
Dec 29, 2020
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
c69c4725
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1521 additions
and
1248 deletions
+1521
-1248
Approval.vue
src/pages/administration/Approval.vue
+59
-57
ApprovalStatistical.vue
src/pages/administration/ApprovalStatistical.vue
+301
-172
Attendance.vue
src/pages/administration/Attendance.vue
+55
-45
document.vue
src/pages/administration/document.vue
+478
-473
achievements.vue
src/pages/course/achievements.vue
+585
-472
baseSet.vue
src/pages/course/baseSet.vue
+17
-12
classHourReward.vue
src/pages/course/classHourReward.vue
+5
-9
socialclass.vue
src/pages/course/socialclass.vue
+3
-0
studentClass.vue
src/pages/course/studentClass.vue
+3
-3
japaneseTrain.vue
src/pages/sale/japaneseTrain.vue
+7
-3
myOrder.vue
src/pages/sale/myOrder.vue
+3
-0
sysuser.vue
src/pages/school/sysuser.vue
+1
-1
teacher.vue
src/pages/school/teacher.vue
+1
-1
processSet.vue
src/pages/system/processSet.vue
+3
-0
No files found.
src/pages/administration/Approval.vue
View file @
16528502
...
...
@@ -3,12 +3,8 @@
<div
class=
"query-box "
>
<ul>
<li><span><em>
所属校区
</em>
<el-select
:disabled=
"IsParentCompany!=1"
v-model=
"QueryMsg.BranchId"
@
change=
"getList()"
>
<el-option
v-for=
"item in companyList"
:label=
'item.BName'
:value=
'item.Id'
:key=
'item.Id'
>
<el-select
:disabled=
"IsParentCompany!=1"
v-model=
"QueryMsg.BranchId"
@
change=
"getList()"
>
<el-option
v-for=
"item in companyList"
:label=
'item.BName'
:value=
'item.Id'
:key=
'item.Id'
>
</el-option>
</el-select>
</span></li>
...
...
@@ -19,7 +15,8 @@
<div
class=
"approval_title"
>
出勤休假(4)
</div>
<div
class=
"approval_list"
v-loading=
'loading'
>
<div
class=
"row"
>
<div
class=
"approval_item col shadow-1"
v-for=
"(item,index) in dataList"
:style=
"
{'margin-right':dataList.length!=index+1?'40px':'0' }">
<div
class=
"approval_item col shadow-1"
v-for=
"(item,index) in dataList"
:style=
"
{'margin-right':dataList.length!=index+1?'40px':'0' }">
<img
:src=
"item.Icon"
width=
"86"
style=
""
/>
<span
class=
"tit"
>
{{
item
.
Name
}}
</span>
<p
class=
"updateP"
>
全部可见
</p>
...
...
@@ -29,17 +26,17 @@
<p
class=
"tim"
>
{{
item
.
UpdateTime
}}
</p>
<div
class=
"row"
style=
"margin-top: 50px;justify-content: space-around;width: 100%"
v-if=
'item.Status==1'
>
<q-btn
color=
"primary"
label=
"审批流程"
style=
"padding: 0 20px"
@
click=
"workflow(item.Id)"
></q-btn>
<q-btn
outline
style=
"color: #2961FE;padding: 0 10px"
label=
"停用"
@
click=
"updateTempStatus(item.Id,item.TemplateType,item.Status)"
></q-btn>
<q-btn
outline
style=
"color: #2961FE;padding: 0 10px"
label=
"停用"
@
click=
"updateTempStatus(item.Id,item.TemplateType,item.Status)"
></q-btn>
</div>
<div
class=
"row"
style=
"margin-top: 50px;justify-content: center;"
v-if=
'item.Status==2'
>
<q-btn
outline
style=
"color: #2961FE;padding: 0 10px"
label=
"启用"
@
click=
"updateTempStatus(item.Id,item.TemplateType,item.Status)"
></q-btn>
<q-btn
outline
style=
"color: #2961FE;padding: 0 10px"
label=
"启用"
@
click=
"updateTempStatus(item.Id,item.TemplateType,item.Status)"
></q-btn>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
...
...
@@ -52,10 +49,12 @@
getSchoolDropdown
//校区下拉
}
from
'../../api/school/index'
export
default
{
meta
:
{
title
:
"审批"
},
data
()
{
return
{
loading
:
true
,
loading
:
true
,
//请求数据
QueryMsg
:
{
BranchId
:
'-1'
...
...
@@ -63,25 +62,25 @@
//返回数据
dataList
:
[],
companyList
:
[],
IsParentCompany
:
2
,
drawer
:
false
,
SpId
:
0
IsParentCompany
:
2
,
drawer
:
false
,
SpId
:
0
}
},
methods
:
{
workflow
(
Id
){
workflow
(
Id
)
{
this
.
$router
.
push
({
path
:
'/administration/ApprovalProcess?Id='
+
Id
+
'&Bid='
+
this
.
QueryMsg
.
BranchId
path
:
'/administration/ApprovalProcess?Id='
+
Id
+
'&Bid='
+
this
.
QueryMsg
.
BranchId
});
},
getList
()
{
let
describe
=
[
'适用于请假申请'
,
'适用于出差申请'
,
'适用于外出申请'
,
'当员工考勤出现缺卡时,可发起补卡审批'
]
let
describe2
=
[
'精确扣减出勤时间,并同步考勤报表'
,
'精确汇总至考勤报表'
,
'精确汇总至考勤报表'
,
'审批通过后考勤报表中的缺卡记录改为正常'
]
getTemplateList
({
BranchId
:
this
.
QueryMsg
.
BranchId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
getTemplateList
({
BranchId
:
this
.
QueryMsg
.
BranchId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
dataList
=
res
.
Data
[
0
].
List
;
this
.
dataList
.
forEach
((
item
,
index
)
=>
{
item
.
describe
=
describe
[
index
]
...
...
@@ -94,7 +93,7 @@
},
getCompanyList
()
{
getSchoolDropdown
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
res
.
Data
.
forEach
(
x
=>
{
var
obj
=
{
Id
:
''
,
...
...
@@ -105,13 +104,10 @@
this
.
companyList
.
push
(
obj
);
})
}
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{})
},
updateTempStatus
(
id
,
type
,
status
)
{
if
(
status
==
1
)
{
if
(
status
==
1
)
{
this
.
$confirm
(
'是否停用?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
...
...
@@ -121,22 +117,20 @@
Id
:
id
,
TemplateType
:
type
,
Status
:
2
,
BranchId
:
this
.
QueryMsg
.
BranchId
BranchId
:
this
.
QueryMsg
.
BranchId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
this
.
$message
.
success
(
"已经停用"
)
this
.
getList
()
}
else
{
}
else
{
this
.
$message
.
error
(
"操作失败"
)
}
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{})
}).
catch
(()
=>
{
this
.
$message
.
info
(
'已取消停用'
)
});
}
if
(
status
==
2
)
{
if
(
status
==
2
)
{
this
.
$confirm
(
'是否启用?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
...
...
@@ -146,38 +140,42 @@
Id
:
id
,
TemplateType
:
type
,
Status
:
1
,
BranchId
:
this
.
QueryMsg
.
BranchId
BranchId
:
this
.
QueryMsg
.
BranchId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
this
.
$message
.
success
(
"启用成功"
)
this
.
getList
()
}
else
{
this
.
$message
.
error
(
"操作失败"
)
}
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{})
}).
catch
(()
=>
{
this
.
$message
.
info
(
'已取消启用'
)
});
}
},
goUrl
(
path
,
id
)
{
this
.
$router
.
push
({
name
:
path
,
query
:{
"id"
:
id
,
"Bid"
:
this
.
QueryMsg
.
BranchId
}
})
goUrl
(
path
,
id
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"id"
:
id
,
"Bid"
:
this
.
QueryMsg
.
BranchId
}
})
}
},
mounted
()
{
let
userInfo
=
this
.
getLocalStorage
();
this
.
QueryMsg
.
BranchId
=
userInfo
.
School_Id
.
toString
();
let
RefBranchId
=
this
.
$route
.
query
.
Bid
;
if
(
RefBranchId
!=
null
)
{
this
.
QueryMsg
.
BranchId
=
RefBranchId
.
toString
();
this
.
QueryMsg
.
BranchId
=
userInfo
.
School_Id
.
toString
();
let
RefBranchId
=
this
.
$route
.
query
.
Bid
;
if
(
RefBranchId
!=
null
)
{
this
.
QueryMsg
.
BranchId
=
RefBranchId
.
toString
();
}
this
.
getCompanyList
();
this
.
getList
()
}
}
</
script
>
<
style
>
...
...
@@ -190,13 +188,15 @@
border-left
:
3px
solid
#E95252
;
margin
:
30px
0
;
}
.appProval
{
.appProval
{
background
:
white
;
height
:
90%
;
padding
:
0
20px
;
}
.appProval
.el-input__inner
{
height
:
34px
!important
;
.appProval
.el-input__inner
{
height
:
34px
!important
;
}
.approval_desDiv
{
...
...
@@ -254,12 +254,14 @@
padding
:
5px
10px
;
align-items
:
center
;
}
.el-drawer__body
{
overflow
:
auto
;
}
/*2.隐藏滚动条,太丑了*/
.el-drawer__container
::-webkit-scrollbar
{
.el-drawer__container
::-webkit-scrollbar
{
display
:
none
;
}
</
style
>
</
style
>
src/pages/administration/ApprovalStatistical.vue
View file @
16528502
...
...
@@ -3,44 +3,58 @@
<div
class=
"query-box"
style=
"border-bottom: none;"
>
<ul>
<li>
<span><em>
校区
</em><el-select
filterable
@
change=
'getUser'
v-model=
'msg.RB_BranchId'
>
<span><em>
校区
</em>
<el-select
filterable
@
change=
'getUser'
v-model=
'msg.RB_BranchId'
>
<el-option
label=
'不限'
value=
'-1'
></el-option>
<el-option
v-for=
'item in companyList'
:label=
'item.SName'
:value=
'item.SId'
:key=
'item.Id'
></el-option>
</el-select>
</span>
</li>
<li>
<span><em>
申请人
</em><el-select
filterable
v-model=
'msg.CreateBy'
>
<span><em>
申请人
</em>
<el-select
filterable
v-model=
'msg.CreateBy'
>
<el-option
label=
'不限'
value=
'0'
></el-option>
<el-option
v-for=
'item in userList'
:label=
'item.EmployeeName'
:value=
'item.Id'
:key=
'item.Id'
></el-option>
<el-option
v-for=
'item in userList'
:label=
'item.EmployeeName'
:value=
'item.Id'
:key=
'item.Id'
>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>
待审核人
</em><el-select
filterable
v-model=
'msg.ToAuditId'
>
<span><em>
待审核人
</em>
<el-select
filterable
v-model=
'msg.ToAuditId'
>
<el-option
label=
'不限'
value=
'0'
></el-option>
<el-option
v-for=
'item in userList'
:label=
'item.EmployeeName'
:value=
'item.Id'
:key=
'item.Id'
></el-option>
<el-option
v-for=
'item in userList'
:label=
'item.EmployeeName'
:value=
'item.Id'
:key=
'item.Id'
>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>
已审核人
</em><el-select
filterable
v-model=
'msg.AuditedId'
>
<span><em>
已审核人
</em>
<el-select
filterable
v-model=
'msg.AuditedId'
>
<el-option
label=
'不限'
value=
'0'
></el-option>
<el-option
v-for=
'item in userList'
:label=
'item.EmployeeName'
:value=
'item.Id'
:key=
'item.Id'
></el-option>
<el-option
v-for=
'item in userList'
:label=
'item.EmployeeName'
:value=
'item.Id'
:key=
'item.Id'
>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>
请假类型
</em><el-select
v-model=
'msg.TemplateId'
>
<el-option
v-for=
'item in ApplyTypeList'
:label=
'item.label'
:value=
'item.value'
:key=
'item.value'
></el-option>
</el-select></span>
<span><em>
请假类型
</em>
<el-select
v-model=
'msg.TemplateId'
>
<el-option
v-for=
'item in ApplyTypeList'
:label=
'item.label'
:value=
'item.value'
:key=
'item.value'
>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>
申请审核状态
</em><el-select
v-model=
'msg.appAuditStatus'
>
<el-option
v-for=
'item in appAuditStatusList'
:label=
'item.label'
:value=
'item.value'
:key=
'item.value'
></el-option>
</el-select></span>
<span><em>
申请审核状态
</em>
<el-select
v-model=
'msg.appAuditStatus'
>
<el-option
v-for=
'item in appAuditStatusList'
:label=
'item.label'
:value=
'item.value'
:key=
'item.value'
>
</el-option>
</el-select>
</span>
</li>
<li><span><em>
申请时间
</em><el-date-picker
v-model=
'msg.StartTime'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
<li><span><em>
申请时间
</em>
<el-date-picker
v-model=
'msg.StartTime'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
-
<el-date-picker
v-model=
'msg.EndTime'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
</span>
...
...
@@ -62,7 +76,6 @@
<th>
{{
$t
(
'admin.admin_status'
)
}}
</th>
<th
width=
"150"
>
{{
$t
(
'system.table_operation'
)
}}
</th>
</tr>
<tr
v-for=
'item in list'
v-loading=
'loading'
>
<td>
{{
item
.
BName
}}
</td>
<td>
{{
item
.
EmName
}}
</td>
...
...
@@ -73,21 +86,18 @@
<td>
{{
item
.
Status
}}
</td>
<td>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"详情"
placement=
"top"
>
<el-button
type=
"primary"
icon=
"el-icon-tickets"
circle
@
click=
"getDetail(item.Id,item.TemplateType)"
></el-button>
<el-button
type=
"primary"
icon=
"el-icon-tickets"
circle
@
click=
"getDetail(item.Id,item.TemplateType)"
>
</el-button>
</el-tooltip>
</td>
</tr>
</table>
</div>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
</el-pagination>
<el-dialog
custom-class=
'w500'
:title=
"dialogTitle"
:visible
.
sync=
"outerVisible"
center
>
<el-dialog
custom-class=
'w500'
:title=
"dialogTitle"
:visible
.
sync=
"outerVisible"
center
>
<div
class=
"approvalStatisticalDialog"
>
<div
class=
"title"
>
{{
detailList
.
Proposer
}}{{
detailList
.
TempleteTypeName
}}
</div>
<div
class=
"user"
>
...
...
@@ -96,12 +106,11 @@
<p>
{{
detailList
.
Proposer
}}
</p>
<p><span
style=
"color:#257BF1; font-size: 14px;"
>
{{
detailList
.
Status
}}
</span></p>
</div>
<div
class=
"detail"
>
<table
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
class=
"myApprovalTable"
>
<tr
v-for=
"(item,index) in detailList.Details"
v-if=
"(item.formType=='Image' && item.value.length>0) || item.formType!='Image'"
>
<td
width=
"80"
>
{{
item
.
title
}}
:
</td
>
<tr
v-for=
"(item,index) in detailList.Details"
v-if=
"(item.formType=='Image' && item.value.length>0) || item.formType!='Image'"
>
<td
width=
"80"
>
{{
item
.
title
}}
:
</td>
<td
v-if=
"item.formType=='String'"
>
{{
item
.
value
}}
</td>
<td
v-if=
"item.formType=='Json'"
>
<div
v-for=
"(i,index) in item.value"
style=
"border-bottom: 1px solid #ccc; padding:10px 0;"
>
...
...
@@ -109,96 +118,101 @@
</div>
</td>
<td
v-if=
"item.formType=='Image'"
>
<img
v-if=
'item.value.length>0'
style=
"width: 50px; height: 50px; border-radius: 4px; margin:0 10px 0 0;"
v-for=
"(img,index) in item.value"
:src=
"img"
@
click=
"getPic(item.value)"
/>
<img
v-if=
'item.value.length>0'
style=
"width: 50px; height: 50px; border-radius: 4px; margin:0 10px 0 0;"
v-for=
"(img,index) in item.value"
:src=
"img"
@
click=
"getPic(item.value)"
/>
</td>
</tr>
</table>
</div>
<div
class=
"audit"
>
<div
class=
"auditItem"
>
<img
v-if=
"!detailList.ProposerPhoto"
src=
"../../assets/images/administration/litheader.png"
alt=
""
>
<img
v-else
:src=
"detailList.ProposerPhoto"
alt=
""
:onerror=
"defaultImg"
>
<p>
<span>
{{
detailList
.
Proposer
}}
</span>
<span>
发起申请
</span><span
class=
"fr"
>
{{
detailList
.
ProposerTime
}}
</span>
<span>
{{
detailList
.
Proposer
}}
</span>
<span>
发起申请
</span><span
class=
"fr"
>
{{
detailList
.
ProposerTime
}}
</span>
</p>
</div>
<div
class=
"auditItem"
v-for=
"(item,index) in detailList.arList"
>
<img
v-if=
'item.AuditRecordList.length==1&&!item.AuditRecordList[0].AuditEmPhoto'
src=
"../../assets/images/administration/litheader.png"
/>
<img
v-if=
'item.AuditRecordList.length==1&&item.AuditRecordList[0].AuditEmPhoto'
:src=
'item.AuditRecordList[0].AuditEmPhoto'
alt=
""
:onerror=
"defaultImg"
/>
<img
v-if=
'item.AuditRecordList.length==1&&!item.AuditRecordList[0].AuditEmPhoto'
src=
"../../assets/images/administration/litheader.png"
/>
<img
v-if=
'item.AuditRecordList.length==1&&item.AuditRecordList[0].AuditEmPhoto'
:src=
'item.AuditRecordList[0].AuditEmPhoto'
alt=
""
:onerror=
"defaultImg"
/>
<img
v-if=
'item.AuditRecordList.length>1'
src=
"../../assets/images/administration/bg_z1@2x.png"
/>
<p
v-if=
'item.AuditRecordList.length==1'
>
<span>
{{
item
.
AuditRecordList
[
0
].
AuditEmName
}}
</span>
<span
:style=
"'color: ' + item.AuditRecordList[0].StatusColor + ' !important'"
>
{{
item
.
AuditRecordList
[
0
].
Stauts
}}
</span>
<span
:style=
"'color: ' + item.AuditRecordList[0].StatusColor + ' !important'"
>
{{
item
.
AuditRecordList
[
0
].
Stauts
}}
</span>
<span
class=
"fr"
>
{{
item
.
AuditRecordList
[
0
].
AuditTime
}}
</span>
<span
style=
"display:block; padding-left: 40px; text-indent: 0; font-size: 12px; line-height: 24px; color: #333;"
>
{{
item
.
AuditRecordList
[
0
].
Description
}}
</span>
<span
v-if=
"item.AuditRecordList[0].CareOfList!=null"
style=
"display: inline-block; line-height: 24px; font-size: 12px; text-indent: 0; padding-left:40px; color: #666;"
>
<b
style=
"color: red;"
>
由
</b>
{{
item
.
AuditRecordList
[
0
].
CareOfList
[
0
].
BeFrom
}}
<b
style=
"color: red;"
>
转
</b>
{{
item
.
AuditRecordList
[
0
].
CareOfList
[
0
].
Target
}}
<br/>
<span
style=
"display:block; padding-left: 40px; text-indent: 0; font-size: 12px; line-height: 24px; color: #333;"
>
{{
item
.
AuditRecordList
[
0
].
Description
}}
</span>
<span
v-if=
"item.AuditRecordList[0].CareOfList!=null"
style=
"display: inline-block; line-height: 24px; font-size: 12px; text-indent: 0; padding-left:40px; color: #666;"
>
<b
style=
"color: red;"
>
由
</b>
{{
item
.
AuditRecordList
[
0
].
CareOfList
[
0
].
BeFrom
}}
<b
style=
"color: red;"
>
转
</b>
{{
item
.
AuditRecordList
[
0
].
CareOfList
[
0
].
Target
}}
<br
/>
{{
item
.
AuditRecordList
[
0
].
CareOfList
[
0
].
Remarks
}}
</span>
</p>
<p
v-if=
'item.AuditRecordList.length>1'
style=
"cursor: pointer;"
>
<span>
{{
item
.
AuditDescription
}}{{
item
.
AuditWay
}}
</span>
<i
class=
"el-icon-arrow-right"
></i>
</p>
<div
v-if=
'item.AuditRecordList.length>1'
style=
" width: 300px; height: auto; margin:15px 0; border-radius: 4px; background: #F0F3FA;"
>
<div
v-if=
'item.AuditRecordList.length>1'
style=
" width: 300px; height: auto; margin:15px 0; border-radius: 4px; background: #F0F3FA;"
>
<p
v-if=
'item.AuditWayStatus==2'
style=
"padding: 10px; color: #666;"
>
须以下人员全部审批通过
</p>
<p
v-if=
'item.AuditWayStatus==3'
style=
"padding: 10px; color: #666;"
>
以下人员大于等于一人审批通过即可
</p>
<div
v-for=
"i in item.AuditRecordList"
>
<p
class=
"auditItemDetailtitle"
>
<img
width=
"28"
height=
"28"
v-if=
"!i.AuditEmPhoto"
src=
"../../assets/images/administration/litheader.png"
alt=
""
>
<img
width=
"28"
height=
"28"
v-if=
"!i.AuditEmPhoto"
src=
"../../assets/images/administration/litheader.png"
alt=
""
>
<img
width=
"28"
height=
"28"
v-else
:src=
"i.AuditEmPhoto"
alt=
""
:onerror=
"defaultImg"
>
<span>
{{
i
.
AuditEmName
}}
</span>
<span
:style=
"'color: ' + i.StatusColor + ' !important'"
>
{{
i
.
Stauts
}}
</span>
<span
style=
"display:block; padding-left: 40px; text-indent: 0; font-size: 12px; line-height: 24px; color: #333;"
>
{{
i
.
Description
}}
</span>
<span
v-if=
'i.CareOfList!=null'
style=
"display: inline-block; line-height: 24px; font-size: 12px; text-indent: 0; padding-left:40px; color: #666;"
>
<b
style=
"color: red;"
>
由
</b>
{{
i
.
CareOfList
[
0
].
BeFrom
}}
<b
style=
"color: red;"
>
转
</b>
{{
i
.
CareOfList
[
0
].
Target
}}
<br/>
<span
style=
"display:block; padding-left: 40px; text-indent: 0; font-size: 12px; line-height: 24px; color: #333;"
>
{{
i
.
Description
}}
</span>
<span
v-if=
'i.CareOfList!=null'
style=
"display: inline-block; line-height: 24px; font-size: 12px; text-indent: 0; padding-left:40px; color: #666;"
>
<b
style=
"color: red;"
>
由
</b>
{{
i
.
CareOfList
[
0
].
BeFrom
}}
<b
style=
"color: red;"
>
转
</b>
{{
i
.
CareOfList
[
0
].
Target
}}
<br
/>
{{
i
.
CareOfList
[
0
].
Remarks
}}
</span>
</p>
<div
class=
"auditItemImgList"
v-if=
"toArr(i.Image).length>0"
>
<img
v-for=
'img in toArr(i.Image)'
:src=
"img"
@
click=
"getPic(toArr(i.Image))"
/>
<img
v-for=
'img in toArr(i.Image)'
:src=
"img"
@
click=
"getPic(toArr(i.Image))"
/>
</div>
</div>
</div>
</div>
</div>
<!--audit end-->
<div
class=
"send"
v-if=
"detailList.AuditStatus==5"
>
<!--v-if="detailList.AuditStatus==5"-->
</div>
<!--audit end-->
<div
class=
"send"
v-if=
"detailList.AuditStatus==5"
>
<p
class=
"sentTitle"
>
抄送
<span>
审批通过后,通知抄送人
</span></p>
<div
class=
"sendList"
>
<div
v-for=
"(item,index) in detailList.CopyToPeopleList"
>
<img
v-if=
"!item.EmPhoto"
src=
"../../assets/images/administration/litheader.png"
alt=
""
>
<img
v-else
:src=
"item.EmPhoto"
alt=
""
:onerror=
"defaultImg"
>
<br/>
<br
/>
{{
item
.
EmName
}}
</div>
</div>
</div>
<!--send end-->
</div>
<!--send end-->
</div>
<div
:class=
"
{viewBigPicLayer:true,viewBigPicLayerDisplayNone:dspNone}" @click="closePicLayer">
<i
@
click=
"closePicLayer"
class=
"el-icon-circle-close-outline clolseViewBigPicLayer"
></i>
<i
@
click=
"closePicLayer"
class=
"el-icon-circle-close-outline clolseViewBigPicLayer"
></i>
<el-carousel
height=
"600px"
:interval=
"5000"
trigger=
"click"
>
<el-carousel-item
v-for=
"(item,index) in picObj"
:key=
"index"
>
<img
:src=
"item"
/>
</el-carousel-item>
</el-carousel>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"hollowFixedBtn"
@
click=
"outerVisible=false"
>
关闭
</button>
</div>
</el-dialog>
</div>
</
template
>
...
...
@@ -216,69 +230,74 @@
getSchoolDropdown
,
}
from
'../../api/school/index'
export
default
{
meta
:
{
title
:
"审批统计"
},
data
()
{
return
{
picObj
:[],
dspNone
:
true
,
loading
:
true
,
outerVisible
:
false
,
dialogTitle
:
""
,
total
:
0
,
picObj
:
[],
dspNone
:
true
,
loading
:
true
,
outerVisible
:
false
,
dialogTitle
:
""
,
total
:
0
,
currentPage
:
1
,
defaultImg
:
'this.src="'
+
require
(
'../../assets/images/administration/litheader.png'
)
+
'"'
,
//请求数据
msg
:{
RB_BranchId
:
'-1'
,
Status
:
'0'
,
CreateBy
:
'0'
,
ToAuditId
:
'0'
,
AuditedId
:
'0'
,
TemplateId
:
0
,
PageIndex
:
1
,
PageSize
:
15
,
StartTime
:
''
,
EndTime
:
''
,
msg
:
{
RB_BranchId
:
'-1'
,
Status
:
'0'
,
CreateBy
:
'0'
,
ToAuditId
:
'0'
,
AuditedId
:
'0'
,
TemplateId
:
0
,
PageIndex
:
1
,
PageSize
:
15
,
StartTime
:
''
,
EndTime
:
''
,
},
getCompanyMsg
:{
RB_Group_Id
:
'0'
,
Status
:
'0'
,
getCompanyMsg
:
{
RB_Group_Id
:
'0'
,
Status
:
'0'
,
},
getUserMsg
:{
RB_Branch_id
:
'-1'
,
getUserMsg
:
{
RB_Branch_id
:
'-1'
,
},
//返回数据
list
:[],
companyList
:[],
userList
:[],
ApplyTypeList
:[],
appAuditStatusList
:[],
detailList
:{},
list
:
[],
companyList
:
[],
userList
:
[],
ApplyTypeList
:
[],
appAuditStatusList
:
[],
detailList
:
{},
}
},
methods
:
{
getPic
(
obj
){
this
.
picObj
=
obj
this
.
dspNone
=
false
;
getPic
(
obj
)
{
this
.
picObj
=
obj
this
.
dspNone
=
false
;
},
closePicLayer
(){
this
.
dspNone
=
true
closePicLayer
()
{
this
.
dspNone
=
true
},
toArr
(
val
){
let
arr
=
[]
if
(
val
!=
"[]"
)
{
val
.
substring
(
1
,
val
.
length
-
1
).
split
(
','
).
forEach
(
item
=>
{
arr
.
push
(
item
.
substring
(
1
,
item
.
length
-
1
))
toArr
(
val
)
{
let
arr
=
[]
if
(
val
!=
"[]"
)
{
val
.
substring
(
1
,
val
.
length
-
1
).
split
(
','
).
forEach
(
item
=>
{
arr
.
push
(
item
.
substring
(
1
,
item
.
length
-
1
))
});
}
return
arr
;
},
getDetail
(
id
,
type
){
getAuditInfo
({
WorkFlowId
:
id
,
TemplateType
:
type
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
outerVisible
=
true
;
this
.
dialogTitle
=
'审批详情'
this
.
detailList
=
res
.
Data
getDetail
(
id
,
type
)
{
getAuditInfo
({
WorkFlowId
:
id
,
TemplateType
:
type
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
outerVisible
=
true
;
this
.
dialogTitle
=
'审批详情'
this
.
detailList
=
res
.
Data
}
}).
catch
(()
=>
{
...
...
@@ -291,13 +310,16 @@
// }
// },err=>{})
},
getAppAuditStatus
(){
getAppAuditStatus
()
{
getMyInitiateAuditStatus
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
res
.
Data
.
forEach
(
item
=>
{
for
(
let
key
in
item
){
if
(
item
.
hasOwnProperty
(
key
)){
this
.
appAuditStatusList
.
push
({
label
:
key
,
value
:
item
[
key
]})
if
(
res
.
Code
==
1
)
{
res
.
Data
.
forEach
(
item
=>
{
for
(
let
key
in
item
)
{
if
(
item
.
hasOwnProperty
(
key
))
{
this
.
appAuditStatusList
.
push
({
label
:
key
,
value
:
item
[
key
]
})
}
}
})
...
...
@@ -306,13 +328,16 @@
})
},
getApplyType
()
{
//模板类型
getApplyType
()
{
//模板类型
gettemplatetype
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
res
.
Data
.
forEach
(
item
=>
{
for
(
let
key
in
item
){
if
(
item
.
hasOwnProperty
(
key
)){
this
.
ApplyTypeList
.
push
({
label
:
key
,
value
:
item
[
key
]})
if
(
res
.
Code
==
1
)
{
res
.
Data
.
forEach
(
item
=>
{
for
(
let
key
in
item
)
{
if
(
item
.
hasOwnProperty
(
key
))
{
this
.
ApplyTypeList
.
push
({
label
:
key
,
value
:
item
[
key
]
})
}
}
})
...
...
@@ -321,17 +346,17 @@
})
},
getCompany
(){
getCompany
()
{
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
companyList
=
res
.
Data
;
})
},
getUser
(){
this
.
msg
.
CreateBy
=
'0'
this
.
msg
.
ToAuditId
=
'0'
this
.
msg
.
AuditedId
=
'0'
this
.
getUserMsg
.
RB_Branch_id
=
this
.
msg
.
RB_BranchId
;
getUser
()
{
this
.
msg
.
CreateBy
=
'0'
this
.
msg
.
ToAuditId
=
'0'
this
.
msg
.
AuditedId
=
'0'
this
.
getUserMsg
.
RB_Branch_id
=
this
.
msg
.
RB_BranchId
;
var
qMsg
=
{
School_Id
:
this
.
msg
.
RB_BranchId
}
...
...
@@ -343,14 +368,14 @@
}
})
},
getList
(){
this
.
loading
=
true
;
getList
()
{
this
.
loading
=
true
;
getOAPageList
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
list
=
res
.
Data
.
PageData
;
this
.
total
=
res
.
Data
.
Count
;
this
.
loading
=
false
if
(
res
.
Code
==
1
)
{
this
.
list
=
res
.
Data
.
PageData
;
this
.
total
=
res
.
Data
.
Count
;
this
.
loading
=
false
}
}).
catch
(()
=>
{
...
...
@@ -376,8 +401,8 @@
},
mounted
()
{
let
userInfo
=
this
.
getLocalStorage
();
this
.
getUserMsg
.
RB_Group_id
=
this
.
getCompanyMsg
.
RB_Group_Id
=
userInfo
.
RB_Group_id
;
//集团ID
let
userInfo
=
this
.
getLocalStorage
();
this
.
getUserMsg
.
RB_Group_id
=
this
.
getCompanyMsg
.
RB_Group_Id
=
userInfo
.
RB_Group_id
;
//集团ID
this
.
getCompany
()
this
.
getUser
()
this
.
getList
()
...
...
@@ -386,26 +411,130 @@
}
}
</
script
>
<
style
>
@import
"../financial/css/cssReset.css"
;
.approvalStatisticalDialog
{
width
:
400px
;
background
:
#fff
}
.approvalStatisticalDialog
.title
{
height
:
48px
;
background
:
#EDEEF0
;
line-height
:
48px
;
font-size
:
16px
;
color
:
#333
;
text-indent
:
30px
;}
.approvalStatisticalDialog
.user
{
width
:
340px
;
margin
:
0
30px
;
border-bottom
:
1px
solid
#E6E6E6
;
height
:
60px
;
padding
:
30px
0
;
box-sizing
:
content-box
}
.approvalStatisticalDialog
.user
>
p
{
line-height
:
28px
;}
.approvalStatisticalDialog
.user
>
img
{
width
:
58px
;
height
:
58px
;
border-radius
:
29px
;
float
:
left
;
margin
:
0
12px
0
0
;}
.approvalStatisticalDialog
.detail
{
width
:
340px
;
margin
:
0
30px
;
padding
:
25px
0
;
border-bottom
:
1px
solid
#E6E6E6
;
min-height
:
120px
;}
.approvalStatisticalDialog
.audit
{
width
:
340px
;
margin
:
30px
30px
0
;
min-height
:
120px
;
border-bottom
:
1px
solid
#E6E6E6
;}
.approvalStatisticalDialog
.audit
.auditItem
{
min-height
:
80px
;
width
:
320px
;
margin-left
:
20px
;
border-left
:
1px
solid
#EDEDED
;
position
:
relative
;
font-size
:
14px
;}
.approvalStatisticalDialog
.audit
.auditItem
:last-child
{
border-left
:
none
;}
.approvalStatisticalDialog
.audit
.auditItem
>
p
{
line-height
:
40px
;
text-indent
:
40px
;}
.approvalStatisticalDialog
.audit
.auditItem
>
img
{
width
:
40px
;
height
:
40px
;
border-radius
:
20px
;
position
:
absolute
;
left
:
-20px
;}
.approvalStatisticalDialog
.send
{
width
:
340px
;
margin
:
30px
30px
0
;
min-height
:
120px
;}
.approvalStatisticalDialog
.send
.sentTitle
{
height
:
14px
;
line-height
:
14px
;
text-indent
:
10px
;
border-left
:
3px
solid
#E95252
;
font-size
:
14px
;}
.approvalStatisticalDialog
.send
.sentTitle
span
{
color
:
#666
;
margin-left
:
20px
;}
.approvalStatisticalDialog
.send
.sendList
>
div
{
float
:
left
;
margin
:
10px
10px
0
0
;
font-size
:
12px
;
color
:
#666
;
width
:
40px
;
text-align
:
center
;}
.approvalStatisticalDialog
.send
.sendList
>
div
>
img
{
width
:
40px
;
height
:
40px
;
border-radius
:
20px
;}
.approvalStatisticalDialog
.myApprovalTable
tr
{
height
:
40px
;
font-size
:
14px
;}
.approvalStatisticalDialog
.myApprovalTable
tr
td
:nth-child
(
1
)
{
text-align
:
right
;
color
:
#666
;
}
.approvalStatisticalDialog
{
width
:
400px
;
background
:
#fff
}
.approvalStatisticalDialog
.title
{
height
:
48px
;
background
:
#EDEEF0
;
line-height
:
48px
;
font-size
:
16px
;
color
:
#333
;
text-indent
:
30px
;
}
.approvalStatisticalDialog
.user
{
width
:
340px
;
margin
:
0
30px
;
border-bottom
:
1px
solid
#E6E6E6
;
height
:
60px
;
padding
:
30px
0
;
box-sizing
:
content-box
}
.approvalStatisticalDialog
.user
>
p
{
line-height
:
28px
;
}
.approvalStatisticalDialog
.user
>
img
{
width
:
58px
;
height
:
58px
;
border-radius
:
29px
;
float
:
left
;
margin
:
0
12px
0
0
;
}
.approvalStatisticalDialog
.detail
{
width
:
340px
;
margin
:
0
30px
;
padding
:
25px
0
;
border-bottom
:
1px
solid
#E6E6E6
;
min-height
:
120px
;
}
.approvalStatisticalDialog
.audit
{
width
:
340px
;
margin
:
30px
30px
0
;
min-height
:
120px
;
border-bottom
:
1px
solid
#E6E6E6
;
}
.approvalStatisticalDialog
.audit
.auditItem
{
min-height
:
80px
;
width
:
320px
;
margin-left
:
20px
;
border-left
:
1px
solid
#EDEDED
;
position
:
relative
;
font-size
:
14px
;
}
.approvalStatisticalDialog
.audit
.auditItem
:last-child
{
border-left
:
none
;
}
.approvalStatisticalDialog
.audit
.auditItem
>
p
{
line-height
:
40px
;
text-indent
:
40px
;
}
.approvalStatisticalDialog
.audit
.auditItem
>
img
{
width
:
40px
;
height
:
40px
;
border-radius
:
20px
;
position
:
absolute
;
left
:
-20px
;
}
.approvalStatisticalDialog
.send
{
width
:
340px
;
margin
:
30px
30px
0
;
min-height
:
120px
;
}
.approvalStatisticalDialog
.send
.sentTitle
{
height
:
14px
;
line-height
:
14px
;
text-indent
:
10px
;
border-left
:
3px
solid
#E95252
;
font-size
:
14px
;
}
.approvalStatisticalDialog
.send
.sentTitle
span
{
color
:
#666
;
margin-left
:
20px
;
}
.approvalStatisticalDialog
.send
.sendList
>
div
{
float
:
left
;
margin
:
10px
10px
0
0
;
font-size
:
12px
;
color
:
#666
;
width
:
40px
;
text-align
:
center
;
}
.approvalStatisticalDialog
.send
.sendList
>
div
>
img
{
width
:
40px
;
height
:
40px
;
border-radius
:
20px
;
}
.approvalStatisticalDialog
.myApprovalTable
tr
{
height
:
40px
;
font-size
:
14px
;
}
.approvalStatisticalDialog
.myApprovalTable
tr
td
:nth-child
(
1
)
{
text-align
:
right
;
color
:
#666
;
}
</
style
>
src/pages/administration/Attendance.vue
View file @
16528502
...
...
@@ -3,9 +3,9 @@
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"resetSearch()"
option-value=
"SId"
option-label=
"SName"
v-model=
"msg.RB_BranchId"
ref=
"School_Id"
:options=
"schoolList"
label=
"所属校区"
:dense=
"false"
emit-value
map-options
/>
<q-select
filled
stack-label
@
input=
"resetSearch()"
option-value=
"SId"
option-label=
"SName"
v-model=
"msg.RB_BranchId"
ref=
"School_Id"
:options=
"schoolList"
label=
"所属校区"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
</div>
...
...
@@ -15,7 +15,7 @@
<th>
{{
$t
(
'admin.admin_personNumber'
)
}}
</th>
<th>
{{
$t
(
'adm.adm_Bindingattendance'
)
}}
</th>
<th>
{{
$t
(
'admin.admin_kqTime'
)
}}
</th>
<th
>
{{
$t
(
'admin.admin_czPerson'
)
}}
</th>
<th>
{{
$t
(
'admin.admin_czPerson'
)
}}
</th>
<th
width=
"150"
>
{{
$t
(
'admin.admin_operate'
)
}}
</th>
</tr>
<tr
v-for=
"(item,index) in dataList"
>
...
...
@@ -26,20 +26,15 @@
<td>
{{
item
.
UpdateName
}}
</td>
<td>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"$t('pub.updateMsg')"
placement=
"right"
>
<el-button
type=
"primary"
icon=
"el-icon-edit"
@
click=
"goUrl('AttendanceRules',item.Id,item.RB_BranchId)"
circle
></el-button>
<el-button
type=
"primary"
icon=
"el-icon-edit"
@
click=
"goUrl('AttendanceRules',item.Id,item.RB_BranchId)"
circle
></el-button>
</el-tooltip>
</td>
</tr>
</table>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
</el-pagination>
</div>
</
template
>
...
...
@@ -50,47 +45,48 @@
import
{
getAttendancePageList
}
from
'../../api/administration/administration'
export
default
{
export
default
{
meta
:
{
title
:
"考勤管理"
},
data
()
{
return
{
loading
:
true
,
loading
:
true
,
//分页
total
:
0
,
pageSize
:
''
,
currentPage
:
1
,
//请求数据
msg
:{
pageIndex
:
1
,
pageSize
:
15
,
RB_BranchId
:
'-1'
,
Status
:
'-1'
,
IsBind
:
'0'
msg
:
{
pageIndex
:
1
,
pageSize
:
15
,
RB_BranchId
:
'-1'
,
Status
:
'-1'
,
IsBind
:
'0'
},
companyMsg
:{
RB_Group_Id
:
"0"
,
Status
:
0
,
companyMsg
:
{
RB_Group_Id
:
"0"
,
Status
:
0
,
},
//返回数据
dataList
:[],
dataList
:
[],
schoolList
:
[],
//校区数组
}
},
methods
:{
getList
(){
this
.
loading
=
true
;
methods
:
{
getList
()
{
this
.
loading
=
true
;
getAttendancePageList
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
dataList
=
res
.
Data
.
PageData
;
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
total
=
res
.
Data
.
Count
;
}
else
{
this
.
loading
=
false
;
}
else
{
this
.
loading
=
false
;
}
})
},
getCompany
(){
//公司
getCompany
()
{
//公司
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
schoolList
=
res
.
Data
;
var
obj
=
{
...
...
@@ -106,26 +102,40 @@
},
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
this
.
currentPage
=
1
;
this
.
getList
();
},
goUrl
(
path
,
id
,
bId
)
{
this
.
$router
.
push
({
path
:
path
,
query
:{
"id"
:
id
,
"bId"
:
bId
}
})
goUrl
(
path
,
id
,
bId
)
{
this
.
$router
.
push
({
path
:
path
,
query
:
{
"id"
:
id
,
"bId"
:
bId
}
})
}
},
mounted
()
{
this
.
getList
();
this
.
getCompany
();
let
userInfo
=
this
.
getLocalStorage
();
this
.
companyMsg
.
RB_Group_Id
=
userInfo
.
RB_Group_id
;
//集团
let
userInfo
=
this
.
getLocalStorage
();
this
.
companyMsg
.
RB_Group_Id
=
userInfo
.
RB_Group_id
;
//集团
},
}
</
script
>
<
style
>
@import
"../financial/css/cssReset.css"
;
.singeRowTable
th
{
text-align
:
left
;
padding-left
:
10px
;}
.singeRowTable
td
{
text-align
:
left
;
padding-left
:
10px
}
.singeRowTable
th
{
text-align
:
left
;
padding-left
:
10px
;
}
.singeRowTable
td
{
text-align
:
left
;
padding-left
:
10px
}
</
style
>
src/pages/administration/document.vue
View file @
16528502
...
...
@@ -9,12 +9,12 @@
<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
clearable
@
change=
"getList"
standout=
"bg-primary text-white"
v-model=
"msg.Title"
label=
"公文标题"
@
clear=
"getList"
/>
<q-input
clearable
@
change=
"getList"
standout=
"bg-primary text-white"
v-model=
"msg.Title"
label=
"公文标题"
@
clear=
"getList"
/>
</div>
<div
class=
"col-3"
>
<q-input
clearable
@
change=
"getList"
standout=
"bg-primary text-white"
v-model=
"msg.Number"
label=
"编号"
@
clear=
"getList"
/>
<q-input
clearable
@
change=
"getList"
standout=
"bg-primary text-white"
v-model=
"msg.Number"
label=
"编号"
@
clear=
"getList"
/>
</div>
<q-select
@
input=
"getList"
filled
stack-label
option-value=
"Id"
option-label=
"EmployeeName"
use-input
v-model=
"msg.UpdateBy"
ref=
"DeptTier"
:options=
"PersionList"
label=
"发布人"
:dense=
"false"
...
...
@@ -32,27 +32,25 @@
v-model=
"msg.NoticeState"
ref=
"DeptTier"
:options=
"NoticeList"
label=
"发布状态"
:dense=
"false"
class=
"col-6 q-pr-lg"
emit-value
map-options
/>
</div>
</div>
<!-- <div class="page-option">
<q-btn color="accent" class="q-mr-md" icon="add" label="发布公文" @click="addDoc(null)" />
</div> -->
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-tow-column-table"
separator=
"none"
title=
""
:data=
"data"
:columns=
"columns"
row-key=
"name"
>
<
template
v-slot:top=
"props"
>
<div
class=
"page-option"
style=
"width:100%;"
>
<q-btn
color=
"accent"
style=
"float:right;margin-right:0;"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"发布公文"
@
click=
"addDoc(null)"
/>
<q-btn
color=
"accent"
style=
"float:right;margin-right:0;"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"发布公文"
@
click=
"addDoc(null)"
/>
</div>
</
template
>
<
template
v-slot:body-cell-NoticeStateName=
"props"
>
<q-td
:props=
"props"
>
<div
class=
"row"
style=
"line-height: 30px"
>
<img
v-if=
"props.row.NoticeState==2"
src=
"../../assets/images/dcaogao.png"
class=
"NoticeStateNimg"
/>
<img
v-if=
"props.row.NoticeState==3"
src=
"../../assets/images/dchehui.png"
class=
"NoticeStateNimg"
/>
<img
v-if=
"props.row.NoticeState==1"
src=
"../../assets/images/dfabu.png"
class=
"NoticeStateNimg"
/>
<span
:style=
"
{color:props.row.NoticeState==1?'#02C499':(props.row.NoticeState==2?'#2961FE':'#F72E52')}">
{{
props
.
row
.
NoticeStateName
}}
</span>
<img
v-if=
"props.row.NoticeState==3"
src=
"../../assets/images/dchehui.png"
class=
"NoticeStateNimg"
/>
<img
v-if=
"props.row.NoticeState==1"
src=
"../../assets/images/dfabu.png"
class=
"NoticeStateNimg"
/>
<span
:style=
"
{color:props.row.NoticeState==1?'#02C499':(props.row.NoticeState==2?'#2961FE':'#F72E52')}">
{{
props
.
row
.
NoticeStateName
}}
</span>
</div>
</q-td>
</
template
>
...
...
@@ -66,13 +64,15 @@
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-zhiding"
style=
"font-weight:400;color: #789CFF"
class=
"q-mr-xs"
label=
"置顶"
@
click=
"setNoticeOtion(props.row.Id,1)"
v-if=
"props.row.NoticeState==1&&props.row.Is_Top==2"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-quxiaozhiding1"
style=
"font-weight:400;color:#FF7C93;"
class=
"q-mr-xs"
label=
"取消置顶"
@
click=
"setNoticeOtion(props.row.Id,2)"
v-if=
"props.row.NoticeState==1&&props.row.Is_Top==1"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-xiangqing-"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
label=
"详情"
@
click=
"EditConfig(props.row.Id)"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-chehui4"
color=
"deep-orange"
style=
"font-weight:400"
class=
"q-mr-xs"
label=
"撤回"
@
click=
"setNoticeOtion(props.row.Id,3)"
v-if=
"props.row.NoticeState==1"
/>
label=
"置顶"
@
click=
"setNoticeOtion(props.row.Id,1)"
v-if=
"props.row.NoticeState==1&&props.row.Is_Top==2"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-quxiaozhiding1"
style=
"font-weight:400;color:#FF7C93;"
class=
"q-mr-xs"
label=
"取消置顶"
@
click=
"setNoticeOtion(props.row.Id,2)"
v-if=
"props.row.NoticeState==1&&props.row.Is_Top==1"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-xiangqing-"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
label=
"详情"
@
click=
"EditConfig(props.row.Id)"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-chehui4"
color=
"deep-orange"
style=
"font-weight:400"
class=
"q-mr-xs"
label=
"撤回"
@
click=
"setNoticeOtion(props.row.Id,3)"
v-if=
"props.row.NoticeState==1"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-xiugai1"
style=
"font-weight:400;color: #02C499"
class=
"q-mr-xs"
label=
"修改"
v-if=
"props.row.NoticeState!=1"
@
click=
"addDoc(props.row.Id)"
/>
</q-td>
...
...
@@ -101,16 +101,16 @@
</div>
<div
class=
"row"
>
<div
class=
"col-4"
style=
"margin-top: 20px"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Nam
e"
v-model=
"NoticeBaseInfo.NumberRule"
ref=
"DeptTier"
:options=
"RuleEnumList"
label=
"编号规则"
:dense=
"false
"
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
clearable
/>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
v-model=
"NoticeBaseInfo.NumberRul
e"
ref=
"DeptTier"
:options=
"RuleEnumList"
label=
"编号规则"
:dense=
"false"
class=
"col-6 q-pr-lg q-pb-lg
"
emit-value
map-options
clearable
/>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-4"
>
<div
class=
"col-4"
>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
multiple
clearable
filled
stack-label
use-input
use-chips
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"tempManager"
ref=
"ManagerId"
:options=
"PersionList
"
label=
"默认抄送"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"tempManager"
ref=
"ManagerId
"
:options=
"PersionList"
label=
"默认抄送"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
<template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
...
...
@@ -126,8 +126,7 @@
</div>
</div>
</template>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<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"
>
{{addMsg.Id==0?'发布公告':'修改公告'}}
</div>
...
...
@@ -135,14 +134,15 @@
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
>
基本资料
</div>
<q-card-section
class=
"q-pt-none"
>
<div
class=
"row wrap"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
standout=
"bg-primary text-white"
v-model=
"addMsg.From"
label=
"公文来源(FR)"
:rules=
"[val => !!val || '公文来源(FR)']"
/>
<selectTree
class=
"col-6 q-pb-lg q-pr-lg"
:treeData=
'DeptList'
:defaultArray=
"returnString"
nodeKey=
"DeptId"
:multiple=
"true"
:defaultExpandAll=
"true"
labelKey=
"DeptName"
childrenKey=
"ChildList"
tipText=
"To"
@
getChild=
"getChild"
classStr=
"col-6 q-pr-lg q-pb-lg"
></selectTree>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
standout=
"bg-primary text-white"
v-model=
"addMsg.From"
label=
"公文来源(FR)"
:rules=
"[val => !!val || '公文来源(FR)']"
/>
<selectTree
class=
"col-6 q-pb-lg q-pr-lg"
:treeData=
'DeptList'
:defaultArray=
"returnString"
nodeKey=
"DeptId"
:multiple=
"true"
:defaultExpandAll=
"true"
labelKey=
"DeptName"
childrenKey=
"ChildList"
tipText=
"To"
@
getChild=
"getChild"
classStr=
"col-6 q-pr-lg q-pb-lg"
></selectTree>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
multiple
clearable
filled
stack-label
use-input
use-chips
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"tempManager2"
ref=
"ManagerId"
:options=
"PersionList
"
label=
"默认抄送"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"tempManager2"
ref=
"ManagerId
"
:options=
"PersionList"
label=
"默认抄送"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
<
template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
...
...
@@ -151,16 +151,14 @@
</q-item>
</
template
>
</q-select>
<q-input
clearable
class=
"col-6 q-pb-lg q-pr-lg"
standout=
"bg-primary text-white"
disable
v-model=
"nNumber"
label=
"编号"
v-if=
"nNumber!=null "
/>
<q-input
clearable
filled
class=
"col-12 q-pb-lg q-pr-lg"
standout=
"bg-primary text-white"
v-model=
"addMsg.Title"
label=
"标题"
:rules=
"[val => !!val || '标题']"
/>
<q-input
clearable
class=
"col-6 q-pb-lg q-pr-lg"
standout=
"bg-primary text-white"
disable
v-model=
"nNumber"
label=
"编号"
v-if=
"nNumber!=null "
/>
<q-input
clearable
filled
class=
"col-12 q-pb-lg q-pr-lg"
standout=
"bg-primary text-white"
v-model=
"addMsg.Title"
label=
"标题"
:rules=
"[val => !!val || '标题']"
/>
<div
class=
"text-caption q-my-md q-px-xs text-grey-6"
>
公告内容
</div>
<ext-editor
:defaultMsg=
"addMsg.Content"
classStr=
"col-12"
@
getEditValue=
"getEditValue"
></ext-editor>
<el-upload
style=
"margin-top: 20px"
:http-request=
"uploadFile2"
:file-list=
"fileList"
:before-remove=
"beforeRemove"
:multiple=
"true"
:show-file-list=
"true"
action=
""
>
<el-upload
style=
"margin-top: 20px"
:http-request=
"uploadFile2"
:file-list=
"fileList"
:before-remove=
"beforeRemove"
:multiple=
"true"
:show-file-list=
"true"
action=
""
>
<el-button
size=
"small"
type=
"primary"
>
附件上传
</el-button>
</el-upload>
</div>
...
...
@@ -176,11 +174,7 @@
</q-card>
</q-dialog>
<el-drawer
title=
""
:visible
.
sync=
"drawer"
size=
"40%"
:with-header=
"false"
>
<q-img
:src=
"NoticeBaseInfo.Image"
spinner-color=
"white"
style=
" width: 100%;height: 120px"
/>
<q-img
:src=
"NoticeBaseInfo.Image"
spinner-color=
"white"
style=
" width: 100%;height: 120px"
/>
<div
style=
"padding: 20px"
>
<div
class=
"col-12 g row"
>
<div
class=
"col-6"
>
...
...
@@ -191,10 +185,12 @@
</div>
</div>
<div
class=
"col-12 row"
>
To:
<span
v-for=
"(item,index) in NInfo.DepartmentList"
:index=
"index"
>
{{item.DeptName}}{{NInfo.DepartmentList.length==index+1?'':'、'}}
</span>
To:
<span
v-for=
"(item,index) in NInfo.DepartmentList"
:index=
"index"
>
{{item.DeptName}}{{NInfo.DepartmentList.length==index+1?'':'、'}}
</span>
</div>
<div
class=
"col-12 row"
>
Cc:
<span
v-for=
"(item,index) in NInfo.CopyPeopleList"
:index=
"index"
>
{{item.EmName}}{{NInfo.CopyPeopleList.length==index+1?'':'、'}}
</span>
Cc:
<span
v-for=
"(item,index) in NInfo.CopyPeopleList"
:index=
"index"
>
{{item.EmName}}{{NInfo.CopyPeopleList.length==index+1?'':'、'}}
</span>
</div>
<div
class=
"col-12 row"
>
Time:{{NInfo.UpdateTime}}
...
...
@@ -204,13 +200,13 @@
</div>
<div
class=
"col-12 row"
style=
"margin-top: 20px"
>
<div>
附件:
</div>
<
template
>
<
template
>
<div
class=
"q-pa-md"
style=
"max-width: 350px"
>
<q-list
dense
padding
class=
"rounded-borders"
>
<q-item
clickable
v-ripple
v-for=
"(file,fIndex) in fileList"
:key=
"fIndex"
>
<q-item-section
>
<q-item-section>
<div
class=
"row"
@
click=
"wopen(file)"
>
<i
class=
"iconfont icon-xiazai2"
style=
"margin-right: 10px"
></i>
<i
class=
"iconfont icon-xiazai2"
style=
"margin-right: 10px"
></i>
{{
file
.
name
}}
</div>
</q-item-section>
...
...
@@ -228,12 +224,12 @@
import
{
getNoticePageList
,
getNoticeStateEnumList
,
getNoticeBaseInfo
,
//获取 公告配置
getNoticeRuleEnumList
,
//获取编号规则 枚举列表
setNoticeBaseInfo
,
//新增修改 公告配置
setNoticeOperation
,
//公告操作
setNoticeInfo
,
//发布公告
getNoticeInfo
,
//公告详情
getNoticeBaseInfo
,
//获取 公告配置
getNoticeRuleEnumList
,
//获取编号规则 枚举列表
setNoticeBaseInfo
,
//新增修改 公告配置
setNoticeOperation
,
//公告操作
setNoticeInfo
,
//发布公告
getNoticeInfo
,
//公告详情
}
from
'../../api/administration/document'
;
import
{
getDeptTree
...
...
@@ -248,22 +244,25 @@
import
selectTree
from
'../../components/common/select-tree'
export
default
{
meta
:
{
title
:
"行政公告"
},
components
:
{
extEditor
,
selectTree
},
name
:
"document"
,
data
()
{
return
{
data
()
{
return
{
tabCheck
:
'first'
,
msg
:
{
PageIndex
:
1
,
PageSize
:
20
,
Title
:
''
,
Number
:
''
,
NoticeState
:
0
,
Is_Top
:
0
,
UpdateBy
:
-
1
msg
:
{
PageIndex
:
1
,
PageSize
:
20
,
Title
:
''
,
Number
:
''
,
NoticeState
:
0
,
Is_Top
:
0
,
UpdateBy
:
-
1
},
loading
:
true
,
//公告column
...
...
@@ -310,43 +309,44 @@
name
:
'optioned'
,
label
:
'操作'
,
field
:
'DeptId'
}],
data
:[],
pageCount
:
0
,
NoticeList
:[],
}
],
data
:
[],
pageCount
:
0
,
NoticeList
:
[],
PersionList
:
[],
//员工列表
AllemployeeList
:
[],
//所有员工
NoticeBaseInfo
:{
//基础配置
Id
:
0
,
Image
:
''
,
From
:
''
,
NumberRule
:
''
,
NumberRuleName
:
''
,
CopyPeople
:
''
,
NoticeBaseInfo
:
{
//基础配置
Id
:
0
,
Image
:
''
,
From
:
''
,
NumberRule
:
''
,
NumberRuleName
:
''
,
CopyPeople
:
''
,
},
tempManager
:
[],
//默认抄送
tempManager2
:[],
//发布公告 默认抄送
RuleEnumList
:[],
//编号规则列表
tempManager2
:
[],
//发布公告 默认抄送
RuleEnumList
:
[],
//编号规则列表
saveLoading
:
false
,
persistent
:
false
,
addMsg
:{
//添加和修改公告
Id
:
0
,
From
:
''
,
To
:
'-1'
,
//抄送部门
CopyPeople
:
'-1'
,
//抄送人
Title
:
''
,
Content
:
''
,
NoticeState
:
1
,
//状态 1发布 2草稿
Is_Top
:
2
,
//是否置顶 1是 2否
FileList
:[],
//附件列表
addMsg
:
{
//添加和修改公告
Id
:
0
,
From
:
''
,
To
:
'-1'
,
//抄送部门
CopyPeople
:
'-1'
,
//抄送人
Title
:
''
,
Content
:
''
,
NoticeState
:
1
,
//状态 1发布 2草稿
Is_Top
:
2
,
//是否置顶 1是 2否
FileList
:
[],
//附件列表
},
fileList
:[],
//上传列表
fileList
:
[],
//上传列表
DeptList
:
[],
// 部门下拉
returnString
:
[],
//默认岗位
nNumber
:
null
,
nNumber
:
null
,
drawer
:
false
,
//显示右侧抽屉
NInfo
:{},
//详情内容
NInfo
:
{},
//详情内容
}
},
...
...
@@ -356,9 +356,9 @@
this
.
getEmployee
()
this
.
getNoticeBase
()
this
.
getDepartList
();
this
.
getNoticeRule
()
//获取编号规则 枚举列表
this
.
getNoticeRule
()
//获取编号规则 枚举列表
},
methods
:
{
methods
:
{
//获取编辑器值
getEditValue
(
obj
)
{
...
...
@@ -385,28 +385,27 @@
}
})
},
uploadFile2
(
files
)
{
uploadFile2
(
files
)
{
UploadSelfFile
(
'studentIcon'
,
files
.
file
,
res
=>
{
if
(
res
.
Code
==
1
)
{
let
obj
=
{
name
:
res
.
FileName
,
url
:
res
.
FileUrl
,
name
:
res
.
FileName
,
url
:
res
.
FileUrl
,
}
this
.
fileList
.
push
(
obj
)
}
})
},
beforeRemove
(
file
,
fileList
)
{
//删除的操作
this
.
fileList
.
forEach
((
x
,
j
)
=>
{
if
(
x
.
uid
==
file
.
uid
){
this
.
fileList
.
splice
(
j
,
1
)
beforeRemove
(
file
,
fileList
)
{
//删除的操作
this
.
fileList
.
forEach
((
x
,
j
)
=>
{
if
(
x
.
uid
==
file
.
uid
)
{
this
.
fileList
.
splice
(
j
,
1
)
}
})
},
getList
()
{
if
(
this
.
msg
.
UpdateBy
==
''
||
this
.
msg
.
UpdateBy
==
null
)
{
this
.
msg
.
UpdateBy
=
0
getList
()
{
if
(
this
.
msg
.
UpdateBy
==
''
||
this
.
msg
.
UpdateBy
==
null
)
{
this
.
msg
.
UpdateBy
=
0
}
this
.
loading
=
false
;
getNoticePageList
(
this
.
msg
).
then
(
res
=>
{
...
...
@@ -417,20 +416,21 @@
this
.
loading
=
false
})
},
getNoticeList
(){
getNoticeList
()
{
this
.
loading
=
false
;
getNoticeStateEnumList
({
Name
:
''
,
Id
:
''
}).
then
(
res
=>
{
getNoticeStateEnumList
({
Name
:
''
,
Id
:
''
}).
then
(
res
=>
{
this
.
NoticeList
=
res
.
Data
let
obj
=
{
Name
:
'不限'
,
Id
:
0
let
obj
=
{
Name
:
'不限'
,
Id
:
0
}
this
.
NoticeList
.
unshift
(
obj
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
//筛选员工
filterFn
(
val
,
update
)
{
...
...
@@ -444,15 +444,15 @@
})
},
//获取员工列表
getEmployee
()
{
getEmployee
()
{
var
qMsg
=
{
EmployeeName
:
""
}
queryEmployee
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
let
obj
=
{
EmployeeName
:
'不限'
,
Id
:
-
1
let
obj
=
{
EmployeeName
:
'不限'
,
Id
:
-
1
}
res
.
Data
.
unshift
(
obj
)
var
jsonData
=
res
.
Data
;
...
...
@@ -463,7 +463,6 @@
}
})
},
//获取部门下拉数据
getDepartList
(
id
)
{
let
msg
=
{
...
...
@@ -491,24 +490,26 @@
this
.
addMsg
.
To
=
''
;
}
},
////获取 公告配置
getNoticeBase
()
{
getNoticeBase
()
{
getNoticeBaseInfo
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
NoticeBaseInfo
=
res
.
Data
this
.
tempManager
=
res
.
Data
.
CopyPeople
.
split
(
','
).
map
(
Number
);
//字符串转为数组map 是转为数字
this
.
tempManager
=
res
.
Data
.
CopyPeople
.
split
(
','
).
map
(
Number
);
//字符串转为数组map 是转为数字
}
})
},
getNoticeRule
(){
getNoticeRuleEnumList
({
Name
:
''
,
Id
:
''
}).
then
(
res
=>
{
getNoticeRule
()
{
getNoticeRuleEnumList
({
Name
:
''
,
Id
:
''
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
RuleEnumList
=
res
.
Data
}
})
},
save
()
{
save
()
{
this
.
saveLoading
=
true
;
var
tempStr
=
""
;
if
(
this
.
tempManager
&&
this
.
tempManager
.
length
>
0
)
{
...
...
@@ -537,61 +538,61 @@
this
.
saveLoading
=
false
})
},
getNInfo
(
id
){
getNoticeInfo
({
NoticeId
:
id
}).
then
(
res
=>
{
getNInfo
(
id
)
{
getNoticeInfo
({
NoticeId
:
id
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
NInfo
=
res
.
Data
this
.
addMsg
.
Id
=
res
.
Data
.
Id
;
this
.
addMsg
.
From
=
res
.
Data
.
From
;
this
.
addMsg
.
Id
=
res
.
Data
.
Id
;
this
.
addMsg
.
From
=
res
.
Data
.
From
;
//数组处理
this
.
addMsg
.
To
=
res
.
Data
.
To
;
this
.
returnString
=
[]
this
.
addMsg
.
To
=
res
.
Data
.
To
;
this
.
returnString
=
[]
this
.
returnString
=
res
.
Data
.
To
.
split
(
','
).
map
(
Number
)
//数组处理
this
.
addMsg
.
CopyPeople
=
res
.
Data
.
CopyPeople
;
this
.
tempManager2
=
res
.
Data
.
CopyPeople
.
split
(
','
).
map
(
Number
)
//字符串转为数组map 是转为数字
this
.
addMsg
.
Title
=
res
.
Data
.
Title
;
this
.
addMsg
.
Content
=
res
.
Data
.
Content
;
this
.
addMsg
.
NoticeState
=
res
.
Data
.
NoticeState
;
this
.
addMsg
.
Is_Top
=
res
.
Data
.
Is_Top
;
this
.
addMsg
.
CopyPeople
=
res
.
Data
.
CopyPeople
;
this
.
tempManager2
=
res
.
Data
.
CopyPeople
.
split
(
','
).
map
(
Number
)
//字符串转为数组map 是转为数字
this
.
addMsg
.
Title
=
res
.
Data
.
Title
;
this
.
addMsg
.
Content
=
res
.
Data
.
Content
;
this
.
addMsg
.
NoticeState
=
res
.
Data
.
NoticeState
;
this
.
addMsg
.
Is_Top
=
res
.
Data
.
Is_Top
;
this
.
fileList
=
[];
res
.
Data
.
FileList
.
forEach
((
x
)
=>
{
let
obj
=
{
name
:
x
.
FileName
,
url
:
x
.
FileUrl
res
.
Data
.
FileList
.
forEach
((
x
)
=>
{
let
obj
=
{
name
:
x
.
FileName
,
url
:
x
.
FileUrl
}
this
.
fileList
.
push
(
obj
)
})
this
.
nNumber
=
res
.
Data
.
Number
;
this
.
nNumber
=
res
.
Data
.
Number
;
}
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{})
},
addDoc
(
id
)
{
this
.
nNumber
=
null
addDoc
(
id
)
{
this
.
nNumber
=
null
if
(
id
)
{
this
.
getNInfo
(
id
)
}
else
{
this
.
tempManager2
=
this
.
tempManager
?
this
.
tempManager
:
[]
this
.
addMsg
.
From
=
this
.
NoticeBaseInfo
.
From
;
this
.
addMsg
.
Title
=
this
.
NoticeBaseInfo
.
Title
;
this
.
addMsg
.
Id
=
0
;
this
.
addMsg
.
Content
=
this
.
NoticeBaseInfo
.
Content
;
this
.
addMsg
.
NoticeState
=
1
;
this
.
addMsg
.
Is_Top
=
2
;
this
.
addMsg
.
FileList
=
[];
this
.
fileList
=
[]
this
.
tempManager2
=
this
.
tempManager
?
this
.
tempManager
:
[]
this
.
addMsg
.
From
=
this
.
NoticeBaseInfo
.
From
;
this
.
addMsg
.
Title
=
this
.
NoticeBaseInfo
.
Title
;
this
.
addMsg
.
Id
=
0
;
this
.
addMsg
.
Content
=
this
.
NoticeBaseInfo
.
Content
;
this
.
addMsg
.
NoticeState
=
1
;
this
.
addMsg
.
Is_Top
=
2
;
this
.
addMsg
.
FileList
=
[];
this
.
fileList
=
[]
}
this
.
persistent
=
true
;
},
closeSaveForm
()
{
this
.
persistent
=
false
},
save_t
(
val
)
{
save_t
(
val
)
{
this
.
addMsg
.
NoticeState
=
val
//发布状态
this
.
addMsg
.
NoticeState
=
val
//发布状态
this
.
saveLoading
=
true
;
var
tempStr
=
""
;
if
(
this
.
tempManager2
&&
this
.
tempManager2
.
length
>
0
)
{
...
...
@@ -604,20 +605,20 @@
tempStr
=
tempStr
.
substr
(
1
);
}
this
.
addMsg
.
CopyPeople
=
tempStr
;
this
.
addMsg
.
FileList
=
[]
this
.
fileList
.
forEach
((
x
)
=>
{
let
obj
=
{
FileName
:
x
.
name
,
FileUrl
:
x
.
url
this
.
addMsg
.
FileList
=
[]
this
.
fileList
.
forEach
((
x
)
=>
{
let
obj
=
{
FileName
:
x
.
name
,
FileUrl
:
x
.
url
}
this
.
addMsg
.
FileList
.
push
(
obj
)
})
let
data
=
this
.
addMsg
if
(
data
.
CopyPeople
==
''
)
{
data
.
CopyPeople
=
-
1
if
(
data
.
CopyPeople
==
''
)
{
data
.
CopyPeople
=
-
1
}
if
(
data
.
To
==
''
)
{
data
.
To
=
-
1
if
(
data
.
To
==
''
)
{
data
.
To
=
-
1
}
setNoticeInfo
(
data
).
then
(
res
=>
{
this
.
saveLoading
=
false
...
...
@@ -632,19 +633,20 @@
this
.
$emit
(
"success"
)
this
.
persistent
=
false
this
.
getList
();
}
}).
catch
(()
=>
{
this
.
saveLoading
=
false
})
},
EditConfig
(
id
)
{
EditConfig
(
id
)
{
this
.
drawer
=
true
;
this
.
getNInfo
(
id
)
},
setNoticeOtion
(
id
,
type
){
setNoticeOperation
({
NoticeId
:
id
,
Type
:
type
}).
then
(
res
=>
{
setNoticeOtion
(
id
,
type
)
{
setNoticeOperation
({
NoticeId
:
id
,
Type
:
type
}).
then
(
res
=>
{
this
.
saveLoading
=
false
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
...
...
@@ -658,27 +660,30 @@
this
.
persistent
=
false
this
.
msg
.
PageIndex
=
1
;
this
.
getList
();
}
}).
catch
(()
=>
{
this
.
saveLoading
=
false
})
},
wopen
(
file
)
{
wopen
(
file
)
{
window
.
open
(
file
.
url
);
}
}
}
</
script
>
<
style
scoped
>
.second-item
{
.second-item
{}
.document
.NoticeStateNimg
{
width
:
30px
;
height
:
30px
;
margin-right
:
5px
;
}
.document
.NoticeStateNimg
{
width
:
30px
;
height
:
30px
;
margin-right
:
5px
;
}
.document
.q-pr-lg
{
.document
.q-pr-lg
{
padding-right
:
0
;
}
</
style
>
src/pages/course/achievements.vue
View file @
16528502
<
template
>
<div
class=
"achievements page-body"
>
<q-tabs
style=
"margin-bottom:20px;"
v-model=
"msg.Q_IsComfirm"
@
input=
"tabChange()"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tabs
style=
"margin-bottom:20px;"
v-model=
"msg.Q_IsComfirm"
@
input=
"tabChange()"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tab
:ripple=
"false"
name=
"1"
label=
"已发放绩效"
/>
<q-tab
:ripple=
"false"
name=
"2"
label=
"可发放绩效"
/>
</q-tabs>
...
...
@@ -12,12 +12,12 @@
v-model=
"msg.School_Id"
:options=
"schoolList"
emit-value
map-options
label=
"所属校区"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
input=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.ClassName"
label=
"班级名称"
maxlength=
"20
"
/>
<q-input
@
input=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.ClassName"
label=
"班级名称"
maxlength=
"20"
@
clear=
"resetSearch
"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
input=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.TeacherName"
label=
"教师名称"
maxlength=
"20
"
/>
label=
"教师名称"
maxlength=
"20"
@
clear=
"resetSearch
"
/>
</div>
<div
class=
"col-3"
v-if=
"msg.Q_IsComfirm==1"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
...
...
@@ -47,8 +47,7 @@
</div>
</div>
</div>
<div
class=
"productQueryList"
v-loading=
'loading'
>
<div
class=
"productQueryList"
v-loading=
'loading'
>
<ul
v-if=
"data.length!=0"
>
<li
v-for=
"(item,index) in data"
:key=
"index"
>
<div
class=
"dline"
>
...
...
@@ -60,9 +59,9 @@
<div
class=
"List-title"
>
{{item.TeacherName}}
</div>
<div
class=
"row d-div"
><span
class=
"d2-n"
>
原有课时费
</span>
{{item.BaseHourFee}}元
</div>
<div
class=
"row d-div"
style=
"color:#F28C1D;"
><span
class=
"d2-n"
>
课时费奖励
</span>
{{item.AddHourFee}}元
</div>
<div
class=
"row d-div"
><span
class=
"d2-n"
>
带班人数
</span>
{{item.BaseStuNum}}
<span
style=
"color:#F28C1D;"
v-if=
"item.AddStuNum>0"
>
{{'+'+item.AddStuNum}}
</span>
</div>
<div
class=
"row d-div"
><span
class=
"d2-n"
>
带班人数
</span>
{{item.BaseStuNum}}
<span
style=
"color:#F28C1D;"
v-if=
"item.AddStuNum>0"
>
{{'+'+item.AddStuNum}}
</span>
</div>
</div>
</div>
<div
class=
"d2"
>
<div
class=
"List-title"
>
招生信息
</div>
...
...
@@ -79,16 +78,20 @@
<div
class=
"d4"
>
<div
class=
"List-title"
>
绩效奖励
</div>
<div
class=
"row d-div"
style=
"align-items: flex-end;color: #F72E52;line-height: 14px"
>
¥
<span
style=
"font-size: 30px;line-height: 30px;font-weight: bold"
>
{{item.Money.toFixed(2).split('.')[0]}}.
</span>
{{item.Money.toFixed(2).split('.')[1]}}
¥
<span
style=
"font-size: 30px;line-height: 30px;font-weight: bold"
>
{{item.Money.toFixed(2).split('.')[0]}}.
</span>
{{item.Money.toFixed(2).split('.')[1]}}
</div>
<div
class=
"row d-div"
><span
class=
"d2-n"
style=
"width: 60px"
>
明细
</span>
<span
style=
"color:#2961FE;text-decoration:underline;cursor: pointer"
>
<div
class=
"row d-div"
><span
class=
"d2-n"
style=
"width: 60px"
>
明细
</span>
<span
style=
"color:#2961FE;text-decoration:underline;cursor: pointer"
>
{{item.UnitPrice}}元
<q-popup-proxy>
<q-banner>
<div
style=
"margin-top:20px;"
class=
"achievements-proxy"
>
<table
class=
"socialTable"
>
<tr>
<td
style=
"width:100px;"
v-if=
"item.JJList&&item.JJList.length>0"
:rowspan=
"item.JJList.length+2"
>
平均上课率
</td>
<td
style=
"width:100px;"
v-if=
"item.JJList&&item.JJList.length>0"
:rowspan=
"item.JJList.length+2"
>
平均上课率
</td>
<td
:colspan=
"item.JJFullRate.length+2"
>
满班率
</td>
</tr>
<tr>
...
...
@@ -128,8 +131,8 @@
</div>
<div
class=
"d5"
v-if=
"msg.Q_IsComfirm==2"
>
<div
class=
"List-title"
>
课时奖励
</div>
<div
class=
"row d-div"
><span
class=
"d2-n"
style=
"width: 110px;"
>
预计课时费调涨
</span>
<span
style=
"cursor: pointer;text-decoration:underline;"
>
{{item.AddHourFee}}元
</span>
<div
class=
"row d-div"
><span
class=
"d2-n"
style=
"width: 110px;"
>
预计课时费调涨
</span>
<span
style=
"cursor: pointer;text-decoration:underline;"
>
{{item.AddHourFee}}元
</span>
<q-popup-proxy>
<q-banner>
<div
style=
"margin-top:20px;"
class=
"achievements-proxy"
>
...
...
@@ -140,12 +143,13 @@
</th>
</tr>
<tr>
<td
style=
"width:100px;"
v-if=
"item.KSList&&item.KSList.length>0"
:rowspan=
"(item.KSList.length*2)+3"
>
平均上课率
</td>
<td
style=
"width:100px;"
v-if=
"item.KSList&&item.KSList.length>0"
:rowspan=
"(item.KSList.length*2)+3"
>
平均上课率
</td>
<td
:colspan=
"item.KSFullRate.length+3"
>
满班率
</td>
</tr>
<tr>
<td
colspan=
"2"
></td>
<td
v-for=
"(x,j) in item.KSFullRate"
>
<td
v-for=
"(x,j) in item.KSFullRate"
>
<div
class=
"Classdel_Div"
>
{{x.StartValue}}%-{{x.EndValue}}%
</div>
</td>
</tr>
...
...
@@ -161,16 +165,13 @@
<td
style=
"width:150px;"
>
奖励课时费
</td>
<td
v-for=
"(subItem,subIndex) in x.FullClassList"
style=
"width:100px;"
>
{{
subItem
.
ClassMoney
}}
</td>
</tr>
<tr>
<td>
增加带班人数
</td>
<td
v-for=
"(subItem,subIndex) in x.FullClassList"
style=
"width:100px;"
>
{{
subItem
.
PeopelNum
}}
</td>
</tr>
</
template
>
</table>
...
...
@@ -179,45 +180,57 @@
</q-popup-proxy>
</div>
<div
class=
"row d-div"
><span
class=
"d2-n"
style=
"width: 110px"
>
预计带班人数调涨
</span>
{{item.AddStuNum}}人
</div>
</div>
<div
class=
"d7"
>
<div
class=
"row"
style=
"align-items: center;color: #3FC4FF;cursor: pointer"
v-if=
"item.PerfState==2 && item.FinanceId==0"
@
click=
"systemShan(item)"
>
<img
src=
"../../assets/images/course/zhidan.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<div
class=
"row"
style=
"align-items: center;color: #3FC4FF;cursor: pointer"
v-if=
"item.PerfState==2 && item.FinanceId==0"
@
click=
"systemShan(item)"
>
<img
src=
"../../assets/images/course/zhidan.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
生成单据
</div>
<div
class=
"row"
style=
"align-items: center;color: #2961FE;cursor: pointer"
v-if=
"item.PerfState==2"
>
<img
src=
"../../assets/images/course/xiaoxi.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<img
src=
"../../assets/images/course/xiaoxi.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
账单信息
</div>
<div
class=
"row"
style=
"align-items: center;color: #02C499;cursor: pointer"
@
click=
"IsShowRemarkDialog=true,RemarkMsg.PerfId=item.Id"
>
<img
src=
"../../assets/images/course/addreamke.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<div
class=
"row"
style=
"align-items: center;color: #02C499;cursor: pointer"
@
click=
"IsShowRemarkDialog=true,RemarkMsg.PerfId=item.Id"
>
<img
src=
"../../assets/images/course/addreamke.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
添加备注
</div>
<div
class=
"row"
style=
"align-items: center;color: #8175FB;cursor: pointer"
@
click=
"gostudent(item,1)"
v-if=
"item.PerfState==1"
>
<img
src=
"../../assets/images/course/queren.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<div
class=
"row"
style=
"align-items: center;color: #8175FB;cursor: pointer"
@
click=
"gostudent(item,1)"
v-if=
"item.PerfState==1"
>
<img
src=
"../../assets/images/course/queren.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
确认订单
</div>
<div
class=
"row"
style=
"align-items: center;color: #F72E52;cursor: pointer"
@
click=
"gostudent(item,2)"
v-if=
"item.PerfState==1"
>
<img
src=
"../../assets/images/course/nofang.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<div
class=
"row"
style=
"align-items: center;color: #F72E52;cursor: pointer"
@
click=
"gostudent(item,2)"
v-if=
"item.PerfState==1"
>
<img
src=
"../../assets/images/course/nofang.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
不发放绩效
</div>
<div
class=
"row"
style=
"align-items: center;color: #02B4C4;cursor: pointer"
@
click=
"gostudent(item,3)"
v-if=
"item.PerfState==3"
>
<img
src=
"../../assets/images/course/huifu.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<div
class=
"row"
style=
"align-items: center;color: #02B4C4;cursor: pointer"
@
click=
"gostudent(item,3)"
v-if=
"item.PerfState==3"
>
<img
src=
"../../assets/images/course/huifu.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
恢复绩效
</div>
<div
class=
"row"
style=
"align-items: center;color: #F28C1D;cursor: pointer"
@
click=
"gostudent(item,4)"
v-if=
"item.PerfState==2 && item.FinanceId==0"
>
<img
src=
"../../assets/images/course/chehui.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
<div
class=
"row"
style=
"align-items: center;color: #F28C1D;cursor: pointer"
@
click=
"gostudent(item,4)"
v-if=
"item.PerfState==2 && item.FinanceId==0"
>
<img
src=
"../../assets/images/course/chehui.png"
alt=
""
style=
"width: 16px;height: 12px;margin-right: 5px;"
>
撤销奖励
</div>
</div>
</div>
<div
class=
"d6 row"
>
<span
style=
"color:#2D2D2D;"
>
教师备注:
</span>
<div
class=
"row wrap Remark-l"
v-if=
"item.RemarkList.length>0"
>
{{item.RemarkList[0].Content}}
<span
class=
"iconfont icon-xiangxia"
style=
"color: #2961FE;font-size: 10px;position: absolute;right: 0;top:10px"
>
<span
class=
"iconfont icon-xiangxia"
style=
"color: #2961FE;font-size: 10px;position: absolute;right: 0;top:10px"
>
<q-popup-proxy>
<q-banner>
<div
style=
"width: 700px;"
>
...
...
@@ -235,24 +248,18 @@
<div
v-else
class=
"row wrap Remark-l"
>
暂无
</div>
</div>
</li>
<li
style=
"border: none;display: flex;justify-content: flex-end;background: white;padding: 5px 20px"
>
<q-pagination
v-model=
"msg.PageIndex"
:max=
"pageCount"
@
input=
"changePage"
class=
"full-width justify-end"
color=
"primary"
:input=
"true"
>
<q-pagination
v-model=
"msg.PageIndex"
:max=
"pageCount"
@
input=
"changePage"
class=
"full-width justify-end"
color=
"primary"
:input=
"true"
>
</q-pagination>
</li>
</ul>
<div
v-else
style=
"width: 100%;color: #999999;text-align: center;font-size: 20px"
>
暂无数据
</div>
</div>
<!--添加备注-->
<q-dialog
v-model=
"IsShowRemarkDialog"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
</div>
<!--添加备注-->
<q-dialog
v-model=
"IsShowRemarkDialog"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 400px;max-width:500px;"
>
<q-card-section>
...
...
@@ -260,8 +267,8 @@
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<div
class=
"row wrap"
>
<q-input
filled
stack-label
maxlength=
"500"
:dense=
"false"
v-model=
"RemarkMsg.Remark"
class=
"col-12"
type=
"textarea
"
label=
"备注"
/>
<q-input
filled
stack-label
maxlength=
"500"
:dense=
"false"
v-model=
"RemarkMsg.Remark"
class=
"col-12
"
type=
"textarea"
label=
"备注"
/>
</div>
</q-card-section>
<q-separator
/>
...
...
@@ -271,10 +278,9 @@
@
click=
"saveRemark"
/>
</q-card-actions>
</q-card>
</q-dialog>
<!-- 一键制单-->
<q-dialog
v-model=
"ISsystem"
persistent
>
</q-dialog>
<!-- 一键制单-->
<q-dialog
v-model=
"ISsystem"
persistent
>
<q-card
style=
"width: 400px;max-width:500px;"
>
<q-card-section>
<div
class=
"text-h6"
>
一键制单
</div>
...
...
@@ -291,13 +297,13 @@
</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=
"ISsystem=false,Resetsystem()"
v-if=
"!Floading"
/>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"ISsystem=false,Resetsystem()"
v-if=
"!Floading"
/>
<q-btn
label=
"立即制单"
color=
"accent"
class=
"q-px-md"
style=
"font-weight:400 !important"
:loading=
"Floading"
@
click=
"savesystem()"
/>
</q-card-actions>
</q-card>
</q-dialog>
</q-dialog>
</div>
</template>
...
...
@@ -306,54 +312,75 @@
getSchoolDropdown
,
}
from
'../../api/school/index'
import
{
getBonusStateEnumList
,
//教师奖励状态 枚举
getBonusStateEnumList
,
//教师奖励状态 枚举
getTeachingPerfPageList
,
setTeachingPerfRemark
,
setTeachingPerfState
,
setTeachingPerfFinance
}
from
'../../api/course/class'
export
default
{
meta
:
{
title
:
"教师业绩奖励"
},
name
:
"achievements"
,
data
()
{
return
{
msg
:
{
PageIndex
:
1
,
PageSize
:
8
,
School_Id
:
0
,
ClassId
:
0
,
ClassName
:
''
,
//班级名称
TeacherId
:
0
,
TeacherName
:
''
,
Q_IsCreateFinance
:
0
,
//是否制单 1是 2否
Q_IsComfirm
:
'1'
,
//是否已确认 1是 2否
PerfState
:
0
,
//状态 枚举
StartTime
:
''
,
EndTime
:
''
,
OPStartTime
:
''
,
OPEndTime
:
''
,
data
()
{
return
{
msg
:
{
PageIndex
:
1
,
PageSize
:
8
,
School_Id
:
0
,
ClassId
:
0
,
ClassName
:
''
,
//班级名称
TeacherId
:
0
,
TeacherName
:
''
,
Q_IsCreateFinance
:
0
,
//是否制单 1是 2否
Q_IsComfirm
:
'1'
,
//是否已确认 1是 2否
PerfState
:
0
,
//状态 枚举
StartTime
:
''
,
EndTime
:
''
,
OPStartTime
:
''
,
OPEndTime
:
''
,
},
schoolList
:
[],
StateList
:[{
Id
:
0
,
Name
:
"不限"
},{
Id
:
1
,
Name
:
"已制单"
},{
Id
:
2
,
Name
:
"未制单"
},],
StateList2
:[{
Id
:
0
,
Name
:
"不限"
},{
Id
:
1
,
Name
:
"待处理"
},{
Id
:
3
,
Name
:
"不发放绩效"
},],
dateList
:[],
dateList2
:[],
data
:[],
StateList
:
[{
Id
:
0
,
Name
:
"不限"
},
{
Id
:
1
,
Name
:
"已制单"
},
{
Id
:
2
,
Name
:
"未制单"
},
],
StateList2
:
[{
Id
:
0
,
Name
:
"不限"
},
{
Id
:
1
,
Name
:
"待处理"
},
{
Id
:
3
,
Name
:
"不发放绩效"
},
],
dateList
:
[],
dateList2
:
[],
data
:
[],
loading
:
false
,
IsShowRemarkDialog
:
false
,
pageCount
:
0
,
RemarkMsg
:
{
Remark
:
''
,
PerfId
:
''
,
IsShowRemarkDialog
:
false
,
pageCount
:
0
,
RemarkMsg
:
{
Remark
:
''
,
PerfId
:
''
,
},
Dloading
:
false
,
ISsystem
:
false
,
Floading
:
false
,
FinanceMsg
:
{
PerfId
:
0
,
IsPublic
:
'0'
,
CurrencyId
:
''
,
Dloading
:
false
,
ISsystem
:
false
,
Floading
:
false
,
FinanceMsg
:
{
PerfId
:
0
,
IsPublic
:
'0'
,
CurrencyId
:
''
,
},
coinGetList
:[],
//币种数组
coinGetList
:
[],
//币种数组
}
},
created
()
{
...
...
@@ -361,7 +388,7 @@
this
.
getSchool
()
this
.
financeinfo_post_GetList
()
},
methods
:
{
methods
:
{
financeinfo_post_GetList
()
{
// 获取币种
this
.
apipost
(
'financeinfo_post_GetList'
,
{
Name
:
''
,
...
...
@@ -377,7 +404,7 @@
this
.
msg
.
PageIndex
=
1
this
.
getList
()
},
getList
()
{
getList
()
{
if
(
this
.
dateList
&&
this
.
dateList
.
length
>
0
)
{
this
.
msg
.
StartTime
=
this
.
dateList
[
0
];
this
.
msg
.
EndTime
=
this
.
dateList
[
1
];
...
...
@@ -412,20 +439,19 @@
})
})
},
//翻页
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
()
},
closeRemarkForm
()
{
closeRemarkForm
()
{
this
.
IsShowRemarkDialog
=
false
},
tabChange
(){
//切换tab
tabChange
()
{
//切换tab
this
.
resetSearch
()
},
saveRemark
()
{
if
(
this
.
RemarkMsg
.
Remark
==
''
)
{
saveRemark
()
{
if
(
this
.
RemarkMsg
.
Remark
==
''
)
{
this
.
$q
.
notify
({
type
:
'warning'
,
position
:
'top'
,
...
...
@@ -434,9 +460,9 @@
})
return
}
this
.
Dloading
=
true
this
.
Dloading
=
true
setTeachingPerfRemark
(
this
.
RemarkMsg
).
then
(
res
=>
{
this
.
Dloading
=
false
this
.
Dloading
=
false
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
@@ -446,23 +472,23 @@
position
:
'top'
})
this
.
getList
()
this
.
IsShowRemarkDialog
=
false
this
.
IsShowRemarkDialog
=
false
}
})
},
systemShan
(
item
){
//一键制单
systemShan
(
item
)
{
//一键制单
this
.
FinanceMsg
.
PerfId
=
item
.
Id
this
.
ISsystem
=
true
;
this
.
ISsystem
=
true
;
},
Resetsystem
()
{
this
.
FinanceMsg
=
{
PerfId
:
0
,
IsPublic
:
'0'
,
CurrencyId
:
''
,
Resetsystem
()
{
this
.
FinanceMsg
=
{
PerfId
:
0
,
IsPublic
:
'0'
,
CurrencyId
:
''
,
}
},
savesystem
()
{
if
(
this
.
FinanceMsg
.
CurrencyId
==
''
)
{
savesystem
()
{
if
(
this
.
FinanceMsg
.
CurrencyId
==
''
)
{
this
.
$q
.
notify
({
type
:
'warning'
,
position
:
'top'
,
...
...
@@ -485,27 +511,23 @@
that
.
getList
()
that
.
Resetsystem
()
that
.
Floading
=
false
that
.
ISsystem
=
false
;
that
.
ISsystem
=
false
;
that
.
$forceUpdate
()
}
}).
catch
(()
=>
{
this
.
Floading
=
false
})
},
gostudent
(
item
,
type
){
//确认
gostudent
(
item
,
type
)
{
//确认
let
that
=
this
let
text
=
''
;
if
(
type
==
1
){
if
(
type
==
1
)
{
text
=
'确认绩效'
}
else
if
(
type
==
2
)
{
}
else
if
(
type
==
2
)
{
text
=
'不发放绩效'
}
else
if
(
type
==
3
)
{
}
else
if
(
type
==
3
)
{
text
=
'恢复绩效'
}
else
if
(
type
==
4
)
{
}
else
if
(
type
==
4
)
{
text
=
'撤销绩效'
}
this
.
$q
.
dialog
({
...
...
@@ -519,7 +541,7 @@
}).
onOk
(()
=>
{
setTeachingPerfState
({
PerfId
:
item
.
Id
,
Type
:
type
Type
:
type
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
that
.
$q
.
notify
({
...
...
@@ -530,11 +552,9 @@
position
:
'top'
})
that
.
getList
()
}
})
}).
onCancel
(()
=>
{
});
},
}
...
...
@@ -542,24 +562,116 @@
</
script
>
<
style
>
.achievements
ul
{
padding
:
0px
}
.achievements
ul
li
{
background
:
rgba
(
221
,
222
,
224
,
0.2
);
border-radius
:
4px
;
margin-top
:
15px
;
list-style-type
:
none
}
.achievements
li
.List-title
{
font-size
:
16px
;
color
:
#111111
;
font-weight
:
bold
;
margin-bottom
:
10px
}
.achievements
li
.d-div
{
margin-top
:
5px
;
align-items
:
center
;
font-size
:
14px
}
.achievements
li
.dline
{
display
:
table
;
width
:
100%
;
display
:
flex
;
flex-direction
:
row
}
.achievements
li
.d1
{
flex
:
1
;
width
:
1px
;
padding
:
20px
13px
10px
;}
.achievements
li
.d2
,
.achievements
li
.d3
,
.achievements
li
.d4
,
.achievements
li
.d5
{
width
:
16.5%
;
padding
:
20px
13px
10px
;}
.achievements
li
.d7
{
width
:
11%
;
padding
:
20px
13px
10px
;}
.achievements
li
.d7
div
{
margin-bottom
:
5px
}
.achievements
li
.d1
.di-title
{
font-size
:
16px
;
color
:
#111111
;}
.achievements
li
.d1
.di-c
{
font-size
:
14px
;
display
:
flex
;
align-items
:
center
;
line-height
:
28px
;
color
:
#111111
}
.achievements
li
.d6
{
padding
:
20px
;
width
:
100%
;
height
:
inherit
;
position
:
relative
;
border-top
:
1px
solid
#DDDEE0
}
.achievements
li
.d2-n
{
font-size
:
12px
;
color
:
#999999
;
display
:
inline-block
;
width
:
70px
}
.achievements
li
.d3
.d3-s
{
color
:
#f5576c
;
font-weight
:
bold
}
.achievements
.d5-item
{
padding
:
3px
10px
;
background
:
#EEEEEF
;
color
:
#111111
;
align-items
:
center
;
justify-content
:
center
;
border-radius
:
4px
}
.achievements
.price-popup
{
border-radius
:
4px
;}
.achievements
.Remark-l
{
flex
:
1
;
padding
:
10px
15px
10px
10px
;
background
:
#E1EAF5
;
border-radius
:
4px
;
font-size
:
14px
;
color
:
#F28C1D
;
position
:
relative
}
.achievements
ul
{
padding
:
0px
}
.achievements
ul
li
{
background
:
rgba
(
221
,
222
,
224
,
0.2
);
border-radius
:
4px
;
margin-top
:
15px
;
list-style-type
:
none
}
.achievements
li
.List-title
{
font-size
:
16px
;
color
:
#111111
;
font-weight
:
bold
;
margin-bottom
:
10px
}
.achievements
li
.d-div
{
margin-top
:
5px
;
align-items
:
center
;
font-size
:
14px
}
.achievements
li
.dline
{
display
:
table
;
width
:
100%
;
display
:
flex
;
flex-direction
:
row
}
.achievements
li
.d1
{
flex
:
1
;
width
:
1px
;
padding
:
20px
13px
10px
;
}
.achievements
li
.d2
,
.achievements
li
.d3
,
.achievements
li
.d4
,
.achievements
li
.d5
{
width
:
16.5%
;
padding
:
20px
13px
10px
;
}
.achievements
li
.d7
{
width
:
11%
;
padding
:
20px
13px
10px
;
}
.achievements
li
.d7
div
{
margin-bottom
:
5px
}
.achievements
li
.d1
.di-title
{
font-size
:
16px
;
color
:
#111111
;
}
.achievements
li
.d1
.di-c
{
font-size
:
14px
;
display
:
flex
;
align-items
:
center
;
line-height
:
28px
;
color
:
#111111
}
.achievements
li
.d6
{
padding
:
20px
;
width
:
100%
;
height
:
inherit
;
position
:
relative
;
border-top
:
1px
solid
#DDDEE0
}
.achievements
li
.d2-n
{
font-size
:
12px
;
color
:
#999999
;
display
:
inline-block
;
width
:
70px
}
.achievements
li
.d3
.d3-s
{
color
:
#f5576c
;
font-weight
:
bold
}
.achievements
.d5-item
{
padding
:
3px
10px
;
background
:
#EEEEEF
;
color
:
#111111
;
align-items
:
center
;
justify-content
:
center
;
border-radius
:
4px
}
.achievements
.price-popup
{
border-radius
:
4px
;
}
.achievements
.Remark-l
{
flex
:
1
;
padding
:
10px
15px
10px
10px
;
background
:
#E1EAF5
;
border-radius
:
4px
;
font-size
:
14px
;
color
:
#F28C1D
;
position
:
relative
}
.achievements-proxy
tr
th
{
background
:
#fff
;
height
:
40px
;
...
...
@@ -578,6 +690,7 @@
font-size
:
12px
;
border
:
1px
solid
#E5E5E5
;
}
.Sysuser_Date
.el-range-editor
.el-range-input
{
background-color
:
transparent
;
}
...
...
src/pages/course/baseSet.vue
View file @
16528502
...
...
@@ -18,8 +18,8 @@
基础课时费:
</div>
<div
class=
"col-3"
>
<q-input
filled
stack-label
maxlength=
"8"
:dense=
"false"
v-model=
"msg.BasicHourFee"
ref=
"BasicHourFee"
class=
"q-pb-lg"
@
keyup
.
native=
"checkPrice(msg,'BasicHourFee')"
:rules=
"[val => !!val || '请填写基础课时费']"
/>
<q-input
filled
stack-label
maxlength=
"8"
:dense=
"false"
v-model=
"msg.BasicHourFee"
ref=
"BasicHourFee"
class=
"q-pb-lg"
@
keyup
.
native=
"checkPrice(msg,'BasicHourFee')"
:rules=
"[val => !!val || '请填写基础课时费']"
/>
</div>
</div>
<div
class=
"col row wrap"
>
...
...
@@ -27,8 +27,8 @@
基础带班人数:
</div>
<div
class=
"col-3"
>
<q-input
filled
stack-label
maxlength=
"6"
:dense=
"false"
v-model=
"msg.BasicClassNum"
ref=
"BasicClassNum"
class=
"q-pb-lg"
@
keyup
.
native=
"checkInteger(msg,'BasicClassNum')"
:rules=
"[val => !!val || '请填写基础带班人数']"
/>
<q-input
filled
stack-label
maxlength=
"6"
:dense=
"false"
v-model=
"msg.BasicClassNum"
ref=
"BasicClassNum"
class=
"q-pb-lg"
@
keyup
.
native=
"checkInteger(msg,'BasicClassNum')"
:rules=
"[val => !!val || '请填写基础带班人数']"
/>
</div>
</div>
<div
class=
"col row wrap"
>
...
...
@@ -36,8 +36,8 @@
课时分钟数:
</div>
<div
class=
"col-3"
>
<q-input
filled
stack-label
maxlength=
"6"
:dense=
"false"
v-model=
"msg.BasicMinutes"
ref=
"BasicMinutes"
class=
"q-pb-lg"
@
keyup
.
native=
"checkInteger(msg,'BasicMinutes')"
:rules=
"[val => !!val || '请填写课时分钟数']"
/>
<q-input
filled
stack-label
maxlength=
"6"
:dense=
"false"
v-model=
"msg.BasicMinutes"
ref=
"BasicMinutes"
class=
"q-pb-lg"
@
keyup
.
native=
"checkInteger(msg,'BasicMinutes')"
:rules=
"[val => !!val || '请填写课时分钟数']"
/>
</div>
<div
class=
"col-3"
style=
"padding:18px 0 0 10px;color:gray"
>
每节课的分钟数,单位为分钟计算
...
...
@@ -99,12 +99,14 @@
<q-card-section>
<div
class=
"text-h6"
>
{{commonTitle}}
</div>
</q-card-section>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"addMsg.CTypeName"
label=
"类型名称"
ref=
"CTypeName"
class=
"q-pb-lg"
:rules=
"[val => !!val || '请填写类型名称']"
/>
<q-input
filled
stack-label
:dense=
"false"
maxlength=
"6"
style=
"margin:20px 0;"
v-model=
"addMsg.AddHourFee"
label=
"基础课时费"
ref=
"AddHourFee"
class=
"q-pb-lg"
@
keyup
.
native=
"checkPrice(addMsg,'AddHourFee')"
:rules=
"[val => !!val || '请填写基础课时费']"
/>
<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
maxlength=
"20"
:dense=
"false"
v-model=
"addMsg.CTypeName"
label=
"类型名称"
ref=
"CTypeName"
class=
"q-pb-lg"
:rules=
"[val => !!val || '请填写类型名称']"
/>
<q-input
filled
stack-label
:dense=
"false"
maxlength=
"6"
style=
"margin:20px 0;"
v-model=
"addMsg.AddHourFee"
label=
"基础课时费"
ref=
"AddHourFee"
class=
"q-pb-lg"
@
keyup
.
native=
"checkPrice(addMsg,'AddHourFee')"
:rules=
"[val => !!val || '请填写基础课时费']"
/>
<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-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()"
/>
...
...
@@ -123,6 +125,9 @@
}
from
'../../api/system/index'
;
export
default
{
meta
:
{
title
:
"基础设置"
},
props
:
{},
components
:
{},
data
()
{
...
...
src/pages/course/classHourReward.vue
View file @
16528502
...
...
@@ -13,7 +13,8 @@
<div
class=
"col-3 Sysuser_Date"
>
<q-field
filled
>
<template
v-slot:control
>
<el-date-picker
v-model=
"msg.Month"
@
change=
"resetSearch"
type=
"month"
clearable
@
clear=
"resetSearch"
></el-date-picker>
<el-date-picker
v-model=
"msg.Month"
@
change=
"resetSearch"
type=
"month"
clearable
@
clear=
"resetSearch"
>
</el-date-picker>
</
template
>
</q-field>
</div>
...
...
@@ -73,7 +74,6 @@
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-xiangqing-"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
...
...
@@ -96,12 +96,6 @@
<q-item-label>
制单
</q-item-label>
</q-item-section>
</q-item>
<!--
<q-item
clickable
v-close-popup
v-if=
"props.row.State==1||props.row.State==2"
>
-->
<!--
<q-item-section
@
click=
"goexport(props.row)"
>
-->
<!--
<q-item-label>
导出
</q-item-label>
-->
<!--
</q-item-section>
-->
<!--
</q-item>
-->
</q-list>
</q-btn-dropdown>
</q-td>
...
...
@@ -161,7 +155,6 @@
</q-field>
</div>
</div>
<div
class=
"row col"
style=
"margin-top: 30px"
>
<q-btn
class=
"q-mr-md"
label=
"取消"
@
click=
"drawer=false"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"保存"
@
click=
"saveOrderInfo()"
:loading=
"Dloading"
/>
...
...
@@ -183,6 +176,9 @@
getTeacherDropDownList
,
}
from
'../../api/school/index'
;
export
default
{
meta
:
{
title
:
"教师课时奖励"
},
name
:
"classHourReward"
,
data
()
{
return
{
...
...
src/pages/course/socialclass.vue
View file @
16528502
...
...
@@ -235,6 +235,9 @@
import
classFee
from
'../../components/course/classFee'
export
default
{
meta
:
{
title
:
"社会班设置"
},
props
:
{},
components
:
{
classFee
...
...
src/pages/course/studentClass.vue
View file @
16528502
...
...
@@ -234,6 +234,9 @@
import
studentFee
from
'../../components/course/studentFee'
export
default
{
meta
:
{
title
:
"学生班设置"
},
props
:
{},
components
:
{
studentFee
...
...
@@ -242,9 +245,6 @@
return
{
tabCheck
:
'first'
,
//默认选第一个
dense
:
false
,
msg
:
{
},
FullClassRateList
:
[],
//头部列数据
dataList
:
[],
//列表数据
isShowAddMenu
:
false
,
//显示新增上课率弹出
...
...
src/pages/sale/japaneseTrain.vue
View file @
16528502
...
...
@@ -23,7 +23,8 @@
<q-field
filled
>
<template
v-slot:control
>
<el-date-picker
v-model=
"dateList"
@
change=
"resetSearch"
value-format=
"yyyy-MM-dd"
type=
"daterange"
style=
"border:none;"
range-separator=
"至"
start-placeholder=
"开学日期"
end-placeholder=
"结束日期"
clearable
@
clear=
"resetSearch"
>
range-separator=
"至"
start-placeholder=
"开学日期"
end-placeholder=
"结束日期"
clearable
@
clear=
"resetSearch"
>
</el-date-picker>
</
template
>
</q-field>
...
...
@@ -233,6 +234,9 @@
queryCourseDropdownList
,
}
from
'../../api/course/index'
export
default
{
meta
:
{
title
:
"日语培训"
},
components
:
{},
data
()
{
return
{
...
...
@@ -521,11 +525,11 @@
SaleRemark
:
''
,
//备注
}
}
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{})
}
}
}
</
script
>
<
style
>
li
{
...
...
src/pages/sale/myOrder.vue
View file @
16528502
...
...
@@ -122,6 +122,9 @@
import
classinfoForm
from
'../../components/course/classinfo-form'
;
import
orderlist
from
'../../components/sale/orderlist'
export
default
{
meta
:
{
title
:
"我的订单"
},
components
:
{
myOrderForm
,
classinfoForm
,
...
...
src/pages/school/sysuser.vue
View file @
16528502
...
...
@@ -199,7 +199,7 @@
import
selectTree
from
'../../components/common/select-tree'
export
default
{
meta
:
{
title
:
"
后台用户
管理"
title
:
"
员工
管理"
},
components
:
{
managerForm
,
...
...
src/pages/school/teacher.vue
View file @
16528502
...
...
@@ -135,7 +135,7 @@
import
teacherShenhe
from
'../../components/school/teacher/teacher-shenhe'
export
default
{
meta
:
{
title
:
"
教
师管理"
title
:
"
讲
师管理"
},
components
:
{
teacherForm
,
...
...
src/pages/system/processSet.vue
View file @
16528502
...
...
@@ -239,6 +239,9 @@
saveBackClassFlow
}
from
'../../api/system/index'
export
default
{
meta
:
{
title
:
"流程设置"
},
components
:
{
processForm
},
...
...
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