Commit 4c47a54d by swl

gx

parent 381ae7d8
No preview for this file type
import { api, formatParams } from "@/utils/axios";
import { api1, formatParams1, config } from "@/utils/request";
// import { baseUrl } from '@/config/index'
/**
* 查询列表
*/
export function getList(params) {
return api(
Object.assign(formatParams("POST", params), {
url: `${config.proxy}/admin-api/familyCode/queryList`,
})
);
}
/**
* 查询详情
*/
export function get(params) {
return api(
Object.assign(formatParams("POST", params), {
url: `${config.proxy}admin-api/talent/get`,
})
);
}
/**
* 查询详情
*/
export function getFamily(params) {
return api(
Object.assign(formatParams("GET", params), {
url: `${config.proxy}/admin-api/familyCode/detail`,
})
);
}
/**
* 查询类型
*/
export function getType() {
return api(
Object.assign(formatParams("POST"), {
url: `${config.proxy}/admin-api/familyCode/queryZjCity`,
})
);
}
/**
* 查询状态
*/
export function getReviewState(params) {
return api(
Object.assign(formatParams("GET"), {
url: `${config.proxy}/admin-api/familyCode/reviewState?type=${params}`,
})
);
}
// 审核
export function familyAudit(params) {
return api(
Object.assign(formatParams("POST", params), {
url: `${config.proxy}/admin-api/familyCode/review`,
})
);
}
/**
* 修改状态
*/
export function updateState(params) {
return api1(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}talent/updateState`,
})
);
}
/**
* 审核改派
*/
export function auditUpdate(params) {
return api(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}/admin-api/familyCode/reassignment`,
})
);
}
/**
* 操作记录
*/
export function getRecord(params) {
return api(
Object.assign(formatParams("GET", params), {
url: `${config.proxy}/admin-api/familyCode/queryRecordList`,
})
);
}
/**
* 查询责任部门
*/
export function getBranch(params) {
return api1(
Object.assign(formatParams1("GET", params), {
url: `${config.proxy}talent/getBranch?appId=1234`,
})
);
}
/**
* 修改学历状态
*/
export function educationState(params) {
return api1(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}talent/educationState`,
})
);
}
/**
* 查看学历
*/
export function educationQuery(params) {
return api1(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}talent/getEducation`,
})
);
}
import { api, formatParams } from "@/utils/axios";
import { api1, formatParams1, config } from "@/utils/request";
// import { baseUrl } from '@/config/index'
import { formatParams1, config } from "@/utils/request";
/**
* 查询列表
......@@ -8,7 +7,7 @@ import { api1, formatParams1, config } from "@/utils/request";
export function getList(params) {
return api(
Object.assign(formatParams("POST", params), {
url: `${config.proxy}/admin-api/familyCode/queryList`,
url: `${config.proxy}/admin-api/talent/getList`,
})
);
}
......@@ -19,46 +18,18 @@ export function getList(params) {
export function get(params) {
return api(
Object.assign(formatParams("POST", params), {
url: `${config.proxy}admin-api/talent/get`,
})
);
}
/**
* 查询详情
*/
export function getFamily(params) {
return api(
Object.assign(formatParams("GET", params), {
url: `${config.proxy}/admin-api/familyCode/detail`,
})
);
}
/**
* 查询类型
*/
export function getType() {
return api(
Object.assign(formatParams("POST"), {
url: `${config.proxy}/admin-api/familyCode/queryZjCity`,
url: `${config.proxy}/admin-api/talent/get`,
})
);
}
/**
* 查询状态
* 查询类型
*/
export function getReviewState(params) {
return api(
Object.assign(formatParams("GET"), {
url: `${config.proxy}/admin-api/familyCode/reviewState?type=${params}`,
})
);
}
// 审核
export function familyAudit(params) {
export function getType(params) {
return api(
Object.assign(formatParams("POST", params), {
url: `${config.proxy}/admin-api/familyCode/review`,
Object.assign(formatParams("GET", params), {
url: `${config.proxy}/admin-api/talent/getType?appId=1234`,
})
);
}
......@@ -67,29 +38,20 @@ export function familyAudit(params) {
* 修改状态
*/
export function updateState(params) {
return api1(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}talent/updateState`,
})
);
}
/**
* 审核改派
*/
export function auditUpdate(params) {
return api(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}/admin-api/familyCode/reassignment`,
url: `${config.proxy}/admin-api/talent/updateState`,
})
);
}
/**
* 操作记录
*/
export function getRecord(params) {
return api(
Object.assign(formatParams("GET", params), {
url: `${config.proxy}/admin-api/familyCode/queryRecordList`,
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}/admin-api/talent/getRecord`,
})
);
}
......@@ -98,9 +60,9 @@ export function getRecord(params) {
* 查询责任部门
*/
export function getBranch(params) {
return api1(
return api(
Object.assign(formatParams1("GET", params), {
url: `${config.proxy}talent/getBranch?appId=1234`,
url: `${config.proxy}/admin-api/talent/getBranch?appId=1234`,
})
);
}
......@@ -109,9 +71,9 @@ export function getBranch(params) {
* 修改学历状态
*/
export function educationState(params) {
return api1(
return api(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}talent/educationState`,
url: `${config.proxy}/admin-api/talent/educationState`,
})
);
}
......@@ -120,9 +82,9 @@ export function educationState(params) {
* 查看学历
*/
export function educationQuery(params) {
return api1(
return api(
Object.assign(formatParams1("POST", params), {
url: `${config.proxy}talent/getEducation`,
url: `${config.proxy}/admin-api/talent/getEducation`,
})
);
}
const domain = {
// dev: "http://192.168.3.87:8881", // 姚镇接口
// dev: "http://81.69.231.72:8881", // 姚镇接口
// dev: "http://81.69.231.72:8881", // 测试接口
dev: "https://exam.smart-zj.cn:9100/smartExam/", // 新正式接口
dev: "http://81.69.231.72:8881", // 测试接口
// dev: "https://exam.smart-zj.cn:9100/smartExam/", // 新正式接口
};
// 腾讯地图 key
const map = {
......
import axios from "axios";
import {
Message
} from "element-ui";
import {
baseUrl
} from "@/config";
import {
getToken
} from "@/utils/auth";
import {TokenKey} from '@/utils/auth'
import { Message } from "element-ui";
import { baseUrl } from "@/config";
import { getToken } from "@/utils/auth";
import { TokenKey } from "@/utils/auth";
import router from "@/router";
const api = axios.create({
baseURL: `${baseUrl}`,
......@@ -17,14 +11,15 @@ const api = axios.create({
// 请求拦截
api.interceptors.request.use(
(config) => {
config.headers['Authorization'] = 'Bearer ' + localStorage.getItem(TokenKey)
config.headers["Authorization"] =
"Bearer " + localStorage.getItem(TokenKey);
let appId = /*getToken()*/ "1234";
if (config.data) config.data.appId = appId;
return config;
},
(error) => ({
status: 0,
msg: error.message
msg: error.message,
})
);
// 请求返回
......@@ -70,9 +65,9 @@ const checkCode = (res) => {
};
return returnData;
} else if (res.data.code == 401) {
Message.error('登录已失效,请重新登录')
Message.error("登录已失效,请重新登录");
window.localStorage.clear();
router.replace('/login')
router.replace("/login");
} else {
//统一处理错误
const returnData = {
......@@ -106,7 +101,7 @@ const formatParams = (method = "GET", params, type) => {
}
let headers = {
"Content-Type": contentType,
"Authorization": getToken() ? ('Bearer ' + getToken()) : "",
Authorization: getToken() ? "Bearer " + getToken() : "",
};
// appId设置
// 如果接口需要序列化 type == 'qs'
......@@ -127,23 +122,23 @@ const formatParams = (method = "GET", params, type) => {
case "DOWNLOAD":
return {
responseType: type,
headers,
method: "POST",
data: params,
headers,
method: "POST",
data: params,
};
case "PUT":
return {
responseType: type,
headers,
method,
data: params,
headers,
method,
data: params,
};
case "DELETE":
return {
responseType: type,
headers,
method,
data: params,
headers,
method,
data: params,
};
case "GET":
return {
......@@ -160,8 +155,4 @@ const formatParams = (method = "GET", params, type) => {
}
};
export {
api,
formatParams,
baseUrl
};
\ No newline at end of file
export { api, formatParams, baseUrl };
import axios from "axios";
import { Message } from "element-ui";
import { getToken } from "@/utils/auth";
import { TokenKey } from "@/utils/auth";
const config = {
// proxy: "https://exam.smart-zj.cn:9100/exam/", // 新线上地址
// proxy: "http://81.69.231.72:8881/", // 测试地址
proxy: "http://81.69.231.72:8881", // 测试地址
// proxy: "http://192.168.3.87:8881/", //本地
proxy: "https://exam.smart-zj.cn:9100/smartExam/", // 新正式接口
// proxy: "https://exam.smart-zj.cn:9100/smartExam/", // 新正式接口
// proxy: "http://81.69.231.72:9089/", // 测试地址
};
//axios基本配置
......@@ -55,6 +57,9 @@ const api1 = axios.create({
api1.interceptors.request.use(
(conf) => {
//请求带token
config.headers["Authorization"] =
"Bearer " + localStorage.getItem(TokenKey);
// conf.headers['Authorization'] = store2('accesstoken')
let appId = /*getToken()*/ "1234";
if (conf.data) conf.data.appId = appId;
......
......@@ -611,7 +611,7 @@ import {
getReviewState,
familyAudit,
auditUpdate,
} from "@/api/talents";
} from "@/api/family";
// import { Message } from "element-ui";
export default {
......
<template>
<div class="coldfood">
<div class="search-wrapper">
<el-form :inline="true" :model="searchForm" class="search_form" style="text-align:left">
<el-form-item label="姓名" label-width="200">
<el-input v-model="searchForm.name" placeholder="请输入姓名" @keyup.enter.native="onSubmit"></el-input>
</el-form-item>
<el-form-item label="手机号码">
<el-input v-model="searchForm.phone" placeholder="请输入手机号码" @keyup.enter.native="onSubmit">
</el-input>
</el-form-item>
<el-form-item label="单位名称">
<el-input v-model="searchForm.unitName" placeholder="请输入单位名称" @keyup.enter.native="onSubmit">
</el-input>
</el-form-item>
<el-form-item label="操作人">
<el-input v-model="searchForm.recordName" placeholder="请输入操作人" @keyup.enter.native="onSubmit">
</el-input>
</el-form-item>
<el-form-item label="人才类型" v-if="this.branchCode == '5'">
<el-select v-model="searchForm.talentClassification" placeholder="请选择人才类型" style="width: 100%"
@change="onSubmit">
<el-option v-for="item in talentsList" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="认定类型">
<el-select v-model="searchForm.typeCode" placeholder="请选择认定类型" style="width: 100%"
@change="onSubmit">
<el-option v-for="item in typeList" :key="item.typeCode" :label="item.typeName"
:value="item.typeCode"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="!branchCode" label="责任部门">
<el-select v-model="searchForm.branchCode" placeholder="请选择责任部门" style="width: 100%"
@change="onSubmit">
<el-option v-for="item in branchList" :key="item.branchCode" :label="item.branchName"
:value="item.branchCode"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
</el-form-item>
<br />
<el-form-item label="状态" style="margin-top: 10px;">
<el-radio-group v-model="searchForm.state" @change="onSubmit">
<el-radio :label="item.state" v-for="item in stateList" :key="item.state">{{ item.stateName }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</div>
<!-- 表格 -->
<div class="table-wrapper1">
<table-template :tableData="tableData" :tableColumns="tableColumns" :loading="loading"
:pagination="pagination" @Jump="jumpPage">
<el-table-column width="120" prop="talentClassification" label="人才类型" align="center">
<template slot-scope="scope">
<div v-if="scope.row.talentClassification == '1'">
乡土或创新人才
</div>
<div v-else-if="scope.row.talentClassification == '2'">
学历人才
</div>
<div v-else-if="scope.row.talentClassification == '3'">
技能人才
</div>
<div v-else-if="scope.row.talentClassification == '4'">
专技人才
</div>
<div v-else>-</div>
</template>
</el-table-column>
<el-table-column width="120" prop="overdue" label="逾期状态" align="center">
<template slot-scope="scope">
<div v-if="scope.row.state == 1">
<div v-if="scope.row.overdue < 3"></div>
<div class="early" v-if="scope.row.overdue < 5 && scope.row.overdue >= 3"></div>
<div class="warning" v-if="scope.row.overdue >= 5"></div>
</div>
</template>
</el-table-column>
<el-table-column width="120" key="stateName" prop="onlineName" label="状态" align="center">
<template slot-scope="scope">
<el-tag :type="scope.row.type">{{ scope.row.stateName }}</el-tag>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="380" align="left">
<template slot-scope="scope">
<el-button type="primary" size="mini" round @click="view(scope.row)">查看</el-button>
<el-button type="primary" size="mini" round @click="getRecord(scope.row)">记录</el-button>
<!-- 公示期的单子可以暂停公示 -->
<el-button v-if="scope.row.state === 2" type="warning" size="mini" round
@click="pause(scope.row.talentCode)">暂停公示</el-button>
<!-- 暂停公示的单子可以恢复公示 -->
<el-button v-if="scope.row.state === 4" type="success" size="mini" round
@click="recover(scope.row.talentCode)">恢复公示</el-button>
<!-- 审核通过后的单子都可以拉入黑名单撤销 -->
<el-button v-if="
scope.row.state === 2 ||
scope.row.state === 3 ||
scope.row.state === 4
" type="danger" size="mini" round @click="blacklist(scope.row.talentCode)">撤销</el-button>
<!-- 审核通过后的单子都可以打印-->
<el-button size="mini" round @click="print(scope.row.talentCode, scope.row)">打印</el-button>
</template>
</el-table-column>
</table-template>
</div>
<!-- 表格end -->
<!-- 拒绝对话框 -->
<el-dialog title="提示" :visible.sync="refuseDialog" width="30%" class="refuseDialog" :before-close="cancelBtn">
<span>确定拒绝该人才的申请吗?确定的话请<span style="color:red">选择或输入</span>拒绝原因</span>
<div>
<el-select v-model="refuseValue" placeholder="请选择拒绝原因" @change="refuseSelect">
<el-option v-for="item in refuseOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<div class="coldfood">
<div class="search-wrapper">
<el-form
:inline="true"
:model="searchForm"
class="search_form"
style="text-align: left"
>
<el-form-item label="姓名" label-width="200">
<el-input
v-model="searchForm.name"
placeholder="请输入姓名"
@keyup.enter.native="onSubmit"
></el-input>
</el-form-item>
<el-form-item label="手机号码">
<el-input
v-model="searchForm.phone"
placeholder="请输入手机号码"
@keyup.enter.native="onSubmit"
>
</el-input>
</el-form-item>
<el-form-item label="单位名称">
<el-input
v-model="searchForm.unitName"
placeholder="请输入单位名称"
@keyup.enter.native="onSubmit"
>
</el-input>
</el-form-item>
<el-form-item label="操作人">
<el-input
v-model="searchForm.recordName"
placeholder="请输入操作人"
@keyup.enter.native="onSubmit"
>
</el-input>
</el-form-item>
<el-form-item label="人才类型" v-if="this.branchCode == '5'">
<el-select
v-model="searchForm.talentClassification"
placeholder="请选择人才类型"
style="width: 100%"
@change="onSubmit"
>
<el-option
v-for="item in talentsList"
:key="item.id"
:label="item.label"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="认定类型">
<el-select
v-model="searchForm.typeCode"
placeholder="请选择认定类型"
style="width: 100%"
@change="onSubmit"
>
<el-option
v-for="item in typeList"
:key="item.typeCode"
:label="item.typeName"
:value="item.typeCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="!branchCode" label="责任部门">
<el-select
v-model="searchForm.branchCode"
placeholder="请选择责任部门"
style="width: 100%"
@change="onSubmit"
>
<el-option
v-for="item in branchList"
:key="item.branchCode"
:label="item.branchName"
:value="item.branchCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
</el-form-item>
<br />
<el-form-item label="状态" style="margin-top: 10px">
<el-radio-group v-model="searchForm.state" @change="onSubmit">
<el-radio
:label="item.state"
v-for="item in stateList"
:key="item.state"
>{{ item.stateName }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</div>
<!-- 表格 -->
<div class="table-wrapper1">
<table-template
:tableData="tableData"
:tableColumns="tableColumns"
:loading="loading"
:pagination="pagination"
@Jump="jumpPage"
>
<el-table-column
width="120"
prop="talentClassification"
label="人才类型"
align="center"
>
<template slot-scope="scope">
<div v-if="scope.row.talentClassification == '1'">
乡土或创新人才
</div>
<div class="refuseTex">
<el-input type="textarea" autosize placeholder="请输入拒绝原因" v-model="refuseTextarea">
</el-input>
<div v-else-if="scope.row.talentClassification == '2'">
学历人才
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelBtn">取 消</el-button>
<el-button type="primary" @click="successBtn">确 定</el-button>
</span>
</el-dialog>
<!-- 人才详情的对话框 -->
<el-dialog title="人才详情" :visible.sync="viewShow" width="800px" :close-on-press-escape="false"
@close="showEdu = false">
<div class="content">
<!-- 开始 -->
<div style="background:#F3F4F6">
<div class="cell">
<p class="label">申请类型</p>
<p class="value">{{ viewDetail.category }}</p>
</div>
<div class="cell">
<p class="label">申请内容</p>
<p class="value">{{ viewDetail.contentName }}</p>
</div>
<div class="cell">
<p class="label">姓名</p>
<p class="value">{{ viewDetail.name }}</p>
</div>
<div class="cell">
<p class="label">
{{ viewDetail.passport === 0 ? "身份证" : "护照" }}
</p>
<p class="value">{{ viewDetail.idCard }}</p>
</div>
<div class="cell" v-if="viewDetail.socialPremiumLocation !== null">
<p class="label">工作或社保所在地</p>
<p class="value">{{ viewDetail.socialPremiumLocation }}</p>
</div>
<div class="cell">
<p class="label">工作单位名称</p>
<p class="value">{{ viewDetail.unitName }}</p>
</div>
<div class="cell" v-if="viewDetail.socialUnit">
<p class="label">社保缴纳单位</p>
<p class="value">{{ viewDetail.socialUnit }}</p>
</div>
<div class="cell">
<p class="label">单位统一社会信用代码</p>
<p class="value">{{ viewDetail.socialCredit }}</p>
</div>
<div class="cell">
<p class="label">个人承诺函</p>
<el-image style="height: 100px; max-width: 150px" :src="viewDetail.promise"
:preview-src-list="[viewDetail.promise]" :z-index="1000000" />
</div>
<div class="cell" v-for="(item, index) in viewDetail.pictureList" :key="index">
<template v-if="item.pictureType === 1">
<p class="label">佐证材料(图片)</p>
<el-image style="height: 100px; max-width: 150px" :src="item.picture"
:preview-src-list="[item.picture]" :z-index="1000000" />
</template>
<template v-if="item.pictureType === 2">
<p class="label">佐证材料(文件)</p>
<div class="info">
<p class="item" v-if="item.fileName">
文件名称:{{ item.fileName }}
</p>
<p class="item" v-if="item.documentNumber">
文号:{{ item.documentNumber }}
</p>
<p class="item" v-if="item.issuingOrganization">
发文机构:{{ item.issuingOrganization }}
</p>
<p class="item">
<a class="download" target="_blank" :href="item.picture">下载文件</a>
</p>
</div>
</template>
</div>
</div>
<div v-else-if="scope.row.talentClassification == '3'">
技能人才
</div>
<div v-else-if="scope.row.talentClassification == '4'">
专技人才
</div>
<div v-else>-</div>
</template>
</el-table-column>
<el-table-column
width="120"
prop="overdue"
label="逾期状态"
align="center"
>
<template slot-scope="scope">
<div v-if="scope.row.state == 1">
<div v-if="scope.row.overdue < 3"></div>
<div
class="early"
v-if="scope.row.overdue < 5 && scope.row.overdue >= 3"
></div>
<div class="warning" v-if="scope.row.overdue >= 5"></div>
</div>
</template>
</el-table-column>
<el-table-column
width="120"
key="stateName"
prop="onlineName"
label="状态"
align="center"
>
<template slot-scope="scope">
<el-tag :type="scope.row.type">{{ scope.row.stateName }}</el-tag>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="380" align="left">
<template slot-scope="scope">
<el-button type="primary" size="mini" round @click="view(scope.row)"
>查看</el-button
>
<el-button
type="primary"
size="mini"
round
@click="getRecord(scope.row)"
>记录</el-button
>
<!-- 公示期的单子可以暂停公示 -->
<el-button
v-if="scope.row.state === 2"
type="warning"
size="mini"
round
@click="pause(scope.row.talentCode)"
>暂停公示</el-button
>
<!-- 暂停公示的单子可以恢复公示 -->
<el-button
v-if="scope.row.state === 4"
type="success"
size="mini"
round
@click="recover(scope.row.talentCode)"
>恢复公示</el-button
>
<!-- 审核通过后的单子都可以拉入黑名单撤销 -->
<el-button
v-if="
scope.row.state === 2 ||
scope.row.state === 3 ||
scope.row.state === 4
"
type="danger"
size="mini"
round
@click="blacklist(scope.row.talentCode)"
>撤销</el-button
>
<!-- 审核通过后的单子都可以打印-->
<el-button
size="mini"
round
@click="print(scope.row.talentCode, scope.row)"
>打印</el-button
>
</template>
</el-table-column>
</table-template>
</div>
<!-- 表格end -->
<!-- 拒绝对话框 -->
<el-dialog
title="提示"
:visible.sync="refuseDialog"
width="30%"
class="refuseDialog"
:before-close="cancelBtn"
>
<span
>确定拒绝该人才的申请吗?确定的话请<span style="color: red"
>选择或输入</span
>拒绝原因</span
>
<div>
<el-select
v-model="refuseValue"
placeholder="请选择拒绝原因"
@change="refuseSelect"
>
<el-option
v-for="item in refuseOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div class="refuseTex">
<el-input
type="textarea"
autosize
placeholder="请输入拒绝原因"
v-model="refuseTextarea"
>
</el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="cancelBtn">取 消</el-button>
<el-button type="primary" @click="successBtn">确 定</el-button>
</span>
</el-dialog>
<!-- 人才详情的对话框 -->
<el-dialog
title="人才详情"
:visible.sync="viewShow"
width="800px"
:close-on-press-escape="false"
@close="showEdu = false"
>
<div class="content">
<!-- 开始 -->
<div style="background: #f3f4f6">
<div class="cell">
<p class="label">申请类型</p>
<p class="value">{{ viewDetail.category }}</p>
</div>
<div class="cell">
<p class="label">申请内容</p>
<p class="value">{{ viewDetail.contentName }}</p>
</div>
<div class="cell">
<p class="label">姓名</p>
<p class="value">{{ viewDetail.name }}</p>
</div>
<div class="cell">
<p class="label">
{{ viewDetail.passport === 0 ? "身份证" : "护照" }}
</p>
<p class="value">{{ viewDetail.idCard }}</p>
</div>
<div class="cell" v-if="viewDetail.socialPremiumLocation !== null">
<p class="label">工作或社保所在地</p>
<p class="value">{{ viewDetail.socialPremiumLocation }}</p>
</div>
<div class="cell">
<p class="label">工作单位名称</p>
<p class="value">{{ viewDetail.unitName }}</p>
</div>
<div class="cell" v-if="viewDetail.socialUnit">
<p class="label">社保缴纳单位</p>
<p class="value">{{ viewDetail.socialUnit }}</p>
</div>
<div class="cell">
<p class="label">单位统一社会信用代码</p>
<p class="value">{{ viewDetail.socialCredit }}</p>
</div>
<div class="cell">
<p class="label">个人承诺函</p>
<el-image
style="height: 100px; max-width: 150px"
:src="viewDetail.promise"
:preview-src-list="[viewDetail.promise]"
:z-index="1000000"
/>
</div>
<div
class="cell"
v-for="(item, index) in viewDetail.pictureList"
:key="index"
>
<template v-if="item.pictureType === 1">
<p class="label">佐证材料(图片)</p>
<el-image
style="height: 100px; max-width: 150px"
:src="item.picture"
:preview-src-list="[item.picture]"
:z-index="1000000"
/>
</template>
<template v-if="item.pictureType === 2">
<p class="label">佐证材料(文件)</p>
<div class="info">
<p class="item" v-if="item.fileName">
文件名称:{{ item.fileName }}
</p>
<p class="item" v-if="item.documentNumber">
文号:{{ item.documentNumber }}
</p>
<p class="item" v-if="item.issuingOrganization">
发文机构:{{ item.issuingOrganization }}
</p>
<p class="item">
<a class="download" target="_blank" :href="item.picture"
>下载文件</a
>
</p>
</div>
</template>
</div>
</div>
<!-- 结束 -->
<div class="cell">
<p class="label">申报人所属</p>
<p class="value">
{{ viewDetail.passport === 0 ? "国内" : "港澳台及国外" }}
</p>
</div>
<div class="cell" v-if="viewDetail.socialSecurity">
<p class="label">申报人分类</p>
<p class="value">{{ viewDetail.socialSecurity }}</p>
</div>
<!-- 结束 -->
<div class="cell">
<p class="label">申报人所属</p>
<p class="value">
{{ viewDetail.passport === 0 ? "国内" : "港澳台及国外" }}
</p>
</div>
<div class="cell" v-if="viewDetail.socialSecurity">
<p class="label">申报人分类</p>
<p class="value">{{ viewDetail.socialSecurity }}</p>
</div>
<div class="cell">
<p class="label">性别</p>
<p class="value">{{ viewDetail.sex === 0 ? "男" : "女" }}</p>
</div>
<div class="cell">
<p class="label">出生地</p>
<p class="value">{{ viewDetail.birthPlace }}</p>
</div>
<div class="cell" v-if="viewDetail.nation">
<p class="label">民族</p>
<p class="value">{{ viewDetail.nation }}</p>
</div>
<div class="cell" v-if="viewDetail.politicalFace">
<p class="label">政治面貌</p>
<p class="value">{{ viewDetail.politicalFace }}</p>
</div>
<div class="cell">
<p class="label">出生年月</p>
<p class="value">{{ viewDetail.birthDate }}</p>
</div>
<div class="cell">
<p class="label">手机号</p>
<p class="value">{{ viewDetail.phone }}</p>
</div>
<div class="cell">
<p class="label">
学历所在(<span style="color: red">{{
viewDetail.educationState === 0 ? "校验未通过" : "校验已通过"
}}</span>)
</p>
<p class="value">
{{ viewDetail.educationPassport === 0 ? "国内" : "国外" }}
</p>
<el-button style="margin-left: 20px" size="mini" type="success" @click="viewEdu">查看</el-button>
<el-button style="margin-left: 20px" v-if="viewDetail.educationState === 0" type="primary"
size="mini" @click="passEducation">审核通过</el-button>
</div>
<div class="cell" v-show="showEdu">
<p class="label">学历查验</p>
<div class="item">
<p class="value" v-for="(edu, index) in eduList" :key="index">
{{ edu.cc }}-{{ edu.xxxs }}-{{ edu.yxmc }}-{{ edu.zymc }}
</p>
</div>
</div>
<div class="cell">
<p class="label">最高学历</p>
<p class="value">{{ viewDetail.highestEducation }}</p>
</div>
<div class="cell" v-if="viewDetail.major">
<p class="label">所学专业</p>
<p class="value">{{ viewDetail.major }}</p>
</div>
<div class="cell">
<p class="label">毕业院校</p>
<p class="value">{{ viewDetail.graduateSchool }}</p>
</div>
<!-- <div class="cell">
<div class="cell">
<p class="label">性别</p>
<p class="value">{{ viewDetail.sex === 0 ? "男" : "女" }}</p>
</div>
<div class="cell">
<p class="label">出生地</p>
<p class="value">{{ viewDetail.birthPlace }}</p>
</div>
<div class="cell" v-if="viewDetail.nation">
<p class="label">民族</p>
<p class="value">{{ viewDetail.nation }}</p>
</div>
<div class="cell" v-if="viewDetail.politicalFace">
<p class="label">政治面貌</p>
<p class="value">{{ viewDetail.politicalFace }}</p>
</div>
<div class="cell">
<p class="label">出生年月</p>
<p class="value">{{ viewDetail.birthDate }}</p>
</div>
<div class="cell">
<p class="label">手机号</p>
<p class="value">{{ viewDetail.phone }}</p>
</div>
<div class="cell">
<p class="label">
学历所在(<span style="color: red">{{
viewDetail.educationState === 0 ? "校验未通过" : "校验已通过"
}}</span
>)
</p>
<p class="value">
{{ viewDetail.educationPassport === 0 ? "国内" : "国外" }}
</p>
<el-button
style="margin-left: 20px"
size="mini"
type="success"
@click="viewEdu"
>查看</el-button
>
<el-button
style="margin-left: 20px"
v-if="viewDetail.educationState === 0"
type="primary"
size="mini"
@click="passEducation"
>审核通过</el-button
>
</div>
<div class="cell" v-show="showEdu">
<p class="label">学历查验</p>
<div class="item">
<p class="value" v-for="(edu, index) in eduList" :key="index">
{{ edu.cc }}-{{ edu.xxxs }}-{{ edu.yxmc }}-{{ edu.zymc }}
</p>
</div>
</div>
<div class="cell">
<p class="label">最高学历</p>
<p class="value">{{ viewDetail.highestEducation }}</p>
</div>
<div class="cell" v-if="viewDetail.major">
<p class="label">所学专业</p>
<p class="value">{{ viewDetail.major }}</p>
</div>
<div class="cell">
<p class="label">毕业院校</p>
<p class="value">{{ viewDetail.graduateSchool }}</p>
</div>
<!-- <div class="cell">
<p class="label">入学时间</p>
<p class="value">{{ viewDetail.studyTime }}</p>
</div> -->
<div class="cell">
<p class="label">毕业时间</p>
<p class="value">{{ viewDetail.graduationTime }}</p>
</div>
<!-- <div class="cell" v-if="viewDetail.highestDegree">
<div class="cell">
<p class="label">毕业时间</p>
<p class="value">{{ viewDetail.graduationTime }}</p>
</div>
<!-- <div class="cell" v-if="viewDetail.highestDegree">
<p class="label">最高学位</p>
<p class="value">{{ viewDetail.highestDegree }}</p>
</div> -->
<!-- <div class="cell" v-if="viewDetail.awardingUnit">
<!-- <div class="cell" v-if="viewDetail.awardingUnit">
<p class="label">授予单位</p>
<p class="value">{{ viewDetail.awardingUnit }}</p>
</div> -->
<!-- <div class="cell" v-if="viewDetail.timeGrant">
<!-- <div class="cell" v-if="viewDetail.timeGrant">
<p class="label">授予时间</p>
<p class="value">{{ viewDetail.timeGrant }}</p>
</div> -->
<div class="cell">
<p class="label">职称</p>
<p class="value">{{ viewDetail.title }}</p>
</div>
<div class="cell">
<p class="label">职称</p>
<p class="value">{{ viewDetail.title }}</p>
</div>
<div class="cell">
<p class="label">单位类别</p>
<p class="value">
{{
viewDetail.unitType === "1"
? "企业"
: viewDetail.unitType === "2"
? "事业单位(专技人员)"
: viewDetail.unitType === "3"
? "劳务派遣"
: " "
}}
</p>
</div>
<div class="cell">
<p class="label">单位类别</p>
<p class="value">
{{
viewDetail.unitType === "1"
? "企业"
: viewDetail.unitType === "2"
? "事业单位(专技人员)"
: viewDetail.unitType === "3"
? "劳务派遣"
: " "
}}
</p>
</div>
<div class="cell">
<p class="label">职务/岗位</p>
<p class="value">{{ viewDetail.post }}</p>
</div>
<div class="cell">
<p class="label">单位联系人</p>
<p class="value">{{ viewDetail.contactPerson }}</p>
</div>
<div class="cell">
<p class="label">单位联系电话</p>
<p class="value">{{ viewDetail.contactNumber }}</p>
</div>
<div class="cell">
<p class="label">职务/岗位</p>
<p class="value">{{ viewDetail.post }}</p>
</div>
<div class="cell">
<p class="label">单位联系人</p>
<p class="value">{{ viewDetail.contactPerson }}</p>
</div>
<div class="cell">
<p class="label">单位联系电话</p>
<p class="value">{{ viewDetail.contactNumber }}</p>
</div>
<div class="cell">
<p class="label">个人照片</p>
<el-image style="height: 100px; max-width: 150px" :src="viewDetail.headPortrait"
:preview-src-list="[viewDetail.headPortrait]" :z-index="1000000" />
</div>
<div class="cell" v-if="viewDetail.payroll && viewDetail.unitType == '2'">
<p class="label">工资变动审批表</p>
<a class="download" target="_blank" :href="viewDetail.payroll">下载文件</a>
</div>
<div class="cell" v-if="viewDetail.payroll && viewDetail.unitType == '3'">
<p class="label">劳务派遣合同个人签字和盖章</p>
<el-image style="height: 100px; max-width: 150px" :src="viewDetail.payroll"
:preview-src-list="[viewDetail.payroll]" :z-index="7777777" />
</div>
<!-- <div class="cell" v-if="viewDetail.titleCertificate">-->
<!-- <p class="label">职称证明</p>-->
<!-- <el-image-->
<!-- style="height: 100px; max-width: 150px"-->
<!-- :src="viewDetail.titleCertificate"-->
<!-- :preview-src-list="[viewDetail.titleCertificate]"-->
<!-- />-->
<!-- </div>-->
<div class="cell" v-if="viewDetail.education">
<p class="label">学信网学历证明</p>
<el-image style="height: 100px; max-width: 150px" :src="viewDetail.education"
:preview-src-list="[viewDetail.education]" :z-index="7777777" />
</div>
<div class="cell" v-if="viewDetail.studentStatus">
<p class="label">学信网学籍证明</p>
<el-image style="height: 100px; max-width: 150px" :src="viewDetail.studentStatus" :z-index="7777777"
:preview-src-list="[viewDetail.studentStatus]" />
</div>
</div>
<span slot="footer" class="dialog-footer">
<!-- 申请的单子有通过拒绝-->
<el-button v-if="viewRow.state === 1" type="danger" size="mini" round @click="deny(viewRow)">拒绝
</el-button>
<!-- 通过 -->
<el-button v-if="viewRow.state === 1" type="success" size="mini" round @click="pass(viewRow)">通过
</el-button>
</span>
</el-dialog>
<el-dialog title="操作记录" :visible.sync="recordShow" width="800px" :close-on-press-escape="false">
<div class="content">
<div class="cell" v-for="item in record" :key="item.createTime">
<p class="label" style="margin-right: 20px">
{{ item.stateName }}
<span v-if="item.reason">({{ item.reason }})</span>
</p>
<div class="info">
<p class="item">操作人:{{ item.name }}</p>
<p class="item">操作时间:{{ item.createTime }}</p>
</div>
</div>
<p v-if="record.length === 0">暂无记录~</p>
</div>
</el-dialog>
</div>
<div class="cell">
<p class="label">个人照片</p>
<el-image
style="height: 100px; max-width: 150px"
:src="viewDetail.headPortrait"
:preview-src-list="[viewDetail.headPortrait]"
:z-index="1000000"
/>
</div>
<div
class="cell"
v-if="viewDetail.payroll && viewDetail.unitType == '2'"
>
<p class="label">工资变动审批表</p>
<a class="download" target="_blank" :href="viewDetail.payroll"
>下载文件</a
>
</div>
<div
class="cell"
v-if="viewDetail.payroll && viewDetail.unitType == '3'"
>
<p class="label">劳务派遣合同个人签字和盖章</p>
<el-image
style="height: 100px; max-width: 150px"
:src="viewDetail.payroll"
:preview-src-list="[viewDetail.payroll]"
:z-index="7777777"
/>
</div>
<!-- <div class="cell" v-if="viewDetail.titleCertificate">-->
<!-- <p class="label">职称证明</p>-->
<!-- <el-image-->
<!-- style="height: 100px; max-width: 150px"-->
<!-- :src="viewDetail.titleCertificate"-->
<!-- :preview-src-list="[viewDetail.titleCertificate]"-->
<!-- />-->
<!-- </div>-->
<div class="cell" v-if="viewDetail.education">
<p class="label">学信网学历证明</p>
<el-image
style="height: 100px; max-width: 150px"
:src="viewDetail.education"
:preview-src-list="[viewDetail.education]"
:z-index="7777777"
/>
</div>
<div class="cell" v-if="viewDetail.studentStatus">
<p class="label">学信网学籍证明</p>
<el-image
style="height: 100px; max-width: 150px"
:src="viewDetail.studentStatus"
:z-index="7777777"
:preview-src-list="[viewDetail.studentStatus]"
/>
</div>
</div>
<span slot="footer" class="dialog-footer">
<!-- 申请的单子有通过拒绝-->
<el-button
v-if="viewRow.state === 1"
type="danger"
size="mini"
round
@click="deny(viewRow)"
>拒绝
</el-button>
<!-- 通过 -->
<el-button
v-if="viewRow.state === 1"
type="success"
size="mini"
round
@click="pass(viewRow)"
>通过
</el-button>
</span>
</el-dialog>
<el-dialog
title="操作记录"
:visible.sync="recordShow"
width="800px"
:close-on-press-escape="false"
>
<div class="content">
<div class="cell" v-for="item in record" :key="item.createTime">
<p class="label" style="margin-right: 20px">
{{ item.stateName }}
<span v-if="item.reason">({{ item.reason }})</span>
</p>
<div class="info">
<p class="item">操作人:{{ item.name }}</p>
<p class="item">操作时间:{{ item.createTime }}</p>
</div>
</div>
<p v-if="record.length === 0">暂无记录~</p>
</div>
</el-dialog>
</div>
</template>
<script>
import TableTemplate from "@/components/Table";
import { changeList } from "@/utils";
import {
getList,
updateState,
get,
getRecord,
getBranch,
getType,
educationState,
educationQuery,
getList,
updateState,
get,
getRecord,
getBranch,
getType,
educationState,
educationQuery,
} from "@/api/talents";
import { Message } from "element-ui";
import docxtemplater from "docxtemplater";
......@@ -401,648 +604,664 @@ import JSZipUtils from "jszip-utils";
import { saveAs } from "file-saver";
let stateArr = [
{
state: "",
stateName: "全部",
color: "",
},
{
state: 1,
stateName: "待审核",
type: "warning",
},
{
state: 2,
stateName: "公示中",
type: "warning",
},
{
state: 3,
stateName: "已发码",
type: "success",
},
{
state: 4,
stateName: "公示暂停",
type: "info",
},
{
state: 5,
stateName: "审核拒绝",
type: "warning",
},
{
state: 6,
stateName: "管理撤销",
type: "danger",
},
{
state: 7,
stateName: "强制更新",
type: "danger",
},
{
state: "",
stateName: "全部",
color: "",
},
{
state: 1,
stateName: "待审核",
type: "warning",
},
{
state: 2,
stateName: "公示中",
type: "warning",
},
{
state: 3,
stateName: "已发码",
type: "success",
},
{
state: 4,
stateName: "公示暂停",
type: "info",
},
{
state: 5,
stateName: "审核拒绝",
type: "warning",
},
{
state: 6,
stateName: "管理撤销",
type: "danger",
},
{
state: 7,
stateName: "强制更新",
type: "danger",
},
];
export default {
components: { TableTemplate },
data() {
return {
refuseDialog: false,
refuseValue: "",
refuseTextarea: null,
refuseCode: "",
refuseOptions: [
{
value: 1,
label: "不符合全日制学历要求",
},
{
value: 2,
label: "请上传事业单位工资变动审批表",
},
{
value: 3,
label: "请上传有单位盖章的承诺书",
},
{
value: 4,
label: "您不属于人才码申报范围",
},
{
value: 5,
label: "请上传海外境外学历认证书",
},
{
value: 6,
label: "不符合人才码事业单位专业技术岗和企业全职人员的申报单位要求",
},
{
value: 7,
label: "请上传有单位盖章、本人签字的承诺书",
},
],
branchCode: "", // 管理后台给的code
code: "",
userName: "",
searchForm: {
name: "", // 姓名
phone: "", // 联系方式
unitName: "",
recordName: "",
state: "", // 状态
typeCode: "", // 认定类型
branchCode: "", // 责任部门
talentClassification: "", // 人才分类
socialPremiumLocation: "", // 社保缴纳地
},
loading: false,
// 状态
stateList: [
{
state: "",
stateName: "全部",
color: "",
},
{
state: 1,
stateName: "待审核",
type: "warning",
},
{
state: 2,
stateName: "公示中",
type: "warning",
},
{
state: 3,
stateName: "已发码",
type: "success",
},
// {
// state: 4,
// stateName: "公示暂停",
// type: "info",
// },
// {
// state: 5,
// stateName: "审核拒绝",
// type: "warning",
// },
{
state: 6,
stateName: "已撤销",
type: "danger",
},
{
state: 5,
stateName: "已拒绝",
type: "danger",
},
],
// 责任部门
branchList: [],
// 认定类型
typeList: [],
// 人才类型
talentsList: [
{
id: "",
label: "全部",
},
{
id: "1",
label: "乡土或创新人才",
},
{
id: "2",
label: "学历人才",
},
{
id: "3",
label: "技能人才",
},
{
id: "4",
label: "专技人才",
},
],
tableData: [],
tableColumns: [
{
key: "unitName",
label: "单位名称",
width: 250,
},
// {
// key: "talentCode",
// label: "申请编号",
// width: 200,
// },
{
key: "name",
label: "姓名",
width: 150,
},
// {
// key: "phone",
// label: "手机号",
// },
{
key: "categoryName",
label: "认定类型",
width: 100,
},
{
key: "contentName",
label: "申请内容",
width: 250,
},
{
key: "updateTime",
label: "更新时间",
width: 180,
},
{
key: "recordVOS[0].name",
label: "操作人",
width: 180,
},
],
pagination: {
total: 0,
pageSize: 10,
currentPage: 1,
},
viewShow: false,
viewDetail: {},
record: [],
recordShow: false,
showEdu: false,
eduList: [],
// 查看对话框当前row
viewRow: {},
};
},
watch: {
$route() {
if (this.$route) {
this.userName = localStorage.getItem('userName');
this.branchCode = this.$route.query.branchCode ? this.$route.query.branchCode : ''
this.code = this.$route.query.code ? this.$route.query.code : ''
this.searchForm.name = ''
this.searchForm.phone = ''
this.searchForm.typeCode = ''
this.searchForm.state = ''
this.searchForm.recordName = ''
this.searchForm.unitName = ''
this.init();
this.initType();
if (!this.branchCode) {
this.initBranch();
}
}
}
},
methods: {
switechBranch(branchCode) {
switch (branchCode) {
case "5":
return "镇江市区";
case "17":
return "丹阳市";
case "18":
return "句容市";
case "19":
return "扬中市";
}
components: { TableTemplate },
data() {
return {
refuseDialog: false,
refuseValue: "",
refuseTextarea: null,
refuseCode: "",
refuseOptions: [
{
value: 1,
label: "不符合全日制学历要求",
},
init() {
this.tableData = []
this.loading = true;
// console.log(1);
// console.log("this.branchCode---", this.branchCode);
let params = {
name: this.searchForm.name,
phone: this.searchForm.phone,
typeCode: this.searchForm.typeCode,
state: this.searchForm.state,
recordName: this.searchForm.recordName,
unitName: this.searchForm.unitName,
branchCode: this.branchCode ? this.branchCode : this.searchForm.branchCode,
pageNum: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
talentClassification: this.searchForm.talentClassification, // 人才分类
socialPremiumLocation: this.switechBranch(this.code), // 社保缴纳地
};
// console.log("params-----", params);
getList(params).then((res) => {
this.loading = false;
if (res.success) {
this.pagination.total = res.data.total;
if (res.data.total) {
this.tableData = res.data.list.map((item) => {
// console.log("人才码列表----", item);
item.updateTime = item.updateTime.substring(0, 10);
item.stateName = this.getSatusArr(item.state).stateName;
item.type = this.getSatusArr(item.state).type;
return item;
});
var date = new Date();
var time = date.getTime();
var oneDay = 1000 * 60 * 60 * 24;
this.tableData = this.tableData.map((item) => {
item.overdue = Math.floor(
(time - new Date(item.updateTime).getTime()) / oneDay
);
return item;
});
if (localStorage.getItem('userName') == 'admin') {
this.tableData = changeList(this.tableData)
}
} else {
this.tableData = []
}
}
});
{
value: 2,
label: "请上传事业单位工资变动审批表",
},
initType() {
this.typeList = [{
typeCode: "",
typeName: "全部",
},]
getType({}).then((res) => {
this.typeList = this.typeList.concat(res.data);
});
{
value: 3,
label: "请上传有单位盖章的承诺书",
},
initBranch() {
this.branchList = [{
branchCode: "",
branchName: "全部",
},]
getBranch({}).then((res) => {
this.branchList = this.branchList.concat(res.data);
console.log("this.branchList----", this.branchList);
});
{
value: 4,
label: "您不属于人才码申报范围",
},
jumpPage() {
this.init();
{
value: 5,
label: "请上传海外境外学历认证书",
},
onSubmit() {
this.pagination.currentPage = 1;
this.init();
{
value: 6,
label: "不符合人才码事业单位专业技术岗和企业全职人员的申报单位要求",
},
view(row) {
let params = {
talentCode: row.talentCode,
};
get(params).then((res) => {
this.viewDetail = res.data;
this.viewRow = row;
this.viewShow = true;
});
{
value: 7,
label: "请上传有单位盖章、本人签字的承诺书",
},
getRecord(row) {
let params = {
talentCode: row.talentCode,
};
getRecord(params).then((res) => {
this.record = res.data.map((item) => {
item.stateName = this.getSatusArr(item.state)
? this.getSatusArr(item.state).stateName
: "未知状态";
return item;
});
this.recordShow = true;
});
],
branchCode: "", // 管理后台给的code
code: "",
userName: "",
searchForm: {
name: "", // 姓名
phone: "", // 联系方式
unitName: "",
recordName: "",
state: "", // 状态
typeCode: "", // 认定类型
branchCode: "", // 责任部门
talentClassification: "", // 人才分类
socialPremiumLocation: "", // 社保缴纳地
},
loading: false,
// 状态
stateList: [
{
state: "",
stateName: "全部",
color: "",
},
print(talentCode, row) {
// console.log("row---", row);
get({ talentCode }).then((res) => {
// console.log(res);
let arr = res.data;
arr.nation = arr.nation ? arr.nation : "";
arr.politicalFace = arr.politicalFace ? arr.politicalFace : "";
arr.major = arr.major ? arr.major : "";
// arr.highestDegree = arr.highestDegree ? arr.highestDegree : "";
arr.awardingUnit = arr.awardingUnit ? arr.awardingUnit : "";
arr.timeGrant = arr.timeGrant ? arr.timeGrant : "";
arr.unitTypeName = arr.unitType === "1" ? "企业" : "事业单位(专技人员)";
arr.sexName = arr.sex === 0 ? "男" : "女";
arr.adoptTime = row.state === 3 ? arr.adoptTime : "";
arr.promiseDes = arr.promise ? "已上传" : "未上传";
arr.pictureDes = arr.pictureList.length > 0 ? "已上传" : "未上传";
arr.educationDes = arr.education ? "已验证" : "未上传";
arr.studentStatusDes = arr.studentStatus ? "已验证" : "未上传";
let docxsrc = "./static/talents.docx"; //模板文件的位置
let docxname = "人才码审核表"; //导出文件的名字
// 读取并获得模板文件的二进制内容
JSZipUtils.getBinaryContent(docxsrc, function (error, content) {
// docxsrc是模板。我们在导出的时候,会根据此模板来导出对应的数据
// 抛出异常
if (error) {
throw error;
}
// 创建一个PizZip实例,内容为模板的内容
// console.log(content);
// console.log(error);
let zip = new PizZip(content);
// 创建并加载docx templater实例对象
let doc = new docxtemplater().loadZip(zip);
// 设置模板变量的值
doc.setData({
...arr, // e中的数据可以再模板中直接使用
});
try {
// 用模板变量的值替换所有模板变量
doc.render();
} catch (error) {
// 抛出异常
let e = {
message: error.message,
name: error.name,
stack: error.stack,
properties: error.properties,
};
console.log(
JSON.stringify({
error: e,
})
);
throw error;
}
// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)
let out = doc.getZip().generate({
type: "blob",
mimeType:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
// 将目标文件对象保存为目标类型的文件,并命名
saveAs(out, docxname);
});
});
{
state: 1,
stateName: "待审核",
type: "warning",
},
pass(row) {
if (this.viewDetail.educationState === 0) {
this.$message.error("学历验证未通过,请先通过学历验证!");
return;
}
this.$confirm("确定通过该人才的申请吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let params = {
talentCode: row.talentCode,
userName: this.userName,
state: 2,
};
updateState(params).then((res) => {
console.log(res);
Message.success("审核通过");
this.viewShow = false;
this.init();
});
})
.catch(() => {
// console.log("取消审核");
});
{
state: 2,
stateName: "公示中",
type: "warning",
},
passEducation() {
if (this.viewDetail.educationState !== 0) return;
educationState({
educationState: 1,
talentCode: this.viewDetail.talentCode,
}).then((res) => {
// console.log("审核按钮res-----", res);
if (res.success) {
this.viewDetail.educationState = 1;
this.init();
} else {
this.$message.error(res.msg);
}
});
{
state: 3,
stateName: "已发码",
type: "success",
},
viewEdu() {
educationQuery({
idCard: this.viewDetail.idCard,
name: this.viewDetail.name,
}).then((res) => {
if (res.success) {
if (res.data.data && res.data.data.length > 0) {
this.showEdu = true;
this.eduList = res.data.data;
} else {
this.$message.error(res.data.msg);
}
} else {
this.$message.error(res.msg);
}
});
// {
// state: 4,
// stateName: "公示暂停",
// type: "info",
// },
// {
// state: 5,
// stateName: "审核拒绝",
// type: "warning",
// },
{
state: 6,
stateName: "已撤销",
type: "danger",
},
refuseSelect(val) {
// console.log("--------", val);
this.refuseTextarea = val
? this.refuseOptions.find((ele) => ele.value === val).label
: "";
{
state: 5,
stateName: "已拒绝",
type: "danger",
},
// 拒绝对话框
deny(talentCode) {
this.refuseDialog = true;
this.refuseCode = talentCode;
],
// 责任部门
branchList: [],
// 认定类型
typeList: [],
// 人才类型
talentsList: [
{
id: "",
label: "全部",
},
cancelBtn() {
this.refuseTextarea = null;
this.refuseValue = "";
this.refuseDialog = false;
{
id: "1",
label: "乡土或创新人才",
},
successBtn() {
if (this.refuseTextarea === null || this.refuseTextarea == "") {
this.$message.error("未输入拒绝原因");
} else {
// console.log("this.refuseTextarea----", this.refuseTextarea);
// console.log("this.refuseCode----", this.refuseCode);
let params = {
talentCode: this.refuseCode.talentCode,
userName: this.userName,
state: 5,
reason: this.refuseTextarea,
};
updateState(params).then((res) => {
console.log("res---", res);
Message.success("审核拒绝");
this.viewShow = false;
this.init();
});
this.refuseDialog = false;
}
{
id: "2",
label: "学历人才",
},
// deny(talentCode) {
// console.log('talentCode----',talentCode);
// this.$prompt("确定拒绝该人才的申请吗?确定的话,请输入拒绝原因。", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// inputPlaceholder: "请输入拒绝原因",
// inputType: "textarea",
// })
// .then(({ value }) => {
// if (!value) {
// this.$message.error("未输入拒绝原因");
// } else {
// let params = {
// talentCode,
// userName: this.userName,
// state: 5,
// reason: value,
// };
// updateState(params).then((res) => {
// console.log(res);
// Message.success("审核拒绝");
// this.init();
// });
// }
// })
// .catch(() => {
// console.log("取消");
// });
{
id: "3",
label: "技能人才",
},
{
id: "4",
label: "专技人才",
},
],
tableData: [],
tableColumns: [
{
key: "unitName",
label: "单位名称",
width: 250,
},
// {
// key: "talentCode",
// label: "申请编号",
// width: 200,
// },
{
key: "name",
label: "姓名",
width: 150,
},
// {
// key: "phone",
// label: "手机号",
// },
pause(talentCode) {
this.$confirm("确定暂停该人才的公示吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let params = {
talentCode,
userName: this.userName,
state: 4,
};
updateState(params).then((res) => {
console.log(res);
Message.success("暂停成功");
this.init();
});
})
.catch(() => {
// console.log("取消暂停");
});
{
key: "categoryName",
label: "认定类型",
width: 100,
},
recover(talentCode) {
this.$confirm("确定恢复该人才的公示吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let params = {
talentCode,
userName: this.userName,
state: 2,
};
updateState(params).then((res) => {
console.log(res);
Message.success("恢复成功");
this.init();
});
})
.catch(() => {
// console.log("取消恢复");
});
{
key: "contentName",
label: "申请内容",
width: 250,
},
blacklist(talentCode) {
this.$prompt(
"确定撤销该申请吗?此操作后去需要重亲提交申请!确定的话,请输入原因。",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
inputPlaceholder: "请输入原因",
inputType: "textarea",
}
)
.then(({ value }) => {
if (!value) {
this.$message.error("未输入拒绝原因");
} else {
let params = {
talentCode,
userName: this.userName,
state: 6,
reason: value,
};
updateState(params).then((res) => {
console.log(res);
Message.success("撤销成功");
this.init();
});
}
})
.catch(() => {
// console.log("取消");
});
{
key: "updateTime",
label: "更新时间",
width: 180,
},
getSatusArr(state) {
return stateArr.filter((item) => {
return item.state === state;
})[0];
{
key: "recordVOS[0].name",
label: "操作人",
width: 180,
},
},
created() {
this.userName = localStorage.getItem('userName');
this.branchCode = this.$route.query.branchCode ? this.$route.query.branchCode : ''
this.code = this.$route.query.code ? this.$route.query.code : ''
],
pagination: {
total: 0,
pageSize: 10,
currentPage: 1,
},
viewShow: false,
viewDetail: {},
record: [],
recordShow: false,
showEdu: false,
eduList: [],
// 查看对话框当前row
viewRow: {},
};
},
watch: {
$route() {
if (this.$route) {
this.userName = localStorage.getItem("userName");
this.branchCode = this.$route.query.branchCode
? this.$route.query.branchCode
: "";
this.code = this.$route.query.code ? this.$route.query.code : "";
this.searchForm.name = "";
this.searchForm.phone = "";
this.searchForm.typeCode = "";
this.searchForm.state = "";
this.searchForm.recordName = "";
this.searchForm.unitName = "";
this.init();
this.initType();
if (!this.branchCode) {
this.initBranch();
this.initBranch();
}
}
},
},
methods: {
switechBranch(branchCode) {
switch (branchCode) {
case "5":
return "镇江市区";
case "17":
return "丹阳市";
case "18":
return "句容市";
case "19":
return "扬中市";
}
},
init() {
this.tableData = [];
this.loading = true;
// console.log(1);
// console.log("this.branchCode---", this.branchCode);
let params = {
name: this.searchForm.name,
phone: this.searchForm.phone,
typeCode: this.searchForm.typeCode,
state: this.searchForm.state,
recordName: this.searchForm.recordName,
unitName: this.searchForm.unitName,
branchCode: this.branchCode
? this.branchCode
: this.searchForm.branchCode,
pageNum: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
talentClassification: this.searchForm.talentClassification, // 人才分类
socialPremiumLocation: this.switechBranch(this.code), // 社保缴纳地
};
// console.log("params-----", params);
getList(params).then((res) => {
this.loading = false;
if (res.success) {
this.pagination.total = res.data.total;
if (res.data.total) {
this.tableData = res.data.list.map((item) => {
// console.log("人才码列表----", item);
item.updateTime = item.updateTime?.substring(0, 10);
item.stateName = this.getSatusArr(item.state).stateName;
item.type = this.getSatusArr(item.state).type;
return item;
});
var date = new Date();
var time = date.getTime();
var oneDay = 1000 * 60 * 60 * 24;
this.tableData = this.tableData.map((item) => {
item.overdue = Math.floor(
(time - new Date(item.updateTime).getTime()) / oneDay
);
return item;
});
if (localStorage.getItem("userName") == "admin") {
this.tableData = changeList(this.tableData);
}
} else {
this.tableData = [];
}
}
});
},
initType() {
this.typeList = [
{
typeCode: "",
typeName: "全部",
},
];
getType().then((res) => {
console.log(res);
if (res.code == 200) {
console.log("initType--->", res);
this.typeList = this.typeList.concat(res.data);
}
});
},
initBranch() {
this.branchList = [
{
branchCode: "",
branchName: "全部",
},
];
getBranch({}).then((res) => {
this.branchList = this.branchList.concat(res.data);
console.log("this.branchList----", this.branchList);
});
},
jumpPage() {
this.init();
},
onSubmit() {
this.pagination.currentPage = 1;
this.init();
},
view(row) {
let params = {
talentCode: row.talentCode,
};
get(params).then((res) => {
this.viewDetail = res.data;
this.viewRow = row;
this.viewShow = true;
});
},
getRecord(row) {
let params = {
talentCode: row.talentCode,
};
getRecord(params).then((res) => {
this.record = res.data.map((item) => {
item.stateName = this.getSatusArr(item.state)
? this.getSatusArr(item.state).stateName
: "未知状态";
return item;
});
this.recordShow = true;
});
},
print(talentCode, row) {
// console.log("row---", row);
get({ talentCode }).then((res) => {
// console.log(res);
let arr = res.data;
arr.nation = arr.nation ? arr.nation : "";
arr.politicalFace = arr.politicalFace ? arr.politicalFace : "";
arr.major = arr.major ? arr.major : "";
// arr.highestDegree = arr.highestDegree ? arr.highestDegree : "";
arr.awardingUnit = arr.awardingUnit ? arr.awardingUnit : "";
arr.timeGrant = arr.timeGrant ? arr.timeGrant : "";
arr.unitTypeName = arr.unitType === "1" ? "企业" : "事业单位(专技人员)";
arr.sexName = arr.sex === 0 ? "男" : "女";
arr.adoptTime = row.state === 3 ? arr.adoptTime : "";
arr.promiseDes = arr.promise ? "已上传" : "未上传";
arr.pictureDes = arr.pictureList.length > 0 ? "已上传" : "未上传";
arr.educationDes = arr.education ? "已验证" : "未上传";
arr.studentStatusDes = arr.studentStatus ? "已验证" : "未上传";
let docxsrc = "./static/talents.docx"; //模板文件的位置
let docxname = "人才码审核表"; //导出文件的名字
// 读取并获得模板文件的二进制内容
JSZipUtils.getBinaryContent(docxsrc, function (error, content) {
// docxsrc是模板。我们在导出的时候,会根据此模板来导出对应的数据
// 抛出异常
if (error) {
throw error;
}
// 创建一个PizZip实例,内容为模板的内容
// console.log(content);
// console.log(error);
let zip = new PizZip(content);
// 创建并加载docx templater实例对象
let doc = new docxtemplater().loadZip(zip);
// 设置模板变量的值
doc.setData({
...arr, // e中的数据可以再模板中直接使用
});
try {
// 用模板变量的值替换所有模板变量
doc.render();
} catch (error) {
// 抛出异常
let e = {
message: error.message,
name: error.name,
stack: error.stack,
properties: error.properties,
};
console.log(
JSON.stringify({
error: e,
})
);
throw error;
}
// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)
let out = doc.getZip().generate({
type: "blob",
mimeType:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
// 将目标文件对象保存为目标类型的文件,并命名
saveAs(out, docxname);
});
});
},
pass(row) {
if (this.viewDetail.educationState === 0) {
this.$message.error("学历验证未通过,请先通过学历验证!");
return;
}
this.$confirm("确定通过该人才的申请吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let params = {
talentCode: row.talentCode,
userName: this.userName,
state: 2,
};
updateState(params).then((res) => {
console.log(res);
Message.success("审核通过");
this.viewShow = false;
this.init();
});
})
.catch(() => {
// console.log("取消审核");
});
},
passEducation() {
if (this.viewDetail.educationState !== 0) return;
educationState({
educationState: 1,
talentCode: this.viewDetail.talentCode,
}).then((res) => {
// console.log("审核按钮res-----", res);
if (res.success) {
this.viewDetail.educationState = 1;
this.init();
} else {
this.$message.error(res.msg);
}
});
},
viewEdu() {
educationQuery({
idCard: this.viewDetail.idCard,
name: this.viewDetail.name,
}).then((res) => {
if (res.success) {
if (res.data.data && res.data.data.length > 0) {
this.showEdu = true;
this.eduList = res.data.data;
} else {
this.$message.error(res.data.msg);
}
} else {
this.$message.error(res.msg);
}
});
},
refuseSelect(val) {
// console.log("--------", val);
this.refuseTextarea = val
? this.refuseOptions.find((ele) => ele.value === val).label
: "";
},
// 拒绝对话框
deny(talentCode) {
this.refuseDialog = true;
this.refuseCode = talentCode;
},
cancelBtn() {
this.refuseTextarea = null;
this.refuseValue = "";
this.refuseDialog = false;
},
successBtn() {
if (this.refuseTextarea === null || this.refuseTextarea == "") {
this.$message.error("未输入拒绝原因");
} else {
// console.log("this.refuseTextarea----", this.refuseTextarea);
// console.log("this.refuseCode----", this.refuseCode);
let params = {
talentCode: this.refuseCode.talentCode,
userName: this.userName,
state: 5,
reason: this.refuseTextarea,
};
updateState(params).then((res) => {
console.log("res---", res);
Message.success("审核拒绝");
this.viewShow = false;
this.init();
});
this.refuseDialog = false;
}
},
// deny(talentCode) {
// console.log('talentCode----',talentCode);
// this.$prompt("确定拒绝该人才的申请吗?确定的话,请输入拒绝原因。", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// inputPlaceholder: "请输入拒绝原因",
// inputType: "textarea",
// })
// .then(({ value }) => {
// if (!value) {
// this.$message.error("未输入拒绝原因");
// } else {
// let params = {
// talentCode,
// userName: this.userName,
// state: 5,
// reason: value,
// };
// updateState(params).then((res) => {
// console.log(res);
// Message.success("审核拒绝");
// this.init();
// });
// }
// })
// .catch(() => {
// console.log("取消");
// });
// },
pause(talentCode) {
this.$confirm("确定暂停该人才的公示吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let params = {
talentCode,
userName: this.userName,
state: 4,
};
updateState(params).then((res) => {
console.log(res);
Message.success("暂停成功");
this.init();
});
})
.catch(() => {
// console.log("取消暂停");
});
},
recover(talentCode) {
this.$confirm("确定恢复该人才的公示吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let params = {
talentCode,
userName: this.userName,
state: 2,
};
updateState(params).then((res) => {
console.log(res);
Message.success("恢复成功");
this.init();
});
})
.catch(() => {
// console.log("取消恢复");
});
},
blacklist(talentCode) {
this.$prompt(
"确定撤销该申请吗?此操作后去需要重亲提交申请!确定的话,请输入原因。",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
inputPlaceholder: "请输入原因",
inputType: "textarea",
}
)
.then(({ value }) => {
if (!value) {
this.$message.error("未输入拒绝原因");
} else {
let params = {
talentCode,
userName: this.userName,
state: 6,
reason: value,
};
updateState(params).then((res) => {
console.log(res);
Message.success("撤销成功");
this.init();
});
}
})
.catch(() => {
// console.log("取消");
});
},
getSatusArr(state) {
return stateArr.filter((item) => {
return item.state === state;
})[0];
},
},
created() {
this.userName = localStorage.getItem("userName");
this.branchCode = this.$route.query.branchCode
? this.$route.query.branchCode
: "";
this.code = this.$route.query.code ? this.$route.query.code : "";
this.init();
this.initType();
if (!this.branchCode) {
this.initBranch();
}
},
};
</script>
<style lang="stylus" scoped>
@import '~@/stylus/common';
.table-wrapper1{
......@@ -1135,4 +1354,3 @@ export default {
border-radius: 2px;
}
</style>
\ No newline at end of file
const env = process.env.NODE_ENV === "production";
const publicPath = env ? "/manage-h5/" : "/"; //正式
// const publicPath = env ? "/smartExam-h5/" : "/"; //测试
// const publicPath = env ? "/manage-h5/" : "/"; //正式
const publicPath = env ? "/smartExam-h5/" : "/"; //测试
module.exports = {
publicPath,
......
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