Commit d824c42d by xue_wengang

个人效能分析

parent e50f93d1
......@@ -11,4 +11,31 @@ export const getMenuBt = params =>
// 表头设置修改
export const addMenuBt = params =>
post(`${base.alyIP}/dwGrXnpg/addMenuBt`, params);
\ No newline at end of file
post(`${base.alyIP}/dwGrXnpg/addMenuBt`, params);
//个人效能分析导出
export const exportRycczyxx = params =>
post(`${base.alyIP}/ywsjTj/exportRycczyxx`, params);
// 个人效能分析列表
export const queryRycczyxx = params =>
post(`${base.alyIP}/ywsjTj/queryRycczyxx`, params);
// 个人效能分析
export const exportRyccfx = params =>
post(`${base.alyIP}/ywsjTj/exportRyccfx`, params);
// 个人效能分析导出
export const queryRyccfx = params =>
post(`${base.alyIP}/ywsjTj/queryRyccfx`, params);
//个人效能分析详情导出
export const exportRyccxq = params =>
post(`${base.alyIP}/ywsjTj/exportRyccxq`, params);
//个人效能分析详情列表
export const queryRyccxq = params =>
post(`${base.alyIP}/ywsjTj/queryRyccxq`, params);
......@@ -56,6 +56,15 @@ const menuLayouts = [
component: () => import("@/views/xnpgbg/grxnpg.vue")
},
{
path: "/queryGrxnfx",
name: "queryGrxnfx",
meta: {
title: '个人效能分析',
auth: '5'
},
component: () => import("@/views/xnpgbg/grxnfx.vue")
},
{
path: "/queryWfqdbgGR",
name: "queryWfqdbgGR",
meta: {
......@@ -124,5 +133,23 @@ export default [{
auth: '5'
},
component: () => import("@/views/xnpgbg/gr/reportDetailsGR.vue")
},
},
{
path: "/grczfx",
name: "grczfx",
meta: {
title: '个人操作分析',
auth: '5'
},
component: () => import("@/views/xnpgbg/grczfx.vue")
},
{
path: "/grczxq",
name: "grczxq",
meta: {
title: '个人操作详情',
auth: '5'
},
component: () => import("@/views/xnpgbg/grczxq.vue")
},
];
\ No newline at end of file
<template>
<div class="paneDiv" v-loading='loading'>
<el-row>
<el-col :span="24">
<span class="flTtitle">查询结果</span>
<el-button
plain
class="zdybtn export"
style="float: right; margin-top: 1%; margin-right: 2% !important"
size="small"
@click="exportFile"
>
<i
class="fa fa-external-link"
aria-hidden="true"
style="margin-right: 5px"
></i>
导出
</el-button>
</el-col>
</el-row>
<el-row style="padding-top: 10px">
<el-col :span="6">
<table style="width: 100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<th>序号</th>
<th>日时段</th>
<th>次数</th>
</tr>
<tr v-for="(item,index) in dates" :key="index">
<td>{{index}}</td>
<td>{{item}}</td>
<td>{{vals[index]}}</td>
</tr>
</table>
</el-col>
<el-col :span="18">
<div id="e-charts" style="height: 480px"></div>
</el-col>
</el-row>
</div>
</template>
<script>
import request from "@/utils/http";
import qs from "qs";
import base from "@/api/base";
export default {
name: "PerspectiveAndAnalysis",
data() {
return {
formData: {},
dates:[],
vals:[],
loading:false
};
},
methods: {
initECharts() {
let myChart = this.$echarts.init(document.getElementById("e-charts"));
myChart.setOption({
xAxis: {
type: "category",
data: this.dates,
},
yAxis: {
type: "value",
},
series: [
{
data: this.vals,
type: "bar",
itemStyle: {
color: "#58a5ff",
},
},
{
data: this.vals,
type: "line",
smooth: false,
itemStyle: {
color: "#298bfe",
},
},
],
});
this.loading = false;
},
exportFile() {
this.qeruestFile(this.formData, "/ywsjTj/exportRyccfx").then((res) => {
let blob = new Blob([res]);
let fileName = "个人操作统计.xlsx";
// 组装a标签
let elink = document.createElement("a");
// 设置下载文件名
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
});
},
detail(sfzh) {
this.$router.pushToTab({
path: "/grczxq",
query: {
...this.formData,
sfzh,
},
});
},
fx() {},
initDate() {
let self = this;
this.loading = true;
let url = "/ywsjTj/queryRyccfx";
this.qeruestPost(this.formData, url).then((res) => {
let { code, data } = res;
if (code == 200) {
for (const key in data) {
this.dates.push(key)
this.vals.push(data[key])
this.initECharts()
}
}
});
},
qeruestFile(form, urls) {
return request({
url: base.alyIP + urls,
data: qs.stringify(form),
responseType: "blob",
method: "post",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
});
},
qeruestPost(form, urls) {
return request({
url: base.alyIP + urls,
data: qs.stringify(form),
method: "post",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
});
},
},
mounted() {
this.formData = this.$route.query;
this.initDate();
},
};
</script>
<style lang="scss" scoped>
.paneDiv {
width: 95%;
background: #ffffff;
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.06);
opacity: 1;
border-radius: 4px;
margin: 15px auto;
padding: 20px;
}
</style>
\ No newline at end of file
<template>
<div class="Content">
<div class="paneDiv">
<el-row>
<el-col :span="24">
<span class="flTtitle">查询结果</span>
<span class="total">共有{{ dataCount }}条查询结果</span>
<el-button
plain
class="zdybtn export"
style="float: right; margin-top: 1%; margin-right: 2% !important"
size="small"
@click="exportFile"
>
<i
class="fa fa-external-link"
aria-hidden="true"
style="margin-right: 5px"
></i>
导出
</el-button>
</el-col>
</el-row>
<el-table
v-loading="tableLoading"
element-loading-text="拼命加载中"
:data="tableData"
tooltip-effect="dark"
width="100%"
size="small"
border
>
<el-table-column type="index" label="序号" width="50" />
<el-table-column align="center" label="身份证号" prop="sfzh" />
<el-table-column align="center" label="单位名称" prop="unitname" />
<el-table-column align="center" label="姓名" prop="xm" />
<el-table-column align="center" label="警号" prop="jh" />
<el-table-column align="center" label="联系电话" prop="lxdh" />
>
<el-table-column align="center" label="访问时间" prop="fwsj" />
<el-table-column align="center" label="应用名称" prop="yymc" />
<el-table-column
align="center"
label="操作参数"
prop="czcs"
width="300px"
/>
</el-table>
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="formData.page"
:small="true"
:total="dataCount"
>
</el-pagination>
</div>
</div>
</template>
<script>
import request from "@/utils/http";
import qs from "qs";
import base from "@/api/base";
export default {
name: "ywsjTjbbGrcz",
data() {
return {
tableLoading: false,
tableData: [],
dataCount: 0,
formData: {},
};
},
mounted() {
this.formData = this.$route.query;
this.initDate();
},
methods: {
exportFile() {
this.qeruestFile(this.formData, "/ywsjTj/exportRyccxq").then((res) => {
let blob = new Blob([res]);
let fileName = "个人操作统计.xlsx";
// 组装a标签
let elink = document.createElement("a");
// 设置下载文件名
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
});
},
detail(sfzh) {
this.$router.pushToTab({
path: "/grczxq",
query: {
...this.formData,
sfzh,
},
});
},
fx() {},
initDate() {
let self = this;
this.tableLoading = true;
let url = "/ywsjTj/queryRyccxq";
this.qeruestPost(this.formData, url).then((res) => {
let { code, data, total } = res;
if (code == 200) {
self.tableData = data.rows;
self.dataCount = data.total;
self.tableLoading = false;
}
});
},
qeruestFile(form, urls) {
return request({
url: base.alyIP + urls,
data: qs.stringify(form),
responseType: "blob",
method: "post",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
});
},
qeruestPost(form, urls) {
return request({
url: base.alyIP + urls,
data: qs.stringify(form),
method: "post",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
});
},
clearData() {
this.formData.daterange = [];
this.formData.djsjJssj = "";
this.formData.djsjKssj = "";
},
query() {
let dataRange = this.formData.daterange;
if (dataRange.length > 0) {
this.formData.djsjKssj = this.$moment(dataRange[0]).format(
"YYYY-MM-DD"
);
this.formData.djsjJssj = this.$moment(dataRange[1]).format(
"YYYY-MM-DD"
);
}
this.tableLoading = true;
this.formData.daterange = [];
this.initDate();
this.tableLoading = false;
},
handleSizeChange(val) {
this.formData.limit = val;
this.initDate();
},
handleCurrentChange(val) {
this.formData.page = val;
this.initDate();
},
},
};
</script>
<style>
.el-dialog__body {
padding: 10px 15px !important;
}
.rightContent .el-input__inner,
#formCommonPage .el-input__inner {
height: 36px;
line-height: 36px;
font-family: inherit;
}
.el-table__header-wrapper th,
.el-table__header-wrapper tr {
background: #f4f6f7;
}
.rightContent .el-input__icon,
#formCommonPage .el-input__icon,
.el-input__suffix-inner {
line-height: 36px;
}
.rightContent .el-range-separator {
position: relative;
top: -4px;
}
.rightContent .el-textarea__inner,
#formCommonPage .el-textarea__inner {
width: 100%;
font-family: inherit;
}
.rightContent .el-range-input,
#formCommonPage .el-range-input {
vertical-align: top;
}
.rightContent .el-date-editor .el-range__close-icon {
margin-top: -4px;
}
.rightContent .el-form-item__error {
left: calc(66% - 27px);
top: 12px;
}
.success-row {
background-color: #fbf9f4 !important;
}
.Content .el-input,
.Content .el-date-editor--daterange.el-input__inner {
width: 100% !important;
}
</style>
<style scoped lang="scss">
@import "@/assets/styles/rightContent.scss";
.Content {
width: 1200px;
background: #ffffff;
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.06);
opacity: 1;
border-radius: 4px;
margin: 15px auto;
padding: 20px;
}
.zdybtns {
width: 76px !important;
height: 32px !important;
line-height: 32px !important;
background: #ffffff;
border: 1px solid #d9d9d9;
opacity: 1;
border-radius: 4px;
}
.gxrInfo {
display: flex;
flex-wrap: wrap;
flex: 2;
.gxrItem {
display: flex;
width: 45%;
.gxrTitle {
font-size: 16px;
font-family: Source Han Sans CN;
color: #363636;
}
.gxrContent {
color: #808591;
font-size: 16px;
padding-left: 10px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="Content">
<div class="cxtjWrap paneDiv">
<el-row>
<el-col :span="24">
<span class="flTtitle">查询条件</span>
</el-col>
</el-row>
<el-form
label-position="right"
label-width="140px"
ref="queryForm"
:model="formData"
>
<el-row>
<el-col :span="6">
<el-form-item label="业务名称">
<el-select v-model="formData.yymc" clearable>
<el-option
v-for="item in queryTypeList"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="操作日期">
<el-date-picker
v-model="formData.daterange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-button-group style="float: right; display: -webkit-inline-box">
<el-button
plain
size="small"
@click="clearData"
style="width: 60%"
>重置</el-button
>
<el-button
type="primary"
size="small"
style="width: 60%"
@click="initDate"
>查询
</el-button>
</el-button-group>
</el-col>
</el-row>
</el-form>
</div>
<div class="paneDiv">
<el-row>
<el-col :span="24">
<span class="flTtitle">查询结果</span>
<el-button
plain
class="zdybtn export"
style="float: right; margin-top: 1%; margin-right: 2% !important"
size="small"
@click="exportFile"
>
<i
class="fa fa-external-link"
aria-hidden="true"
style="margin-right: 5px"
></i>
导出
</el-button>
<span class="total">共有{{ dataCount }}条查询结果</span>
</el-col>
</el-row>
<el-table
v-loading="tableLoading"
element-loading-text="拼命加载中"
:data="tableData"
tooltip-effect="dark"
width="100%"
size="small"
border
>
<el-table-column type="index" label="序号" width="50" />
<el-table-column align="center" label="身份证号" prop="sfzh" />
<el-table-column align="center" label="单位名称" prop="unitname" />
<el-table-column align="center" label="姓名" prop="xm" />
<el-table-column align="center" label="警号" prop="jh" />
<el-table-column align="center" label="联系电话" prop="lxdh" />
<el-table-column align="center" label="查询次数" prop="count" />
<el-table-column align="center" label="操作"
><template slot-scope="{ row }">
<span
@click="detail(row.sfzh)"
style="color: #409eff; margin-right: 5px; cursor: pointer"
>操作详情</span
>
<span @click="fx(row.sfzh)" style="color: #409eff; cursor: pointer"
>操作分析</span
>
</template></el-table-column
>
</el-table>
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="formData.page"
:page-sizes="[10]"
:page-size="formData.limit"
layout="sizes,prev, pager, next"
:small="true"
:total="dataCount"
>
</el-pagination>
</div>
</div>
</template>
<script>
import request from "@/utils/http";
import qs from "qs";
import base from "@/api/base";
export default {
name: "ywsjTjbbGrcz",
data() {
return {
tableLoading: false,
tableData: [],
dataCount: 0,
formData: {
unitCode: "",
yymc: "",
djsjKssj: this.$moment().subtract(3, "month").format("YYYY-MM-DD"),
djsjJssj: this.$moment().format("YYYY-MM-DD"),
daterange: [],
page: 1,
limit: 100,
},
queryTypeList: [
{ name: "个案侦办", value: "0101" },
{ name: "证据材料检查", value: "0102" },
{ name: "案件标注", value: "0103" },
{ name: "合成研判工作台", value: "0301" },
{ name: "工作指令", value: "0305" },
{ name: "线索核办", value: "0404" },
{ name: "刑嫌调控工作管理", value: "0501" },
{ name: "阵地管控工作管理", value: "0502" },
{ name: "业务效能工作评估", value: "0503" },
{ name: "单位效能工作评估", value: "0504" },
{ name: "个人效能工作评估", value: "0505" },
{ name: "功能效能工作评估", value: "0506" },
],
};
},
mounted() {
this.initDate();
},
methods: {
exportFile() {
this.qeruestFile(this.formData, "/ywsjTj/exportRycczyxx").then((res) => {
let blob = new Blob([res]);
let fileName = "个人操作统计.xlsx";
// 组装a标签
let elink = document.createElement("a");
// 设置下载文件名
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
});
},
qeruestFile(form, urls) {
return request({
url: base.alyIP + urls,
data: qs.stringify(form),
responseType: "blob",
method: "post",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
});
},
detail(sfzh) {
this.$router.pushToTab({
path: "/grczxq",
query: {
...this.formData,
sfzh,
},
});
},
fx(sfzh) {
this.$router.pushToTab({
path: "/grczfx",
query: {
...this.formData,
sfzh,
},
});
},
initDate() {
let self = this;
this.tableLoading = true;
let url = "/ywsjTj/queryRycczyxx";
this.qeruestPost(this.formData, url).then((res) => {
let { code, data } = res;
if (code == 200) {
self.tableData = data.rows;
self.dataCount = data.total;
self.tableLoading = false;
}
});
},
qeruestPost(form, urs) {
return request({
url: base.alyIP + urs,
data: qs.stringify(form),
method: "post",
headers: {
"content-type": "application/x-www-form-urlencoded",
},
});
},
clearData() {
this.formData.daterange = [];
this.formData.djsjJssj = '';
this.formData.djsjKssj = ''
},
query() {
let dataRange = this.formData.daterange;
if (dataRange.length > 0) {
this.formData.djsjKssj = dataRange[0];
this.formData.djsjJssj = dataRange[1];
}
this.tableLoading = true;
if (this.formData.type == '1') {
request({
url: url.BaseURL + "/ywsjTj/queryDwdlTj",
params: {djsjKssj: this.formData.djsjKssj, djsjJssj: this.formData.djsjJssj},
method: "get"
}).then(res => {
if (res.code == 200) {
this.tableData = res.data.rows;
this.page.dataCount = res.data.total;
} else {
this.$message.error(res.msg);
}
});
}
// else if (this.formData.type == '2') {
// } else if (this.formData.type == '3') {
// } else if (this.formData.type == '4') {
// }
this.tableLoading = false;
this.formData.djsjJssj = "";
this.formData.djsjKssj = "";
},
handleSizeChange(val) {
this.formData.limit = val;
this.initDate();
},
handleCurrentChange(val) {
this.formData.page = val;
this.initDate();
},
},
};
</script>
<style>
.el-dialog__body {
padding: 10px 15px !important;
}
.rightContent .el-input__inner,
#formCommonPage .el-input__inner {
height: 36px;
line-height: 36px;
font-family: inherit;
}
.el-table__header-wrapper th,
.el-table__header-wrapper tr {
background: #f4f6f7;
}
.rightContent .el-input__icon,
#formCommonPage .el-input__icon,
.el-input__suffix-inner {
line-height: 36px;
}
.rightContent .el-range-separator {
position: relative;
top: -4px;
}
.rightContent .el-textarea__inner,
#formCommonPage .el-textarea__inner {
width: 100%;
font-family: inherit;
}
.rightContent .el-range-input,
#formCommonPage .el-range-input {
vertical-align: top;
}
.rightContent .el-date-editor .el-range__close-icon {
margin-top: -4px;
}
.rightContent .el-form-item__error {
left: calc(66% - 27px);
top: 12px;
}
.success-row {
background-color: #fbf9f4 !important;
}
.Content .el-input,
.Content .el-date-editor--daterange.el-input__inner {
width: 100% !important;
}
</style>
<style scoped lang="scss">
@import "@/assets/styles/rightContent.scss";
.zdybtns {
width: 76px !important;
height: 32px !important;
line-height: 32px !important;
background: #ffffff;
border: 1px solid #d9d9d9;
opacity: 1;
border-radius: 4px;
}
.gxrInfo {
display: flex;
flex-wrap: wrap;
flex: 2;
.gxrItem {
display: flex;
width: 45%;
.gxrTitle {
font-size: 16px;
font-family: Source Han Sans CN;
color: #363636;
}
.gxrContent {
color: #808591;
font-size: 16px;
padding-left: 10px;
}
}
}
</style>
\ No newline at end of file
......@@ -373,7 +373,16 @@ export default {
disabled: false,
},
],
}
},
{
id: "queryGrxnfx",
label: "个人效能分析",
newAuth: "M01",
index: "queryGrxnfx",
className: "iconfont icongongnengfuwu",
hasChildren: false,
children: [],
},
],
};
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment