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-manager-ui
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-manager-ui
Commits
ae828ffb
Commit
ae828ffb
authored
Apr 09, 2025
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pref:添加绩效工作人员考核统计维度及添加员工关怀,组织管理
parent
ddcd918e
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
907 additions
and
100 deletions
+907
-100
src/assets/mixins/table.js
src/assets/mixins/table.js
+27
-0
src/components/ElQuarterPicker.vue
src/components/ElQuarterPicker.vue
+445
-0
src/components/SearchForm.vue
src/components/SearchForm.vue
+107
-11
src/components/SearchFormDrawer.vue
src/components/SearchFormDrawer.vue
+2
-0
src/views/check/window/workman/perform/list.vue
src/views/check/window/workman/perform/list.vue
+24
-3
src/views/dept/list.vue
src/views/dept/list.vue
+1
-0
src/views/login/login.vue
src/views/login/login.vue
+3
-1
src/views/staff/perform/summary/list.vue
src/views/staff/perform/summary/list.vue
+297
-84
src/views/window/perform/summary/list.vue
src/views/window/perform/summary/list.vue
+1
-1
No files found.
src/assets/mixins/table.js
View file @
ae828ffb
...
...
@@ -31,9 +31,36 @@ export default {
watch
:
{
$route
(
route
)
{
this
.
query
=
Object
.
assign
({},
this
.
query
,
route
.
query
);
console
.
log
(
this
.
query
);
if
(
this
.
query
.
yearmonth
==
undefined
)
{
delete
this
.
query
.
month
;
}
if
(
this
.
query
.
yearmonth
==
undefined
&&
this
.
query
.
yearseason
==
undefined
&&
this
.
query
.
timeType
!=
2
)
{
delete
this
.
query
.
year
;
delete
this
.
query
.
month
;
delete
this
.
query
.
season
;
}
if
(
this
.
query
.
timeType
==
1
)
{
delete
this
.
query
.
month
;
delete
this
.
query
.
yearmonth
;
}
if
(
this
.
query
.
timeType
==
0
)
{
delete
this
.
query
.
season
;
delete
this
.
query
.
yearseason
;
}
if
(
this
.
query
.
timeType
==
2
)
{
delete
this
.
query
.
season
;
delete
this
.
query
.
yearseason
;
delete
this
.
query
.
month
;
delete
this
.
query
.
yearmonth
;
}
if
(
this
.
query
.
yearseason
==
undefined
)
{
delete
this
.
query
.
season
;
}
if
(
this
.
query
.
createTimeMonth
==
undefined
)
{
if
(
this
.
query
.
createTimeStart1
||
this
.
query
.
createTimeEnd1
)
{
...
...
src/components/ElQuarterPicker.vue
0 → 100644
View file @
ae828ffb
<
template
>
<div
class=
"el-quarter-picker"
>
<el-popover
v-model=
"visible"
:disabled=
"!canPopover"
:tabindex=
"null"
placement=
"bottom-start"
transition=
"el-zoom-in-top"
trigger=
"click"
>
<div
class=
"el-date-picker"
>
<div
class=
"el-picker-panel__body"
>
<div
class=
"el-date-picker__header el-date-picker__header--bordered"
style=
"margin: 0px; line-height: 30px"
>
<button
type=
"button"
@
click=
"clickLast"
aria-label=
"前一年"
class=
"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left"
></button>
<span
role=
"button"
class=
"el-date-picker__header-label"
@
click=
"clickYear"
>
{{
title
}}
</span
>
<button
type=
"button"
@
click=
"clickNext"
aria-label=
"后一年"
class=
"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right"
></button>
</div>
<div
class=
"el-picker-panel__content"
style=
"margin: 0px; width: 100%"
>
<table
class=
"el-month-table"
style=
""
>
<tbody>
<tr
v-for=
"line in lineCount"
:key=
"line"
>
<td
v-for=
"index in line * 4
<
=
viewList
.
length
?
4
:
viewList
.
length
-
(
line
-
1
)
*
4
"
:key=
"index"
:class=
"
{
today: viewList[(line - 1) * 4 + index - 1].current,
current: viewList[(line - 1) * 4 + index - 1].active,
}"
>
<div>
<a
class=
"cell"
@
click=
"clickItem(viewList[(line - 1) * 4 + index - 1])"
>
{{
viewList
[(
line
-
1
)
*
4
+
index
-
1
].
label
}}
</a
>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<el-input
slot=
"reference"
@
change=
"changeText"
@
mouseenter.native=
"mouseEnter"
@
mouseleave.native=
"mouseLeave"
:placeholder=
"placeholder"
v-model=
"text"
:size=
"size"
:readonly=
"!canEdit"
:disabled=
"disabled"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-date"
></i>
<i
slot=
"suffix"
class=
"el-input__icon el-icon-circle-close"
v-show=
"showClear"
style=
"cursor: pointer"
@
click.stop=
"clear"
></i>
</el-input>
</el-popover>
</div>
</
template
>
<
script
>
export
default
{
name
:
"
ElQuarterPicker
"
,
props
:
{
placeholder
:
{
type
:
String
,
default
:
""
,
},
size
:
{
type
:
String
,
default
:
""
,
},
readonly
:
{
type
:
Boolean
,
default
:
false
,
},
clearable
:
{
type
:
Boolean
,
default
:
true
,
},
editable
:
{
type
:
Boolean
,
default
:
true
,
},
disabled
:
{
type
:
Boolean
,
default
:
false
,
},
format
:
{
type
:
String
,
default
:
"
yyyy年第Q季度
"
,
},
valueFormat
:
{
type
:
String
,
default
:
"
yyyy-q
"
,
},
value
:
{
type
:
String
,
default
:
""
,
},
},
model
:
{
prop
:
"
value
"
,
event
:
"
change
"
,
},
watch
:
{
value
(
val
)
{
this
.
changeValue
(
val
);
},
readonly
(
val
)
{
this
.
canEdit
=
!
val
&&
this
.
editable
;
this
.
canPopover
=
!
this
.
disabled
&&
!
val
;
},
editable
(
val
)
{
this
.
canEdit
=
!
this
.
readonly
&&
val
;
},
disabled
(
val
)
{
this
.
canPopover
=
!
val
&&
!
this
.
readonly
;
},
},
data
()
{
return
{
visible
:
false
,
showClear
:
false
,
// 控制清空按钮展示
canEdit
:
true
,
// 是否可编辑
canPopover
:
true
,
// 选择器弹出是否可用
text
:
""
,
// 文本框值
viewType
:
1
,
// 视图类型,1季度,2年度
viewYear
:
0
,
// 当前年份
viewList
:
[],
// 数据列表
lineCount
:
0
,
// 数据行数
title
:
""
,
// 选择器标题
data
:
[
0
,
0
],
// 当前选择年度-季度
};
},
mounted
()
{
// console.log('mounted--------', this.value)
this
.
changeValue
(
this
.
value
);
// 设置文本框是否可编辑
this
.
canEdit
=
!
this
.
readonly
&&
this
.
editable
;
this
.
canPopover
=
!
this
.
disabled
&&
!
this
.
readonly
;
// 监听按键(上下左右键可以切换季度)
document
.
onkeydown
=
(
event
)
=>
{
if
(
this
.
visible
)
{
const
data
=
[
this
.
data
[
0
],
this
.
data
[
1
]];
if
(
data
[
0
]
<
1
||
data
[
1
]
<
1
)
{
// 以当前季度为标准
const
curDate
=
new
Date
();
data
[
0
]
=
curDate
.
getFullYear
();
data
[
1
]
=
parseInt
(
curDate
.
getMonth
()
/
3
)
+
1
;
}
if
(
event
.
code
===
"
ArrowLeft
"
)
{
// 上一个季度
if
(
data
[
1
]
===
1
)
{
data
[
0
]
=
data
[
0
]
-
1
;
data
[
1
]
=
4
;
}
else
{
data
[
1
]
=
data
[
1
]
-
1
;
}
}
else
if
(
event
.
code
===
"
ArrowRight
"
)
{
// 下一个季度
if
(
data
[
1
]
===
4
)
{
data
[
0
]
=
data
[
0
]
+
1
;
data
[
1
]
=
1
;
}
else
{
data
[
1
]
=
data
[
1
]
+
1
;
}
}
else
if
(
event
.
code
===
"
ArrowUp
"
)
{
// 上一年季度
data
[
0
]
=
data
[
0
]
-
1
;
}
else
if
(
event
.
code
===
"
ArrowDown
"
)
{
// 下一年季度
data
[
0
]
=
data
[
0
]
+
1
;
}
else
{
return
;
}
// 超过年限的不处理
if
(
data
[
0
]
<
1000
||
data
[
0
]
>
9999
)
{
return
;
}
this
.
data
=
data
;
this
.
viewType
=
1
;
this
.
viewYear
=
data
[
0
];
this
.
$emit
(
"
change
"
,
this
.
formatTo
(
data
,
this
.
valueFormat
));
}
};
},
destroyed
()
{
document
.
onkeydown
=
null
;
},
methods
:
{
// 季度文本变更
changeText
()
{
if
(
this
.
checkFormat
(
this
.
format
,
this
.
text
))
{
// 设置值
this
.
formatFrom
(
this
.
text
,
this
.
format
);
this
.
$emit
(
"
change
"
,
this
.
formatTo
(
this
.
data
,
this
.
valueFormat
));
}
else
{
// 输入了无效的格式,还原回原来的值
if
(
this
.
data
[
0
]
<
1
||
this
.
data
[
1
]
<
1
)
{
this
.
text
=
""
;
}
else
{
this
.
text
=
this
.
formatTo
(
this
.
data
,
this
.
format
);
}
}
this
.
visible
=
false
;
},
// 鼠标进入
mouseEnter
()
{
if
(
!
this
.
disabled
&&
!
this
.
readonly
&&
this
.
clearable
&&
this
.
text
!==
""
)
{
this
.
showClear
=
true
;
}
},
// 鼠标离开
mouseLeave
()
{
if
(
!
this
.
disabled
&&
this
.
clearable
)
{
this
.
showClear
=
false
;
}
},
// 清除季度
clear
()
{
this
.
showClear
=
false
;
this
.
visible
=
false
;
this
.
$emit
(
"
change
"
,
""
);
},
// 季度值变更
changeValue
(
val
)
{
this
.
viewType
=
1
;
if
(
val
)
{
// 反向格式化
this
.
formatFrom
(
val
,
this
.
valueFormat
);
this
.
text
=
this
.
formatTo
(
this
.
data
,
this
.
format
);
this
.
viewYear
=
this
.
data
[
0
];
}
else
{
this
.
text
=
""
;
this
.
data
=
[
0
,
0
];
this
.
viewYear
=
new
Date
().
getFullYear
();
}
this
.
initView
();
},
// 初始化视图数据
initView
()
{
const
list
=
[];
const
curDate
=
new
Date
();
const
curYear
=
curDate
.
getFullYear
();
const
curQuarter
=
parseInt
(
curDate
.
getMonth
()
/
3
)
+
1
;
if
(
this
.
viewType
===
1
)
{
let
index
=
0
;
for
(
const
i
of
"
一二三四
"
)
{
index
++
;
const
item
=
{
label
:
"
第
"
+
i
+
"
季度
"
,
year
:
this
.
viewYear
,
quarter
:
index
,
current
:
false
,
active
:
false
,
};
if
(
this
.
viewYear
===
curYear
&&
index
===
curQuarter
)
{
item
.
current
=
true
;
}
else
if
(
this
.
viewYear
===
this
.
data
[
0
]
&&
index
===
this
.
data
[
1
])
{
item
.
active
=
true
;
}
list
.
push
(
item
);
}
this
.
title
=
this
.
viewYear
+
"
年
"
;
}
else
{
const
start
=
parseInt
(
this
.
viewYear
/
10
)
*
10
;
this
.
viewYear
=
start
;
for
(
let
i
=
0
;
i
<
10
;
i
++
)
{
const
year
=
start
+
i
;
const
item
=
{
label
:
year
+
""
,
year
:
year
,
current
:
false
,
active
:
false
,
};
if
(
year
===
curYear
)
{
item
.
current
=
true
;
}
else
if
(
year
===
this
.
data
[
0
])
{
item
.
active
=
true
;
}
list
.
push
(
item
);
}
this
.
title
=
start
+
"
年 -
"
+
(
start
+
9
)
+
"
年
"
;
}
this
.
viewList
=
list
;
this
.
lineCount
=
parseInt
(
list
.
length
/
4
);
if
(
list
.
length
%
4
>
0
)
{
this
.
lineCount
++
;
}
},
// 校验季度格式是否正确
checkFormat
(
pattern
,
val
)
{
// 格式转成正则表达式
let
text
=
""
;
for
(
const
char
of
pattern
)
{
const
dict
=
"
\\
^$.+?*[]{}!
"
;
if
(
dict
.
indexOf
(
char
)
===
-
1
)
{
text
+=
char
;
}
else
{
text
+=
"
\\
"
+
char
;
}
}
text
=
text
.
replace
(
"
yyyy
"
,
"
[1-9]
\\
d{3}
"
);
text
=
text
.
replace
(
"
qq
"
,
"
0[1-4]
"
);
text
=
text
.
replace
(
"
q
"
,
"
[1-4]
"
);
text
=
text
.
replace
(
"
Q
"
,
"
[一二三四]
"
);
text
=
"
^
"
+
text
+
"
$
"
;
const
patt
=
new
RegExp
(
text
);
return
patt
.
test
(
val
);
},
// 格式化季度到指定格式
formatTo
(
data
,
pattern
)
{
let
text
=
pattern
.
replace
(
"
yyyy
"
,
""
+
data
[
0
]);
text
=
text
.
replace
(
"
qq
"
,
"
0
"
+
data
[
1
]);
text
=
text
.
replace
(
"
q
"
,
""
+
data
[
1
]);
text
=
text
.
replace
(
"
Q
"
,
"
一二三四
"
.
substr
(
data
[
1
]
-
1
,
1
));
return
text
;
},
// 以指定格式解析季度
formatFrom
(
str
,
pattern
)
{
const
year
=
this
.
findText
(
str
,
pattern
,
"
yyyy
"
);
const
quarter
=
this
.
findText
(
str
,
pattern
,
[
"
qq
"
,
"
q
"
,
"
Q
"
]);
this
.
data
=
[
year
,
quarter
];
},
// 查找文本数值
findText
(
str
,
pattern
,
find
)
{
if
(
find
instanceof
Array
)
{
for
(
const
f
of
find
)
{
const
val
=
this
.
findText
(
str
,
pattern
,
f
);
if
(
val
!==
-
1
)
{
return
val
;
}
}
return
-
1
;
}
const
index
=
pattern
.
indexOf
(
find
);
if
(
index
===
-
1
)
{
return
index
;
}
const
val
=
str
.
substr
(
index
,
find
.
length
);
if
(
find
===
"
Q
"
)
{
return
"
一二三四
"
.
indexOf
(
val
)
+
1
;
}
else
{
return
parseInt
(
val
);
}
},
// 年份点击
clickYear
()
{
if
(
this
.
viewType
!==
1
)
{
return
;
}
// 切换年度选择器
this
.
viewType
=
2
;
this
.
initView
();
},
// 季度选择
clickItem
(
item
)
{
// console.log('select--------', item)
if
(
this
.
viewType
===
1
)
{
// 选择季度
this
.
$emit
(
"
change
"
,
this
.
formatTo
([
item
.
year
,
item
.
quarter
],
this
.
valueFormat
)
);
this
.
visible
=
false
;
}
else
{
// 选择年度
this
.
viewType
=
1
;
this
.
viewYear
=
item
.
year
;
this
.
initView
();
}
},
// 上一年
clickLast
()
{
if
(
this
.
viewYear
>
1000
)
{
if
(
this
.
viewType
===
1
)
{
this
.
viewYear
--
;
this
.
initView
();
}
else
{
this
.
viewYear
=
this
.
viewYear
-
10
;
this
.
initView
();
}
}
},
// 下一年
clickNext
()
{
if
(
this
.
viewYear
<
9999
)
{
if
(
this
.
viewType
===
1
)
{
this
.
viewYear
++
;
this
.
initView
();
}
else
{
this
.
viewYear
=
this
.
viewYear
+
10
;
this
.
initView
();
}
}
},
},
};
</
script
>
<
style
>
.el-quarter-picker
{
display
:
inline-block
;
}
</
style
>
\ No newline at end of file
src/components/SearchForm.vue
View file @
ae828ffb
...
...
@@ -51,6 +51,28 @@
:key=
"value"
></el-option>
</el-select>
<el-select
v-model=
"form[item.name]"
:filterable=
"item.filterable"
:multiple=
"item.multiple"
:clearable=
"true"
@
change=
"handleChange"
@
clear=
"item.clear && item.clear"
v-if=
"item.type === 'timeType'"
:placeholder=
"'请选择' + item.label"
>
<!--
<el-option
label=
""
value=
""
v-if=
"!item.multiple && !item.notShowAll"
></el-option>
-->
<el-option
:label=
"label"
:value=
"value"
v-for=
"(label, value) in timeDict"
:key=
"value"
></el-option>
</el-select>
<el-select
v-model=
"form[item.name]"
:filterable=
"item.filterable"
...
...
@@ -180,7 +202,26 @@
:placeholder=
"item.label ? item.label : '选择月份'"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"
item.type === 'yearmonth' &&
!item.valueFormat &&
form['timeType'] == 0
"
type=
"month"
value-format=
"yyyy-MM"
:placeholder=
"item.label ? item.label : '选择月份'"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'year' && form['timeType'] == 2"
type=
"year"
value-format=
"yyyy"
:placeholder=
"item.label ? item.label : '选择年份'"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'datetime'"
...
...
@@ -189,6 +230,11 @@
:placeholder=
"item.label"
>
</el-date-picker>
<el-quarter-picker
v-model=
"form[item.name]"
placeholder=
"选择季度"
v-if=
"item.type === 'season' && form['timeType'] == 1"
/>
</el-form-item>
<el-form-item>
...
...
@@ -231,7 +277,10 @@ import {
getLastDay
,
timestampToTime
,
}
from
"
@/assets/utils/dateFormat.js
"
;
import
ElQuarterPicker
from
"
./ElQuarterPicker
"
;
export
default
{
components
:
{
ElQuarterPicker
},
props
:
{
search
:
{
type
:
Array
,
...
...
@@ -286,6 +335,18 @@ export default {
this
.
initForm
(
this
.
$route
.
query
);
},
methods
:
{
handleChange
()
{
this
.
form
.
year
=
undefined
;
this
.
form
.
month
=
undefined
;
this
.
form
.
season
=
undefined
;
this
.
form
.
yearseason
=
undefined
;
this
.
form
.
yearmonth
=
undefined
;
delete
this
.
$route
.
query
.
year
;
delete
this
.
$route
.
query
.
month
;
delete
this
.
$route
.
query
.
season
;
delete
this
.
$route
.
query
.
yearseason
;
delete
this
.
$route
.
query
.
yearmonth
;
},
salaChange
()
{
this
.
form
.
deptId
=
""
;
this
.
$get
(
"
/dept/getDeptBySalaId
"
,
{
salaId
:
this
.
form
.
salaId
})
...
...
@@ -471,6 +532,9 @@ export default {
});
delete
this
.
$route
.
query
.
yearmonth
;
delete
this
.
$route
.
query
.
year
;
delete
this
.
$route
.
query
.
season
;
delete
this
.
$route
.
query
.
yearseson
;
delete
this
.
$route
.
query
.
createTimeMonth
;
delete
this
.
$route
.
query
.
orderColList
;
...
...
@@ -496,10 +560,20 @@ export default {
this
.
form
.
year
=
arr
[
0
];
this
.
form
.
month
=
arr
[
1
];
}
else
{
this
.
form
.
year
=
undefined
;
this
.
form
.
month
=
undefined
;
}
if
(
this
.
form
.
year
)
{
this
.
form
.
year
=
this
.
form
.
year
;
}
else
{
this
.
form
.
year
=
undefined
;
}
if
(
this
.
form
.
yearseason
)
{
let
arr
=
this
.
form
.
yearseason
.
split
(
"
-
"
);
this
.
form
.
year
=
arr
[
0
];
this
.
form
.
season
=
arr
[
1
];
}
else
{
this
.
form
.
season
=
undefined
;
}
if
(
this
.
form
.
createTimeMonth
)
{
// this.form.createTimeStart = this.form.createTimeMonth + "-01";
// this.form.createTimeEnd = this.form.createTimeMonth + "-31";
...
...
@@ -596,11 +670,25 @@ export default {
let
data
=
this
.
decode
(
params
);
// Object.assign({}, query, data)
// if (query.timeType) {
// if (!query.yearmonth) {
// query.year = undefined;
// query.month = undefined;
// }
// if (!query.year) {
// query.year = undefined;
// }
// if (!query.yearseason) {
// query.year = undefined;
// query.season = undefined;
// }
// } else {
// if (!query.yearmonth) {
// query.year = undefined;
// query.month = undefined;
// }
// }
if
(
!
query
.
yearmonth
)
{
query
.
year
=
undefined
;
query
.
month
=
undefined
;
}
if
(
!
query
.
createTimeMonth
)
{
if
(
query
.
createTimeStart1
||
query
.
createTimeEnd1
)
{
query
.
createTimeEnd
=
query
.
createTimeEnd1
;
...
...
@@ -613,10 +701,13 @@ export default {
}
}
console
.
log
({
console
.
log
(
{
...
query
,
...
data
,
});
},
123123123123
);
this
.
$router
.
push
({
path
:
path
,
query
:
{
...
...
@@ -712,6 +803,11 @@ export default {
visible
:
false
,
salaArr
:
[],
deptArr
:
[],
timeDict
:
{
0
:
"
按月
"
,
1
:
"
按季度
"
,
2
:
"
按年
"
,
},
};
},
};
...
...
src/components/SearchFormDrawer.vue
View file @
ae828ffb
...
...
@@ -476,6 +476,8 @@ export default {
});
delete
this
.
$route
.
query
.
yearmonth
;
delete
this
.
$route
.
query
.
yearseason
;
delete
this
.
$route
.
query
.
year
;
delete
this
.
$route
.
query
.
createTimeMonth
;
delete
this
.
$route
.
query
.
orderColList
;
this
.
form
=
Object
.
assign
({},
this
.
form
,
newData
);
...
...
src/views/check/window/workman/perform/list.vue
View file @
ae828ffb
<
template
>
<div
class=
"page"
>
<div
class=
"btn_box"
style=
"position: absolute;
top: 54px;left: 10px;
"
>
<div
class=
"btn_box"
style=
"position: absolute;
top: 54px; left: 10px
"
>
<el-radio-group
v-model=
"radio1"
@
input=
"changeRadio"
>
<el-radio-button
label=
"1"
>
窗口考核
</el-radio-button>
<el-radio-button
label=
"2"
>
工作人员考核
</el-radio-button>
...
...
@@ -35,6 +35,7 @@ export default {
mixins
:
[
table
],
created
()
{
// this.getData();
console
.
log
(
this
.
tableData
);
},
methods
:
{
/** 重写新增方法 */
...
...
@@ -77,6 +78,9 @@ export default {
?
this
.
$router
.
push
(
"
/check/window/workman/perform/detail/list?page=1
"
)
:
""
;
},
changeTime
()
{
console
.
log
(
123
);
},
},
data
()
{
return
{
...
...
@@ -103,10 +107,27 @@ export default {
label
:
"
核查状态
"
,
fuzzy
:
false
,
},
{
name
:
"
timeType
"
,
type
:
"
timeType
"
,
label
:
"
核查类型
"
,
},
{
name
:
"
yearmonth
"
,
type
:
"
month
"
,
label
:
"
请选择登记年月
"
,
type
:
"
yearmonth
"
,
label
:
"
请选择考核年月
"
,
fuzzy
:
false
,
},
{
name
:
"
year
"
,
type
:
"
year
"
,
label
:
"
请选择考核年
"
,
fuzzy
:
false
,
},
{
name
:
"
yearseason
"
,
type
:
"
season
"
,
label
:
"
请选择考核季度
"
,
fuzzy
:
false
,
},
{
...
...
src/views/dept/list.vue
View file @
ae828ffb
...
...
@@ -26,6 +26,7 @@ export default {
return
{
// 表格配置项
config
:
{
isshowTabPane
:
true
,
/** 树表是否默认展开 */
expand
:
true
,
showType
:
"
treetable
"
,
...
...
src/views/login/login.vue
View file @
ae828ffb
...
...
@@ -33,7 +33,7 @@
native-type=
"submit"
:loading=
"loading"
@
click=
"onSubmit"
style=
"font-size: 20px
;
"
style=
"font-size: 20px"
>
登录
</el-button
>
</el-form-item>
...
...
@@ -88,6 +88,8 @@ export default {
// createSocket("ws://"+process.env.VUE_APP_BASE_API +"/ws?accessToken="+data.id)
},
loginFail
(
error
)
{
console
.
log
(
error
);
this
.
loading
=
false
;
//this.refreshCode();
this
.
$message
.
error
(
error
.
message
);
...
...
src/views/staff/perform/summary/list.vue
View file @
ae828ffb
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notAdd
notDel
:config=
"tableConfig"
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog(2)"
>
表格设置
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog(1)"
>
导出表格设置
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
...
...
@@ -93,6 +109,44 @@
<el-button
@
click=
"cancleFresh"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 显示表格设置 -->
<el-dialog
:visible.sync=
"setDialog"
title=
"表格显示设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,表格中的内容与选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkTableList"
>
<el-checkbox
v-for=
"(item, index) in setcolum"
:key=
"index"
:label=
"item.prop"
>
{{
item
.
label
}}
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align: right"
>
<el-button
@
click=
"handleCancel(2)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit(2)"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 导出表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkList"
>
<el-checkbox
v-for=
"(item, index) in setcolum"
:key=
"index"
:label=
"item.prop"
>
{{
item
.
label
}}
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align: right"
>
<el-button
@
click=
"handleCancel(1)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit(1)"
>
确定
</el-button>
</div>
</el-dialog>
</div>
</
template
>
...
...
@@ -106,15 +160,136 @@ export default {
dialogShow
,
},
mixins
:
[
table
],
created
()
{
},
created
()
{},
methods
:
{
// 表格设置弹窗取消操作
handleCancel
(
i
)
{
if
(
i
==
1
)
{
this
.
checkList
=
[];
this
.
isdialog
=
false
;
}
else
{
this
.
setDialog
=
false
;
}
},
// 表格设置提交操作
handleSubmit
(
i
)
{
if
(
i
==
1
)
{
this
.
doExport
();
this
.
isdialog
=
false
;
}
else
{
this
.
config
.
columns
.
forEach
((
v
)
=>
{
v
.
prop
&&
v
.
label
?
(
v
.
show
=
false
)
:
(
v
.
show
=
true
);
this
.
checkTableList
.
forEach
((
val
)
=>
{
if
(
v
.
prop
==
val
)
{
v
.
show
=
true
;
}
});
});
this
.
$forceUpdate
(
this
.
config
.
columns
);
this
.
setDialog
=
false
;
}
},
//表格设置弹窗
setdialog
(
i
)
{
if
(
i
==
1
)
{
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
this
.
setcolum
.
forEach
((
v
)
=>
{
v
.
prop
==
"
attendScore
"
?
(
v
.
label
=
`服务规范
${
"
(考勤绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
attendWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
reviewScore
"
?
(
v
.
label
=
`群众评议
${
"
(评价绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
reviewWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
goworkScore
"
?
(
v
.
label
=
`工作效能
${
"
(办件绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
goworkWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
effectScore
"
?
(
v
.
label
=
`工作纪律
${
"
(效能绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
effectWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
complainScore
"
?
(
v
.
label
=
`综合管理
${
"
(自评绩效 *
"
+
this
.
tableData
.
dict
.
weightPdu
.
selfWeight
+
"
%)
"
}
`
)
:
v
.
prop
==
"
otherScore
"
?
(
v
.
label
=
`其他绩效
${
"
(其他绩效)
"
}
`
)
:
""
;
});
this
.
isdialog
=
true
;
}
else
{
this
.
setDialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
this
.
setcolum
.
forEach
((
v
)
=>
{
v
.
prop
==
"
attendScore
"
?
(
v
.
label
=
`服务规范
${
"
(考勤绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
attendWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
reviewScore
"
?
(
v
.
label
=
`群众评议
${
"
(评价绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
reviewWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
goworkScore
"
?
(
v
.
label
=
`工作效能
${
"
(办件绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
goworkWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
effectScore
"
?
(
v
.
label
=
`工作纪律
${
"
(效能绩效/
"
+
this
.
tableData
.
dict
.
weightPdu
.
effectWeight
+
"
分)
"
}
`
)
:
v
.
prop
==
"
complainScore
"
?
(
v
.
label
=
`综合管理
${
"
(自评绩效 *
"
+
this
.
tableData
.
dict
.
weightPdu
.
selfWeight
+
"
%)
"
}
`
)
:
v
.
prop
==
"
otherScore
"
?
(
v
.
label
=
`其他绩效
${
"
(其他绩效)
"
}
`
)
:
""
;
});
this
.
checkTableList
=
this
.
config
.
columns
.
map
((
item
)
=>
{
if
(
item
.
show
&&
item
.
prop
)
{
return
item
.
prop
;
}
})
.
filter
((
v
)
=>
v
);
}
},
countDown
()
{
if
(
this
.
percent
==
95
)
{
if
(
this
.
selection
.
length
>
0
)
{
this
.
query
[
"
idList
"
]
=
this
.
selection
;
}
if
(
this
.
checkList
.
length
>
0
)
{
this
.
query
[
"
properties
"
]
=
this
.
checkList
;
}
this
.
$download
(
"
/staff/perform/summary/exportExcel
"
,
...
...
@@ -317,9 +492,18 @@ export default {
},
data
()
{
return
{
// 是否展示弹窗
isdialog
:
false
,
// 列表绑定值
checkList
:
[],
// 设置表头
setcolum
:
[],
// 表格选中列表
checkTableList
:
[],
endTime
:
""
,
restTime
:
"
15
"
,
freshDate
:
""
,
setDialog
:
false
,
btnFreshLoading
:
false
,
sortList
:
""
,
dialogOpen
:
false
,
...
...
@@ -331,6 +515,7 @@ export default {
progress
:
false
,
percent
:
0
,
config
:
{
showType
:
"
tableSelect
"
,
isshowTabPane
:
true
,
search
:
[
{
...
...
@@ -367,14 +552,21 @@ export default {
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
},
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
,
show
:
true
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
,
show
:
true
,
},
{
label
:
"
姓名
"
,
prop
:
"
staffName
"
,
formatter
:
this
.
formatter
,
fixed
:
"
left
"
,
show
:
true
,
},
{
...
...
@@ -383,46 +575,54 @@ export default {
formatter
:
this
.
formatter
,
width
:
80
,
fixed
:
"
left
"
,
show
:
true
,
},
{
label
:
"
年
"
,
prop
:
"
year
"
,
formatter
:
this
.
formatter
,
fixed
:
"
left
"
,
show
:
true
,
},
{
label
:
"
月
"
,
prop
:
"
month
"
,
formatter
:
this
.
formatter
,
fixed
:
"
left
"
,
show
:
true
,
},
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
所属大厅
"
,
prop
:
"
salaName
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
所属中心
"
,
formatter
:
(
row
)
=>
{
return
"
宜宾市民中心
"
;
},
},
// {
// label: "所属中心",
// show: true,
// formatter: (row) => {
// return "宜宾市民中心";
// },
// },
{
label
:
"
工作纪律
"
,
prop
:
"
effectScore
"
,
width
:
150
,
show
:
true
,
formatter
:
(
row
)
=>
{
return
(
row
.
effectScore
-
this
.
tableData
.
dict
.
weightPdu
.
effectWeight
...
...
@@ -461,6 +661,7 @@ export default {
label
:
"
服务规范
"
,
prop
:
"
attendScore
"
,
width
:
150
,
show
:
true
,
formatter
:
(
row
)
=>
{
return
(
row
.
attendScore
-
this
.
tableData
.
dict
.
weightPdu
.
attendWeight
...
...
@@ -498,6 +699,7 @@ export default {
{
label
:
`综合管理`
,
prop
:
"
complainScore
"
,
show
:
true
,
width
:
150
,
formatter
:
(
row
)
=>
{
return
(
...
...
@@ -536,6 +738,7 @@ export default {
{
label
:
"
群众评议
"
,
prop
:
"
reviewScore
"
,
show
:
true
,
width
:
150
,
formatter
:
(
row
)
=>
{
return
(
...
...
@@ -575,6 +778,7 @@ export default {
{
label
:
"
工作效能
"
,
prop
:
"
goworkScore
"
,
show
:
true
,
width
:
150
,
formatter
:
(
row
)
=>
{
return
(
...
...
@@ -614,6 +818,7 @@ export default {
{
label
:
`其他绩效`
,
prop
:
"
otherScore
"
,
show
:
true
,
width
:
150
,
formatter
:
this
.
formatter
,
},
...
...
@@ -627,12 +832,14 @@ export default {
label
:
"
绩效分数
"
,
prop
:
"
totalScore
"
,
sortable
:
true
,
show
:
true
,
width
:
120
,
},
{
label
:
"
备注1
"
,
prop
:
"
remark
"
,
show
:
true
,
formatter
:
(
row
)
=>
{
return
row
.
remark
&&
row
.
remark
!=
""
?
(
row
.
remark
...
...
@@ -645,6 +852,7 @@ export default {
{
label
:
"
备注2
"
,
prop
:
"
remarkAddDesc
"
,
show
:
true
,
formatter
:
(
row
)
=>
{
return
row
.
remarkAddDesc
&&
row
.
remarkAddDesc
!=
""
&&
...
...
@@ -656,83 +864,86 @@ export default {
},
width
:
240
,
},
{
label
:
"
政务服务管理科审核等次
"
,
prop
:
"
auditLevel
"
,
width
:
120
,
formatter
:
(
row
)
=>
{
const
options
=
[
{
label
:
"
好
"
,
value
:
"
好
"
,
},
{
label
:
"
较好
"
,
value
:
"
较好
"
,
},
{
label
:
"
一般
"
,
value
:
"
一般
"
,
},
{
label
:
"
不合格
"
,
value
:
"
不合格
"
,
},
{
label
:
"
不确定
"
,
value
:
"
不确定
"
,
},
];
return
(
<
el
-
select
v
-
model
=
{
row
.
auditLevel
}
placeholder
=
"
请选择
"
clearable
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
>
{
options
.
map
((
item
)
=>
(
<
el
-
option
key
=
{
item
.
value
}
value
=
{
item
.
value
}
label
=
{
item
.
label
}
/
>
))}
<
/el-select
>
);
},
},
{
label
:
"
服务明星推荐
"
,
prop
:
"
recommend
"
,
width
:
120
,
formatter
:
(
row
)
=>
{
const
options
=
[
{
label
:
"
服务明星
"
,
value
:
"
服务明星
"
,
},
];
return
(
<
el
-
select
v
-
model
=
{
row
.
recommend
}
clearable
placeholder
=
"
请选择
"
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
>
{
options
.
map
((
item
)
=>
(
<
el
-
option
key
=
{
item
.
value
}
value
=
{
item
.
value
}
label
=
{
item
.
label
}
/
>
))}
<
/el-select
>
);
},
},
// {
// label: "政务服务管理科审核等次",
// prop: "auditLevel",
// show: true,
// width: 120,
// formatter: (row) => {
// const options = [
// {
// label: "好",
// value: "好",
// },
// {
// label: "较好",
// value: "较好",
// },
// {
// label: "一般",
// value: "一般",
// },
// {
// label: "不合格",
// value: "不合格",
// },
// {
// label: "不确定",
// value: "不确定",
// },
// ];
// return (
//
<
el
-
select
// v-model={row.auditLevel}
// placeholder="请选择"
// clearable
// onChange={(v) => this.handleChange(v, row)}
// >
// {options.map((item) => (
//
<
el
-
option
// key={item.value}
// value={item.value}
// label={item.label}
// />
// ))}
//
<
/el-select
>
// );
// },
// },
// {
// label: "服务明星推荐",
// prop: "recommend",
// show: true,
// width: 120,
// formatter: (row) => {
// const options = [
// {
// label: "服务明星",
// value: "服务明星",
// },
// ];
// return (
//
<
el
-
select
// v-model={row.recommend}
// clearable
// placeholder="请选择"
// onChange={(v) => this.handleChange(v, row)}
// >
// {options.map((item) => (
//
<
el
-
option
// key={item.value}
// value={item.value}
// label={item.label}
// />
// ))}
//
<
/el-select
>
// );
// },
// },
{
label
:
"
加分
"
,
prop
:
"
addTotalScore
"
,
show
:
true
,
width
:
120
,
formatter
:
(
row
)
=>
{
return
row
.
addTotalScore
||
row
.
addTotalScore
==
0
...
...
@@ -746,12 +957,14 @@ export default {
label
:
"
本月得分
"
,
prop
:
"
sumScore
"
,
sortable
:
true
,
show
:
true
,
width
:
120
,
fixed
:
"
right
"
,
},
{
label
:
"
操作
"
,
width
:
120
,
show
:
true
,
fixed
:
"
right
"
,
formatter
:
(
row
)
=>
{
return
(
...
...
src/views/window/perform/summary/list.vue
View file @
ae828ffb
...
...
@@ -104,7 +104,7 @@ import table from "@/assets/mixins/table";
import
{
timestampToTime
}
from
"
@/assets/utils/dateFormat.js
"
;
export
default
{
name
:
"
Staff
PerformSummaryList
"
,
name
:
"
Window
PerformSummaryList
"
,
components
:
{
dialogShow
,
},
...
...
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