Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
6aa5c7c8
Commit
6aa5c7c8
authored
Apr 13, 2023
by
dll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
78659b91
Changes
29
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
541 additions
and
267 deletions
+541
-267
attendance-performance-manager-ui/admin/.env.development
attendance-performance-manager-ui/admin/.env.development
+3
-0
attendance-performance-manager-ui/admin/.env.test
attendance-performance-manager-ui/admin/.env.test
+1
-0
attendance-performance-manager-ui/admin/src/assets/mixins/form.js
...ce-performance-manager-ui/admin/src/assets/mixins/form.js
+1
-0
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+61
-2
attendance-performance-manager-ui/admin/src/assets/utils/ajax.js
...nce-performance-manager-ui/admin/src/assets/utils/ajax.js
+5
-3
attendance-performance-manager-ui/admin/src/assets/utils/common.js
...e-performance-manager-ui/admin/src/assets/utils/common.js
+36
-1
attendance-performance-manager-ui/admin/src/components/FormField.vue
...performance-manager-ui/admin/src/components/FormField.vue
+16
-0
attendance-performance-manager-ui/admin/src/components/ImageUpload.vue
...rformance-manager-ui/admin/src/components/ImageUpload.vue
+8
-3
attendance-performance-manager-ui/admin/src/router.js
attendance-performance-manager-ui/admin/src/router.js
+3
-3
attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue
...ance-manager-ui/admin/src/views/attendance/class/list.vue
+16
-16
attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue
...ance-manager-ui/admin/src/views/attendance/group/list.vue
+5
-5
attendance-performance-manager-ui/admin/src/views/attendance/group/responsible/dialogshow.vue
...min/src/views/attendance/group/responsible/dialogshow.vue
+59
-11
attendance-performance-manager-ui/admin/src/views/attendance/group/responsible/list.vue
...-ui/admin/src/views/attendance/group/responsible/list.vue
+18
-4
attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue
...ance-manager-ui/admin/src/views/attendance/group/view.vue
+130
-78
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/dialogshow.vue
...ui/admin/src/views/attendance/leave/record/dialogshow.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue
...ui/admin/src/views/attendance/leave/record/drawershow.vue
+25
-25
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue
...nager-ui/admin/src/views/attendance/leave/record/list.vue
+5
-5
attendance-performance-manager-ui/admin/src/views/attendance/record/error/list.vue
...nager-ui/admin/src/views/attendance/record/error/list.vue
+8
-8
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
...manager-ui/admin/src/views/attendance/record/hik/list.vue
+7
-7
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+4
-4
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
...mance-manager-ui/admin/src/views/attendance/stat/list.vue
+6
-2
attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue
...erformance-manager-ui/admin/src/views/dept/drawershow.vue
+6
-35
attendance-performance-manager-ui/admin/src/views/dept/list.vue
...ance-performance-manager-ui/admin/src/views/dept/list.vue
+22
-22
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
...performance-manager-ui/admin/src/views/job/drawershow.vue
+2
-1
attendance-performance-manager-ui/admin/src/views/staff/list.vue
...nce-performance-manager-ui/admin/src/views/staff/list.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/staff/view.vue
...nce-performance-manager-ui/admin/src/views/staff/view.vue
+9
-5
attendance-performance-manager-ui/admin/src/views/system/menu/list.vue
...rformance-manager-ui/admin/src/views/system/menu/list.vue
+1
-2
attendance-performance-manager-ui/admin/src/views/workman/dialogshow.vue
...ormance-manager-ui/admin/src/views/workman/dialogshow.vue
+77
-16
attendance-performance-manager-ui/admin/src/views/workman/list.vue
...e-performance-manager-ui/admin/src/views/workman/list.vue
+4
-6
No files found.
attendance-performance-manager-ui/admin/.env.development
0 → 100644
View file @
6aa5c7c8
#开发环境
NODE_ENV = "development"
VUE_APP_API_BASE_URL=http://192.168.0.98:11039
\ No newline at end of file
attendance-performance-manager-ui/admin/.env.test
View file @
6aa5c7c8
...
...
@@ -6,3 +6,4 @@ VUE_APP_API_BASE_URL=/basics_api
VUE_APP_PORTAL_URL
=
/
portal_home
VUE_APP_PORTAL_PORT
=
11039
VUE_APP_API_BASE_URL
=
http
://
192.168
.
0.98
:
11039
attendance-performance-manager-ui/admin/src/assets/mixins/form.js
View file @
6aa5c7c8
...
...
@@ -36,6 +36,7 @@ export default {
res
.
entity
=
this
.
util_toDateStr
(
res
.
entity
,
this
.
toDate
);
this
.
form
=
Object
.
assign
({},
this
.
form
,
res
.
entity
);
this
.
dict
=
Object
.
assign
({},
this
.
dict
,
res
.
dict
);
// 部门格式化处理
this
.
afterRender
(
res
);
})
.
catch
(
error
=>
{
...
...
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
6aa5c7c8
...
...
@@ -7,7 +7,7 @@ const tagsMap = {
1
:
'
danger
'
,
0
:
'
success
'
};
const
baseUrl
=
process
.
env
.
VUE_APP_API_BASE_URL
+
'
/
'
export
default
{
mounted
()
{
this
.
getData
();
...
...
@@ -58,7 +58,7 @@ export default {
this
.
tableData
=
this
.
beforeRender
(
Object
.
assign
({},
this
.
tableData
,
data
)
)
console
.
log
(
this
.
tableData
,
''
)
console
.
log
(
this
.
tableData
,
'
fffff
'
)
this
.
afterRender
(
this
.
tableData
);
})
.
catch
(
error
=>
{
...
...
@@ -280,6 +280,65 @@ export default {
return
val
}
},
// 格式化处理异常状态
formattereErrorStatus
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
)
if
(
content
)
{
return
<
el
-
tag
size
=
"
mini
"
type
=
"
danger
"
>
{
this
.
util_formatter
(
'
errorStatus
'
,
val
)}
<
/el-tag
>
}
else
{
return
val
}
},
// 格式化处理状态
formattereDealStatus
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
)
if
(
content
)
{
return
<
el
-
tag
size
=
"
mini
"
>
{
this
.
util_formatter
(
'
processStatus
'
,
val
)}
<
/el-tag
>
}
else
{
return
val
}
},
// 考勤组人数
formatterGroupPerson
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
)
if
(
content
)
{
return
Number
(
row
.
personNum
)
+
Number
(
row
.
personNumNo
)
}
else
{
return
val
}
},
// 考勤类型
formatterattendType
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
)
if
(
content
)
{
return
<
el
-
tag
size
=
"
mini
"
>
{
this
.
util_formatter
(
'
type
'
,
val
)}
<
/el-tag
>
}
else
{
return
val
}
},
// 请假类型
formatterLeaveType
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
)
if
(
content
)
{
return
<
el
-
tag
size
=
"
mini
"
>
{
this
.
util_formatter
(
'
leaveType
'
,
val
)}
<
/el-tag
>
}
else
{
return
val
}
},
// 格式化图片展示
formatterPic
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
)
if
(
content
)
{
return
<
el
-
image
src
=
{
val
.
indexOf
(
'
http
'
)
==
-
1
?
baseUrl
+
val
:
val
}
preview
-
src
-
list
=
{
val
.
indexOf
(
'
http
'
)
==
-
1
?
baseUrl
+
val
:
val
}
style
=
"
width: 100px
"
><
/el-image
>
}
else
{
return
val
}
},
// 多选表格行
handleSelectionChange
(
val
)
{
this
.
selection
=
val
.
map
(
i
=>
i
.
id
);
...
...
attendance-performance-manager-ui/admin/src/assets/utils/ajax.js
View file @
6aa5c7c8
...
...
@@ -32,11 +32,13 @@ instance.interceptors.request.use(config => {
// 测试用
//http://192.168.0.98:11039/
const
hostname
=
'
192.168.0.98
'
const
port
=
'
11039
'
// 温
// http://192.168.0.116/17500
const
hostname
=
'
192.168.0.116
'
const
port
=
'
17500
'
// 动态修改请求地址
console
.
log
(
hostname
,
baseURL
,
port
)
if
(
config
.
url
.
startsWith
(
'
/
'
))
{
// 字符串以 / 开头
config
.
url
=
`http://
${
hostname
}
:
${
port
}${
baseURL
}${
config
.
url
}
`
;
...
...
attendance-performance-manager-ui/admin/src/assets/utils/common.js
View file @
6aa5c7c8
...
...
@@ -174,4 +174,39 @@ export const getTreeIds = (tree, nodeId, config) => {
}
/**
* 根据树子节点ID查找所有父节点ID
* @param {array} dataSource 树形结构数据源
* @param {number} nodeId 子节点ID
* @returns {array} 包含所有父节点ID的数组,按照从根节点到直接父节点的顺序排序
*/
export
const
findParentIds
=
(
dataSource
,
nodeId
)
=>
{
const
parentIds
=
[];
// 用于存储所有父节点ID的数组
// 定义一个递归函数,用于遍历整棵树并查找子节点的所有父节点
function
traverse
(
node
,
nodeId
)
{
if
(
node
.
id
===
nodeId
)
{
// 如果当前节点的ID等于子节点的ID,则表示已经找到了子节点,可以开始向上查找父节点
return
true
;
// 返回true表示已经找到了子节点
}
if
(
node
.
children
)
{
// 如果当前节点有子节点,则继续遍历子节点
for
(
const
childNode
of
node
.
children
)
{
if
(
traverse
(
childNode
,
nodeId
))
{
// 如果在子节点中找到了子节点的父节点,则将当前节点的ID添加到父节点ID数组中,并返回true表示已经找到了子节点
parentIds
.
push
(
node
.
id
);
return
true
;
}
}
}
return
false
;
// 如果当前节点不是子节点的父节点,则返回false
}
// 从根节点开始遍历整棵树,并调用递归函数查找子节点的所有父节点
for
(
const
node
of
dataSource
)
{
if
(
traverse
(
node
,
nodeId
))
{
// 如果在当前节点的子树中找到了子节点的父节点,则直接退出循环
break
;
}
else
{
if
(
node
.
children
&&
node
.
children
.
length
>
0
){
traverse
(
node
.
children
,
nodeId
)
}
}
}
return
parentIds
;
// 返回所有父节点ID的数组
}
attendance-performance-manager-ui/admin/src/components/FormField.vue
View file @
6aa5c7c8
...
...
@@ -11,6 +11,7 @@
<el-input
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
:rows=
'rows'
@
input=
"emit"
v-if=
'type === "textarea"'
type=
'textarea'
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<!-- 一级 -->
<el-select
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:multiple=
'multiple'
:filterable=
'filterable'
:clearable=
'clearable'
v-if=
'type === "select"'
>
<el-option
v-for=
"($label, $value) in enumData"
...
...
@@ -20,6 +21,16 @@
></el-option>
</el-select>
<!-- 多级 -->
<el-cascader
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:options=
"enumData"
:clearable=
'clearable'
:props=
"
{label:'label',value:'id',multiple:multiple}"
v-if='type === "cascader"'>
</el-cascader>
<!-- 联级选择 -->
<el-cascader-panel
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:options=
"enumData"
:clearable=
'clearable'
:props=
"
{label:'label',value:'id',multiple:multiple}" v-if='type === "cascaderpanel"'>
</el-cascader-panel>
<el-radio-group
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
v-if=
'type === "radio"'
>
<el-radio
v-for=
'($label, $value) in enumData'
...
...
@@ -81,6 +92,10 @@ export default {
type
:
String
,
default
:
''
,
},
multiple
:{
type
:
Boolean
,
default
:
false
,
},
// 字段所需的枚举类型
enumData
:
{
type
:
Object
,
...
...
@@ -125,6 +140,7 @@ export default {
this
.
$emit
(
'
input
'
,
this
.
newVal
)
this
.
$emit
(
'
change
'
,
this
.
newVal
)
this
.
$emit
(
'
focus
'
)
this
.
$emit
(
'
cascaderChange
'
,
this
.
newVal
)
}
},
computed
:
{
...
...
attendance-performance-manager-ui/admin/src/components/ImageUpload.vue
View file @
6aa5c7c8
...
...
@@ -18,7 +18,8 @@
</div>
</el-image>
<div
v-else
class=
"image"
>
<el-image
:src=
"value"
:style=
"`width:150px;height:150px;`"
fit=
"fill"
/>
<el-image
:src=
"value.indexOf('http') == -1?baseUrl+value:value"
:style=
"`width:150px;height:150px;`"
fit=
"fill"
/>
<div
class=
"mask"
>
<div
class=
"actions"
>
<span
title=
"预览"
@
click.stop=
"dialogVisible = true"
>
...
...
@@ -32,7 +33,7 @@
</div>
</el-upload>
<el-dialog
:visible.sync=
"dialogVisible"
title=
"预览"
width=
"800"
append-to-body
>
<img
:src=
"value"
style=
"display: block; max-width: 100%; margin: 0 auto;"
>
<img
:src=
"value
.indexOf('http') == -1?baseUrl+value:value
"
style=
"display: block; max-width: 100%; margin: 0 auto;"
>
</el-dialog>
</div>
</
template
>
...
...
@@ -41,8 +42,9 @@
export
default
{
data
()
{
return
{
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
'
/
'
,
dialogVisible
:
false
,
uploadImgUrl
:
"
/m
/file/commonupload
"
,
// 上传的图片服务器地址
uploadImgUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/attendance
/file/commonupload
"
,
// 上传的图片服务器地址
};
},
props
:
{
...
...
@@ -55,6 +57,9 @@ export default {
type
:
String
,
default
:
''
,
}
},
mounted
(){
},
methods
:
{
removeImage
()
{
...
...
attendance-performance-manager-ui/admin/src/router.js
View file @
6aa5c7c8
...
...
@@ -37,6 +37,8 @@ const router = new Router({
...
restBuilder
(
'
user
'
,
'
system/user
'
),
// 用户管理 -- 管理用户
...
restBuilder
(
'
param
'
,
'
system/param
'
),
// 系统管理--参数管理
// ...restBuilder('task', 'system/task'), // 系统管理--任务管理
// 绩效负责人
...
restBuilder
(
'
workman
'
,
'
workman
'
),
//部门
...
restBuilder
(
'
dept
'
,
'
dept
'
),
//部门
...
...
@@ -63,9 +65,7 @@ const router = new Router({
...
restBuilder
(
'
attendance/class
'
,
'
attendance/class
'
),
// 考勤班次信息
...
restBuilder
(
'
attendance/leave/record
'
,
'
attendance/leave/record
'
),
// 请假记录信息
...
restBuilder
(
'
attendance/vacation/balance
'
,
'
attendance/vacation/balance
'
),
// 员工假期余额信息
// 绩效负责人
...
restBuilder
(
'
attendance/group/responsible
'
,
'
attendance/group/responsible
'
),
//以下为基础路由配置
builder
(
'
blank
'
,
'
blank
'
),
...
...
attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue
View file @
6aa5c7c8
...
...
@@ -77,22 +77,22 @@
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
班次名称
"
,
prop
:
"
className
"
},
{
label
:
"
考勤时间
"
,
prop
:
"
className
"
},
//
{label: "考勤班次详细信息",
//
width: 120,
//
prop: "subColumns",
//
formatter: (row) => {
//
let widthsize = this.columnSet.reduce((pre, cur) => {
//
return pre + Number(cur.width);
//
}, 50);
//
return (
//
<
el
-
popover
placement
=
"
right
"
width
=
{
widthsize
}
trigger
=
"
click
"
>
//
{this.renderTable(row.attendanceClassDetailList)}
//
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
//
<
/el-popover
>
//
);
//
},
//
},
//
{label: "考勤时间", prop: "className"},
{
label
:
"
考勤班次详细信息
"
,
width
:
120
,
prop
:
"
subColumns
"
,
formatter
:
(
row
)
=>
{
let
widthsize
=
this
.
columnSet
.
reduce
((
pre
,
cur
)
=>
{
return
pre
+
Number
(
cur
.
width
);
},
50
);
return
(
<
el
-
popover
placement
=
"
right
"
width
=
{
widthsize
}
trigger
=
"
click
"
>
{
this
.
renderTable
(
row
.
attendanceClassDetailList
)}
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
<
/el-popover
>
);
},
},
{
label
:
"
操作
"
,
width
:
240
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue
View file @
6aa5c7c8
...
...
@@ -83,13 +83,13 @@
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
考勤组名称
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤组名称
"
,
prop
:
"
groupName
"
},
{
label
:
"
人数
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
人数
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
GroupPerson
},
{
label
:
"
负责人
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
负责人
"
,
prop
:
"
personNum
"
},
//未
{
label
:
"
类型
"
,
prop
:
"
type
"
,
formatter
:
this
.
formatter
},
{
label
:
"
类型
"
,
prop
:
"
type
"
,
formatter
:
this
.
formatter
attendType
},
// {label: "创建用户", prop: "createUserId", formatter: this.formatter},
...
...
@@ -97,7 +97,7 @@
// {label: "考勤方式", prop: "attendanceType"},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceType
"
},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceType
"
},
//未
// {label: "考勤组人员信息",
// width: 120,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/responsible/dialogshow.vue
View file @
6aa5c7c8
...
...
@@ -4,15 +4,27 @@
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"姓名"
prop=
"responsibleName"
v-model=
"form.responsibleName"
placeholder=
"请输入负责人名称"
/>
<Field
label=
"电话号码"
prop=
"responsibleName"
v-model=
"form.responsibleName"
placeholder=
"请输入电话号码"
/>
<Field
label=
"考勤组"
prop=
"groupId"
v-model=
"form.groupId"
placeholder=
"请输入考勤组"
/>
<Field
label=
"考勤组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入考勤组名称"
/>
<Field
label=
"负责人ID"
prop=
"responsibleId"
v-model=
"form.responsibleId"
placeholder=
"请输入负责人ID"
/>
<Field
label=
"负责人类型"
prop=
"responsibleType"
v-model=
"form.responsibleType"
type=
"select"
:enumData=
"dict.responsibleType"
placeholder=
"请选择负责人类型"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"电话号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入电话号码"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
type=
"select"
/>
<!--
<Field
label=
"考勤组"
prop=
"groupId"
v-model=
"form.groupId"
placeholder=
"请输入考勤组"
/>
-->
<!--
<Field
label=
"考勤组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入考勤组名称"
/>
-->
<!--
<Field
label=
"负责人ID"
prop=
"responsibleId"
v-model=
"form.responsibleId"
placeholder=
"请输入负责人ID"
/>
-->
<!--
<Field
label=
"负责人类型"
prop=
"responsibleType"
v-model=
"form.responsibleType"
type=
"select"
:enumData=
"dict.responsibleType"
placeholder=
"请选择负责人类型"
/>
-->
<!--
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
-->
</el-row>
<el-form-item
label=
"上传图片"
prop=
"photoPath"
>
<el-upload
class=
"avatar-uploader"
action=
"https://jsonplaceholder.typicode.com/posts/"
:show-file-list=
"false"
:on-success=
"handleAvatarSuccess"
:before-upload=
"beforeAvatarUpload"
>
<img
v-if=
"form.photoPath"
:src=
"form.photoPath"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
</el-upload>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
@@ -27,7 +39,7 @@
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
dialogShow
},
data
()
{
return
{
...
...
@@ -40,14 +52,15 @@
toString
:[
"
responsibleType
"
,
],
imageUrl
:
''
,
// 表单校验
rules
:
{
responsibleName
:
[
{
required
:
true
,
message
:
"
请输入负责人名称
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
createTime
:
[
{
required
:
true
,
message
:
"
请
选择创建时间
"
},
phoneNumber
:
[
{
required
:
true
,
message
:
"
请
输入电话号码
"
,
trigger
:
"
blur
"
},
],
}
};
...
...
@@ -111,6 +124,41 @@
this
.
$refs
[
refName
].
resetFields
();
}
},
uploadFn
(
val
){
console
.
log
(
val
)
},
handleAvatarSuccess
(
file
){
},
beforeAvatarUpload
(
file
){
}
},
}
;
}
</
script
>
<
style
scoped
lang=
'less'
>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 150px;
height: 150px;
line-height: 150px;
text-align: center;
border: 1px dashed #d9d9d9;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</
style
>
attendance-performance-manager-ui/admin/src/views/attendance/group/responsible/list.vue
View file @
6aa5c7c8
...
...
@@ -46,23 +46,37 @@
label
:
"
负责人名称
"
,
fuzzy
:
true
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
请选择部门
"
,
fuzzy
:
true
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
照片
"
,
prop
:
"
photoPath
"
},
{
label
:
"
负责人名称
"
,
prop
:
"
responsibleName
"
},
{
label
:
"
负责人类型
"
,
prop
:
"
responsibleType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
电话号码
"
,
prop
:
"
phoneNumber
"
},
// {label: "负责人类型", prop: "responsibleType",formatter: this.formatter},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
//
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
]
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue
View file @
6aa5c7c8
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/dialogshow.vue
View file @
6aa5c7c8
...
...
@@ -13,8 +13,8 @@
<Field
label=
"结束时间"
prop=
"endTime"
v-model=
"form.endTime"
type=
"date"
/>
<Field
label=
"时长,单位秒"
prop=
"duration"
v-model=
"form.duration"
placeholder=
"请输入时长,单位秒"
/>
<Field
label=
"请假事由"
prop=
"reason"
v-model=
"form.reason"
type=
"textarea"
placeholder=
"请输入请假事由"
/>
<
Field
label=
"审批负责人Id"
prop=
"approverId"
v-model=
"form.approverId"
placeholder=
"请输入审批负责人Id"
/
>
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
placeholder=
"请输入
审批负责人"
/>
<
!--
<Field
label=
"审批负责人Id"
prop=
"approverId"
v-model=
"form.approverId"
placeholder=
"请输入审批负责人Id"
/>
--
>
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
type=
"select"
placeholder=
"请选择
审批负责人"
/>
<Field
label=
"附件"
prop=
"attachment"
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入附件"
/>
<Field
label=
"附件路径"
prop=
"attachmentPath"
v-model=
"form.attachmentPath"
type=
"textarea"
placeholder=
"请输入附件路径"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue
View file @
6aa5c7c8
...
...
@@ -4,31 +4,31 @@
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"
5
0%"
>
<
el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120
px"
>
<el-
row
>
<Field
label=
"请假人"
prop=
"leavePersonId"
v-model=
"form.leavePersonId"
placeholder=
"请输入请假人id"
/
>
<!--
<Field
label=
"请假人"
prop=
"leavePerson"
v-model=
"form.leavePerson
"
placeholder=
"请输入请假人"
/>
-->
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入所属部门id
"
/>
<!--
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入所属部门"
/>
--
>
<Field
label=
"电话号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入电话号码"
/
>
<Field
label=
"请假类型"
prop=
"leaveType"
v-model=
"form.leaveType"
type=
"select"
:enumData=
"dict.leaveType"
placeholder=
"请选择请假类型
"
/>
<Field
label=
"开始时间"
prop=
"startTime"
v-model=
"form.startTime"
type=
"date"
/>
<Field
label=
"结束时间"
prop=
"endTime"
v-model=
"form.end
Time"
type=
"date"
/>
<Field
label=
"时长"
prop=
"duration"
v-model=
"form.duration"
placeholder=
"请输入时长,单位秒"
/>
<Field
label=
"请假事由"
prop=
"reason"
v-model=
"form.reason"
type=
"textarea"
placeholder=
"请输入请假事由
"
/>
<Field
label=
"审批负责人"
prop=
"approverId"
v-model=
"form.approverId"
placeholder=
"请输入审批负责人Id
"
/>
<!--
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
placeholder=
"请输入审批负责人"
/>
--
>
<!--
<Field
label=
"附件"
prop=
"attachment"
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入附件
"
/>
-->
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/
>
</el-row>
<el-form-item
label=
"附件路径"
prop=
"attachmentPath"
>
<FileUpload
@
input=
"uploadFn"
/>
</el-form-item>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
size=
"
6
0%"
>
<
div
style=
"padding:15
px"
>
<el-
form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row
>
<!--
<Field
label=
"请假人"
prop=
"leavePersonId"
v-model=
"form.leavePersonId
"
placeholder=
"请输入请假人"
/>
-->
<Field
label=
"请假人"
prop=
"leavePerson"
v-model=
"form.leavePerson"
placeholder=
"请输入请假人
"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
type=
"select"
placeholder=
"请选择所属部门"
/
>
<!--
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入所属部门"
/>
--
>
<Field
label=
"电话号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入电话号码
"
/>
<Field
label=
"请假类型"
prop=
"leaveType"
v-model=
"form.leaveType"
type=
"select"
:enumData=
"dict.leaveType"
placeholder=
"请选择请假类型"
/>
<Field
label=
"开始时间"
prop=
"startTime"
v-model=
"form.start
Time"
type=
"date"
/>
<Field
label=
"结束时间"
prop=
"endTime"
v-model=
"form.endTime"
type=
"date"
/>
<Field
label=
"时长"
prop=
"duration"
v-model=
"form.duration"
placeholder=
"请输入时长
"
/>
<Field
label=
"请假事由"
prop=
"reason"
v-model=
"form.reason"
type=
"textarea"
placeholder=
"请输入请假事由
"
/>
<Field
label=
"审批负责人"
prop=
"approverId"
type=
"select"
v-model=
"form.approverId"
placeholder=
"请选择审批负责人"
/
>
<!--
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
placeholder=
"请输入审批负责人
"
/>
-->
<!--
<Field
label=
"附件"
prop=
"attachment"
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入附件"
/>
--
>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<el-form-item
label=
"附件路径"
prop=
"attachmentPath"
>
<FileUpload
@
input=
"uploadFn"
/>
</el-form-item>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
</div>
</el-drawer>
</
template
>
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue
View file @
6aa5c7c8
...
...
@@ -91,25 +91,25 @@
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
请假人id
"
,
prop
:
"
leavePersonId
"
,
formatter
:
this
.
formatter
},
//
{label: "请假人id", prop: "leavePersonId", formatter: this.formatter},
{
label
:
"
请假人
"
,
prop
:
"
leavePerson
"
},
{
label
:
"
所属部门id
"
,
prop
:
"
deptId
"
,
formatter
:
this
.
formatter
},
//
{label: "所属部门id", prop: "deptId", formatter: this.formatter},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
电话号码
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
请假类型
"
,
prop
:
"
leaveType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
请假类型
"
,
prop
:
"
leaveType
"
,
formatter
:
this
.
formatter
LeaveType
},
{
label
:
"
开始时间
"
,
prop
:
"
startTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
结束时间
"
,
prop
:
"
endTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
时长
,单位秒
"
,
prop
:
"
duration
"
,
formatter
:
this
.
formatter
},
{
label
:
"
时长
"
,
prop
:
"
duration
"
,
formatter
:
this
.
formatter
},
{
label
:
"
审批负责人Id
"
,
prop
:
"
approverId
"
,
formatter
:
this
.
formatter
},
//
{label: "审批负责人Id", prop: "approverId", formatter: this.formatter},
{
label
:
"
审批负责人
"
,
prop
:
"
approver
"
},
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/error/list.vue
View file @
6aa5c7c8
...
...
@@ -117,19 +117,19 @@
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤组
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
班次
"
,
prop
:
"
s
taff
Name
"
},
{
label
:
"
异常状态
"
,
prop
:
"
errorStatus
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤组
"
,
prop
:
"
dept
Name
"
},
{
label
:
"
班次
"
,
prop
:
"
s
hifts
Name
"
},
{
label
:
"
异常状态
"
,
prop
:
"
errorStatus
"
,
formatter
:
this
.
formatter
eErrorStatus
},
{
label
:
"
异常时间
"
,
prop
:
"
errorDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
处理结果
"
,
prop
:
"
errorDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
处理结果
"
,
prop
:
"
processResult
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
上下班时间
"
,
prop
:
"
goOffDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
实际打卡时间
"
,
prop
:
"
actualAttendanceDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
处理时间
"
,
prop
:
"
operDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
处理状态
"
,
prop
:
"
processStatus
"
,
formatter
:
this
.
formatter
},
{
label
:
"
处理人
"
,
prop
:
"
processStatus
"
,
formatter
:
this
.
formatter
},
{
label
:
"
备注
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
处理状态
"
,
prop
:
"
processStatus
"
,
formatter
:
this
.
formatter
eDealStatus
},
{
label
:
"
处理人
"
,
prop
:
"
opertor
"
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
},
{
label
:
"
操作
"
,
width
:
240
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
View file @
6aa5c7c8
...
...
@@ -226,14 +226,14 @@
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
staffName
"
},
{
label
:
"
部门
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
考勤组
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
职位
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
班次
"
,
prop
:
"
s
taff
Name
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
dept
Name
"
},
{
label
:
"
考勤组
"
,
prop
:
"
attendanceGroup
Name
"
},
{
label
:
"
职位
"
,
prop
:
"
position
Name
"
},
{
label
:
"
班次
"
,
prop
:
"
s
hifts
Name
"
},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
考勤点名称
"
,
prop
:
"
staffName
"
},
{
label
:
"
事件源
"
,
prop
:
"
staffNam
e
"
},
{
label
:
"
考勤点名称
"
,
prop
:
"
attendanceAddress
"
},
{
label
:
"
事件源
"
,
prop
:
"
eventSourc
e
"
},
{
label
:
"
操作
"
,
width
:
240
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
6aa5c7c8
...
...
@@ -309,10 +309,10 @@
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
打卡日期
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤组
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
部门
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
职位
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
班次
"
,
prop
:
"
s
taff
Name
"
},
{
label
:
"
考勤组
"
,
prop
:
"
attendanceGroup
Name
"
},
{
label
:
"
部门
"
,
prop
:
"
dept
Name
"
},
{
label
:
"
职位
"
,
prop
:
"
position
Name
"
},
{
label
:
"
班次
"
,
prop
:
"
s
hifts
Name
"
},
{
label
:
"
考勤打卡记录详细信息
"
,
width
:
120
,
prop
:
"
subColumns
"
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
View file @
6aa5c7c8
...
...
@@ -158,7 +158,7 @@
{
label
:
"
窗口类别
"
,
prop
:
"
windowCategory
"
},
{
label
:
"
部门
"
,
prop
:
"
bumentId
"
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
...
...
@@ -232,7 +232,11 @@
setcolum
:[],
isdialog
:
false
,
checkList
:[],
drawerhistory
:
false
drawerhistory
:
false
,
// 动态新增列表
addColumn
:[
]
};
}
};
...
...
attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue
View file @
6aa5c7c8
...
...
@@ -7,28 +7,9 @@
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<!--
<Field
label=
"父id"
prop=
"parentId"
v-model=
"form.parentId"
placeholder=
"请输入父id"
/>
-->
<!--
<Field
label=
"祖级列表"
prop=
"ancestors"
v-model=
"form.ancestors"
type=
"textarea"
placeholder=
"请输入祖级列表"
/>
-->
<!--
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入部门名称"
/>
-->
<!--
<Field
label=
"上级部门"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择上级部门"
/>
-->
<!--
<Field
label=
"负责人"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择员工"
/>
-->
<!--
<Field
label=
"部门状态"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择部门状态"
/>
-->
<!--
<Field
label=
"顺序"
prop=
"orderNum"
v-model=
"form.orderNum"
placeholder=
"请输入顺序"
/>
-->
<!--
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
-->
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
placeholder=
"请输入部门名称"
clearable
v-model=
"form.deptName"
></el-input>
</el-form-item>
<el-form-item
label=
"上级部门"
>
<el-select
placeholder=
"请选择上级部门"
clearable
v-model=
"form"
>
<el-option></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"负责人"
>
<el-select
placeholder=
"请选择员工"
clearable
>
<el-option></el-option>
</el-select>
</el-form-item>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入部门名称"
/>
<Field
label=
"上级部门"
prop=
"parentId"
v-model=
"form.parentId"
type=
"select"
:enumData=
"dict.deptName"
placeholder=
"请选择上级部门"
/>
<Field
label=
"负责人"
prop=
"workId"
v-model=
"form.workId"
type=
"select"
:enumData=
"dict.workName"
placeholder=
"请选择员工"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
...
...
@@ -64,23 +45,13 @@
],
// 表单校验
rules
:
{
ancestors
:
[
{
required
:
true
,
message
:
"
请输入祖级列表
"
,
trigger
:
"
blur
"
},
{
max
:
256
,
message
:
"
最多只能录入256个字符
"
,
trigger
:
"
blur
"
,},
],
deptName
:
[
{
required
:
true
,
message
:
"
请输入部门名称
"
,
trigger
:
"
blur
"
},
{
max
:
256
,
message
:
"
最多只能录入256个字符
"
,
trigger
:
"
blur
"
,},
],
deptStatus
:
[
{
required
:
true
,
message
:
"
请输入部门状态
"
,
trigger
:
"
blur
"
},
],
orderNum
:
[
{
required
:
true
,
message
:
"
请输入顺序
"
,
trigger
:
"
blur
"
},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
],
parentId
:
[
{
required
:
true
,
message
:
"
请输入部门
"
,
trigger
:
"
change
"
},
]
}
};
},
...
...
attendance-performance-manager-ui/admin/src/views/dept/list.vue
View file @
6aa5c7c8
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notSearch
></LayoutTable>
<div
className=
"page"
>
<el-card
style=
"height:80vh"
>
<LayoutTable
notPagination
:data=
"tableData"
ref=
"layoutTable"
:config=
"tableConfig"
notSearch
></LayoutTable>
</el-card>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
{
handleTree
}
from
"
@/assets/utils/table
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
"
@riophae/vue-treeselect/dist/vue-treeselect.css
"
;
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
DeptList
"
,
components
:
{
drawerShow
},
drawerShow
,
Treeselect
},
mixins
:
[
table
],
created
()
{
this
.
query
=
{
"
page
"
:
1
,
"
size
"
:
-
1
}
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
this
.
$refs
.
drawerform
.
add
(
row
,
this
.
menuOptions
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
this
.
$refs
.
drawerform
.
edit
(
row
,
this
.
menuOptions
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
this
.
$refs
.
drawerform
.
view
(
row
,
this
.
menuOptions
);
},
afterRender
(
data
)
{
data
.
data
=
handleTree
(
data
.
data
,
"
id
"
,
"
parentId
"
);
console
.
log
(
"
tree data:
"
,
data
.
data
)
this
.
menuOptions
=
data
.
data
;
this
.
$refs
.
layoutTable
.
showType
=
"
treetable
"
},
},
data
()
{
return
{
config
:
{
// search: [
// {
// name: "orderNum",
// type: "text",
// label: "顺序",
// fuzzy: true
// },
// {
// name: "createUserId",
// type: "text",
// label: "创建用户",
// fuzzy: true
// },
// ],
showType
:
'
treetable
'
,
isshowTabPane
:
true
,
/** 树表是否默认展开 */
expand
:
false
,
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
...
...
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
View file @
6aa5c7c8
...
...
@@ -7,7 +7,8 @@
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<Field
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
v-if=
"title == '新增职位信息'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
/>
<Field
label=
"职位名称"
prop=
"jobName"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
/>
...
...
attendance-performance-manager-ui/admin/src/views/staff/list.vue
View file @
6aa5c7c8
...
...
@@ -20,6 +20,7 @@
<el-row
:gutter=
"20"
>
<el-col
:span=
"6"
:xs=
"12"
class=
"mytree"
>
<div
class=
"titles"
>
选择部门
</div>
<!-- default-expand-all -->
<el-scrollbar
style=
"height: 100%"
>
<el-tree
size=
"mini"
...
...
@@ -30,7 +31,6 @@
:props=
"treeProps"
:load=
"loadNode"
highlight-current
default-expand-all
:expand-on-click-node=
"false"
:render-content=
"renderContent"
@
node-click=
"handleNodeClick"
...
...
attendance-performance-manager-ui/admin/src/views/staff/view.vue
View file @
6aa5c7c8
...
...
@@ -15,10 +15,12 @@
<div
class=
"content ml20"
>
<div
class=
"c1"
>
<span>
{{
info
.
workName
}}
</span>
<span
class=
"tags"
>
{{
info
.
workStatus
}}
</span>
<!-- 格式 -->
<span
class=
"tags"
>
{{
dict
.
status
[
allinfo
.
status
]
}}
</span>
</div>
<div
class=
"c2"
>
<span>
{{
allinfo
.
deptName
}}
-
{{
allinfo
.
positionName
}}
</span>
<!-- -
{{
allinfo
.
positionName
}}
-->
<span>
{{
allinfo
.
deptName
}}
</span>
<span
style=
"margin:0 10px"
>
|
</span>
<span>
{{
info
.
workLimit
}}
天
</span>
</div>
...
...
@@ -111,9 +113,10 @@
this
.
$get
(
'
/staff/info
'
,{
id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
this
.
info
=
res
.
data
.
holidayLists
[
0
]
this
.
dict
=
res
.
dict
this
.
allinfo
=
res
.
data
//总
this
.
info
.
workBeginDay
=
t
imestampToTime
(
Number
(
this
.
info
.
workBeginDay
))
this
.
info
.
workFormalDay
=
t
imestampToTime
(
Number
(
this
.
info
.
workFormalDay
))
this
.
info
.
workBeginDay
=
t
his
.
info
.
workBeginDay
?
timestampToTime
(
Number
(
this
.
info
.
workBeginDay
)):
'
-
'
this
.
info
.
workFormalDay
=
t
his
.
info
.
workFormalDay
?
timestampToTime
(
Number
(
this
.
info
.
workFormalDay
)):
'
-
'
}
})
.
catch
(
err
=>
{
...
...
@@ -124,7 +127,8 @@
data
()
{
return
{
info
:{},
allinfo
:{}
allinfo
:{},
dict
:[]
}
},
created
(){
...
...
attendance-performance-manager-ui/admin/src/views/system/menu/list.vue
View file @
6aa5c7c8
...
...
@@ -23,7 +23,6 @@ export default {
},
methods
:
{
afterRender
(
data
)
{
console
.
log
(
data
)
data
.
data
=
handleTree
(
data
.
data
,
"
id
"
,
"
parentId
"
);
console
.
log
(
"
tree data:
"
,
data
.
data
)
this
.
menuOptions
=
data
.
data
;
...
...
@@ -82,7 +81,7 @@ export default {
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
})
;
})
},
/** 重写查看方法 */
toView
(
row
)
{
...
...
attendance-performance-manager-ui/admin/src/views/workman/dialogshow.vue
View file @
6aa5c7c8
...
...
@@ -3,15 +3,21 @@
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"90%"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"部门id号"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入部门id号"
/>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入部门名称"
/>
<Field
label=
"姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入姓名"
/>
<Field
label=
"工号"
prop=
"number"
v-model=
"form.number"
placeholder=
"请输入工号"
/>
<Field
label=
"电话号码"
prop=
"phone"
v-model=
"form.phone"
placeholder=
"请输入电话号码"
/>
<Field
label=
"照片"
prop=
"photoPath"
v-model=
"form.photoPath"
type=
"textarea"
placeholder=
"请输入照片"
/>
<Field
label=
"姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入姓名"
/>
<Field
label=
"电话号码"
prop=
"phone"
v-model=
"form.phone"
placeholder=
"请输入电话号码"
/>
<Field
label=
"工号"
prop=
"number"
v-model=
"form.number"
placeholder=
"请输入工号"
/>
</el-row>
<el-form-item
label=
"所属部门"
prop=
"deptId"
>
<el-cascader
v-model=
"deptList"
style=
"width:50%"
@
change=
"cascaderChange"
:options=
"dict.deptId"
clearable
:props=
"
{label:'label',value:'id'}">
</el-cascader>
</el-form-item>
<el-form-item
label=
"照片"
prop=
"photoPath"
>
<ImageUpload
:value=
"form.photoPath"
@
input=
"replaceImage"
></ImageUpload>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
@@ -23,6 +29,7 @@
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
import
{
findParentIds
}
from
"
@/assets/utils/common.js
"
export
default
{
mixins
:
[
form
],
components
:
{
...
...
@@ -40,11 +47,33 @@
],
// 表单校验
rules
:
{
}
};
name
:
[
{
required
:
true
,
message
:
"
请输入姓名
"
,
trigger
:
"
blur
"
},
{
max
:
20
,
message
:
"
最多只能录入20个字符
"
,
trigger
:
"
blur
"
,},
],
phone
:
[
{
required
:
true
,
message
:
"
请输入电话号码
"
,
trigger
:
"
blur
"
},
{
max
:
11
,
message
:
"
最多只能录入个字符
"
,
trigger
:
"
blur
"
,},
]
},
deptList
:[]
}
},
methods
:
{
// formSelect(){
// let treeId = getTreeIds(this.dict.deptId,this.form.deptId)
// },
cascaderChange
(
val
){
if
(
this
.
deptList
.
length
>
0
){
this
.
form
.
deptId
=
this
.
deptList
[
this
.
deptList
.
length
-
1
]
}
else
{
this
.
form
.
deptId
=
''
}
console
.
log
(
this
.
form
.
deptId
,
'
当前选择
'
)
},
replaceImage
(
val
){
this
.
form
.
photoPath
=
val
},
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
...
...
@@ -52,7 +81,7 @@
this
.
urls
.
currUrl
=
"
workman/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改工作人员
"
;
this
.
title
=
"
编辑
"
;
},
/** 新增 */
add
(
row
)
{
...
...
@@ -60,7 +89,8 @@
this
.
urls
.
currUrl
=
"
workman/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增工作人员
"
;
this
.
title
=
"
新增
"
;
},
/** 查看*/
view
(
row
)
{
...
...
@@ -74,14 +104,21 @@
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
deptList
=
[]
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
this
.
deptList
=
findParentIds
(
this
.
dict
.
deptId
,
this
.
form
.
deptId
).
reverse
()
this
.
deptList
=
this
.
deptList
.
concat
(
this
.
form
.
deptId
)
console
.
log
(
this
.
deptList
,
'
ddd
'
)
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
reset
()
this
.
deptList
=
[]
this
.
$emit
(
"
ok
"
);
},
...
...
@@ -89,7 +126,6 @@
reset
()
{
this
.
form
=
{
deptId
:
0
,
deptName
:
""
,
name
:
""
,
number
:
""
,
phone
:
""
,
...
...
@@ -101,7 +137,32 @@
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
}
,
}
,
}
;
}
}
}
</
script
>
<
style
scoped
>
.avatar-uploader
.el-upload
{
border
:
1px
dashed
#d9d9d9
;
border-radius
:
6px
;
cursor
:
pointer
;
position
:
relative
;
overflow
:
hidden
;
}
.avatar-uploader
.el-upload
:hover
{
border-color
:
#409EFF
;
}
.avatar-uploader-icon
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
178px
;
height
:
178px
;
line-height
:
178px
;
text-align
:
center
;
}
.avatar
{
width
:
178px
;
height
:
178px
;
display
:
block
;
}
</
style
>
attendance-performance-manager-ui/admin/src/views/workman/list.vue
View file @
6aa5c7c8
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -38,6 +35,7 @@
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
name
"
,
...
...
@@ -58,7 +56,7 @@
{
label
:
"
电话号码
"
,
prop
:
"
phone
"
},
{
label
:
"
照片
"
,
prop
:
"
photoPath
"
},
{
label
:
"
照片
"
,
prop
:
"
photoPath
"
,
formatter
:
this
.
formatterPic
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
},
{
...
...
@@ -66,7 +64,7 @@
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
...
...
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