22 changed files with 943 additions and 996 deletions
@ -1,165 +0,0 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-kpi__kpirule}"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item label="考核规则名称"> |
|||
<el-input v-model="dataForm.ruleName" placeholder="考核规则名称" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:save')" type="primary" @click="addOrUpdateHandle('0')">新增公式规则</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:save')" type="primary" @click="addOrUpdateHandle('1')">新增手动打分规则</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|||
<el-table-column type="index" width="50" label="序号"></el-table-column> |
|||
<el-table-column prop="id" label="主键" header-align="center" align="center" v-if="false"></el-table-column> |
|||
<el-table-column prop="ruleName" label="考核规则名称" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="ruleCode" label="考核规则编码" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="ruleMode" label="规则生成方式" header-align="center" align="center" :formatter="showRuleModeFormatter"></el-table-column> |
|||
<el-table-column prop="referenceId" label="引用ID" header-align="center" align="center" v-if="false"></el-table-column> |
|||
<el-table-column prop="referenceName" label="引用" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="kpiCycle" label="考核周期" header-align="center" align="center" :formatter="showKpiCycleFormatter"></el-table-column> |
|||
<el-table-column prop="deptTypeKey" label="考核部门类别" header-align="center" align="center" :formatter="showDeptTypeKeyFormatter"></el-table-column> |
|||
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.ruleMode,scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改公式规则 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> |
|||
<!-- 弹窗, 新增 / 修改手动打分规则 --> |
|||
<manual-score-add-or-update v-if="manualScoreAddOrUpdateVisible" ref="manualScoreAddOrUpdate" @refreshDataList="getDataList"></manual-score-add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './kpirule-add-or-update' |
|||
import ManualScoreAddOrUpdate from './manual-score-add-or-update' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/kpi/kpirule/query', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/kpi/kpirule', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
ruleName: '' |
|||
}, |
|||
manualScoreAddOrUpdateVisible: false, // 手动打分新增/更新,弹窗visible状态 |
|||
ruleModeList: [], |
|||
kpiCycleList: [], |
|||
deptTypeKeyList: [] |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate, |
|||
ManualScoreAddOrUpdate |
|||
}, |
|||
created () { |
|||
this.getRuleModeList() |
|||
this.getKpiCycleList() |
|||
this.getDeptTypeKeyList() |
|||
}, |
|||
methods: { |
|||
// 新增 修改 |
|||
addOrUpdateHandle (ruleMode, id) { |
|||
if (ruleMode === '0') { |
|||
// console.log(+'ruleMode=' + ruleMode + '元公式;id=' + id) |
|||
this.addOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.addOrUpdate.dataForm.id = id |
|||
this.$refs.addOrUpdate.init() |
|||
}) |
|||
} else if (ruleMode === '1') { |
|||
// console.log('ruleMode=' + ruleMode + '手动打分;id=' + id) |
|||
this.manualScoreAddOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.manualScoreAddOrUpdate.dataForm.id = id |
|||
this.$refs.manualScoreAddOrUpdate.init() |
|||
}) |
|||
} |
|||
}, |
|||
// 获取绩效考核规则生成方式 |
|||
getRuleModeList () { |
|||
this.$http.get(`/sys/dict/listSimple/rule_mode`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.ruleModeList = res.data |
|||
}).catch(() => { }) |
|||
}, |
|||
showRuleModeFormatter: function (row, column) { |
|||
if (row.ruleMode) { |
|||
let dict = this.ruleModeList.filter(item => item.dictValue === row.ruleMode)[0] |
|||
if (dict) { |
|||
return dict.dictName |
|||
} |
|||
} |
|||
return '' |
|||
}, |
|||
// 获取绩效考核周期下拉框集合 |
|||
getKpiCycleList () { |
|||
this.$http.get(`/sys/dict/listSimple/kpi_cycle`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.kpiCycleList = res.data |
|||
}).catch(() => { }) |
|||
}, |
|||
showKpiCycleFormatter: function (row, column) { |
|||
if (row.kpiCycle) { |
|||
let dict = this.kpiCycleList.filter(item => item.dictValue === row.kpiCycle)[0] |
|||
if (dict) { |
|||
return dict.dictName |
|||
} |
|||
} |
|||
return '' |
|||
}, |
|||
// 获取考核部门类别下拉框 |
|||
getDeptTypeKeyList () { |
|||
this.$http.get(`/sys/dict/listSimple/org_type`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.deptTypeKeyList = res.data |
|||
}).catch(() => { }) |
|||
}, |
|||
// 转换考核部门显示名称 |
|||
showDeptTypeKeyFormatter: function (row, column) { |
|||
if (row.deptTypeKey) { |
|||
let dict = this.deptTypeKeyList.filter(item => item.dictValue === row.deptTypeKey)[0] |
|||
if (dict) { |
|||
return dict.dictName |
|||
} |
|||
} |
|||
return '' |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
@ -0,0 +1,76 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" title="详情" :close-on-click-modal="false" :close-on-press-escape="false"> |
|||
<el-table border :data="dataList" style="width: 100%;"> |
|||
<el-table-column prop="rownum" label="序号" width="50" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="rule" label="规则" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="detail" :formatter="publishState" label="详情" header-align="center"></el-table-column> |
|||
</el-table> |
|||
<template slot="footer"> |
|||
<el-button type="primary" @click="tableExport()">{{ $t('export') }}</el-button> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<style> |
|||
.el-table .cell{ |
|||
white-space:pre-line; |
|||
} |
|||
</style> |
|||
<script> |
|||
import Cookies from 'js-cookie' |
|||
import qs from 'qs' |
|||
export default { |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
exportURL: '/kpi/gridResult/tableExport' |
|||
}, |
|||
visible: false, |
|||
dataForm: { |
|||
id: '', |
|||
gridId: '', |
|||
manualScore: '', |
|||
workScore: '', |
|||
voteScore: '', |
|||
finalScore: '', |
|||
rownum: '', |
|||
rule: '', |
|||
detail: '' |
|||
}, |
|||
dataList: [] |
|||
} |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
} |
|||
}) |
|||
}, |
|||
publishState: function (row) { |
|||
return row.detail.replace(',', '\n') |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/kpi/gridResult/${this.dataForm.id}`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.dataList = res.data |
|||
}).catch(() => {}) |
|||
}, |
|||
// Excel导出 |
|||
tableExport () { |
|||
let id = this.dataForm.id |
|||
let params = qs.stringify({ |
|||
'token': Cookies.get('token'), |
|||
'id': id |
|||
}) |
|||
window.location.href = `${window.SITE_CONFIG['apiURL']}${this.mixinViewModuleOptions.exportURL}?${params}` |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
@ -0,0 +1,154 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-kpi__kpiresultgrid}"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item label="所属机构"> |
|||
<el-cascader |
|||
v-model="deptIdList" |
|||
:options="options" |
|||
:props="{ checkStrictly: true }" |
|||
clearable |
|||
></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="考核周期起始月"> |
|||
<el-date-picker v-model="dataForm.scoreStartDate" |
|||
type="month" clearable placeholder="选择月" |
|||
value-format="yyyy-MM" format="yyyy-MM"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:gridResult:export')" type="primary" @click="tableExport()">{{ $t('export') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<el-table-column prop="allDeptNames" label="所属机构" header-align="center" align="center" width="440"></el-table-column> |
|||
<el-table-column prop="leaderName" label="网格长" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="startDate" label="考核周期开始日" header-align="center" align="center" :formatter="startDateFormat"></el-table-column> |
|||
<el-table-column prop="endDate" label="考核周期结束日" header-align="center" align="center" :formatter="endDateFormat"></el-table-column> |
|||
<!-- 手动打分 --> |
|||
<el-table-column prop="manualScore" label="基层党建工作职责得分" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="workScore" label="平时工作得分" header-align="center" align="center" width="160"></el-table-column> |
|||
<el-table-column prop="finalScore" label="总分" header-align="center" align="center" width="160"></el-table-column> |
|||
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button type="text" size="small" @click="detailQuery(scope.row.id)">详情</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './resultGrid-add-or-update' |
|||
import Cookies from 'js-cookie' |
|||
import qs from 'qs' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/kpi/gridResult/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/kpi/gridResult', |
|||
deleteIsBatch: true, |
|||
exportURL: '/kpi/gridResult/export' |
|||
}, |
|||
dataForm: { |
|||
id: '', |
|||
gridId: '', |
|||
scoreStartDate: '' |
|||
}, |
|||
// 所属机构配置 |
|||
deptIdList: [], |
|||
options: [], |
|||
streetList: [], |
|||
communityList: [], |
|||
gridList: [] |
|||
} |
|||
}, |
|||
created () { |
|||
this.$http |
|||
.get(`/sys/user/deptOptions/getByLoginUser`) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.options = res.data.options |
|||
}) |
|||
.catch(() => {}) |
|||
}, |
|||
methods: { |
|||
// 考核周期开始日字段,格式化 |
|||
startDateFormat: function (row) { |
|||
return row.startDate.substring(0, 10) |
|||
}, |
|||
// 考核周期结束日字段,格式化 |
|||
endDateFormat: function (row) { |
|||
return row.endDate.substring(0, 10) |
|||
}, |
|||
detailQuery (id) { |
|||
this.addOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.addOrUpdate.dataForm.id = id |
|||
this.$refs.addOrUpdate.init() |
|||
}) |
|||
}, |
|||
// Excel导出 |
|||
tableExport () { |
|||
let id = this.dataForm.id |
|||
let params = qs.stringify({ |
|||
'token': Cookies.get('token'), |
|||
'id': id, |
|||
'scoreStartDate': this.dataForm.scoreStartDate, |
|||
'streetId': this.deptIdList[0], |
|||
'communityId': this.deptIdList[1], |
|||
'gridId': this.deptIdList[2] |
|||
}) |
|||
window.location.href = `${window.SITE_CONFIG['apiURL']}${this.mixinViewModuleOptions.exportURL}?${params}` |
|||
} |
|||
}, |
|||
watch: { |
|||
'deptIdList': function (val) { |
|||
if (val.length === 0) { |
|||
this.dataForm.streetId = '' |
|||
this.dataForm.communityId = '' |
|||
this.dataForm.gridId = '' |
|||
} |
|||
if (val.length === 1) { |
|||
this.dataForm.streetId = this.deptIdList[0] |
|||
this.dataForm.communityId = '' |
|||
this.dataForm.gridId = '' |
|||
} |
|||
if (val.length === 2) { |
|||
this.dataForm.streetId = this.deptIdList[0] |
|||
this.dataForm.communityId = this.deptIdList[1] |
|||
this.dataForm.gridId = '' |
|||
} |
|||
if (val.length === 3) { |
|||
this.dataForm.streetId = this.deptIdList[0] |
|||
this.dataForm.communityId = this.deptIdList[1] |
|||
this.dataForm.gridId = this.deptIdList[2] |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
|||
@ -0,0 +1,70 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" title="详情" :close-on-click-modal="false" :close-on-press-escape="false"> |
|||
<el-table border :data="dataList" style="width: 100%;"> |
|||
<el-table-column prop="gridCallSuperiorAmount" label="网格呼叫事项总数" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="gridCallSuperiorRespAmount" label="响应网格呼叫事项数" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="gridCallSuperiorCloseAmount" label="办结网格呼叫事项数" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="gridHighEvaluationAmount" label="工作评议满意数" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="gridMediumEvaluationAmount" label="工作评议基本满意数" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="gridLowEvaluationAmount" label="工作评议不满意数" header-align="center" align="center"></el-table-column> |
|||
</el-table> |
|||
<template slot="footer"> |
|||
<el-button type="primary" @click="tableExport()">{{ $t('export') }}</el-button> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import Cookies from 'js-cookie' |
|||
import qs from 'qs' |
|||
export default { |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
exportURL: '/kpi/kpiresultsuperior/tableExport' |
|||
}, |
|||
visible: false, |
|||
dataForm: { |
|||
id: '', |
|||
deptId: '', |
|||
gridCallSuperiorAmount: '', |
|||
gridCallSuperiorRespAmount: '', |
|||
gridCallSuperiorCloseAmount: '', |
|||
gridHighEvaluationAmount: '', |
|||
gridMediumEvaluationAmount: '', |
|||
gridLowEvaluationAmount: '' |
|||
}, |
|||
dataList: [] |
|||
} |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/kpi/kpiresultsuperior/${this.dataForm.id}`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.dataList = res.data |
|||
}).catch(() => {}) |
|||
}, |
|||
// Excel导出 |
|||
tableExport () { |
|||
let id = this.dataForm.id |
|||
let params = qs.stringify({ |
|||
'token': Cookies.get('token'), |
|||
'id': id |
|||
}) |
|||
window.location.href = `${window.SITE_CONFIG['apiURL']}${this.mixinViewModuleOptions.exportURL}?${params}` |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
@ -0,0 +1,178 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-kpi__kpiresultsuperior}"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item label="所属机构"> |
|||
<el-cascader |
|||
v-model="deptIdList" |
|||
:options="options" |
|||
:props="{ checkStrictly: true }" |
|||
clearable |
|||
></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="考核周期起始月"> |
|||
<el-date-picker v-model="dataForm.scoreStartDate" |
|||
type="month" clearable placeholder="选择月" |
|||
value-format="yyyy-MM" format="yyyy-MM"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:gridResult:export')" type="primary" @click="tableExport()">{{ $t('export') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<el-table-column prop="allDeptNames" label="所属机构" header-align="center" align="center" width="440"></el-table-column> |
|||
<el-table-column prop="finalScore" label="最终得分" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="startDate" label="考核周期开始日" header-align="center" :formatter="startDateFormat" align="center"></el-table-column> |
|||
<el-table-column prop="endDate" label="考核周期结束日" header-align="center" :formatter="endDateFormat" align="center"></el-table-column> |
|||
<el-table-column prop="kpiCycle" label="考核周期" header-align="center" :formatter="kpiCycleFormat" align="center"></el-table-column> |
|||
<el-table-column prop="deptTypeKey" label="机构类别" header-align="center" :formatter="deptTypeKeyFormat" align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button type="text" size="small" @click="detailQuery(scope.row.id)">详情</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './resultSuperior-add-or-update' |
|||
import Cookies from 'js-cookie' |
|||
import qs from 'qs' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/kpi/kpiresultsuperior/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/kpi/kpiresultsuperior', |
|||
deleteIsBatch: true, |
|||
exportURL: '/kpi/kpiresultsuperior/export' |
|||
}, |
|||
dataForm: { |
|||
id: '', |
|||
scoreStartDate: '' |
|||
}, |
|||
// 所属机构配置 |
|||
deptIdList: [], |
|||
options: [], |
|||
streetList: [], |
|||
communityList: [], |
|||
gridList: [] |
|||
} |
|||
}, |
|||
created () { |
|||
this.$http |
|||
.get(`/sys/user/deptOptions/getByLoginUser`) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.options = res.data.options |
|||
}) |
|||
.catch(() => {}) |
|||
}, |
|||
methods: { |
|||
// Excel导出 |
|||
tableExport () { |
|||
let id = this.dataForm.id |
|||
let params = qs.stringify({ |
|||
'token': Cookies.get('token'), |
|||
'id': id, |
|||
'scoreStartDate': this.dataForm.scoreStartDate, |
|||
'streetId': this.deptIdList[0], |
|||
'communityId': this.deptIdList[1], |
|||
'gridId': this.deptIdList[2] |
|||
}) |
|||
window.location.href = `${window.SITE_CONFIG['apiURL']}${this.mixinViewModuleOptions.exportURL}?${params}` |
|||
}, |
|||
// 考核周期开始日字段,格式化 |
|||
startDateFormat: function (row) { |
|||
return row.startDate.substring(0, 10) |
|||
}, |
|||
// 考核周期结束日字段,格式化 |
|||
endDateFormat: function (row) { |
|||
return row.endDate.substring(0, 10) |
|||
}, |
|||
// 考核周期,格式化 |
|||
kpiCycleFormat: function (row) { |
|||
if (row.kpiCycle === 'month') { |
|||
return '月' |
|||
} else if (row.kpiCycle === 'quarter') { |
|||
return '季' |
|||
} else if (row.kpiCycle === 'year') { |
|||
return '年' |
|||
} |
|||
}, |
|||
// 机构类别,格式化 |
|||
deptTypeKeyFormat: function (row) { |
|||
if (row.deptTypeKey === 'district_party') { |
|||
return '区党委' |
|||
} else if (row.deptTypeKey === 'district_dept') { |
|||
return '区直部门' |
|||
} else if (row.deptTypeKey === 'street_party') { |
|||
return '街道党工委' |
|||
} else if (row.deptTypeKey === 'street_dept') { |
|||
return '街道部门' |
|||
} else if (row.deptTypeKey === 'community_party') { |
|||
return '社区党工委' |
|||
} else if (row.deptTypeKey === 'grid_party') { |
|||
return '网格党支部' |
|||
} |
|||
}, |
|||
// 跳转到详情页 |
|||
detailQuery (id, startDate, endDate, deptId) { |
|||
this.addOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.addOrUpdate.dataForm.id = id |
|||
this.$refs.addOrUpdate.init() |
|||
}) |
|||
} |
|||
}, |
|||
watch: { |
|||
'deptIdList': function (val) { |
|||
if (val.length === 0) { |
|||
this.dataForm.streetId = '' |
|||
this.dataForm.communityId = '' |
|||
this.dataForm.gridId = '' |
|||
} |
|||
if (val.length === 1) { |
|||
this.dataForm.streetId = this.deptIdList[0] |
|||
this.dataForm.communityId = '' |
|||
this.dataForm.gridId = '' |
|||
} |
|||
if (val.length === 2) { |
|||
this.dataForm.streetId = this.deptIdList[0] |
|||
this.dataForm.communityId = this.deptIdList[1] |
|||
this.dataForm.gridId = '' |
|||
} |
|||
if (val.length === 3) { |
|||
this.dataForm.streetId = this.deptIdList[0] |
|||
this.dataForm.communityId = this.deptIdList[1] |
|||
this.dataForm.gridId = this.deptIdList[2] |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
|||
@ -0,0 +1,233 @@ |
|||
<template> |
|||
<el-card shadow="never" |
|||
class="aui-card--fill"> |
|||
<div class="mod-kpi__kpirule}"> |
|||
<el-form :inline="true" |
|||
:model="dataForm" |
|||
@keyup.enter.native="getDataList()"> |
|||
<el-form-item label="考核规则名称"> |
|||
<el-input v-model="dataForm.ruleName" |
|||
placeholder="考核规则名称" |
|||
clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:save')" |
|||
type="primary" |
|||
@click="addOrUpdateHandle('0')">新增公式规则</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:save')" |
|||
type="primary" |
|||
@click="addOrUpdateHandle('1')">新增手动打分规则</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:delete')" |
|||
type="danger" |
|||
@click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" |
|||
:data="dataList" |
|||
border |
|||
@selection-change="dataListSelectionChangeHandle" |
|||
style="width: 100%;"> |
|||
<el-table-column type="selection" |
|||
header-align="center" |
|||
align="center" |
|||
width="50"></el-table-column> |
|||
<el-table-column type="index" |
|||
width="50" |
|||
label="序号"></el-table-column> |
|||
<el-table-column prop="ruleName" |
|||
label="规则名称" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="ruleCode" |
|||
label="规则编码" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="ruleMode" |
|||
width="100" |
|||
label="生成方式" |
|||
header-align="center" |
|||
align="center" |
|||
:formatter="showRuleModeFormatter"></el-table-column> |
|||
<el-table-column prop="referenceName" |
|||
label="引用" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="kpiCycle" |
|||
width="50" |
|||
label="考核周期" |
|||
header-align="center" |
|||
align="center" |
|||
:formatter="showKpiCycleFormatter"></el-table-column> |
|||
<el-table-column prop="deptTypeKey" |
|||
label="考核部门类别" |
|||
header-align="center" |
|||
align="center" |
|||
:formatter="showDeptTypeKeyFormatter"></el-table-column> |
|||
<el-table-column prop="createdTime" |
|||
label="创建时间" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:update')" |
|||
type="text" |
|||
size="small" |
|||
@click="addOrUpdateHandle(scope.row.ruleMode,scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('kpi:kpirule:delete')" |
|||
type="text" |
|||
size="small" |
|||
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination :current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改公式规则 --> |
|||
<add-or-update v-if="addOrUpdateVisible" |
|||
ref="addOrUpdate" |
|||
@refreshDataList="getDataList"></add-or-update> |
|||
<!-- 弹窗, 新增 / 修改手动打分规则 --> |
|||
<manual-score-add-or-update v-if="manualScoreAddOrUpdateVisible" |
|||
ref="manualScoreAddOrUpdate" |
|||
@refreshDataList="getDataList"></manual-score-add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './rule-add-or-update' |
|||
import ManualScoreAddOrUpdate from './rule-manualScore-add-or-update' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/kpi/rule/query', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/kpi/rule', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
ruleName: '' |
|||
}, |
|||
manualScoreAddOrUpdateVisible: false, // 手动打分新增/更新,弹窗visible状态 |
|||
ruleModeList: [], |
|||
kpiCycleList: [], |
|||
deptTypeKeyList: [] |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate, |
|||
ManualScoreAddOrUpdate |
|||
}, |
|||
created () { |
|||
this.getRuleModeList() |
|||
this.getKpiCycleList() |
|||
this.getDeptTypeKeyList() |
|||
}, |
|||
methods: { |
|||
// 新增 修改 |
|||
addOrUpdateHandle (ruleMode, id) { |
|||
if (ruleMode === '0') { |
|||
// console.log(+'ruleMode=' + ruleMode + '元公式;id=' + id) |
|||
this.addOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.addOrUpdate.dataForm.id = id |
|||
this.$refs.addOrUpdate.init() |
|||
}) |
|||
} else if (ruleMode === '1') { |
|||
// console.log('ruleMode=' + ruleMode + '手动打分;id=' + id) |
|||
this.manualScoreAddOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.manualScoreAddOrUpdate.dataForm.id = id |
|||
this.$refs.manualScoreAddOrUpdate.init() |
|||
}) |
|||
} |
|||
}, |
|||
// 获取绩效考核规则生成方式 |
|||
getRuleModeList () { |
|||
this.$http.get(`/sys/dict/listSimple/rule_mode`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.ruleModeList = res.data |
|||
}).catch(() => { }) |
|||
}, |
|||
showRuleModeFormatter: function (row, column) { |
|||
if (row.ruleMode) { |
|||
let dict = this.ruleModeList.filter(item => item.dictValue === row.ruleMode)[0] |
|||
if (dict) { |
|||
return dict.dictName |
|||
} |
|||
} |
|||
return '' |
|||
}, |
|||
// 获取绩效考核周期下拉框集合 |
|||
getKpiCycleList () { |
|||
this.$http.get(`/sys/dict/listSimple/kpi_cycle`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.kpiCycleList = res.data |
|||
}).catch(() => { }) |
|||
}, |
|||
showKpiCycleFormatter: function (row, column) { |
|||
if (row.kpiCycle) { |
|||
let dict = this.kpiCycleList.filter(item => item.dictValue === row.kpiCycle)[0] |
|||
if (dict) { |
|||
return dict.dictName |
|||
} |
|||
} |
|||
return '' |
|||
}, |
|||
// 获取考核部门类别下拉框 |
|||
getDeptTypeKeyList () { |
|||
this.$http.get(`/sys/dict/listSimple/org_type`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.deptTypeKeyList = res.data |
|||
}).catch(() => { }) |
|||
}, |
|||
// 转换考核部门显示名称 |
|||
showDeptTypeKeyFormatter: function (row, column) { |
|||
var deptTypeKeyNames = '' |
|||
var deptTypeKeys = row.deptTypeKey.split(',')// 在每个逗号(,)处进行分解。 |
|||
for (var i = 0; i < deptTypeKeys.length; i++) { |
|||
var dict = this.deptTypeKeyList.filter(item => item.dictValue === deptTypeKeys[i])[0] |
|||
deptTypeKeyNames = deptTypeKeyNames + dict.dictName + ' ' |
|||
} |
|||
if (deptTypeKeyNames) { |
|||
return deptTypeKeyNames |
|||
} |
|||
console.log(deptTypeKeyNames) |
|||
// if (row.deptTypeKey) { |
|||
|
|||
// let dict = this.deptTypeKeyList.filter(item => item.dictValue === row.deptTypeKey)[0] |
|||
// if (dict) { |
|||
// return dict.dictName |
|||
// } |
|||
// } |
|||
return '' |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
@ -1,129 +0,0 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" |
|||
:title="!dataForm.id ? $t('add') : $t('update')" |
|||
:close-on-click-modal="false" |
|||
:close-on-press-escape="false"> |
|||
<el-form :model="dataForm" |
|||
:rules="dataRule" |
|||
ref="dataForm" |
|||
@keyup.enter.native="dataFormSubmitHandle()" |
|||
:label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"> |
|||
<el-form-item label="绩效指标值" |
|||
prop="kpiItemValue"> |
|||
<el-input v-model="dataForm.kpiItemValue" |
|||
placeholder="绩效指标值"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="绩效指标描述" |
|||
prop="kpiItemDesc"> |
|||
<el-input v-model="dataForm.kpiItemDesc" |
|||
placeholder="绩效指标描述"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button type="primary" |
|||
@click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import debounce from 'lodash/debounce' |
|||
export default { |
|||
data () { |
|||
return { |
|||
visible: false, |
|||
dataForm: { |
|||
id: '', |
|||
kpiItemCode: '', |
|||
kpiItemValue: '', |
|||
kpiItemDesc: '', |
|||
delFlag: '', |
|||
revision: '', |
|||
createdBy: '', |
|||
createdTime: '', |
|||
updatedBy: '', |
|||
updatedTime: '' |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
kpiItemCode: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
kpiItemValue: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
kpiItemDesc: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
delFlag: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
revision: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/events/deptkpiconfig/${this.dataForm.id}`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.dataForm = { |
|||
...this.dataForm, |
|||
...res.data |
|||
} |
|||
}).catch(() => { }) |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function () { |
|||
this.$refs['dataForm'].validate((valid) => { |
|||
if (!valid) { |
|||
return false |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/events/deptkpiconfig/', this.dataForm).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}).catch(() => { }) |
|||
}) |
|||
}, 1000, { 'leading': true, 'trailing': false }) |
|||
} |
|||
} |
|||
</script> |
|||
@ -1,125 +0,0 @@ |
|||
<template> |
|||
<el-card shadow="never" |
|||
class="aui-card--fill"> |
|||
<div class="mod-events__deptkpiconfig}"> |
|||
<el-form :inline="true" |
|||
:model="dataForm" |
|||
@keyup.enter.native="getDataList()"> |
|||
<!-- <el-form-item> |
|||
<el-input v-model="dataForm.id" |
|||
placeholder="id" |
|||
clearable></el-input> |
|||
</el-form-item> --> |
|||
<!-- <el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> --> |
|||
<el-form-item> |
|||
考核公式<br> |
|||
响应率得分A=(议题响应数/议题总数)×50; |
|||
办结满意率得分B=[(满意数×100%+基本满意数×65%+不满意数×0)/项目总数] <br> |
|||
履行抓基层党建工作职责得分D=主观打分×50% |
|||
群众满意度得分E=(A+B)×50% |
|||
考核总分=D+E |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('events:deptkpiconfig:save')" |
|||
type="primary" |
|||
@click="addOrUpdateHandle()">{{ $t('add') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('events:deptkpiconfig:delete')" |
|||
type="danger" |
|||
@click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" |
|||
:data="dataList" |
|||
border |
|||
@selection-change="dataListSelectionChangeHandle" |
|||
style="width: 100%;" |
|||
:row-class-name="tableRowClassName"> |
|||
<el-table-column prop="kpiItemCode" |
|||
label="绩效指标编码" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="kpiItemValue" |
|||
label="绩效指标值" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="kpiItemDesc" |
|||
label="绩效指标描述" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button type="text" |
|||
size="small" |
|||
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button type="text" |
|||
size="small" |
|||
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<!-- <el-pagination :current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> --> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" |
|||
ref="addOrUpdate" |
|||
@refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './deptkpiconfig-add-or-update' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/events/deptkpiconfig/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/events/deptkpiconfig', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '' |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
}, |
|||
methods: { |
|||
tableRowClassName ({ row, rowIndex }) { |
|||
if (rowIndex < 3) { |
|||
return 'warning-row' |
|||
} else if (rowIndex < 6) { |
|||
return 'success-row' |
|||
} |
|||
return '' |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
.el-table .warning-row { |
|||
background: #ffe9c1; |
|||
} |
|||
|
|||
.el-table .success-row { |
|||
background: #9deed0; |
|||
} |
|||
</style> |
|||
@ -1,194 +0,0 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false"> |
|||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"> |
|||
<el-form-item label="议题或项目类别ID(不可重复)" prop="categoryId"> |
|||
<el-input v-model="dataForm.categoryId" placeholder="议题或项目类别ID(不可重复)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="类别名称" prop="categoryName"> |
|||
<el-input v-model="dataForm.categoryName" placeholder="类别名称"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="网格长在多少小时内响应算是有效响应" prop="gridValidRespLimitHour"> |
|||
<el-input v-model="dataForm.gridValidRespLimitHour" placeholder="网格长在多少小时内响应算是有效响应"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="网格长在多少小时内关闭算是有效关闭" prop="gridValidCloseLimitHour"> |
|||
<el-input v-model="dataForm.gridValidCloseLimitHour" placeholder="网格长在多少小时内关闭算是有效关闭"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="社区在多少小时内响应算是有效响应" prop="commValidRespLimitHour"> |
|||
<el-input v-model="dataForm.commValidRespLimitHour" placeholder="社区在多少小时内响应算是有效响应"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="街道在多少小时内响应算是有效响应" prop="streetValidRespLimitHour"> |
|||
<el-input v-model="dataForm.streetValidRespLimitHour" placeholder="街道在多少小时内响应算是有效响应"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="区直在多少小时内响应算是有效响应" prop="districtValidRespLimitHour"> |
|||
<el-input v-model="dataForm.districtValidRespLimitHour" placeholder="区直在多少小时内响应算是有效响应"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="超过多少小时响应算是无效响应。此值应大于各部门的有效响应值。若响应发生在有效响应与无效响应之间,为超时响应。" prop="invalidRespLimitHour"> |
|||
<el-input v-model="dataForm.invalidRespLimitHour" placeholder="超过多少小时响应算是无效响应。此值应大于各部门的有效响应值。若响应发生在有效响应与无效响应之间,为超时响应。"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="有效响应系数" prop="validRespCoefficient"> |
|||
<el-input v-model="dataForm.validRespCoefficient" placeholder="有效响应系数"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="超时响应系数" prop="overtimeRespCoefficient"> |
|||
<el-input v-model="dataForm.overtimeRespCoefficient" placeholder="超时响应系数"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="无效响应系数" prop="invalidRespCoefficient"> |
|||
<el-input v-model="dataForm.invalidRespCoefficient" placeholder="无效响应系数"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="删除标识 0:未删除,1:删除" prop="delFlag"> |
|||
<el-input v-model="dataForm.delFlag" placeholder="删除标识 0:未删除,1:删除"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="乐观锁" prop="revision"> |
|||
<el-input v-model="dataForm.revision" placeholder="乐观锁"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="创建人" prop="createdBy"> |
|||
<el-input v-model="dataForm.createdBy" placeholder="创建人"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="创建时间" prop="createdTime"> |
|||
<el-input v-model="dataForm.createdTime" placeholder="创建时间"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新人" prop="updatedBy"> |
|||
<el-input v-model="dataForm.updatedBy" placeholder="更新人"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新时间" prop="updatedTime"> |
|||
<el-input v-model="dataForm.updatedTime" placeholder="更新时间"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import debounce from 'lodash/debounce' |
|||
export default { |
|||
data () { |
|||
return { |
|||
visible: false, |
|||
dataForm: { |
|||
id: '', |
|||
categoryId: '', |
|||
categoryName: '', |
|||
gridValidRespLimitHour: '', |
|||
gridValidCloseLimitHour: '', |
|||
commValidRespLimitHour: '', |
|||
streetValidRespLimitHour: '', |
|||
districtValidRespLimitHour: '', |
|||
invalidRespLimitHour: '', |
|||
validRespCoefficient: '', |
|||
overtimeRespCoefficient: '', |
|||
invalidRespCoefficient: '', |
|||
delFlag: '', |
|||
revision: '', |
|||
createdBy: '', |
|||
createdTime: '', |
|||
updatedBy: '', |
|||
updatedTime: '' |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
categoryId: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
categoryName: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
gridValidRespLimitHour: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
gridValidCloseLimitHour: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
commValidRespLimitHour: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
streetValidRespLimitHour: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
districtValidRespLimitHour: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
invalidRespLimitHour: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
validRespCoefficient: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
overtimeRespCoefficient: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
invalidRespCoefficient: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
delFlag: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
revision: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/time/deptrespondtimeconfig/${this.dataForm.id}`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.dataForm = { |
|||
...this.dataForm, |
|||
...res.data |
|||
} |
|||
}).catch(() => {}) |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function () { |
|||
this.$refs['dataForm'].validate((valid) => { |
|||
if (!valid) { |
|||
return false |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/time/deptrespondtimeconfig/', this.dataForm).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}).catch(() => {}) |
|||
}) |
|||
}, 1000, { 'leading': true, 'trailing': false }) |
|||
} |
|||
} |
|||
</script> |
|||
@ -1,131 +0,0 @@ |
|||
<template> |
|||
<el-card shadow="never" |
|||
class="aui-card--fill"> |
|||
<div class="mod-time__deptrespondtimeconfig}"> |
|||
<el-form :inline="true" |
|||
:model="dataForm" |
|||
@keyup.enter.native="getDataList()"> |
|||
<!-- <el-form-item> |
|||
<el-input v-model="dataForm.id" |
|||
placeholder="id" |
|||
clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> --> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('time:deptrespondtimeconfig:save')" |
|||
type="primary" |
|||
@click="addOrUpdateHandle()">{{ $t('add') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('time:deptrespondtimeconfig:delete')" |
|||
type="danger" |
|||
@click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" |
|||
:data="dataList" |
|||
border |
|||
@selection-change="dataListSelectionChangeHandle" |
|||
style="width: 100%;"> |
|||
<el-table-column prop="categoryId" |
|||
label="议题或项目类别ID(不可重复)" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="categoryName" |
|||
label="类别名称" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="gridValidRespLimitHour" |
|||
label="网格长在多少小时内响应算是有效响应" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="gridValidCloseLimitHour" |
|||
label="网格长在多少小时内关闭算是有效关闭" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="commValidRespLimitHour" |
|||
label="社区在多少小时内响应算是有效响应" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="streetValidRespLimitHour" |
|||
label="街道在多少小时内响应算是有效响应" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="districtValidRespLimitHour" |
|||
label="区直在多少小时内响应算是有效响应" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="invalidRespLimitHour" |
|||
label="超过多少小时响应算是无效响应。此值应大于各部门的有效响应值。若响应发生在有效响应与无效响应之间,为超时响应。" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="validRespCoefficient" |
|||
label="有效响应系数" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="overtimeRespCoefficient" |
|||
label="超时响应系数" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="invalidRespCoefficient" |
|||
label="无效响应系数" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="$hasPermission('time:deptrespondtimeconfig:update')" |
|||
type="text" |
|||
size="small" |
|||
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('time:deptrespondtimeconfig:delete')" |
|||
type="text" |
|||
size="small" |
|||
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination :current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" |
|||
ref="addOrUpdate" |
|||
@refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './deptrespondtimeconfig-add-or-update' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/events/deptrespondtimeconfig/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/events/deptrespondtimeconfig', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '' |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
|||
Loading…
Reference in new issue