20 changed files with 1277 additions and 632 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> |
|||
@ -1,73 +0,0 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-kpi__kpitimelimitissue}"> |
|||
<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('kpi:kpitimelimitissue:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpitimelimitissue: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"></el-table-column> |
|||
<el-table-column prop="validRespondTime" label="有效响应时间(h)" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center" v-if="false"></el-table-column> |
|||
<el-table-column prop="createdBy" label="创建人" header-align="center" align="center" v-if="false"></el-table-column> |
|||
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="updatedBy" label="更新人" header-align="center" align="center" v-if="false"></el-table-column> |
|||
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="delFlag" label="删除标记" header-align="center" align="center" v-if="false"></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:kpitimelimitissue:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('kpi:kpitimelimitissue: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 './kpitimelimitissue-add-or-update' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/kpi/kpitimelimitissue/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/kpi/kpitimelimitissue', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '' |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
|||
@ -1,156 +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' : '125px'"> |
|||
<el-form-item label="有效响应时间(h)" prop="validRespondTime"> |
|||
<el-input v-model="dataForm.validRespondTime" placeholder="有效响应时间(h)" v-if="false"></el-input> |
|||
<el-input-number v-model="dataForm.validRespondTime" :min="1"></el-input-number> |
|||
</el-form-item> |
|||
<el-form-item label="有效结案时间(h)" prop="validCloseTime"> |
|||
<el-input v-model="dataForm.validCloseTime" placeholder="有效结案时间(h)" v-if="false"></el-input> |
|||
<el-input-number v-model="dataForm.validCloseTime" :min="1"></el-input-number> |
|||
</el-form-item> |
|||
<el-form-item label="项目类别" prop="categoryId" v-if="!this.dataForm.id" > |
|||
<el-cascader clearable v-model="dataForm.categoryIds" |
|||
:props="{multiple :true }" :options="categoryOptions" filterable> |
|||
</el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="所有上级项目类别id" prop="parentCategoryIds" v-if="false"> |
|||
<el-input v-model="dataForm.parentCategoryIds" placeholder="所有上级项目类别id"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="上级项目类别" prop="parentCategoryNames" v-if="false"> |
|||
<el-input v-model="dataForm.parentCategoryNames" placeholder="所有上级项目类别名称"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="所有项目类别id" prop="allCategoryIds" v-if="false"> |
|||
<el-input v-model="dataForm.allCategoryIds" placeholder="所有项目类别id"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="所属项目类别" prop="allCategoryNames" v-if="this.dataForm.id"> |
|||
<el-input v-model="dataForm.allCategoryNames" placeholder="所有项目类别名称" :disabled="disabled"></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: '', |
|||
validRespondTime: '', |
|||
validCloseTime: '', |
|||
categoryId: '', |
|||
parentCategoryIds: '', |
|||
parentCategoryNames: '', |
|||
allCategoryIds: '', |
|||
allCategoryNames: '', |
|||
categoryIds: [] |
|||
}, |
|||
categoryOptions: [], |
|||
disabled: false |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
validRespondTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
validCloseTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
categoryId: [ |
|||
{ required: false, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
parentCategoryIds: [ |
|||
{ required: false, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
parentCategoryNames: [ |
|||
{ required: false, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
allCategoryIds: [ |
|||
{ required: false, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
allCategoryNames: [ |
|||
{ required: false, message: this.$t('validate.required'), trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
created () { |
|||
this.getCategoryList() |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
this.dataForm.categoryIds = [] |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
this.getCategoryList() |
|||
this.disabled = true |
|||
} else { |
|||
this.disabled = false |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/kpi/kpitimelimititem/${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 |
|||
} |
|||
if (!new RegExp('^[1-9][0-9]*$').test(this.dataForm.validRespondTime)) { |
|||
return this.$message.error('有效响应时间请输入正整数') |
|||
} |
|||
if (!new RegExp('^[1-9][0-9]*$').test(this.dataForm.validCloseTime)) { |
|||
return this.$message.error('有效结案时间请输入正整数') |
|||
} |
|||
if (!this.dataForm.id && this.dataForm.categoryIds.length === 0) { |
|||
return this.$message.error('请选择考核类别') |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/kpi/kpitimelimititem/', 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 }), |
|||
getCategoryList () { |
|||
return this.$http.get('/events/category/getCategoryTree').then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.categoryOptions = res.data.options |
|||
}).catch(() => { }) |
|||
} |
|||
} |
|||
} |
|||
</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="ruleName" |
|||
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> |
|||
@ -0,0 +1,128 @@ |
|||
<template> |
|||
<el-card shadow="never" |
|||
class="aui-card--fill"> |
|||
<div class="mod-kpi__kpitimelimitissue}"> |
|||
<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('kpi:kpitimelimitissue:save')" |
|||
type="primary" |
|||
@click="addOrUpdateHandle()">{{ $t('add') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('kpi:kpitimelimitissue: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"></el-table-column> --> |
|||
<el-table-column prop="validRespondTime" |
|||
label="有效响应时间(h)" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="revision" |
|||
label="乐观锁" |
|||
header-align="center" |
|||
align="center" |
|||
v-if="false"></el-table-column> |
|||
<el-table-column prop="createdBy" |
|||
label="创建人" |
|||
header-align="center" |
|||
align="center" |
|||
v-if="false"></el-table-column> |
|||
<el-table-column prop="createdTime" |
|||
label="创建时间" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="updatedBy" |
|||
label="更新人" |
|||
header-align="center" |
|||
align="center" |
|||
v-if="false"></el-table-column> |
|||
<el-table-column prop="updatedTime" |
|||
label="更新时间" |
|||
header-align="center" |
|||
align="center"></el-table-column> |
|||
<el-table-column prop="delFlag" |
|||
label="删除标记" |
|||
header-align="center" |
|||
align="center" |
|||
v-if="false"></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:kpitimelimitissue:update')" |
|||
type="text" |
|||
size="small" |
|||
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('kpi:kpitimelimitissue: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 './timeLimitIssue-add-or-update' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/kpi/timeLimitIssue/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/kpi/timeLimitIssue', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '' |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
|||
@ -0,0 +1,146 @@ |
|||
<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' : '125px'"> |
|||
<el-form-item label="有效响应时间(h)" |
|||
prop="validRespondTime"> |
|||
<el-input-number v-model="dataForm.validRespondTime" |
|||
:min="1"></el-input-number> |
|||
</el-form-item> |
|||
<el-form-item label="有效结案时间(h)" |
|||
prop="validCloseTime"> |
|||
<el-input-number v-model="dataForm.validCloseTime" |
|||
:min="1"></el-input-number> |
|||
</el-form-item> |
|||
<el-form-item label="项目类别" |
|||
prop="categoryId" |
|||
v-if="!this.dataForm.id"> |
|||
<el-cascader clearable |
|||
v-model="dataForm.categoryIds" |
|||
:props="{multiple :true }" |
|||
:options="categoryOptions" |
|||
collapse-tags></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="所属项目类别" |
|||
prop="allCategoryNames" |
|||
v-if="this.dataForm.id"> |
|||
<el-input v-model="dataForm.allCategoryNames" |
|||
placeholder="所有项目类别名称" |
|||
readonly></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: '', |
|||
validRespondTime: '', |
|||
validCloseTime: '', |
|||
allCategoryNames: '', |
|||
categoryIds: [] |
|||
}, |
|||
categoryOptions: [], |
|||
disabled: false |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
validRespondTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
validCloseTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
created () { |
|||
this.getCategoryList() |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
this.dataForm.categoryIds = [] |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
this.getCategoryList() |
|||
this.disabled = true |
|||
} else { |
|||
this.disabled = false |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/kpi/timeLimitItem/${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 |
|||
} |
|||
if (!new RegExp('^[1-9][0-9]*$').test(this.dataForm.validRespondTime)) { |
|||
return this.$message.error('有效响应时间请输入正整数') |
|||
} |
|||
if (!new RegExp('^[1-9][0-9]*$').test(this.dataForm.validCloseTime)) { |
|||
return this.$message.error('有效结案时间请输入正整数') |
|||
} |
|||
if (!this.dataForm.id && this.dataForm.categoryIds.length === 0) { |
|||
return this.$message.error('请选择考核类别') |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/kpi/timeLimitItem/', 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 }), |
|||
getCategoryList () { |
|||
return this.$http.get('/events/category/getCategoryTree').then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.categoryOptions = res.data.options |
|||
}).catch(() => { }) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
Loading…
Reference in new issue