Commit fdfec8bb authored by miaohaoyun's avatar miaohaoyun

Merge branch 'mhy' into 'master'

Mhy

See merge request !79
parents e4dd8e2c 4cbbbdaf
...@@ -248,3 +248,43 @@ export const seletsywdc = (data) => { ...@@ -248,3 +248,43 @@ export const seletsywdc = (data) => {
data data
}) })
}; };
//查询归档档案
export const selectArchive = (data) => {
return axios({
url: '/archive/getList',
method: 'post',
data
})
};
//查询档案文件
export const selectArchiveFiles = (data) => {
return axios({
url: '/archiveFile/getListByArchiveId',
method: 'post',
data
})
};
//查询待归档案
export const selectExpectArchive = (data) => {
return axios({
url: '/archive/expectArchive',
method: 'post',
data
})
};
// 进行归档操作
export const fileArchives = (data) => {
return axios({
url: '/archive/fileArchives',
method: 'post',
data
})
};
// 查询未归档文件
export const selectNoArcEventLogList = (data) => {
return axios({
url: '/archive/getNoArcLogList',
method: 'post',
data
})
};
...@@ -48,6 +48,10 @@ import importBaseInfoByExcel from "@/views/Myvue/importBaseInfoByExcel"; ...@@ -48,6 +48,10 @@ import importBaseInfoByExcel from "@/views/Myvue/importBaseInfoByExcel";
import importPayInfoByExcel from "@/views/Myvue/importPayInfoByExcel"; import importPayInfoByExcel from "@/views/Myvue/importPayInfoByExcel";
import importGrantInfoByExcel from "@/views/Myvue/importGrantInfoByExcel"; import importGrantInfoByExcel from "@/views/Myvue/importGrantInfoByExcel";
import tablep from "@/views/Myvue/tablep"; import tablep from "@/views/Myvue/tablep";
import archivesAdministration from "@/views/Myvue/archivesAdministration";
import filesOfArchive from "@/views/Myvue/filesOfArchive";
import archivesExpect from "@/views/Myvue/archivesExpect";
import noArchiveEventLog from "@/views/Myvue/noArchiveEventLog";
Vue.use(Router) Vue.use(Router)
...@@ -216,6 +220,26 @@ const router = new Router({ ...@@ -216,6 +220,26 @@ const router = new Router({
name:"领取人员导入", name:"领取人员导入",
component: importGrantInfoByExcel component: importGrantInfoByExcel
}, },
{
path:"/archivesAdmin",
name:"档案管理",
component: archivesAdministration
},
{
path:"/archiveFiles",
name:"档案文件",
component: filesOfArchive
},
{
path:"/expectArchives",
name:"可归档案",
component: archivesExpect
},
{
path:"/noArchiveEventLog",
name:"未归档文件",
component: noArchiveEventLog
},
] ]
}, },
{ {
......
<template>
<div class="archive-administration">
<el-backtop target=".archive-administration" :right="70" :bottom="70"></el-backtop>
<div class="op">
<div class="fileNumber">
<el-input
v-model="fileNumber"
size="mini"
placeholder="请输入案卷号"
clearable></el-input>
</div>
<div class="createTime">
<el-date-picker
v-model="createTime"
type="date"
size="mini"
placeholder="请选择归档日期">
</el-date-picker>
</div>
<div class="ywtype">
<el-cascader
size="mini"
:options="options"
:props="{ checkStrictly: true }"
placeholder="请选择业务类型"
clearable
@change="handleChange">
</el-cascader>
</div>
<el-button
type="primary"
size="mini"
style="background:#148A9B;margin-left:10px"
icon="el-icon-search"
@click="paramSearch">搜索
</el-button>
<el-button
type="primary"
size="mini"
style="margin-left: 20px"
@click="searchAllArchiveList">
查看所有档案案卷
</el-button>
<el-button
type="primary"
size="mini"
style="margin-left: 20px"
@click="exportAllArchiveAllList">
导出所有档案案卷
</el-button>
</div>
<el-table
v-loading.fullscreen.lock="loading"
:data="tableData"
border
style="width: 100%">
<el-table-column
align="center"
label="序号"
type="index"
width="50"
:index="this.indexStart">
</el-table-column>
<el-table-column
align="center"
prop="type"
label="档案类别"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="volumeNumber"
label="全宗号"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="number"
label="档号"
width="180">
<template slot-scope="scope">
<el-button
type="text"
@click="getFileList(scope.row)">
{{scope.row.number}}
</el-button>
</template>
</el-table-column>
<el-table-column
align="center"
prop="year"
label="年度"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="retentionPeriod"
label="保管期限"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="institution"
label="机构(问题)"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="responsiblePerson"
label="责任者"
width="130">
</el-table-column>
<el-table-column
align="center"
prop="title"
label="正题名"
width="330">
</el-table-column>
<el-table-column
align="center"
prop="startTimeStr"
label="起时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="endTimeStr"
label="止时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="pages"
label="页数"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="files"
label="件数"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="createTimeStr"
label="归档时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="fileType"
label="档案类别"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="secondaryCategory"
label="二级类目"
width="250">
</el-table-column>
<el-table-column
align="center"
prop="categoryType"
label="类别代码"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="businessType"
label="业务类别"
width="250">
</el-table-column>
<el-table-column
align="center"
prop="fileNumber"
label="案卷号"
width="70">
</el-table-column>
<el-table-column
align="center"
fixed="right"
label="操作"
width="100">
<template slot-scope="scope">
<el-button
type="primary"
size="mini"
plain
@click="exportArchive(scope.row)">
导出
</el-button>
</template>
</el-table-column>
</el-table>
<el-button
class="fileButton"
type="primary"
@click="exportOneArchiveList">
导出当页案卷列表
</el-button>
<el-button
class="fileButton"
type="primary"
@click="exportAllArchiveList">
导出全部案卷列表
</el-button>
<el-pagination
class="pone"
:page-size="pageSize"
:page-sizes="[10, 30, 50, 100]"
@size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper"
:total="totals"
:current-page.sync="pageNum"
@current-change="current_change">
</el-pagination>
</div>
</template>
<script>
import CryptoJS from 'crypto-js'
import {baseUrl} from "../../utils/global"
import axios from "axios"
import Cookies from "js-cookie";
export default {
data() {
return {
tableData: [],
loading: false,
totals: 0,
pageNum: 1,
pageSize: 10,
indexStart: 1,
options: [{
value: {
eventType: 1,
eventTypeDetail: null,
},
label: '参保登记',
}, {
value: 2,
label: '信息变更',
disabled: true,
children: [{
value: {
eventType: 2,
eventTypeDetail: 1,
},
label: '档次变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 2,
},
label: '银行卡变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 3,
},
label: '手机号变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 4,
},
label: '参保身份变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 5,
},
label: '户籍地址变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 6,
},
label: '姓名变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 7,
},
label: '身份证变更',
}]
}, {
value: {
eventType: 3,
eventTypeDetail: null,
},
label: '待遇申请',
}, {
value: {
eventType: 4,
eventTypeDetail: null,
},
label: '参保注销',
}, {
value: {
eventType: 5,
eventTypeDetail: null,
},
label: '补缴保费',
}, {
value: {
eventType: 6,
eventTypeDetail: null,
},
label: '升档改办',
}, {
value: {
eventType: 7,
eventTypeDetail: null,
},
label: '关系转移',
}],
fileNumber: '',
createTime: '',
eventType: null,
eventTypeDetail: null,
}
},
methods: {
current_change(pageNum) {
this.pageNum = pageNum;
this.indexStart = (pageNum - 1) * this.pageSize + 1;
const data = {
pageNum: pageNum,
pageSize: this.pageSize,
fileNumber: this.fileNumber,
createTime: this.createTime,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
search(data) {
this.loading = true;
this.$api.getlist.selectArchive(data)
.then((response) => {
if (response.code === 200) {
this.tableData = response.data.content;
this.totals = response.data.totalSize;
}
})
.catch((response) => {
});
this.loading = false;
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.pageNum = 1;
this.indexStart = 1;
const data = {
pageNum: 1,
pageSize: pageSize,
fileNumber: this.fileNumber,
createTime: this.createTime,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
getFileList(row) {
this.$router.push({
name: "档案文件",
params: {
archiveObject: row
}
});
},
decrypt(word) {
var key = CryptoJS.enc.Utf8.parse("KkweInfo23255625");
var decrypt = CryptoJS.AES.decrypt(word, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
},
decryptByDES(ciphertext) {
var keyHex = CryptoJS.enc.Utf8.parse("KkweFace95271124");
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
},
exportArchive(archive) {
this.loading = true;
axios.get(baseUrl + '/archive/getArchivePdf', {
headers: {
"token": Cookies.get("token")
},
params: {
archiveId: archive.id
},
responseType: 'blob' //告诉服务器我们需要的响应格式
})
.then(res => {
let a = document.createElement("a");
let blob = new Blob([res.data], {
type: 'application/vnd.ms-excel' //将会被放入到blob中的数组内容的MIME类型
});
a.href = URL.createObjectURL(blob); //生成一个url
a.download = archive.number + "-" + archive.title + ".rar";
a.click();
this.loading = false;
})
.catch(err => {
console.log(err);
this.loading = false;
});
},
exportOneArchiveList() {
const data = {
pageNum: this.pageNum,
pageSize: this.pageSize,
fileNumber: this.fileNumber,
createTime: this.createTime,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
}
this.exportArchiveList(data);
},
exportAllArchiveList() {
const data = {
pageNum: null,
pageSize: null,
fileNumber: this.fileNumber,
createTime: this.createTime,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.exportArchiveList(data);
},
exportArchiveList(data) {
this.loading = true;
axios.post(baseUrl + '/exportExcel/archiveList', null, {
headers: {
"token": Cookies.get("token")
},
data: data,
responseType: 'blob' //告诉服务器我们需要的响应格式
})
.then(res => {
let a = document.createElement("a");
let blob = new Blob([res.data], {
type: 'application/vnd.ms-excel' //将会被放入到blob中的数组内容的MIME类型
});
a.href = URL.createObjectURL(blob); //生成一个url
a.download = "归档案卷列表" + Date.now() + ".xlsx";
a.click();
this.loading = false;
})
.catch(err => {
console.log(err);
this.loading = false;
});
},
handleChange(value) {
this.eventType = null;
this.eventTypeDetail = null;
for (const i in value) {
if (typeof (value[i].eventType) !== "undefined") {
this.eventType = value[i].eventType;
this.eventTypeDetail = value[i].eventTypeDetail;
break;
}
}
},
paramSearch() {
const data = {
pageNum: 1,
pageSize: this.pageSize,
fileNumber: this.fileNumber,
createTime: this.createTime,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
searchAllArchiveList() {
this.fileNumber = null;
this.createTime = null;
this.eventType = null;
this.eventTypeDetail = null;
const data = {
pageNum: 1,
pageSize: this.pageSize,
fileNumber: null,
createTime: null,
eventType: null,
eventTypeDetail: null,
};
this.search(data);
},
exportAllArchiveAllList() {
const data = {
pageNum: null,
pageSize: null,
fileNumber: null,
createTime: null,
eventType: null,
eventTypeDetail: null,
};
this.exportArchiveList(data);
},
},
created() {
this.loading = true;
const data = {
pageNum: 1,
pageSize: this.pageSize,
fileNumber: null,
createTime: null,
eventType: null,
eventTypeDetail: null,
};
this.$api.getlist.selectArchive(data)
.then((response) => {
if (response.code === 200) {
this.tableData = response.data.content;
this.totals = response.data.totalSize;
}
})
.catch((response) => {
});
this.loading = false;
}
}
</script>
<style scoped>
.pone {
margin-top: 20px;
margin-bottom: 20px;
}
.fileButton {
width: 10%;
margin-top: 10px;
}
.archive-administration {
height: 100%;
overflow-y: scroll;
}
.op {
display: flex;
align-items: center;
margin-bottom: 10px;
/*margin-top: 10px;*/
}
.createTime {
/*width: 250px;*/
margin-left: 20px;
}
.fileNumber {
width: 200px;
/*margin-left: 20px;*/
}
.ywtype {
/*width: 200px;*/
margin-left: 20px;
}
</style>
<template>
<div class="archive-expect">
<el-backtop target=".archive-expect" :right="70" :bottom="70"></el-backtop>
<el-table
v-loading.fullscreen.lock="loading"
:data="tableData"
border
style="width: 100%">
<!-- <el-table-column-->
<!-- align="center"-->
<!-- type="selection"-->
<!-- width="50">-->
<!-- </el-table-column>-->
<el-table-column
fixed
align="center"
label="序号"
type="index"
width="50"
:index="this.indexStart">
</el-table-column>
<el-table-column
fixed
label="文件列表"
type="expand"
width="60">
<template slot-scope="scope">
<el-table :data="scope.row.eventLogList" border style="width: 100%">
<el-table-column align="center" label="文件序号" type="index" width="60"></el-table-column>
<el-table-column align="center" prop="eventTimeStr" label="成文时间" width="180"></el-table-column>
<el-table-column align="center" prop="nameDec" label="姓名" width="100"></el-table-column>
<el-table-column align="center" prop="idcardDec" label="身份证" width="200"></el-table-column>
<el-table-column align="center" prop="concatAddress" label="乡镇/村社" width="200"></el-table-column>
<el-table-column
align="center"
label="附件"
width="600">
<template slot-scope="scope">
<div class="picPopover"
v-if="scope.row.idcardFrontPic">
<span style="float: top">身份证正面:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardFrontPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardFrontPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.idcardBackPic">
<span style="float: top">身份证背面:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardBackPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardBackPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.bankPic">
<span style="float: top">银行卡:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bankPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bankPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.specialPhotoPic">
<span style="float: top">特殊证明:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.specialPhotoPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.specialPhotoPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.bookPic">
<span style="float: top">户口簿:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bookPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bookPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column
align="center"
prop="eventSign"
label="业务类型"
:formatter="getEventType"
width="150">
</el-table-column>
<el-table-column
align="center"
prop="year"
label="年度"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="title"
label="正题名"
width="330">
</el-table-column>
<el-table-column
align="center"
prop="startTimeStr"
label="起时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="endTimeStr"
label="止时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="pages"
label="页数"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="files"
label="件数"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="fileType"
label="档案类别"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="secondaryCategory"
label="二级类目"
width="250">
</el-table-column>
<el-table-column
align="center"
prop="categoryType"
label="类别代码"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="businessType"
label="业务类别"
width="250">
</el-table-column>
<el-table-column
align="center"
fixed="right"
label="操作"
width="200">
<template slot-scope="scope">
<el-input
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
v-model="scope.row.fileNumber"
style="float: left;width: 63%"
placeholder="输入案卷号"
clearable
size="mini"></el-input>
<el-button
style="float: left;margin-left: 10px"
type="primary"
size="mini"
plain
@click="fileArchive(scope.row)">
归档
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
class="pone"
:page-size="pageSize"
:page-sizes="[10, 50, 100]"
@size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper"
:total="totals"
:current-page.sync="pageNum"
@current-change="current_change">
</el-pagination>
</div>
</template>
<script>
import CryptoJS from 'crypto-js'
import {Loading} from 'element-ui';
export default {
data() {
return {
tableData: [],
loading: false,
totals: 0,
pageNum: 1,
pageSize: 10,
indexStart: 1,
}
},
methods: {
current_change(pageNum) {
this.pageNum = pageNum;
this.indexStart = (pageNum - 1) * this.pageSize + 1;
const data = {
pageNum: pageNum,
pageSize: this.pageSize,
};
this.search(data);
},
search(data) {
this.loading = true;
this.$api.getlist.selectExpectArchive(data)
.then((response) => {
if (response.code === 200) {
for (const i in response.data.content) {
for (const j in response.data.content[i].eventLogList) {
response.data.content[i].eventLogList[j].nameDec = this.$options.methods.decryptParam(response.data.content[i].eventLogList[j].name);
response.data.content[i].eventLogList[j].idcardDec = this.$options.methods.decryptParam(response.data.content[i].eventLogList[j].idcard);
}
}
this.tableData = response.data.content;
this.totals = response.data.totalSize;
}
})
.catch((response) => {
});
this.loading = false;
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.pageNum = 1;
this.indexStart = 1;
const data = {
pageNum: 1,
pageSize: pageSize,
};
this.search(data);
},
decrypt(word) {
var key = CryptoJS.enc.Utf8.parse("KkweInfo23255625");
var decrypt = CryptoJS.AES.decrypt(word, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
},
decryptByDES(ciphertext) {
var keyHex = CryptoJS.enc.Utf8.parse("KkweFace95271124");
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
},
decryptCellValue(row, column, cellValue) {
this.decryptParam(cellValue);
},
decryptParam(param) {
if (param === null || param === "") return null;
return this.decrypt(param);
},
fileArchive(archive) {
if (archive.fileNumber === null || archive.fileNumber === "" || archive.fileNumber < 0) {
this.$message({
showClose: true,
message: "请输入案卷号",
type: 'warning',
duration: 3000
});
return;
}
this.$confirm('该 ' + archive.title + ' 将归档为案卷号: ' + archive.fileNumber + ' 的档案, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true;
const archives = [archive];
this.fileArchives(archives);
}).catch(() => {
this.$message({
showClose: true,
type: 'info',
message: '已取消归档',
duration: 3000
});
});
},
fileArchives(archives) {
this.loading = true;
this.$api.getlist.fileArchives(archives)
.then((response) => {
if (response.code === 200) {
this.$message({
showClose: true,
message: response.data,
type: 'success',
duration: 10000
});
} else {
this.$message({
showClose: true,
message: response.message,
type: 'error',
duration: 10000
});
}
this.reload();
this.loading = false;
})
.catch((response) => {
this.$message({
showClose: true,
message: response.message,
type: 'error',
duration: 10000
});
this.loading = false;
});
},
reload() {
const data = {
pageNum: this.pageNum,
pageSize: this.pageSize,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
getEventType(row, column, cellValue) {
switch (cellValue) {
case "1" : return "参保登记";
case "3" : return "待遇申请";
case "4" : return "参保注销";
case "5" : return "补缴保费";
case "6" : return "升档改办";
case "7" : return "关系转移";
case "2-1" : return "信息变更/档次变更";
case "2-2" : return "信息变更/银行卡变更";
case "2-3" : return "信息变更/手机号变更";
case "2-4" : return "信息变更/参保身份变更";
case "2-5" : return "信息变更/户籍地址变更";
case "2-6" : return "信息变更/姓名变更";
case "2-7" : return "信息变更/身份证变更";
default : return null;
}
},
},
created() {
this.loading = true;
const data = {
pageNum: 1,
pageSize: this.pageSize
};
this.$api.getlist.selectExpectArchive(data)
.then((response) => {
if (response.code === 200) {
for (const i in response.data.content) {
for (const j in response.data.content[i].eventLogList) {
response.data.content[i].eventLogList[j].nameDec = this.$options.methods.decryptParam(response.data.content[i].eventLogList[j].name);
response.data.content[i].eventLogList[j].idcardDec = this.$options.methods.decryptParam(response.data.content[i].eventLogList[j].idcard);
}
}
this.tableData = response.data.content;
this.totals = response.data.totalSize;
console.log(this.tableData);
}
})
.catch((response) => {
});
this.loading = false;
}
}
</script>
<style scoped>
.pone {
margin-top: 20px;
margin-bottom: 20px;
}
.picPopover {
float: left;
margin-left: 20px;
}
.archive-expect {
height: 100%;
overflow-y: scroll;
}
</style>
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭 this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
loadingInstance.close(); loadingInstance.close();
}); });
if (res.code == 200) { if (res.code === 200) {
this.tableData = res.data.content this.tableData = res.data.content
this.totals = res.data.totalSize this.totals = res.data.totalSize
} }
...@@ -165,7 +165,7 @@ ...@@ -165,7 +165,7 @@
this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭 this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
loadingInstance.close(); loadingInstance.close();
}); });
if (res.code == 200) { if (res.code === 200) {
this.tableData = res.data.content this.tableData = res.data.content
this.totals = res.data.totalSize this.totals = res.data.totalSize
} }
......
<template>
<div class="files-of-archive">
<el-backtop target=".files-of-archive" :right="70" :bottom="70"></el-backtop>
<div class="op">
<div class="archiveFileNumber">
<el-input
v-model="archiveFileNumber"
size="mini"
placeholder="请输入案卷号"
clearable></el-input>
</div>
<el-button
type="primary"
size="mini"
style="background:#148A9B;margin-left:10px"
icon="el-icon-search"
@click="paramSearch">搜索
</el-button>
<el-button
type="primary"
size="mini"
style="margin-left: 20px"
@click="searchAllArchiveFile">
查看所有档案文件
</el-button>
<el-button
type="primary"
size="mini"
style="margin-left: 20px"
@click="exportAllArchiveAllFileList">
导出所有档案文件
</el-button>
</div>
<div align="left" class="files-of-archive-form">
<el-form
ref="form"
:model="this.archiveObject"
label-position="left">
<el-form-item
label="当前档案案卷号"
label-width="110px"
style="width: 10%;float: left">
<div class="masks"></div>
<el-input
size="small"
v-if="this.archiveObject && this.archiveObject.archiveFileNumber"
v-model="this.archiveObject.archiveFileNumber">
</el-input>
<el-input
size="small"
v-else-if="this.archiveObject && this.archiveObject.fileNumber"
v-model="this.archiveObject.fileNumber">
</el-input>
<el-input size="small" v-else></el-input>
</el-form-item>
<el-form-item
label="当前档案案卷档号"
label-width="130px"
style="width: 20%;float: left;margin-left: 20px">
<div class="masks"></div>
<el-input
size="small"
v-if="this.archiveObject && this.archiveObject.number"
v-model="this.archiveObject.number">
</el-input>
<el-input size="small" v-else></el-input>
</el-form-item>
<el-form-item
label="当前档案案卷正题名"
label-width="140px"
style="width: 30%;float: left;margin-left: 20px">
<div class="masks"></div>
<el-input
size="small"
v-if="this.archiveObject && this.archiveObject.title"
v-model="this.archiveObject.title">
</el-input>
<el-input size="small" v-else></el-input>
</el-form-item>
</el-form>
</div>
<div class="files-of-archive-table">
<el-table
v-loading.fullscreen.lock="loading"
:data="tableData"
border
style="width: 100%">
<el-table-column
align="center"
label="序号"
type="index"
width="50"
:index="this.indexStart">
</el-table-column>
<el-table-column
align="center"
prop="type"
label="档案类别"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="volumeNumber"
label="全宗号"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="archiveNumber"
label="档号"
width="180">
</el-table-column>
<el-table-column
align="center"
prop="year"
label="年度"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="retentionPeriod"
label="保管期限"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="institution"
label="机构(问题)"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="number"
label="本卷件号"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="pageNumber"
label="页号"
width="70">
</el-table-column>
<el-table-column
align="center"
prop="responsiblePerson"
label="责任者"
width="130">
</el-table-column>
<el-table-column
align="center"
prop="title"
label="正题名"
width="550">
</el-table-column>
<el-table-column
align="center"
prop="writtenTimeStr"
label="成文时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="annex"
label="附件"
width="300">
</el-table-column>
<el-table-column
align="center"
prop="createTimeStr"
label="归档时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="fileType"
label="档案类别"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="secondaryCategory"
label="二级类目"
width="250">
</el-table-column>
<el-table-column
align="center"
prop="categoryType"
label="类别代码"
width="60">
</el-table-column>
<el-table-column
align="center"
prop="name"
label="姓名"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="idcard"
label="身份证"
width="200">
</el-table-column>
<el-table-column
align="center"
prop="concatAddress"
label="乡镇村社"
width="200">
</el-table-column>
<el-table-column
align="center"
prop="businessType"
label="业务类别"
width="250">
</el-table-column>
<el-table-column
align="center"
prop="archiveFileNumber"
label="案卷号"
width="70">
</el-table-column>
<el-table-column
align="center"
label="附件"
width="600">
<template slot-scope="scope">
<div class="picPopover"
v-if="scope.row.idcardFrontPic">
<span style="float: top">身份证正面:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardFrontPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardFrontPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.idcardBackPic">
<span style="float: top">身份证背面:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardBackPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardBackPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.bankPic">
<span style="float: top">银行卡:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bankPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bankPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.specialPhotoPic">
<span style="float: top">特殊证明:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.specialPhotoPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.specialPhotoPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.bookPic">
<span style="float: top">户口簿:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bookPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bookPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
</template>
</el-table-column>
</el-table>
<el-button
class="fileButton"
type="primary"
@click="exportOneArchiveFileList">
导出当页文件列表
</el-button>
<el-button
class="fileButton"
type="primary"
@click="exportAllArchiveFileList">
导出全部文件列表
</el-button>
<el-pagination
class="pone"
:page-size='pageSize'
:page-sizes="[10, 30, 50, 100]"
@size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper"
:total="totals"
:current-page.sync="pageNum"
@current-change="current_change">
</el-pagination>
</div>
</div>
</template>
<script>
import CryptoJS from 'crypto-js'
import {baseUrl} from "../../utils/global"
import axios from "axios"
import Cookies from "js-cookie";
export default {
data() {
return {
archiveObject: null,
tableData: [],
loading: false,
totals: 0,
pageNum: 1,
pageSize: 10,
indexStart: 1,
archiveFileNumber: '',
}
},
methods: {
current_change(pageNum) {
this.pageNum = pageNum;
this.indexStart = (pageNum - 1) * this.pageSize + 1;
const data = {
pageNum: pageNum,
pageSize: this.pageSize,
archiveFileNumber: this.archiveFileNumber,
archiveId: this.archiveObject ? this.archiveObject.id : null
};
this.search(data);
},
search(data) {
this.loading = true;
this.$api.getlist.selectArchiveFiles(data)
.then((response) => {
if (response.code === 200 && response.data.content[0].archiveFileList.length !== 0) {
for (const i in response.data.content[0].archiveFileList) {
if (response.data.content[0].archiveFileList[i].name !== null && response.data.content[0].archiveFileList[i].name !== "") {
response.data.content[0].archiveFileList[i].name = this.decrypt(response.data.content[0].archiveFileList[i].name);
}
if (response.data.content[0].archiveFileList[i].idcard !== null && response.data.content[0].archiveFileList[i].idcard !== "") {
response.data.content[0].archiveFileList[i].idcard = this.decrypt(response.data.content[0].archiveFileList[i].idcard);
}
if (response.data.content[0].archiveFileList[i].title !== null && response.data.content[0].archiveFileList[i].title !== "") {
response.data.content[0].archiveFileList[i].title = this.decrypt(response.data.content[0].archiveFileList[i].title);
}
}
this.archiveObject = response.data.content[0];
this.tableData = response.data.content[0].archiveFileList;
this.totals = response.data.totalSize;
} else {
this.archiveObject = null;
this.tableData = null;
this.totals = response.data.totalSize;
}
})
.catch((response) => {
this.archiveObject = null;
this.tableData = null;
});
this.loading = false;
},
handleSizeChange(pageSize) {
this.pageNum = 1;
this.pageSize = pageSize;
this.indexStart = 1;
const data = {
pageNum: 1,
pageSize: pageSize,
archiveFileNumber: this.archiveFileNumber,
archiveId: this.archiveObject ? this.archiveObject.id : null
};
this.search(data);
},
decrypt(word) {
var key = CryptoJS.enc.Utf8.parse("KkweInfo23255625");
var decrypt = CryptoJS.AES.decrypt(word, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
},
decryptByDES(ciphertext) {
var keyHex = CryptoJS.enc.Utf8.parse("KkweFace95271124");
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
},
searchAllArchiveFile() {
this.pageNum = 1;
this.indexStart = 1;
this.archiveFileNumber = '';
this.archiveObject = null;
sessionStorage.setItem("archiveObject", null);
const data = {
pageNum: 1,
pageSize: this.pageSize,
archiveFileNumber: '',
archiveId: null
};
this.search(data);
},
exportOneArchiveFileList() {
const data = {
pageNum: this.pageNum,
pageSize: this.pageSize,
archiveFileNumber: this.archiveFileNumber,
archiveId: this.archiveObject ? this.archiveObject.id : null
};
this.exportArchiveFileList(data);
},
exportAllArchiveFileList() {
const data = {
pageNum: null,
pageSize: null,
archiveFileNumber: this.archiveFileNumber,
archiveId: this.archiveObject ? this.archiveObject.id : null
};
this.exportArchiveFileList(data);
},
exportAllArchiveAllFileList() {
const data = {
pageNum: null,
pageSize: null,
archiveFileNumber: '',
archiveId: null
};
this.exportArchiveFileList(data);
},
exportArchiveFileList(data) {
this.loading = true;
axios.post(baseUrl + '/exportExcel/archiveFileList', null, {
headers: {
"token": Cookies.get("token")
},
data: data,
responseType: 'blob' //告诉服务器我们需要的响应格式
})
.then(res => {
let a = document.createElement("a");
let blob = new Blob([res.data], {
type: 'application/vnd.ms-excel' //将会被放入到blob中的数组内容的MIME类型
});
a.href = URL.createObjectURL(blob); //生成一个url
a.download = "案卷文件列表" + Date.now() + ".xlsx";
a.click();
this.loading = false;
})
.catch(err => {
console.log(err);
this.loading = false;
});
},
paramSearch() {
const data = {
pageNum: 1,
pageSize: this.pageSize,
archiveFileNumber: this.archiveFileNumber,
archiveId: null,
};
this.search(data);
},
},
created() {
// this.loading = true;
if (typeof (this.$route.params.archiveObject) !== "undefined" && this.$route.params.archiveObject) {
sessionStorage.setItem("archiveObject", JSON.stringify(this.$route.params.archiveObject));
}
if (JSON.parse(sessionStorage.getItem("archiveObject"))) {
this.archiveObject = JSON.parse(sessionStorage.getItem("archiveObject"));
}
const data = {
pageNum: 1,
pageSize: this.pageSize,
archiveFileNumber: '',
archiveId: this.archiveObject ? this.archiveObject.id : null
};
this.$api.getlist.selectArchiveFiles(data)
.then((response) => {
if (response.code === 200) {
if (response.data.content[0].archiveFileList.length !== 0) {
for (const i in response.data.content[0].archiveFileList) {
if (response.data.content[0].archiveFileList[i].name !== null && response.data.content[0].archiveFileList[i].name !== "") {
response.data.content[0].archiveFileList[i].name = this.decrypt(response.data.content[0].archiveFileList[i].name);
}
if (response.data.content[0].archiveFileList[i].idcard !== null && response.data.content[0].archiveFileList[i].idcard !== "") {
response.data.content[0].archiveFileList[i].idcard = this.decrypt(response.data.content[0].archiveFileList[i].idcard);
}
if (response.data.content[0].archiveFileList[i].title !== null && response.data.content[0].archiveFileList[i].title !== "") {
response.data.content[0].archiveFileList[i].title = this.decrypt(response.data.content[0].archiveFileList[i].title);
}
}
this.tableData = response.data.content[0].archiveFileList;
this.totals = response.data.totalSize;
} else {
this.archiveObject = null;
this.tableData = null;
this.totals = response.data.totalSize;
}
}
})
.catch((response) => {
});
this.loading = false;
}
}
</script>
<style scoped>
.pone {
margin-top: 20px;
margin-bottom: 20px;
}
.picPopover {
float: left;
margin-left: 20px;
}
.fileButton {
width: 10%;
margin-top: 10px;
}
.masks {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 200
}
.files-of-archive {
height: 100%;
overflow-y: scroll;
}
.op {
display: flex;
align-items: center;
margin-bottom: 10px;
/*margin-top: 10px;*/
}
.archiveNumber {
/*width: 250px;*/
margin-left: 20px;
}
.archiveFileNumber {
width: 200px;
/*margin-left: 20px;*/
}
</style>
<template xmlns:v-popover="http://www.w3.org/1999/xhtml">
<div class="no-archive-event-log">
<el-backtop target=".no-archive-event-log" :right="70" :bottom="70"></el-backtop>
<div>
<el-alert
v-if="!showSelection"
align="left"
title="请选择一个业务类型进行归档"
type="warning"
:closable="false"
show-icon>
</el-alert>
</div>
<div class="op">
<div class="name">
<el-input
v-model="name"
size="mini"
placeholder="请输入姓名"
clearable></el-input>
</div>
<div class="idcard">
<el-input
v-model="idcard"
size="mini"
placeholder="请输入身份证号"
clearable></el-input>
</div>
<div class="ywtype">
<el-cascader
ref="businessType"
size="mini"
:options="options"
:props="{ checkStrictly: true }"
placeholder="请选择业务类型"
clearable
@change="handleChange">
</el-cascader>
</div>
<el-button
type="primary"
size="mini"
style="background:#148A9B;margin-left:10px"
icon="el-icon-search"
@click="paramSearch">搜索
</el-button>
<el-button
type="primary"
size="mini"
style="margin-left: 20px"
@click="searchAllNoArchiveELog">
查看所有未归档文件
</el-button>
</div>
<div>
<el-table
v-loading.fullscreen.lock="loading"
:data="tableData"
border
style="width: 100%"
@selection-change="handleSelectionChange"
:key="Math.random()">
<el-table-column
v-if="showSelection"
align="center"
type="selection"
width="50">
</el-table-column>
<el-table-column
v-else
width="50">
</el-table-column>
<el-table-column
align="center"
label="序号"
type="index"
width="50"
:index="indexStart">
</el-table-column>
<el-table-column
align="center"
prop="eventType"
label="业务类型"
width="200"
:formatter="getEventType">
</el-table-column>
<el-table-column
align="center"
prop="eventTimeStr"
label="成文时间"
width="200">
</el-table-column>
<el-table-column
align="center"
prop="desName"
label="姓名"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="desIdCard"
label="身份证"
width="200">
</el-table-column>
<el-table-column
align="center"
prop="concatAddress"
label="乡镇村社"
width="200">
</el-table-column>
<el-table-column
align="center"
label="附件"
width="600">
<template slot-scope="scope">
<div class="picPopover"
v-if="scope.row.idcardFrontPic">
<span style="float: top">身份证正面:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardFrontPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardFrontPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.idcardBackPic">
<span style="float: top">身份证背面:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardBackPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.idcardBackPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.bankPic">
<span style="float: top">银行卡:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bankPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bankPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.specialPhotoPic">
<span style="float: top">特殊证明:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.specialPhotoPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.specialPhotoPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
<div class="picPopover"
v-if="scope.row.bookPic">
<span style="float: top">户口簿:</span>
<div style="float: top">
<el-popover
placement="bottom"
trigger="hover">
<img slot="reference" :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bookPic" height="50px" width="50px" class="head_pic"/>
<img :src="'http://socialsecurity.oss-cn-beijing.aliyuncs.com/' + scope.row.bookPic" height="100%" width="100%" class="head_pic"/>
</el-popover>
</div>
</div>
</template>
</el-table-column>
</el-table>
<el-button
v-if="showSelection"
class="fileButton"
type="primary"
@click="fileEventLogs">
归档案卷
</el-button>
<el-pagination
class="pone"
:page-size='pageSize'
:page-sizes="[10, 50, 100]"
@size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper"
:total="totals"
:current-page.sync="pageNum"
@current-change="current_change">
</el-pagination>
<el-dialog title="收货地址" :visible.sync="fileDialog">
<el-form label-position="right" label-width="80px">
<el-form-item label="文件列表">
<el-table v-if="fileDialog" :data="eventLogList" style="width: 100%">
<el-table-column prop="desName" label="姓名" width="100"></el-table-column>
<el-table-column prop="desIdCard" label="身份证" width="200"></el-table-column>
<el-table-column prop="eventTimeStr" label="成文时间" width="200"></el-table-column>
</el-table>
</el-form-item>
<el-form-item label="案卷号">
<el-input
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
v-model="fileNumber"
style="float: left;width: 200px"
placeholder="请输入案卷号"
clearable
size="mini"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelFileDialog">取 消</el-button>
<el-button type="primary" @click="confirmFileDialog">确 定</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import CryptoJS from 'crypto-js'
export default {
data() {
return {
name: '',
idcard: '',
ywtype: '',
options: [{
value: {
eventType: 1,
eventTypeDetail: null,
},
label: '参保登记',
}, {
value: 2,
label: '信息变更',
disabled: true,
children: [{
value: {
eventType: 2,
eventTypeDetail: 1,
},
label: '档次变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 2,
},
label: '银行卡变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 3,
},
label: '手机号变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 4,
},
label: '参保身份变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 5,
},
label: '户籍地址变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 6,
},
label: '姓名变更',
}, {
value: {
eventType: 2,
eventTypeDetail: 7,
},
label: '身份证变更',
}]
}, {
value: {
eventType: 3,
eventTypeDetail: null,
},
label: '待遇申请',
}, {
value: {
eventType: 4,
eventTypeDetail: null,
},
label: '参保注销',
}, {
value: {
eventType: 5,
eventTypeDetail: null,
},
label: '补缴保费',
}, {
value: {
eventType: 6,
eventTypeDetail: null,
},
label: '升档改办',
}, {
value: {
eventType: 7,
eventTypeDetail: null,
},
label: '关系转移',
}],
archiveObject: {},
tableData: [],
loading: false,
totals: 0,
pageNum: 1,
pageSize: 10,
indexStart: 1,
eventType: null,
eventTypeDetail: null,
showSelection: false,
eventLogList: [],
fileNumber: '',
fileDialog: false,
}
},
methods: {
current_change(pageNum) {
this.pageNum = pageNum;
this.indexStart = (pageNum - 1) * this.pageSize + 1;
const data = {
pageNum: pageNum,
pageSize: this.pageSize,
name: this.name,
idcard: this.idcard,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
search(data) {
this.loading = true;
this.$api.getlist.selectNoArcEventLogList(data)
.then((response) => {
if (response.code === 200) {
for (const i in response.data.content) {
if (response.data.content[i].name !== null && response.data.content[i].name !== "") {
response.data.content[i].desName = this.decrypt(response.data.content[i].name);
}
if (response.data.content[i].idcard !== null && response.data.content[i].idcard !== "") {
response.data.content[i].desIdCard = this.decrypt(response.data.content[i].idcard);
}
}
this.tableData = response.data.content;
this.totals = response.data.totalSize;
}
})
.catch((response) => {
});
this.loading = false;
},
handleSizeChange(pageSize) {
this.pageNum = 1;
this.pageSize = pageSize;
this.indexStart = 1;
const data = {
pageNum: 1,
pageSize: pageSize,
name: this.name,
idcard: this.idcard,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
decrypt(word) {
var key = CryptoJS.enc.Utf8.parse("KkweInfo23255625");
var decrypt = CryptoJS.AES.decrypt(word, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
},
decryptByDES(ciphertext) {
var keyHex = CryptoJS.enc.Utf8.parse("KkweFace95271124");
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
},
getEventType(row, column, cellValue, index) {
if (cellValue === 2) {
return this.getInformationChangeType(row.eventTypeDetail)
} else {
return this.getType(cellValue);
}
},
paramSearch() {
this.eventLogList.length = 0;
const data = {
pageNum: 1,
pageSize: this.pageSize,
name: this.name,
idcard: this.idcard,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
this.showSelection = !!this.eventType;
},
getInformationChangeType(eventTypeDetail) {
const eventType = "信息变更/";
const eventDetail = eventTypeDetail === 1 ? "档次变更"
: eventTypeDetail === 2 ? "银行卡变更"
: eventTypeDetail === 3 ? "手机号变更"
: eventTypeDetail === 4 ? "参保身份变更"
: eventTypeDetail === 5 ? "户籍地址变更"
: eventTypeDetail === 6 ? "姓名变更"
: eventTypeDetail === 7 ? "身份证变更"
: "";
return eventType + eventDetail;
},
handleChange(value) {
this.eventType = null;
this.eventTypeDetail = null;
for (const i in value) {
if (typeof (value[i].eventType) !== "undefined") {
this.eventType = value[i].eventType;
this.eventTypeDetail = value[i].eventTypeDetail;
break;
}
}
},
handleSelectionChange(selection) {
this.eventLogList = selection;
},
fileEventLogs() {
if (this.eventLogList.length === 0) {
this.$message({
showClose: true,
message: "请选择要归档的文件",
type: 'error',
duration: 3000
});
return;
}
this.fileDialog = true;
},
reload() {
const data = {
pageNum: this.pageNum,
pageSize: this.pageSize,
name: this.name,
idcard: this.idcard,
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
};
this.search(data);
},
cancelFileDialog() {
this.eventLogList.length = 0;
this.fileNumber = null;
this.fileDialog = false;
this.$message({
showClose: true,
message: '取消归档',
type: 'info',
duration: 3000
});
},
confirmFileDialog() {
if (this.eventLogList.length === 0) {
this.$message({
showClose: true,
message: '请选择要归档的文件',
type: 'error',
duration: 3000
});
return;
}
if (this.fileNumber === null || this.fileNumber === '') {
this.$message({
showClose: true,
message: '请输入案卷号',
type: 'error',
duration: 3000
});
return;
}
this.$confirm('该 ' + this.eventLogList.length + ' 件文件将归档为案卷号: ' + this.fileNumber + ' 的档案, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true;
const data = [{
eventType: this.eventType,
eventTypeDetail: this.eventTypeDetail,
fileNumber: this.fileNumber,
eventLogList: this.eventLogList,
}];
this.$api.getlist.fileArchives(data)
.then((response) => {
if (response.code === 200) {
this.$message({
showClose: true,
message: response.data,
type: 'success',
duration: 10000
});
} else {
this.$message({
showClose: true,
message: response.message,
type: 'error',
duration: 10000
});
}
this.pageNum = 1;
this.reload();
this.fileDialog = false;
this.eventLogList.length = 0;
this.fileNumber = null;
this.loading = false;
})
.catch((response) => {
this.$message({
showClose: true,
message: response.message,
type: 'error',
duration: 10000
});
this.fileDialog = false;
this.eventLogList.length = 0;
this.fileNumber = null;
this.loading = false;
});
}).catch(() => {
this.$message({
showClose: true,
type: 'info',
message: '取消归档',
duration: 3000
});
});
},
searchAllNoArchiveELog() {
this.eventLogList.length = 0;
this.name = null;
this.idcard = null;
this.eventType = null;
this.eventTypeDetail = null;
let obj = {};
obj.stopPropagation = () =>{};
this.$refs.businessType.handleClear(obj);
const data = {
pageNum: 1,
pageSize: this.pageSize,
name: null,
idcard: null,
eventType: null,
eventTypeDetail: null,
};
this.search(data);
this.showSelection = !!this.eventType;
},
},
created() {
this.loading = true;
if (typeof (this.$route.params.archiveObject) !== "undefined" && this.$route.params.archiveObject) {
sessionStorage.setItem("archiveObject", JSON.stringify(this.$route.params.archiveObject));
}
this.archiveObject = JSON.parse(sessionStorage.getItem("archiveObject"));
const data = {
pageNum: 1,
pageSize: this.pageSize,
name: null,
idcard: null,
eventType: null,
eventTypeDetail: null,
};
this.$api.getlist.selectNoArcEventLogList(data)
.then((response) => {
if (response.code === 200) {
for (const i in response.data.content) {
if (response.data.content[i].name !== null && response.data.content[i].name !== "") {
response.data.content[i].desName = this.decrypt(response.data.content[i].name);
}
if (response.data.content[i].idcard !== null && response.data.content[i].idcard !== "") {
response.data.content[i].desIdCard = this.decrypt(response.data.content[i].idcard);
}
}
this.tableData = response.data.content;
this.totals = response.data.totalSize;
}
})
.catch((response) => {
});
this.loading = false;
}
}
</script>
<style scoped>
.pone {
margin-top: 10px;
margin-bottom: 20px;
}
.fileButton {
width: 10%;
margin-top: 10px;
}
.op {
display: flex;
align-items: center;
margin-bottom: 10px;
margin-top: 10px;
}
.idcard {
width: 200px;
margin-left: 20px;
}
.name {
width: 200px;
/*margin-left: 20px;*/
}
.ywtype {
width: 200px;
margin-left: 20px;
}
.picPopover {
float: left;
margin-left: 20px;
}
.no-archive-event-log {
height: 100%;
overflow-y: scroll;
}
</style>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<el-input v-model="dataForm.truename" auto-complete="off"></el-input> <el-input v-model="dataForm.truename" auto-complete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="密码" prop="password"> <el-form-item label="密码" prop="password">
<el-input v-model="dataForm.password" type="password" auto-complete="off"></el-input> <el-input v-model="dataForm.password" type="password" placeholder="密码必须为6至18位" auto-complete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="身份证" prop="bangIdcard"> <el-form-item label="身份证" prop="bangIdcard">
<el-input v-model="dataForm.bangIdcard" auto-complete="off"></el-input> <el-input v-model="dataForm.bangIdcard" auto-complete="off"></el-input>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment