|
|
|
@ -29,14 +29,13 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="所在单位"> |
|
|
|
<el-form-item label="所属单位"> |
|
|
|
<depart-tree-select |
|
|
|
<depart-tree-select |
|
|
|
v-model="query.departId" |
|
|
|
v-model="query.departId" |
|
|
|
:check-strictly="false" |
|
|
|
:check-strictly="false" |
|
|
|
/> |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
</el-form> |
|
|
|
<div class="mb-25 flex end"> |
|
|
|
<div class="mb-25 flex end"> |
|
|
|
@ -59,7 +58,14 @@ |
|
|
|
<span>{{ getGenderFromIdCode(row.idCode) }}</span> |
|
|
|
<span>{{ getGenderFromIdCode(row.idCode) }}</span> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="职务" prop="position" /> |
|
|
|
<el-table-column label="职务"> |
|
|
|
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
|
|
|
<span v-if="row.position">{{ row.position }}</span> |
|
|
|
|
|
|
|
<span v-else>{{ |
|
|
|
|
|
|
|
getDictLable(dict.personType, row.personType) |
|
|
|
|
|
|
|
}}</span> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="警号" prop="empNo" /> |
|
|
|
<el-table-column label="警号" prop="empNo" /> |
|
|
|
<el-table-column label="任职年限" prop="employmentDate" /> |
|
|
|
<el-table-column label="任职年限" prop="employmentDate" /> |
|
|
|
<el-table-column label="所属单位" prop="departName"> |
|
|
|
<el-table-column label="所属单位" prop="departName"> |
|
|
|
@ -124,7 +130,9 @@ |
|
|
|
<el-col :span="8"> |
|
|
|
<el-col :span="8"> |
|
|
|
<h5>民警基本情况</h5> |
|
|
|
<h5>民警基本情况</h5> |
|
|
|
<el-row> |
|
|
|
<el-row> |
|
|
|
<el-col :span="6"> </el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
|
|
|
|
<img src="/imgs/police.jpeg" /> |
|
|
|
|
|
|
|
</el-col> |
|
|
|
<el-col :span="18"> |
|
|
|
<el-col :span="18"> |
|
|
|
<div class="row"> |
|
|
|
<div class="row"> |
|
|
|
<div class="col col-12"> |
|
|
|
<div class="col col-12"> |
|
|
|
@ -272,7 +280,12 @@ |
|
|
|
/> |
|
|
|
/> |
|
|
|
<el-table-column label="操作" width="160"> |
|
|
|
<el-table-column label="操作" width="160"> |
|
|
|
<template #default="{ row }"> |
|
|
|
<template #default="{ row }"> |
|
|
|
<el-button type="primary" link @click="handleAction(row)">查看详情</el-button> |
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
link |
|
|
|
|
|
|
|
@click="handleAction(row)" |
|
|
|
|
|
|
|
>查看详情</el-button |
|
|
|
|
|
|
|
> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-table> |
|
|
|
@ -304,13 +317,23 @@ import { |
|
|
|
listPoliceNegative, |
|
|
|
listPoliceNegative, |
|
|
|
getPoliceProfile, |
|
|
|
getPoliceProfile, |
|
|
|
listNegativeByPoliceIdCode, |
|
|
|
listNegativeByPoliceIdCode, |
|
|
|
listNegativeMonthly |
|
|
|
listNegativeMonthly, |
|
|
|
} from "@/api/sensitivePerception/profilePolice"; |
|
|
|
} from "@/api/sensitivePerception/profilePolice"; |
|
|
|
import { InspectCase } from "@/enums/dictEnums"; |
|
|
|
import { InspectCase } from "@/enums/dictEnums"; |
|
|
|
|
|
|
|
import { getDictLable } from "@/utils/util"; |
|
|
|
|
|
|
|
import moment from "moment"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import useCatchStore from "@/stores/modules/catch"; |
|
|
|
|
|
|
|
const catchStore = useCatchStore(); |
|
|
|
|
|
|
|
const dict = catchStore.getDicts(["personType"]); |
|
|
|
|
|
|
|
|
|
|
|
const query = ref({ |
|
|
|
const query = ref({ |
|
|
|
current: 1, |
|
|
|
current: 1, |
|
|
|
size: 10, |
|
|
|
size: 10, |
|
|
|
|
|
|
|
crtTime: [ |
|
|
|
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
|
|
|
moment().format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
|
|
|
], |
|
|
|
}); |
|
|
|
}); |
|
|
|
const list = ref<any[]>([]); |
|
|
|
const list = ref<any[]>([]); |
|
|
|
const total = ref(0); |
|
|
|
const total = ref(0); |
|
|
|
@ -326,6 +349,10 @@ function reset() { |
|
|
|
query.value = { |
|
|
|
query.value = { |
|
|
|
current: 1, |
|
|
|
current: 1, |
|
|
|
size: 10, |
|
|
|
size: 10, |
|
|
|
|
|
|
|
crtTime: [ |
|
|
|
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
|
|
|
moment().format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
|
|
|
], |
|
|
|
}; |
|
|
|
}; |
|
|
|
getList(); |
|
|
|
getList(); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -391,14 +418,20 @@ const barOption = ref({ |
|
|
|
async function handleShowProfile(row) { |
|
|
|
async function handleShowProfile(row) { |
|
|
|
activeRow.value = row; |
|
|
|
activeRow.value = row; |
|
|
|
show.value = true; |
|
|
|
show.value = true; |
|
|
|
time.value = [] |
|
|
|
|
|
|
|
await getProfileData(); |
|
|
|
|
|
|
|
listNegativeMonthly(row.idCode).then(data => { |
|
|
|
|
|
|
|
barOption.value.xAxis.data = data.months |
|
|
|
|
|
|
|
barOption.value.series[0].data = data.values |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
watch(activeRow, async () => { |
|
|
|
|
|
|
|
time.value = [ |
|
|
|
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
|
|
|
moment().format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
await getProfileData(); |
|
|
|
|
|
|
|
listNegativeMonthly(row.idCode).then((data) => { |
|
|
|
|
|
|
|
barOption.value.xAxis.data = data.months; |
|
|
|
|
|
|
|
barOption.value.series[0].data = data.values; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
const time = ref([]); |
|
|
|
const time = ref([]); |
|
|
|
async function getProfileData() { |
|
|
|
async function getProfileData() { |
|
|
|
loading.value = true; |
|
|
|
loading.value = true; |
|
|
|
@ -422,12 +455,13 @@ function getNegativeList() { |
|
|
|
negativeQuery.value.beginTime = time.value[0]; |
|
|
|
negativeQuery.value.beginTime = time.value[0]; |
|
|
|
negativeQuery.value.endTime = time.value[1]; |
|
|
|
negativeQuery.value.endTime = time.value[1]; |
|
|
|
} |
|
|
|
} |
|
|
|
listNegativeByPoliceIdCode(activeRow.value.idCode, negativeQuery.value).then( |
|
|
|
listNegativeByPoliceIdCode( |
|
|
|
(data) => { |
|
|
|
activeRow.value.idCode, |
|
|
|
|
|
|
|
negativeQuery.value |
|
|
|
|
|
|
|
).then((data) => { |
|
|
|
negativeList.value = data.records; |
|
|
|
negativeList.value = data.records; |
|
|
|
negativeTotal.value = data.total; |
|
|
|
negativeTotal.value = data.total; |
|
|
|
} |
|
|
|
}); |
|
|
|
); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const radarOption = { |
|
|
|
const radarOption = { |
|
|
|
@ -455,12 +489,10 @@ const radarOption = { |
|
|
|
], |
|
|
|
], |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getGenderFromIdCode(idCode) { |
|
|
|
function getGenderFromIdCode(idCode) { |
|
|
|
// 检查身份证号码是否有效(长度为18位) |
|
|
|
// 检查身份证号码是否有效(长度为18位) |
|
|
|
if (!idCode || idCode.length !== 18) { |
|
|
|
if (!idCode || idCode.length !== 18) { |
|
|
|
return ''; |
|
|
|
return ""; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 获取第17位数字 |
|
|
|
// 获取第17位数字 |
|
|
|
@ -468,14 +500,14 @@ function getGenderFromIdCode(idCode) { |
|
|
|
|
|
|
|
|
|
|
|
// 检查是否为数字 |
|
|
|
// 检查是否为数字 |
|
|
|
if (isNaN(genderCode)) { |
|
|
|
if (isNaN(genderCode)) { |
|
|
|
return ''; |
|
|
|
return ""; |
|
|
|
} |
|
|
|
} |
|
|
|
// 根据第17位数字判断性别 |
|
|
|
// 根据第17位数字判断性别 |
|
|
|
return genderCode % 2 === 0 ? "女" : "男"; |
|
|
|
return genderCode % 2 === 0 ? "女" : "男"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const negativeShow = ref(false) |
|
|
|
const negativeShow = ref(false); |
|
|
|
const activeNegativeId = ref('') |
|
|
|
const activeNegativeId = ref(""); |
|
|
|
function handleAction(row) { |
|
|
|
function handleAction(row) { |
|
|
|
negativeShow.value = true; |
|
|
|
negativeShow.value = true; |
|
|
|
activeNegativeId.value = row.id; |
|
|
|
activeNegativeId.value = row.id; |
|
|
|
|