企业端待办、备忘录导出、企业库对接⌈ 字段复制来自项目详情还未更改 ⌋

prod
吕天方 8 months ago
parent 5dc404e879
commit 07608cbd32

@ -1,6 +1,6 @@
{
"name": "ruoyi",
"version": "1.0.202405241500",
"version": "1.0.202405281028",
"description": "金鸡湖现代服务业品牌管理系统",
"author": "若依",
"license": "MIT",

@ -0,0 +1,45 @@
import request from "@/utils/request"
// 分页查询企业基础信息
export function getEnterList(params) {
return request({
url: "/system/enterpriseBasicInfo/list",
method: "get",
params
})
}
// 新增企业基础信息
export function enterpriseBasicInfoNew(data) {
return request({
url: "/system/enterpriseBasicInfo",
method: "post",
data
})
}
// 修改企业基础信息
export function enterpriseBasicInfoChange(data) {
return request({
url: "/system/enterpriseBasicInfo",
method: "put",
data
})
}
// 根据主键查询企业基础信息
export function enterpriseBasicInfoId(id) {
return request({
url: "/system/enterpriseBasicInfo/" + id,
method: "get",
})
}
// 删除企业基础信息
export function enterpriseBasicInfoDel(params) {
return request({
url: "/system/enterpriseBasicInfo" + id,
method: "delete",
params
})
}

@ -0,0 +1,19 @@
import request from "@/utils/request"
// 工作台查项目
export function selectAll(params) {
return request({
url: "/jjh/jProject/selectAll",
method: "get",
params
})
}
// 工作台查企业
export function workSearch(params) {
return request({
url: "/system/enterpriseBasicInfo/workSearch",
method: "get",
params
})
}

@ -18,7 +18,7 @@ export function jPolicyFileNew(data) {
})
}
// 删除政策文件
// 修改政策文件
export function jPolicyFileChange(data) {
return request({
url: "/jjh/jPolicyFile",

@ -35,10 +35,17 @@
background-color: #fff;
header {
margin-bottom: 25px;
.btnss {
display: flex;
align-items: center;
}
.import-btn {
margin-top: 3px;
padding: 6px 15px;
}
.import-btn-export {
padding: 8px 20px;
}
}
section {
width: 100%;

@ -16,7 +16,7 @@
<!-- <i class="icon iconfont icon-jc-55fanhui" @click="back" v-show="$route.meta.title == '项目详情'"></i> -->
<el-button
type="primary"
v-show="$route.meta.title == '项目详情'"
v-show="$route.meta.title == '项目详情' || $route.meta.title == '企业详情'"
icon="icon iconfont icon-jc-55fanhui"
size="mini"
@click="back"

@ -130,6 +130,12 @@ export const constantRoutes = [
name: 'projectInfo',
meta: { title: '项目详情', icon: 'user' }
},
{
path: 'enterInfo',
component: () => import('@/views/enterpriselibrary/projectInfo/index'),
name: 'enterInfo',
meta: { title: '企业详情', icon: 'user' }
},
]
}
];

@ -136,7 +136,7 @@ export default {
},
handleCurrentChange(val) {
this.mypageNum = val;
console.log(68 / 10);
// console.log(68 / 10);
this.$emit('pagination', { page: val, limit: this.pageSize })
if (this.autoScroll) {
scrollTo(0, 800)

@ -3,21 +3,15 @@
<div class="L-main">
<header id="L-header">
<el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom">
<el-col :span="22">
<el-form-item label="企业名称:" prop="name">
<el-input v-model.trim="formInline.name" placeholder="请输入内容"></el-input>
<el-col :span="20">
<el-form-item label="企业名称:" prop="enterpriseName">
<el-input v-model.trim="formInline.enterpriseName" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="统一社会信用代码:" prop="enterUnit">
<!-- <el-form-item label="统一社会信用代码:" prop="enterUnit">
<el-input v-model.trim="formInline.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="经营状态:" prop="policyLevel">
<el-select class="ignoreElement" v-model="formInline.policyLevel" placeholder="请选择">
<!-- <el-option
v-for="dict in dict.type.jjh_project_type"
:key="dict.value"
:label="dict.label"
:value="dict.value">
</el-option> -->
<el-option
label="省级"
value="0">
@ -27,33 +21,41 @@
value="1">
</el-option>
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item>
<el-button size="mini" @click="resetQuery('queryFrom')"></el-button>
<el-button size="mini" type="primary" @click="handleQuery('queryFrom')"></el-button>
</el-form-item>
</el-col>
<!-- <el-col :span="2">
<el-button v-if="userType !== '01'" type="primary" class="import-btn" icon="el-icon-plus" size="mini" @click="importBtn"></el-button>
</el-col> -->
<el-col :span="4">
<div class="btnss">
<el-button type="primary" class="import-btn" icon="icon iconfont icon-jc-daoru" size="mini" @click="importBtn"></el-button>
<el-button type="primary" class="import-btn import-btn-export" size="mini" @click="deriveBtn" :loading="exportLoading">导出</el-button>
</div>
</el-col>
</el-form>
</header>
<section>
<el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column label="企业名称" prop="name" />
<el-table-column label="统一社会信用代码" prop="enterUnit" width="140px" />
<el-table-column label="法定代表人" prop="policyLevel" />
<el-table-column label="企业名称" prop="enterpriseName" />
<el-table-column label="统一社会信用代码" prop="creditCode" />
<!-- <el-table-column label="法定代表人" prop="policyLevel" />
<el-table-column label="经营状态" prop="enterTime" />
<el-table-column label="成立日期" prop="createBy" />
<el-table-column label="注册资本" prop="createTime" />
<el-table-column label="企业类型" prop="createTime" />
<el-table-column label="所属行业" prop="createTime" />
<el-table-column label="组织机构代码" prop="createTime" />
<el-table-column label="注册资本" prop="createTime" /> -->
<el-table-column label="企业类型" prop="" />
<el-table-column label="所属行业" prop="" />
<el-table-column label="成立日期" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime,"{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="组织机构代码" prop="createTime" />
<el-table-column label="参保人数" prop="createTime" />
<el-table-column label="曾用名" prop="createTime" />
<el-table-column label="注册地址" prop="createTime" />
<el-table-column label="注册类型" prop="createTime" />
<el-table-column label="经营范围" prop="createTime" />
<el-table-column label="经营范围" prop="createTime" /> -->
<el-table-column label="操作" prop="userId" class-name="table-operation">
<template slot-scope="scope">
<span class="look-info" @click="goInfo(scope.row)"></span>
@ -74,99 +76,57 @@
</div>
<!-- :rules="rules" -->
<my-dialog :title="title" @close="importClose" @confirm="confirm" ref="importProject" closeText="关闭" :myclass="true">
<el-form :model="addFrom" size="small" ref="importFrom" label-width="120px" class="newArticle" disabled>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="企业名称:" class="importFormItem" prop="name">
<el-input v-model.trim="addFrom.name" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="统一社会信用代码:" class="importFormItem" prop="policyLevel">
<el-input v-model.trim="addFrom.policyLevel" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="法定代表人:" class="importFormItem" prop="enterUnit">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经营状态:" class="importFormItem" prop="enterTime">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="成立日期:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册资本:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="企业类型:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属行业:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="组织机构代码:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="参保人数:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="曾用名:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册地址:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="注册类型:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经营范围:" class="importFormItem" prop="joinProject">
<el-input v-model.trim="addFrom.enterUnit" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row>
<el-col :span="12">
<div class="btnsFlex">
<el-button type="primary" class="import-btn" icon="icon iconfont icon-jc-daoru" size="mini" @click="importExcel"></el-button>
<el-upload
ref="upload"
:limit="1"
v-show="false"
accept=".xlsx, .xls"
:before-upload="handleBeforeUpload"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
>
<template slot="trigger">
<!-- <div ref="uploadRef">
<i class="icon iconfont icon-jc-daoru"></i>
导入新项目
</div> -->
<el-button type="primary" class="import-btn" icon="icon iconfont icon-jc-daoru" size="mini" ref="uploadRef">导入企业</el-button>
</template>
</el-upload>
</div>
</el-col>
<el-col :span="12">
<el-button type="text">下载模板</el-button>
</el-col>
<!-- <el-col :span="12">
文件列表
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
<li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
<el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
</el-link>
<div class="ele-upload-list__item-content-action">
<el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link>
</div>
</li>
</transition-group>
</el-col> -->
</el-row>
</my-dialog>
</div>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import myDialog from "@/views/components/myDialog/index.vue"
import { getJPolicyFile, jPolicyFileNew, jPolicyFileChange, jPolicyFileId, jPolicyFileDel } from "@/api/jin_ji_hu/policyDocument"
import { getEnterList, enterpriseBasicInfoNew, enterpriseBasicInfoChange, enterpriseBasicInfoId, enterpriseBasicInfoDel } from "@/api/jin_ji_hu/enterList"
import { getToken } from "@/utils/auth";
export default {
components:{myPagination, myDialog},
dicts: ['jjh_project_type'],
@ -181,21 +141,9 @@ export default {
},
loading:false,
formInline: {
name: '',
enterUnit:"",
policyLevel:"",
enterpriseName: '',
},
tableData:[
// {
// projectName:"[2021]101 2021 ",
// project:"CDMO",
// unit:"",
// grade:"",
// issueTime:"2023-03-19",
// user:"",
// uploadingTime:"2023-05-11 14:00",
// }
],
tableData:[],
tabHeader: undefined,
addFrom: {
name:"",
@ -221,15 +169,32 @@ export default {
{ required: true, message: '请选择关联项目', trigger: 'change' }
],
},
title:"新增发文",
title:"导入企业",
infoVisible:false,
baseUrl: process.env.VUE_APP_BASE_API,
//
upload: {
//
isUploading: false,
//
updateSupport: 0,
//
headers: { Authorization: "Bearer " + getToken() },
//
url: process.env.VUE_APP_BASE_API + "/system/enterpriseBasicInfo/importEnterprise"
},
fileList: [],
number: 0,
uploadList: [],
//
exportLoading: false,
}
},
mounted() {
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
// this.getList();
this.getList();
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
@ -238,17 +203,17 @@ export default {
//
getList(){
this.loading = true;
getJPolicyFile(this.pagination).then(res=>{
getEnterList(this.pagination).then(res=>{
this.loading = false;
this.total = res.data.total;
this.tableData = res.data.records;
this.total = res.total;
this.tableData = res.rows;
})
},
//
getPagination(pages) {
this.pagination.current = pages.page;
this.pagination.size = pages.limit;
// this.getList();
this.getList();
},
//
handleQuery() {
@ -259,7 +224,7 @@ export default {
this.pagination = { ...this.pagination,...this.formInline };
// console.log(this.pagination);
// console.log(this.formInline);
// this.getList();
this.getList();
},
//
resetQuery(formName){
@ -268,7 +233,7 @@ export default {
current: 1,
size: 10
}
// this.getList();
this.getList();
},
// table
tableRowClassName({row, rowIndex}){
@ -277,84 +242,91 @@ export default {
}
return '';
},
//
goInfo(rwo){
this.$router.push({
name: 'enterInfo',
query: { userId: rwo.id }
})
},
//
editInfo(row){
},
//
deriveBtn(){
this.$confirm("是否确认导出企业库数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.exportLoading = true;
this.download(
"/system/enterpriseBasicInfo/export",
{
...this.formInline
},
"企业库数据" + new Date().getTime() + ".xlsx"
);
this.exportLoading = false;
})
.catch(() => { });
},
//
importBtn(){
this.title = "新增发文";
this.$refs.importProject.open();
},
//
importClose(){
this.$nextTick(()=>{
this.$refs.importFrom.resetFields();
//
importExcel(){
this.$refs['upload'].$refs['upload-inner'].handleClick()
},
//
handleBeforeUpload(file) {
this.$modal.loading("正在上传文件,请稍候...");
return true;
},
handleFileUploadProgress(){},
//
handleFileSuccess(response, file, fileList) {
if(response.code === 200) {
this.$refs.upload.clearFiles();
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.importClose();
this.$refs.importProject.close();
this.addFrom = {
name:"",
joinProject:"",
enterUnit:"",
policyLevel:"",
enterTime:"",
}
})
this.$modal.closeLoading();
this.getList();
} else {
this.$modal.closeLoading();
this.$modal.msgError(response.msg);
}
},
//
infoClose(){
this.addFrom = {}
this.infoVisible = false;
//
importClose(){
this.$refs.importProject.close();
},
//
goInfo(row){
this.title = "企业详情"
jPolicyFileId(row.id).then((res=>{
if(res.code == 200) {
this.addFrom = res.data;
this.addFrom.joinProject = this.addFrom.joinProject + ''
this.$refs.importProject.open();
}
}))
//
handleDelete(index) {
this.fileList.splice(index, 1);
this.$emit("input", this.listToString(this.fileList));
},
//
editInfo(row){
this.title = "修改发文"
jPolicyFileId(row.id).then((res)=>{
if(res.code == 200) {
this.addFrom = res.data;
this.$refs.importProject.open();
}
})
//
getFileName(name) {
// url
if (name.lastIndexOf("/") > -1) {
return name.slice(name.lastIndexOf("/") + 1);
} else {
return name;
}
},
//
//
confirm(){
this.$refs.importFrom.validate((valid) => {
if (valid) {
// console.log(this.addFrom);
let id = this.addFrom.id ? this.addFrom.id : null;
if(id) {
jPolicyFileChange(this.addFrom).then((res)=>{
if(res.code == 200) {
this.getList();
this.importClose();
this.$message({
type: "success",
message: "修改成功!",
});
}
})
} else {
jPolicyFileNew(this.addFrom).then((res)=>{
if(res.code == 200) {
this.getList();
this.importClose();
this.$message({
type: "success",
message: "新增成功!",
});
}
})
}
} else {
return false;
}
});
},
//
delInfo(row){
@ -364,13 +336,7 @@ export default {
type: "warning",
})
.then(() => {
jPolicyFileDel({ id: row.id }).then((res) => {
this.getList();
this.$message({
type: "success",
message: "删除成功!",
});
});
})
.catch(() => {
this.$message({
@ -379,17 +345,6 @@ export default {
});
});
},
//
goToProject(id){
// this.$router.push({
// path: '/project/index',
// params: { projectId: id }
// })
this.$router.push({
name: 'ProjectList',
params: { projectId: id }
})
},
//
cancalDebounce(){
const element = document.getElementById('L-size-main'); // ID

@ -0,0 +1,4 @@
export { default as tabOne } from './tabOne'
export { default as tabTwo } from './tabTwo'
export { default as tabThree } from './tabThree'
export { default as tabFour } from './tabFour'

@ -0,0 +1,306 @@
<template>
<div class="projectInfo-memo">
<div class="memo-top">
<el-row>
<el-form :inline="true" :model="formInline" size="small" ref="queryFrom">
<el-col :span="9">
<div class="project-info-top">
<div class="project-info">备忘录</div>
<el-button type="primary" icon="icon iconfont icon-jc-xinjian" size="mini" @click="newMemo"></el-button>
<el-button type="primary" icon="icon iconfont icon-jc-daoru" size="mini" @click="exportMemo" :loading="exportLoading">一键导出</el-button>
</div>
</el-col>
<el-col :span="15">
<el-form-item>
<!-- <el-date-picker
v-model="formInline.time"
type="datetime"
placeholder="选择备忘时间">
</el-date-picker> -->
<el-date-picker
class="ignoreElement"
v-model="memoTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-input v-model.trim="formInline.name" placeholder="请输入用户名、主题/关键字, 查询项目备忘"></el-input>
</el-form-item>
<el-form-item class="query-item">
<el-button size="mini" @click="resetQuery('queryFrom')"></el-button>
<el-button size="mini" type="primary" @click="handleQuery('queryFrom')"></el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
</div>
<div class="memo-bottom" v-loading="loading">
<el-card :body-style="{ padding: '0px' }" v-for="(item,index) in memoList" :key="index"> <!-- shadow="never -->
<div slot="header" class="clearfix">
<div class="clearfix-left">
<span>{{ item.name }}</span>
<span>{{ item.createTime }}</span>
</div>
<div class="clearfix-right">
<div class="clearfix-bianji" @click="putMemo(item)">
<i class="icon iconfont icon-jc-bianji-copy"></i>
编辑
</div>
<div class="clearfix-shanchu" @click="delMemo(item)">
<i class="icon iconfont icon-jc-shanchu-select"></i>
删除
</div>
</div>
</div>
<div class="clearfix-body">
<div class="memo-keyword">
<div class="memo-keyword-title">主题/关键字</div>
<div class="memo-keyword-content">
{{ item.keywords }}
</div>
</div>
<div class="memo-content">
<div class="memo-content-title">
备忘内容
</div>
<div class="memo-content-content">
{{ item.content }}
</div>
</div>
</div>
</el-card>
</div>
<my-dialog :title="title" @close="memoClose" @confirm="confirm" :myclass="true" ref="newMemoRef">
<div class="memoDialog">
<el-form :model="memoData" size="small" ref="memoFrom" label-width="120px">
<el-form-item label="姓名" prop="name">
<el-input v-model="memoData.name" placeholder="请输入内容" disabled></el-input>
</el-form-item>
<el-form-item label="备忘时间" prop="createTime">
<el-date-picker
disabled
v-model="memoData.createTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
placeholder="选择备忘时间">
</el-date-picker>
</el-form-item>
<el-form-item label="主题/关键字" prop="keywords">
<el-input
type="textarea"
resize="none"
:rows="3"
placeholder="请输入主题/关键字"
v-model="memoData.keywords">
</el-input>
</el-form-item>
<el-form-item label="备忘内容" prop="content">
<el-input
type="textarea"
resize="none"
:rows="3"
placeholder="请输入备忘内容"
v-model="memoData.content">
</el-input>
</el-form-item>
</el-form>
</div>
</my-dialog>
</div>
</template>
<script>
import { getJMemorandumList, getJMemorandumId, postJMemorandum, putJMemorandum, delJMemorandum } from "@/api/jin_ji_hu/project/index"
import myDialog from "@/views/components/myDialog/index.vue"
export default {
components:{
myDialog
},
name:"tabFour",
data() {
return {
formInline:{
startTime:"",
endTime:"",
name:"",
projectId:undefined,
},
memoTime:[],
title:"新增备忘录",
memoData:{
name: "",
createTime: "",
keywords: "",
content: "",
projectId:undefined,
},
memoList:[],
loading:false,
//
exportLoading: false,
}
},
props:{
id:{
type:String,
default:"",
}
},
mounted(){
this.formInline.projectId = Number(this.id);
this.memoData.projectId = Number(this.id);
this.getList();
},
methods:{
//
resetQuery(){
this.formInline = {
startTime:"",
endTime:"",
name:"",
projectId:this.id,
}
this.memoTime = [];
this.getList();
},
//
handleQuery(){
this.formInline.startTime = this.memoTime[0];
this.formInline.endTime = this.memoTime[1];
this.getList();
},
//
newMemo(){
this.title = "新建备忘录";
this.memoData = {
name: "",
createTime: "",
keywords: "",
content: "",
projectId:undefined,
}
this.$refs.newMemoRef.open();
this.memoData.projectId = Number(this.id);
this.memoData.name = this.$store.getters.name;
this.memoData.createTime = this.getDate();
},
//
exportMemo(){
if(this.memoList.length > 0) {
this.$confirm("是否确认导出备忘录?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.exportLoading = true;
this.download(
"/jjh/jMemorandum/export",
{
...this.formInline
},
"备忘录" + new Date().getTime() + ".xlsx"
);
this.exportLoading = false;
})
.catch(() => { });
} else {
this.$message({
type: "warning",
message: "备忘录列表为空,无法导出!",
});
}
},
//
getList() {
this.loading = true;
getJMemorandumList(this.formInline).then(res=>{
// console.log(res,"");
this.memoList = res.data;
this.loading = false;
})
},
//
memoClose(){
// console.log("");
// this.clearKey(this.memoData)
this.$nextTick(()=>{
this.$refs.memoFrom.resetFields();
this.$refs.newMemoRef.close();
})
},
confirm(){
if(this.memoData.id) {
putJMemorandum(this.memoData).then(res=>{
if(res.code == 200) {
this.memoClose();
this.getList();
this.$message({
type: "success",
message: "修改成功!",
});
}
})
} else {
postJMemorandum(this.memoData).then(res=>{
if(res.code == 200) {
this.memoClose();
this.getList();
this.$message({
type: "success",
message: "新增成功!",
});
}
})
}
},
//
putMemo(row){
this.title = "编辑备忘录";
this.$refs.newMemoRef.open();
getJMemorandumId(row.id).then(res=>{
this.memoData = res.data;
})
},
//
delMemo(row){
this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
delJMemorandum({ id: row.id }).then((res) => {
this.getList();
this.$message({
type: "success",
message: "删除成功!",
});
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
//
getDate(){
const date = new Date();
var year = date.getFullYear(); //
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1; // 0 1
var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); //
var hours = date.getHours(); //
var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); //
var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); //
return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
},
},
}
</script>

@ -0,0 +1,175 @@
<template>
<div class="project-info-box">
<div class="project-info-title">项目详细信息</div>
<el-descriptions class="margin-top" :column="3" size="medium" border v-loading="loading">
<el-descriptions-item labelClassName="tabOneLabel" contentClassName="tabOneContent"
v-for="(item,index) in info"
:key="index"
:label="item.key"
:span="item.span"
>
{{ item.value }}
</el-descriptions-item>
</el-descriptions>
<!-- <el-descriptions class="margin-top-file" :column="3" size="medium" v-loading="loading">
<el-descriptions-item labelClassName="tabOneFileLabel" contentClassName="tabOneFileContent"
v-for="(item,index) in fileInfo"
:key="index"
:label="item.key"
>
<a :href="item.url" target="_blank">
{{ item.value }}
</a>
</el-descriptions-item>
</el-descriptions> -->
<div class="project-info-title" style="margin-top: 20px;">上传材料</div>
<el-row v-for="(item,index) in fileInfo" :key="index" style="margin-top: 20px;">
<el-col :span="3">
<span>{{ item.key }}</span>
</el-col>
<el-col :span="21" class="file-info-content">
<span class="file-link" v-for="(itemTwo,indexTwo) in item.url" :key="indexTwo + 'a' + index" style="border: 1px solid #dcdfe6;padding: 5px;display: flex; align-items: center; width: 45%; margin-right: 10px;">
<img src="@/assets/images/uploadBgc.jpg" class="li_img" alt="" style="width: 20px; margin-right: 10px;">
<a :href="VUE_APP_BASE_API + itemTwo.url" target="_blank">{{ itemTwo.value }}</a>
</span>
</el-col>
</el-row>
</el-row>
</div>
</template>
<script>
export default {
name:"tabOne",
props:{
detailedInfo:{
type:Object,
default:()=>{
return {};
}
},
fileJson:{
type:Object,
default:()=>{
return {};
}
}
},
watch: {
detailedInfo: {
handler(newInfo){
this.loading = true;
if(newInfo) {
this.loading = false;
let arr = []
for (var key in newInfo) {
if (newInfo.hasOwnProperty(key)) {
let obj = {};
obj["key"] = key;
if(key == "是否获得园区其他经营奖励") {
obj["value"] = newInfo[key] == 0 ? '是' : newInfo[key] == 1 ? '否':'';
} else if(key == "申报类型") {
obj["value"] = newInfo[key] == 1 ? '两业融合示范企业' : newInfo[key] == 2 ? '制造业企业设立财务独立核算的制造服务业职能部门' : newInfo[key] == 3 ? "制造业企业剥离服务业务成立独立的法人制造业企业剥离服务业务成立独立的法人" : "";
} else if(key == "所属类型"){
obj["value"] = newInfo[key] == 0 ? '市场服务类' : newInfo[key] == 1 ? '公共服务类' : "";
} else {
obj["value"] = newInfo[key] ? newInfo[key] : '暂无'
}
obj["span"] = 1;
arr.push(obj)
}
}
arr = arr.filter(element => element.key !== "" && element.key !== "序号");
for (var i = 0; i < arr.length; i++) {
// if(!arr[i].key) {
// delete arr[i];
// continue;
// }
//
if(arr[i].value) {
if((i + 1) % 3 == 1 && arr[i].value.length > 50 && arr[i - 1]?.span == 2) {
arr[i - 1].span = 3
arr[i].span = 3
} else if((i + 1) % 3 == 1 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 2) {
arr[i - 1].span = 3
arr[i].span = 2
} else if((i + 1) % 3 == 1 && arr[i].value.length > 18 && arr[i].value.length < 50) {
arr[i].span = 2
} else if((i + 1) % 3 == 2 && arr[i].value.length > 50) {
arr[i - 1].span = 3
arr[i].span = 3
} else if((i + 1) % 3 == 2 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 2) {
arr[i - 1].span = 3
arr[i].span = 2
} else if((i + 1) % 3 == 2 && arr[i].value.length > 18 && arr[i].value.length < 50) {
arr[i].span = 2
} else if((i + 1) % 3 == 0 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 1) {
arr[i - 1].span = 2
arr[i].span = 2
} else if((i + 1) % 3 == 0 && arr[i].value.length > 50 && arr[i - 1].span == 1) {
arr[i - 1].span = 2
arr[i].span = 3
} else if((i + 1) % 3 == 0 && arr[i].value.length > 18 && arr[i].value.length < 50 && arr[i - 1]?.span == 2) {
arr[i].span = 2
} else if((i + 1) % 3 == 0 && arr[i].value.length > 50) {
arr[i].span = 3
}
}
}
this.$nextTick(()=>{
this.info = [...arr]
})
}
},
immediate:true,
deep:true
},
fileJson: {
handler(newFile){
if(newFile) {
let arr = []
for (var key in newFile) {
if (newFile.hasOwnProperty(key)) {
let url = newFile[key] ? newFile[key].split("/") : null;
let obj = {};
obj["key"] = key;
if(newFile[key]) {
let url = newFile[key].split(',')
obj["url"] = []
url.forEach(element => {
let urlSplit = element.split("/");
let objec = {}
objec.url = element;
objec.value = urlSplit[urlSplit.length - 1];
obj["url"].push(objec);
});
}
// obj["value"] = url ? url[url.length - 1] : '';
arr.push(obj)
}
}
this.fileInfo = arr;
}
},
deep:true,
immediate:true
}
},
data() {
return {
info:[],
fileInfo:[],
loading:false,
VUE_APP_BASE_API:process.env.VUE_APP_BASE_API,
}
},
mounted() {
// console.log(this.info,"tabOne");
// this.loading = true;
},
methods:{
},
}
</script>

@ -0,0 +1,50 @@
<template>
<div class="money-schedule">
<div class="schedule-title">资金拨付进度</div>
<div class="schedule-timeline">
<el-timeline>
<el-timeline-item
v-for="(activity, index) in activities"
:key="index"
:icon="activity.icon"
:type="activity.type"
:size="activity.size"
>
<el-card> <!-- 去除阴影 shadow="never -->
<div class="schedule-content">
<div class="schedule-card-title">xxxx年xx月xx日 政府财务审核通过</div>
<div class="schedule-status" :class="activity.status == 0 ? 'orange' : activity.status == 1 ? 'green' : activity.status == 2 ? 'blue' : ''">
{{ activity.status == 0 ? '已提交' : activity.status == 1 ? '审核通过' : activity.status == 2 ? '已拨付' : '' }}
</div>
</div>
<div class="schedule-time">2023-05-11</div>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</div>
</template>
<script>
export default {
name:"tabThree",
data() {
return {
activities: [{
size: 'large',
icon: 'icon iconfont icon-jc-kong-yuan',
status: 2,
}, {
icon: 'icon iconfont icon-jc-kong-yuan',
size: 'large',
status: 1,
}, {
size: 'large',
icon: 'icon iconfont icon-jc-kong-yuan',
status: 0,
}]
}
},
methods:{
},
}
</script>

@ -0,0 +1,40 @@
<template>
<div class="L-unitInfo">
<div class="project-info-title">申报单位信息</div>
<el-descriptions class="margin-top" :column="3" size="medium" border>
<el-descriptions-item label="申报类型">投资补助</el-descriptions-item>
<el-descriptions-item label="申报企业名称"><a class="a-primary" v-show="info.declareUnit">{{ info.declareUnit }}</a></el-descriptions-item>
<el-descriptions-item label="企业性质">内资民营</el-descriptions-item>
<el-descriptions-item label="统一社会信用代码">QRDVCDS1321412FDSFDS</el-descriptions-item>
<el-descriptions-item label="邮编">215513</el-descriptions-item>
<el-descriptions-item label="电话">0512-6782727</el-descriptions-item>
<el-descriptions-item label="企业注册地">江苏-苏州-工业园区</el-descriptions-item>
<el-descriptions-item label="企业资本" :span="2">4000万元</el-descriptions-item>
<el-descriptions-item label="企业责任人(法人代表)姓名">张珊</el-descriptions-item>
<el-descriptions-item label="项目联系人 姓名">万林</el-descriptions-item>
<el-descriptions-item label="项目联系人 姓名">赵文</el-descriptions-item>
<el-descriptions-item label="电话">18012345432</el-descriptions-item>
<el-descriptions-item label="电话">18023494876</el-descriptions-item>
<el-descriptions-item label="电话">18743870987</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
export default {
name:"tabTwo",
data() {
return {
}
},
props:{
info:{
type:Object,
default:()=>{
return {}
}
}
},
methods:{
},
}
</script>

@ -0,0 +1,111 @@
<template>
<div class="L-public-main projectInfo" id="L-size-main">
<el-row :gutter="10">
<el-col :span="24">
<div class="left-info" id="L-header">
<div class="project-info-title">企业信息</div>
<el-descriptions class="margin-top" :column="2" size="medium" border v-loading="loading">
<el-descriptions-item label="企业名称">{{ info.projectName }}</el-descriptions-item>
<el-descriptions-item label="法定代表人" contentClassName="info-link"><a class="a-primary" @click="goback(info.projectClassify)"><dict-tag :options="dict.type.jjh_project_type" :value="info.projectClassify"/></a></el-descriptions-item>
<el-descriptions-item label="统一社会信用代码" contentClassName="info-link">{{ info.declareUnit }}<a v-show="info.declareUnit"></a></el-descriptions-item>
<el-descriptions-item label="企业类型">{{ info.projectYear }}</el-descriptions-item>
</el-descriptions>
</div>
<div class="left-tabs">
<div class="tabs-top" id="L-pagination">
<div v-for="(item,index) in tabs" :key="index" class="tabs-top-item" :class="active == index ? 'active-item' : ''" @click="active = index">{{ item.name }}</div>
</div>
<div class="tabs-bottom" :style="tabStyle">
<tab-one v-if="active == 0" :detailedInfo="detailedInfo" :fileJson="fileJson"></tab-one>
<tab-two v-if="active == 1" :info="info"></tab-two>
<tab-three v-if="active == 2"></tab-three>
<tab-four v-if="active == 3" :id="$route.query.userId"></tab-four>
</div>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { tabOne, tabTwo, tabThree, tabFour, projectProgress } from "./components"
import { jProjectId } from "@/api/jin_ji_hu/project/index"
export default {
dicts: ['jjh_project_type','jjh_status'],
components:{
tabOne,
tabTwo,
tabThree,
tabFour,
},
data() {
return {
tabs:[
{
name: "基本信息",
},{
name: "联络人列表",
},{
name: "项目清单",
},{
name: "备忘录",
},
],
active: 0,
info:{},
detailedInfo:{},
fileJson:{},
loading:false,
tabStyle:{
height:undefined,
overflow: 'auto'
}
}
},
mounted(){
this.getInfo(this.$route.query.userId)
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
},
methods:{
getInfo(id){
this.loading = true;
jProjectId(id).then(res=>{
this.info = res.data;
this.loading = false;
this.detailedInfo = JSON.parse(res.data.otherJson);
this.fileJson = JSON.parse(res.data.fileJson);
// for (var key in obj) {
// if (obj.hasOwnProperty(key)) {
// var value = obj[key];
// console.log(key + ': ' + value);
// }
// }
})
},
goback(id){
// console.log(id,"id");
// this.$router.replace({
// path: '/project/index',
// query: { projectId: id }
// })
this.$router.push({
name: 'ProjectList',
params: { projectId: id }
})
},
//
cancalDebounce(){
const element = document.getElementById('L-size-main'); // ID
const header = document.getElementById('L-header'); // ID
const pagination = document.getElementById('L-pagination'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
const paginationtHeight = pagination.offsetHeight;
this.tabStyle.height = (elementHeight - headerHeight - paginationtHeight - 20) + 'px';
}
},
}
</script>

@ -35,6 +35,8 @@
</header>
<section>
<el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column label="企业名称" prop="enterpriseName" />
<el-table-column label="统一信用代码" prop="enterpriseCode" />
<el-table-column label="常用联系人姓名" prop="contactName" />
<el-table-column label="常用联系人公司职务" prop="contactOffice" />
<el-table-column label="常用联系人手机号码" prop="contactPhone" />

@ -430,14 +430,14 @@ export default {
mounted() {
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
if(this.$route.params.statusChange) {
this.queryParams.statusChange = this.$route.params.statusChange
}
this.getList();
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
},
created() {
// console.log(this.$store.state.user.enterpriseId);
this.getList();
},
methods: {
//
cancalDebounce(){

@ -7,7 +7,7 @@
<div class="project-info-top">
<div class="project-info">备忘录</div>
<el-button type="primary" icon="icon iconfont icon-jc-xinjian" size="mini" @click="newMemo"></el-button>
<el-button type="primary" icon="icon iconfont icon-jc-daoru" size="mini" @click="newMemo"></el-button>
<el-button type="primary" icon="icon iconfont icon-jc-daoru" size="mini" @click="exportMemo" :loading="exportLoading">一键导出</el-button>
</div>
</el-col>
<el-col :span="15">
@ -141,6 +141,8 @@ export default {
},
memoList:[],
loading:false,
//
exportLoading: false,
}
},
props:{
@ -187,6 +189,33 @@ export default {
this.memoData.name = this.$store.getters.name;
this.memoData.createTime = this.getDate();
},
//
exportMemo(){
if(this.memoList.length > 0) {
this.$confirm("是否确认导出备忘录?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.exportLoading = true;
this.download(
"/jjh/jMemorandum/export",
{
...this.formInline
},
"备忘录" + new Date().getTime() + ".xlsx"
);
this.exportLoading = false;
})
.catch(() => { });
} else {
this.$message({
type: "warning",
message: "备忘录列表为空,无法导出!",
});
}
},
//
getList() {
this.loading = true;

@ -1,9 +1,9 @@
<template>
<div class="workbench-box">
<header>
<div class="workbench-serch">
<div class="workbench-serch" v-if="userType == '02'">
<div class="workbench-title">
<div class="title-item" :class="checked == index ? 'checked-item' : ''" v-for="(item,index) in tabs" :key="index" @click="checked = index">
<div class="title-item" :class="checked == index ? 'checked-item' : ''" v-for="(item,index) in tabs" :key="index" @click="changeTab(index)">
{{ item.value }}
</div>
<!-- <div class="title-item">
@ -40,12 +40,12 @@
<div class="title">待办提醒</div>
<el-button @click="MoreRecords" type="text" v-if="backlogArray.length > 0">>> 更多记录</el-button>
</div>
<div class="right-main" v-if="backlogArray.length > 0">
<div class="right-main" v-if="backlogArray.length > 0" v-loading="loading">
<div class="main-items" v-for="(item,index) in backlogArray" :key="index" :class="index % 2 == 0 ? '':'main-item'">
<div>{{ item.matter }}</div>
<div>{{ item.matter || item.enterpriseDirectory}}</div>
<div>{{ item.enterpriseName }}</div>
<!-- <div>审批知识产权材料</div> -->
<div @click="MoreRecords"></div>
<div @click="MoreRecords">{{ userType == '02' ? '' : userType == '01' ? '' : '' }}</div>
</div>
</div>
<div class="right-main" v-else>
@ -106,9 +106,13 @@
</template>
<script>
import { approvalList, approvalEdit, uploadFile } from "@/api/onlineDeclartion/pendingReview"
import { listRecords } from "@/api/onlineDeclartion/records"
import { selectAll, workSearch } from "@/api/jin_ji_hu/home"
export default {
data() {
return {
// 01 02
userType: this.$store.state.user.userType,
search:"",
backlogArray:[],
pagination: {
@ -116,6 +120,12 @@ export default {
pageSize:10,
approvalStatusStr: 0,
},
queryParams: {
pageNum: 1,
pageSize: 10,
creditCode: this.$store.state.user.name,
statusStr: [0, 10],
},
//
open: false,
//
@ -142,25 +152,54 @@ export default {
value:"查荣誉"
},
],
checked: 0
checked: 0,
loading:false,
}
},
mounted(){
this.getList();
if(this.userType == "02") {
this.getList();
} else if(this.userType == "01") {
this.getListTwo();
}
},
methods:{
//
getList(){
this.loading = true;
approvalList(this.pagination).then(res=>{
// console.log(res);
this.backlogArray = res.rows
this.loading = false;
})
},
//
getListTwo(){
this.loading = true;
listRecords(this.queryParams).then(response => {
this.backlogArray = response.rows
this.loading = false;
});
},
//
MoreRecords(){
this.$router.push({
name: 'PendingReview',
params: { approvalStatusStr: "0" }
})
if(this.userType == "02") {
this.$router.push({
name: 'PendingReview',
params: { approvalStatusStr: "0" }
})
} else if(this.userType == "01") {
this.$router.push({
name: 'Records',
params: { statusChange: "0" }
})
}
},
// tab
changeTab(index){
this.checked = index;
this.search = "";
},
//
handleApproval(row) {
@ -184,6 +223,23 @@ export default {
this.uploadList = []
},
querySearch(queryString, cb) {
let results = []
if(this.checked == 0) {
workSearch({enterpriseInfo: queryString}).then(res => {
console.log(res,"res");
})
} else if(this.checked == 1) {
selectAll({ name: queryString }).then(res => {
res.data.forEach(item => {
results.push({
value: item.projectName,
id: item.id
})
})
})
} else if(this.checked == 2) {
}
// queryString
/**
* 通过queryString 调用接口参数搜索到的数据数据处理成所需的列表 对象带value 使用callback返回列表数据

Loading…
Cancel
Save