1001 lines
44 KiB
Vue
1001 lines
44 KiB
Vue
|
<template>
|
|||
|
<n-space class="container" vertical>
|
|||
|
<n-space class="search" vertical>
|
|||
|
<n-grid :cols="7" :x-gap="10">
|
|||
|
<n-grid-item>
|
|||
|
<n-select placeholder="请选择街道" v-model:value="search.select.street.value"
|
|||
|
:options="search.select.street.options" :clearable="true" />
|
|||
|
</n-grid-item>
|
|||
|
<n-grid-item>
|
|||
|
<n-select placeholder="请选择社区" v-model:value="search.select.community.value"
|
|||
|
:options="search.select.community.options" :clearable="true" />
|
|||
|
</n-grid-item>
|
|||
|
<n-grid-item>
|
|||
|
<n-input v-model:value="search.input.keywords" type="text" placeholder="姓名|手机号" />
|
|||
|
</n-grid-item>
|
|||
|
<n-grid-item>
|
|||
|
<n-select placeholder="请选择年份" v-model:value="search.select.year.value"
|
|||
|
:options="search.select.year.options" :clearable="true" />
|
|||
|
</n-grid-item>
|
|||
|
<n-grid-item>
|
|||
|
<n-select placeholder="请选择月份" v-model:value="search.select.month.value"
|
|||
|
:options="search.select.month.options" :clearable="true" />
|
|||
|
</n-grid-item>
|
|||
|
<n-grid-item>
|
|||
|
<n-space style="height: 100%;" align="center">
|
|||
|
<n-radio :checked="search.radio.level.value === 4" value="4"
|
|||
|
@change="onSearchRadioLevelValueChange">
|
|||
|
4级网格员
|
|||
|
</n-radio>
|
|||
|
<n-radio :checked="search.radio.level.value === 5" value="5"
|
|||
|
@change="onSearchRadioLevelValueChange">
|
|||
|
5级网格员
|
|||
|
</n-radio>
|
|||
|
</n-space>
|
|||
|
</n-grid-item>
|
|||
|
<n-grid-item>
|
|||
|
<n-space>
|
|||
|
<n-button type="primary">搜索</n-button>
|
|||
|
<n-button type="info">导出</n-button>
|
|||
|
</n-space>
|
|||
|
</n-grid-item>
|
|||
|
</n-grid>
|
|||
|
</n-space>
|
|||
|
<n-space class="body">
|
|||
|
<n-data-table size="small" :columns="table.columns" :data="table.data" :bordered="true" :single-line="false"
|
|||
|
:min-height="300" :max-height="300" :scroll-x="2420" />
|
|||
|
</n-space>
|
|||
|
</n-space>
|
|||
|
<n-modal preset="dialog" style="width: 800px" :show="modal.distance.show" :show-icon="false" :mask-closable="true"
|
|||
|
:closable="false" :on-update-show="onDistancenCloseClick">
|
|||
|
<wgy-work />
|
|||
|
</n-modal>
|
|||
|
<n-modal preset="dialog" style="width: 800px" :show="modal.reportDay.show" :show-icon="false" :mask-closable="true"
|
|||
|
:closable="false" :on-update-show="onReportDayCloseClick">
|
|||
|
<wgy-report-day />
|
|||
|
</n-modal>
|
|||
|
<n-modal preset="dialog" style="width: 600px" :title="`【${modal.scoring.userName}】${modal.scoring.title}打分`" :show="modal.scoring.show" :show-icon="false" :mask-closable="true"
|
|||
|
:closable="false" :on-update-show="onScroingCloseClick">
|
|||
|
<scoring :row-key="modal.scoring.rowKey" :row-index="modal.scoring.rowIndex" :score="modal.scoring.score"
|
|||
|
:reason="modal.scoring.reason" :min-score="modal.scoring.minScore" :max-score="modal.scoring.maxScore"
|
|||
|
@confirm="onScroingConfimClick" />
|
|||
|
</n-modal>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import { h } from 'vue';
|
|||
|
import {
|
|||
|
NSpace,
|
|||
|
NGrid,
|
|||
|
NGridItem,
|
|||
|
NSelect,
|
|||
|
NRadio,
|
|||
|
NInput,
|
|||
|
NButton,
|
|||
|
NDataTable,
|
|||
|
NModal,
|
|||
|
} from 'naive-ui';
|
|||
|
import WgyWork from '../common/WgyWork.vue'
|
|||
|
import WgyReportDay from '../common/WgyReportDay.vue'
|
|||
|
import Scoring from '../common/Scoring.vue';
|
|||
|
|
|||
|
export default {
|
|||
|
name: 'Wgy.vue',
|
|||
|
components: {
|
|||
|
NSpace,
|
|||
|
NGrid,
|
|||
|
NGridItem,
|
|||
|
NSelect,
|
|||
|
NRadio,
|
|||
|
NInput,
|
|||
|
NButton,
|
|||
|
NDataTable,
|
|||
|
NModal,
|
|||
|
|
|||
|
WgyWork,
|
|||
|
WgyReportDay,
|
|||
|
Scoring,
|
|||
|
},
|
|||
|
data() {
|
|||
|
let vueSelf = this;
|
|||
|
return {
|
|||
|
search: {
|
|||
|
select: {
|
|||
|
street: {
|
|||
|
value: null,
|
|||
|
options: [
|
|||
|
{ label: '稀土路街道', value: 'xtl' }
|
|||
|
]
|
|||
|
},
|
|||
|
community: {
|
|||
|
value: null,
|
|||
|
options: [
|
|||
|
{ label: '社区', value: 'sq' }
|
|||
|
]
|
|||
|
},
|
|||
|
year: {
|
|||
|
value: null,
|
|||
|
options: [
|
|||
|
{ label: '2023年', value: '2023' }
|
|||
|
]
|
|||
|
},
|
|||
|
month: {
|
|||
|
value: null,
|
|||
|
options: [
|
|||
|
{ label: '1月', value: '1' }
|
|||
|
]
|
|||
|
}
|
|||
|
},
|
|||
|
radio: {
|
|||
|
level: {
|
|||
|
value: 5,
|
|||
|
}
|
|||
|
},
|
|||
|
input: {
|
|||
|
keywords: ''
|
|||
|
}
|
|||
|
},
|
|||
|
table: {
|
|||
|
scrollbar: {
|
|||
|
trigger: 'hover',
|
|||
|
xScrollable: true,
|
|||
|
},
|
|||
|
columns: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '序号',
|
|||
|
key: 'A',
|
|||
|
keyName: 'key',
|
|||
|
fixed: 'left',
|
|||
|
width: 60
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '姓名',
|
|||
|
key: 'B',
|
|||
|
keyName: 'name',
|
|||
|
fixed: 'left',
|
|||
|
width: 140
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '片区巡查(40分)',
|
|||
|
key: 'C',
|
|||
|
keyName: 'distance',
|
|||
|
fixed: 'left',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onDistanceClick(row, index);
|
|||
|
}
|
|||
|
}, row.C);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '巡查上报、案件受理过程质量',
|
|||
|
key: 'quality',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '基础分',
|
|||
|
key: 'D',
|
|||
|
keyName: 'baseScore',
|
|||
|
width: 80
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '本月应报案件数',
|
|||
|
key: 'E',
|
|||
|
keyName: 'shouldReportCount',
|
|||
|
width: 60,
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onReportDayClick(row, index)
|
|||
|
}
|
|||
|
}, row.E)
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '本月单个案件分值',
|
|||
|
key: 'F',
|
|||
|
keyName: 'caseSingleScore',
|
|||
|
width: 60
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '本月实报案件',
|
|||
|
key: 'report',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '数量',
|
|||
|
key: 'G',
|
|||
|
keyName: 'reportCount',
|
|||
|
width: 60
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '得分',
|
|||
|
key: 'H',
|
|||
|
keyName: 'reportScore',
|
|||
|
width: 60,
|
|||
|
className: 'score-plus',
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '本月少报案件',
|
|||
|
key: 'missReport',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '数量',
|
|||
|
key: 'I',
|
|||
|
keyName: 'missReportCount',
|
|||
|
width: 60
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '得分',
|
|||
|
key: 'J',
|
|||
|
keyName: 'missReportScore',
|
|||
|
width: 60,
|
|||
|
className: 'score-minus',
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '本月多报案件',
|
|||
|
key: 'moreReport',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '数量',
|
|||
|
key: 'K',
|
|||
|
keyName: 'moreReportCount',
|
|||
|
width: 60
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '得分',
|
|||
|
key: 'L',
|
|||
|
keyName: 'moreReportScore',
|
|||
|
width: 60,
|
|||
|
className: 'score-plus',
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '凡属下列情况之一经核准予以扣分',
|
|||
|
key: 'noDeduct',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '应上报却未上报案件',
|
|||
|
key: 'M',
|
|||
|
keyName: 'shouldButNo',
|
|||
|
width: 80,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onShouldButNoClick(row, index);
|
|||
|
}
|
|||
|
}, row.M);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '平台立案上报不标准不及时的',
|
|||
|
key: 'N',
|
|||
|
keyName: 'timeout',
|
|||
|
width: 80,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onTimeoutClick(row, index);
|
|||
|
}
|
|||
|
}, row.N);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '恶意退单',
|
|||
|
key: 'O',
|
|||
|
keyName: 'maliciousChargeback',
|
|||
|
width: 50,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onMaliciousChargebackClick(row, index);
|
|||
|
}
|
|||
|
}, row.O);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '其它情况',
|
|||
|
key: 'P',
|
|||
|
keyName: 'noDeductOthers',
|
|||
|
width: 50,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onNoDeductOthersClick(row, index);
|
|||
|
}
|
|||
|
}, row.P);
|
|||
|
}
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '案件处置实效(指挥协调实效)',
|
|||
|
key: 'dispatch',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '结案情况得分',
|
|||
|
key: 'Q',
|
|||
|
keyName: 'overScore',
|
|||
|
width: 60,
|
|||
|
className: 'score-plus',
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '督察案件结案情况',
|
|||
|
key: 'supervise',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '督查次数',
|
|||
|
key: 'R',
|
|||
|
keyName: 'superviseCount',
|
|||
|
width: 60,
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onSuperviseCountClick(row, index);
|
|||
|
}
|
|||
|
}, row.R);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '督查扣分',
|
|||
|
key: 'S',
|
|||
|
keyName: 'superviseDeductScore',
|
|||
|
width: 60,
|
|||
|
className: 'score-minus',
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '案件处置过程质量',
|
|||
|
key: 'handle',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '网格员24小时未核查扣分',
|
|||
|
key: 'T',
|
|||
|
keyName: 'unCheckIn24Hours',
|
|||
|
width: 80,
|
|||
|
className: 'score-minus',
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '反馈虚假信息',
|
|||
|
key: 'U',
|
|||
|
keyName: 'fakeInfo',
|
|||
|
width: 60,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onFakeInfoClick(row, index);
|
|||
|
}
|
|||
|
}, row.U);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '其他情况',
|
|||
|
key: 'V',
|
|||
|
keyName: 'handleOthers',
|
|||
|
width: 60,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onHandleOthersClick(row, index);
|
|||
|
}
|
|||
|
}, row.V);
|
|||
|
}
|
|||
|
}
|
|||
|
]
|
|||
|
},
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '人口信息管理',
|
|||
|
key: 'population',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '人口信息录入',
|
|||
|
key: 'W',
|
|||
|
keyName: 'populationSave',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPopulationSaveClick(row, index);
|
|||
|
}
|
|||
|
}, row.W);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '人口信息质量管理',
|
|||
|
key: 'X',
|
|||
|
keyName: 'populationQuality',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPopulationQualityClick(row, index);
|
|||
|
}
|
|||
|
}, row.X);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '人口信息维护',
|
|||
|
key: 'Y',
|
|||
|
keyName: 'populationEdit',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPopulationEditClick(row, index);
|
|||
|
}
|
|||
|
}, row.Y);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '抽查情况',
|
|||
|
key: 'Z',
|
|||
|
keyName: 'populationSpotCheck',
|
|||
|
width: 80,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPopulationSpotCheckClick(row, index);
|
|||
|
}
|
|||
|
}, row.Z);
|
|||
|
}
|
|||
|
},
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '党组织建设',
|
|||
|
key: 'party',
|
|||
|
children: [
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '党建信息上报',
|
|||
|
key: 'AA',
|
|||
|
keyName: 'partySave',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPartySaveClick(row, index);
|
|||
|
}
|
|||
|
}, row.AA);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '党建信息质量管理',
|
|||
|
key: 'AB',
|
|||
|
keyName: 'partyQuality',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPartyQualityClick(row, index);
|
|||
|
}
|
|||
|
}, row.AB);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '党建信息维护',
|
|||
|
key: 'AC',
|
|||
|
keyName: 'partyEdit',
|
|||
|
width: 80,
|
|||
|
className: 'score-plus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPartyEditClick(row, index);
|
|||
|
}
|
|||
|
}, row.AC);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '抽查情况',
|
|||
|
key: 'AD',
|
|||
|
keyName: 'partySpotCheck',
|
|||
|
width: 80,
|
|||
|
className: 'score-minus',
|
|||
|
render(row, index) {
|
|||
|
return h('a', {
|
|||
|
href: 'javascript:void(0);',
|
|||
|
onClick() {
|
|||
|
vueSelf.onPartySpotCheckClick(row, index);
|
|||
|
}
|
|||
|
}, row.AD);
|
|||
|
}
|
|||
|
},
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '总得分',
|
|||
|
key: 'AE',
|
|||
|
keyName: 'totalScore',
|
|||
|
fixed: 'right',
|
|||
|
width: 100,
|
|||
|
render(row, index) {
|
|||
|
return vueSelf.computeAE(row);
|
|||
|
}
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '应发绩效工资',
|
|||
|
key: 'AF',
|
|||
|
keyName: 'shouldPay',
|
|||
|
fixed: 'right',
|
|||
|
width: 100
|
|||
|
},
|
|||
|
{
|
|||
|
align: 'center',
|
|||
|
title: '实发绩效工资',
|
|||
|
key: 'AG',
|
|||
|
keyName: 'actualPay',
|
|||
|
fixed: 'right',
|
|||
|
width: 100,
|
|||
|
render(row, index) {
|
|||
|
return vueSelf.computeAE(row) * row.AF / 100;
|
|||
|
}
|
|||
|
}
|
|||
|
],
|
|||
|
data: []
|
|||
|
},
|
|||
|
modal: {
|
|||
|
distance: {
|
|||
|
show: false
|
|||
|
},
|
|||
|
reportDay: {
|
|||
|
show: false
|
|||
|
},
|
|||
|
scoring: {
|
|||
|
show: false,
|
|||
|
userName: null,
|
|||
|
title: null,
|
|||
|
rowKey: null,
|
|||
|
rowIndex: null,
|
|||
|
score: 0,
|
|||
|
reason: '',
|
|||
|
minScore: null,
|
|||
|
maxScore: null
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
methods: {
|
|||
|
// 打分确定
|
|||
|
onScroingConfimClick(key, index, { score, reason, userId, userName, date }) {
|
|||
|
this.modal.scoring.show = false;
|
|||
|
this.table.data[index][key] = score;
|
|||
|
this.table.data[index][`reason${key}`] = reason;
|
|||
|
},
|
|||
|
// 打分关闭
|
|||
|
onScroingCloseClick() {
|
|||
|
this.modal.scoring.show = false;
|
|||
|
},
|
|||
|
// 打分打开
|
|||
|
onScroingClick(type, row, index) {
|
|||
|
this.modal.scoring.show = false;
|
|||
|
},
|
|||
|
// 本月应上报案件数关闭
|
|||
|
onReportDayCloseClick() {
|
|||
|
this.modal.reportDay.show = false;
|
|||
|
},
|
|||
|
// 本月应上报案件数打开
|
|||
|
onReportDayClick(row, index) {
|
|||
|
this.modal.reportDay.show = true;
|
|||
|
},
|
|||
|
// 考勤模态框关闭
|
|||
|
onDistancenCloseClick() {
|
|||
|
this.modal.distance.show = false;
|
|||
|
},
|
|||
|
// 片区巡查打开
|
|||
|
onDistanceClick(row, index) {
|
|||
|
let distance = row.C;
|
|||
|
this.modal.distance.show = true;
|
|||
|
},
|
|||
|
// 4、5级网格员单选
|
|||
|
onSearchRadioLevelValueChange(e) {
|
|||
|
this.search.radio.level.value = parseInt(e.target.value);
|
|||
|
},
|
|||
|
// 应上报却未上报案件 -
|
|||
|
onShouldButNoClick(row, index) {
|
|||
|
let shouldButNo = row.M;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'M';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = shouldButNo;
|
|||
|
this.modal.scoring.reason = row.reasonM;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '应上报却未上报案件';
|
|||
|
},
|
|||
|
// 平台立案上报不标准不及时的 -
|
|||
|
onTimeoutClick(row, index) {
|
|||
|
let timeout = row.N;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'N';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = timeout;
|
|||
|
this.modal.scoring.reason = row.reasonN;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '平台立案上报不标准不及时的';
|
|||
|
},
|
|||
|
// 恶意退单 -
|
|||
|
onMaliciousChargebackClick(row, index) {
|
|||
|
let maliciousChargeback = row.O;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'O';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = maliciousChargeback;
|
|||
|
this.modal.scoring.reason = row.reasonO;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '恶意退单';
|
|||
|
},
|
|||
|
// 扣分其它情况 -
|
|||
|
onNoDeductOthersClick(row, index) {
|
|||
|
let noDeductOthers = row.P;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'M';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = noDeductOthers;
|
|||
|
this.modal.scoring.reason = row.reasonP;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '扣分其它情况';
|
|||
|
},
|
|||
|
// 督察扣分 -
|
|||
|
onSuperviseCountClick(row, index) {
|
|||
|
let superviseCount = row.R;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'R';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = superviseCount;
|
|||
|
this.modal.scoring.reason = row.reasonR;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '督察扣分';
|
|||
|
},
|
|||
|
// 反馈虚假信息 -
|
|||
|
onFakeInfoClick(row, index) {
|
|||
|
let fakeInfo = row.U;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'U';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = fakeInfo;
|
|||
|
this.modal.scoring.reason = row.reasonU;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '反馈虚假信息';
|
|||
|
},
|
|||
|
// 处置其他情况 -
|
|||
|
onHandleOthersClick(row, index) {
|
|||
|
let handleOthers = row.V;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'V';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = handleOthers;
|
|||
|
this.modal.scoring.reason = row.reasonV;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '处置其他情况';
|
|||
|
},
|
|||
|
// 人口信息录入 +
|
|||
|
onPopulationSaveClick(row, index) {
|
|||
|
let populationSave = row.W;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'W';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = populationSave;
|
|||
|
this.modal.scoring.reason = row.reasonW;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '人口信息录入';
|
|||
|
},
|
|||
|
// 人口信息质量 +
|
|||
|
onPopulationQualityClick(row, index) {
|
|||
|
let populationQuality = row.X;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'X';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = populationQuality;
|
|||
|
this.modal.scoring.reason = row.reasonX;
|
|||
|
this.modal.scoring.maxScore = 3;
|
|||
|
this.modal.scoring.minScore = 0;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '人口信息质量';
|
|||
|
},
|
|||
|
// 人口信息维护 +
|
|||
|
onPopulationEditClick(row, index) {
|
|||
|
let populationEdit = row.Y;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'Y';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = populationEdit;
|
|||
|
this.modal.scoring.reason = row.reasonY;
|
|||
|
this.modal.scoring.maxScore = 3;
|
|||
|
this.modal.scoring.minScore = 0;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '人口信息维护'
|
|||
|
},
|
|||
|
// 人口信息抽查 -
|
|||
|
onPopulationSpotCheckClick(row, index) {
|
|||
|
let populationSpotCheck = row.Z;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'Z';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = populationSpotCheck;
|
|||
|
this.modal.scoring.reason = row.reasonZ;
|
|||
|
this.modal.scoring.maxScore = 4;
|
|||
|
this.modal.scoring.minScore = 0;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '人口信息抽查';
|
|||
|
},
|
|||
|
// 党建信息录入 +
|
|||
|
onParySaveClick(row, index) {
|
|||
|
let partySave = row.AA;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'AA';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = partySave;
|
|||
|
this.modal.scoring.reason = row.reasonAA;
|
|||
|
this.modal.scoring.maxScore = null;
|
|||
|
this.modal.scoring.minScore = null;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '党建信息录入';
|
|||
|
},
|
|||
|
// 党建信息质量 +
|
|||
|
onPartyQualityClick(row, index) {
|
|||
|
let partyQuality = row.AB;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'AB';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = partyQuality;
|
|||
|
this.modal.scoring.reason = row.reasonAB;
|
|||
|
this.modal.scoring.maxScore = 3;
|
|||
|
this.modal.scoring.minScore = 0;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '党建信息质量';
|
|||
|
},
|
|||
|
// 党建信息维护 +
|
|||
|
onPartyEditClick(row, index) {
|
|||
|
let partyEdit = row.AC;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'AC';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = partyEdit;
|
|||
|
this.modal.scoring.reason = row.reasonAC;
|
|||
|
this.modal.scoring.maxScore = 3;
|
|||
|
this.modal.scoring.minScore = 0;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '党建信息维护';
|
|||
|
},
|
|||
|
// 党建信息抽查 -
|
|||
|
onPartySpotCheckClick(row, index) {
|
|||
|
let partySpotCheck = row.AD;
|
|||
|
this.modal.scoring.show = true;
|
|||
|
this.modal.scoring.rowKey = 'AD';
|
|||
|
this.modal.scoring.rowIndex = index;
|
|||
|
this.modal.scoring.score = partySpotCheck;
|
|||
|
this.modal.scoring.reason = row.reasonAD;
|
|||
|
this.modal.scoring.maxScore = 3;
|
|||
|
this.modal.scoring.minScore = 0;
|
|||
|
this.modal.scoring.userName = row.B;
|
|||
|
this.modal.scoring.title = '党建信息抽查';
|
|||
|
},
|
|||
|
computeAE(row) {
|
|||
|
return row.C + row.H - row.J + row.L - row.M - row.N - row.O - row.P + row.Q - row.S - row.T - row.U - row.V + row.W + row.X + row.Y - row.Z + row.AA + row.AB + row.AC - row.AD;
|
|||
|
},
|
|||
|
|
|||
|
listTestData() {
|
|||
|
let data = [];
|
|||
|
for (let i = 0; i < 100; i++) {
|
|||
|
let d = {
|
|||
|
userId: 'userId',
|
|||
|
key: i + 1,
|
|||
|
name: i + 'name',
|
|||
|
distance: i,
|
|||
|
baseScore: Math.floor(Math.random() * 100),
|
|||
|
shouldReportCount: 30,
|
|||
|
caseSingleScore: 2,
|
|||
|
reportCount: Math.floor(Math.random() * 10),
|
|||
|
reportScore: Math.floor(Math.random() * 10),
|
|||
|
missReportCount: Math.floor(Math.random() * 10),
|
|||
|
missReportScore: Math.floor(Math.random() * 10),
|
|||
|
moreReportCount: Math.floor(Math.random() * 10),
|
|||
|
moreReportScore: Math.floor(Math.random() * 10),
|
|||
|
shouldButNo: Math.floor(Math.random() * 10),
|
|||
|
reasonShouldButNo: '',
|
|||
|
timeout: Math.floor(Math.random() * 10),
|
|||
|
reasonTimeout: '',
|
|||
|
maliciousChargeback: Math.floor(Math.random() * 10),
|
|||
|
reasonMaliciousChargeback: '',
|
|||
|
noDeductOthers: Math.floor(Math.random() * 10),
|
|||
|
reasonNoDeductOthers: '',
|
|||
|
overScore: Math.floor(Math.random() * 10),
|
|||
|
superviseCount: Math.floor(Math.random() * 10),
|
|||
|
reasonSuperviseCount: '',
|
|||
|
superviseDeductScore: Math.floor(Math.random() * 10),
|
|||
|
unCheckIn24Hours: Math.floor(Math.random() * 10),
|
|||
|
fakeInfo: Math.floor(Math.random() * 10),
|
|||
|
reasonFakeInfo: '',
|
|||
|
handleOthers: Math.floor(Math.random() * 10),
|
|||
|
reasonHandleOthers: '',
|
|||
|
populationSave: Math.floor(Math.random() * 10),
|
|||
|
reasonPopulationSave: '',
|
|||
|
populationQuality: Math.floor(Math.random() * 10),
|
|||
|
reasonPopulationQuality: '',
|
|||
|
populationEdit: Math.floor(Math.random() * 10),
|
|||
|
reasonPopulationEdit: '',
|
|||
|
populationSpotCheck: Math.floor(Math.random() * 10),
|
|||
|
reasonPopulationSpotCheck: '',
|
|||
|
partySave: Math.floor(Math.random() * 10),
|
|||
|
reasonPartySave: '',
|
|||
|
partyQuality: Math.floor(Math.random() * 10),
|
|||
|
reasonPartyQuality: '',
|
|||
|
partyEdit: Math.floor(Math.random() * 10),
|
|||
|
reasonPartyEdit: '',
|
|||
|
partySpotCheck: Math.floor(Math.random() * 10),
|
|||
|
reasonPartySpotCheck: '',
|
|||
|
totalScore: Math.floor(Math.random() * 10),
|
|||
|
shouldPay: Math.floor(Math.random() * 10),
|
|||
|
actualPay: Math.floor(Math.random() * 10),
|
|||
|
}
|
|||
|
data.push({
|
|||
|
A: d.key,
|
|||
|
B: d.name,
|
|||
|
C: d.distance,
|
|||
|
D: d.baseScore,
|
|||
|
E: d.shouldReportCount,
|
|||
|
F: d.caseSingleScore,
|
|||
|
G: d.reportCount,
|
|||
|
H: d.reportScore,
|
|||
|
I: d.missReportCount,
|
|||
|
J: d.missReportScore,
|
|||
|
K: d.moreReportCount,
|
|||
|
L: d.moreReportScore,
|
|||
|
M: d.shouldButNo,
|
|||
|
reasonM: d.reasonShouldButNo,
|
|||
|
N: d.timeout,
|
|||
|
reasonN: d.reasonTimeout,
|
|||
|
O: d.maliciousChargeback,
|
|||
|
reasonO: d.reasonMaliciousChargeback,
|
|||
|
P: d.noDeductOthers,
|
|||
|
reasonP: d.reasonNoDeductOthers,
|
|||
|
Q: d.overScore,
|
|||
|
R: d.superviseCount,
|
|||
|
reasonR: d.reasonSuperviseCount,
|
|||
|
S: d.superviseDeductScore,
|
|||
|
T: d.unCheckIn24Hours,
|
|||
|
U: d.fakeInfo,
|
|||
|
reasonU: d.reasonFakeInfo,
|
|||
|
V: d.handleOthers,
|
|||
|
reasonV: d.reasonHandleOthers,
|
|||
|
W: d.populationSave,
|
|||
|
reasonW: d.reasonPopulationSave,
|
|||
|
X: d.populationQuality,
|
|||
|
reasonX: d.reasonPopulationQuality,
|
|||
|
Y: d.populationEdit,
|
|||
|
reasonY: d.reasonPopulationEdit,
|
|||
|
Z: d.populationSpotCheck,
|
|||
|
reasonZ: d.reasonPopulationSpotCheck,
|
|||
|
AA: d.partySave,
|
|||
|
reasonAA: d.reasonPartySave,
|
|||
|
AB: d.partyQuality,
|
|||
|
reasonAB: d.reasonPartyQuality,
|
|||
|
AC: d.partyEdit,
|
|||
|
reasonAC: d.reasonPartyEdit,
|
|||
|
AD: d.partySpotCheck,
|
|||
|
reasonAD: d.reasonPartySpotCheck,
|
|||
|
AE: d.totalScore,
|
|||
|
AF: d.shouldPay,
|
|||
|
AG: d.actualPay,
|
|||
|
});
|
|||
|
this.table.data = data;
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
computed() {
|
|||
|
},
|
|||
|
mounted() {
|
|||
|
let vueSelf = this;
|
|||
|
this.listTestData();
|
|||
|
setTimeout(() => {
|
|||
|
vueSelf.table.data[0].C = 300
|
|||
|
}, 1000)
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="stylus" scoped>
|
|||
|
.container
|
|||
|
.search
|
|||
|
padding 10px 10px 0 10px
|
|||
|
.body
|
|||
|
padding 0 10px 10px 10px
|
|||
|
:deep(.score-plus)
|
|||
|
background-color yellow
|
|||
|
:deep(.score-minus)
|
|||
|
background-color red
|
|||
|
</style>
|