Browse Source

需求回归

master
zth 1 month ago
parent
commit
0387f199c7
  1. 10
      jwtech-admin-page/src/api/enterprise/zhxx.js
  2. 6
      jwtech-admin-page/src/views/marketSupervision/comprehensiveInfo/index.vue
  3. 14
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/certificate.vue
  4. 69
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/personInfo.vue
  5. 771
      jwtech-admin-page/src/views/marketSupervision/policyDocument/index.vue
  6. 28
      jwtech-pc-page/src/api/enterpriseInformation.js
  7. 2
      jwtech-pc-page/src/main.js
  8. 13
      jwtech-pc-page/src/utils/ruoyi.js
  9. 76
      jwtech-pc-page/src/views/home/components/statisticsLeft.vue
  10. 47
      jwtech-pc-page/src/views/home/components/statisticsRight.vue
  11. 29
      jwtech-pc-page/src/views/home/components/userLogin.vue
  12. 8
      jwtech-system/src/main/java/com/kms/enterprise/controller/BsSgcYxjdZhxxController.java
  13. 9
      jwtech-system/src/main/java/com/kms/enterprise/controller/CreditStatisticsController.java
  14. 3
      jwtech-system/src/main/java/com/kms/enterprise/domain/BsSgcYxjdCertificateInfo.java
  15. 23
      jwtech-system/src/main/java/com/kms/enterprise/domain/BsSgcYxjdPersonnelInfo.java
  16. 13
      jwtech-system/src/main/java/com/kms/enterprise/domain/EnterpriseTotalVo.java
  17. 81
      jwtech-system/src/main/java/com/kms/enterprise/service/BsSgcYxjdEnterpriseInfoService.java
  18. 8
      jwtech-system/src/main/java/com/kms/enterprise/service/BsSgcYxjdZhxxService.java

10
jwtech-admin-page/src/api/enterprise/zhxx.js

@ -9,6 +9,14 @@ export function listZhxx(query) {
})
}
export function listZc(query) {
return request({
url: '/enterprise/zhxx/zc/list',
method: 'post',
data: query
})
}
// 查询综合信息详细
export function getZhxx(id) {
return request({
@ -50,4 +58,4 @@ export function exportZhxx(query) {
method: 'get',
params: query
})
}
}

6
jwtech-admin-page/src/views/marketSupervision/comprehensiveInfo/index.vue

@ -75,7 +75,7 @@
></el-button>
</el-input>
</el-form-item>
<el-form-item>
<!-- <el-button
type="cyan"
@ -456,6 +456,7 @@ export default {
pageSize: 10,
ids: null,
data: {
textType:'0',
title: null,
region: null,
publishTime: null,
@ -556,6 +557,7 @@ export default {
pageNum: 1,
pageSize: 10,
data: {
textType:0,
id: null,
title: null,
region: null,
@ -618,6 +620,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.textType='0'
this.form.attachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateZhxx(this.form).then((response) => {
@ -628,6 +631,7 @@ export default {
}
});
} else {
this.form.textType='0'
addZhxx(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");

14
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/certificate.vue

@ -53,6 +53,14 @@
min-width="120"
:resizable="false"
/>
/>
<el-table-column
label="注册证号"
align="left"
prop="registrationCertificateNumber"
min-width="120"
:resizable="false"
/>
<el-table-column
label="证书等级"
align="left"
@ -202,6 +210,12 @@
placeholder="请输入证书名称"
/>
</el-form-item>
<el-form-item label="注册证号" prop="registrationCertificateNumber">
<el-input
v-model="form.registrationCertificateNumber"
placeholder="请输入注册证号"
/>
</el-form-item>
<el-form-item label="证书等级" prop="certificateLevel">
<el-select
v-model="form.certificateLevel"

69
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/personInfo.vue

@ -56,6 +56,27 @@
min-width="120"
:resizable="false"
/>
<el-table-column
label="职称"
align="left"
prop="professionalPost"
min-width="120"
:resizable="false"
/>
<el-table-column
label="职务"
align="left"
prop="job"
min-width="120"
:resizable="false"
/>
<el-table-column
label="职务专业"
align="left"
prop="jobSpecialty"
min-width="120"
:resizable="false"
/>
<el-table-column
label="任命书文号"
@ -150,13 +171,23 @@
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="84px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="身份证号" prop="idNo">
<el-input v-model="form.idNo" placeholder="请输入身份证号" />
</el-form-item>
<el-form-item label="职称" prop="professionalPost">
<el-input v-model="form.professionalPost" placeholder="请输入职称" />
</el-form-item>
<el-form-item label="职务" prop="job">
<el-input v-model="form.job" placeholder="请输入职务" />
</el-form-item>
<el-form-item label="职务专业" prop="jobSpecialty">
<el-input v-model="form.jobSpecialty" placeholder="请输入职务专业" />
</el-form-item>
<el-form-item label="人员类别" prop="personType">
<el-select
v-model="form.personType"
@ -192,6 +223,42 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="从业开始年份" prop="commencementYear">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.commencementYear"
type="year"
value-format="yyyy"
placeholder="选择从业开始年份"
>
</el-date-picker>
</el-form-item>
<el-form-item label="入职时间" prop="enterTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.enterTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择入职时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="离职时间" prop="exitTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.exitTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择离职时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="附件" prop="attachment">
<!-- <el-input v-model="form.attachment" placeholder="请输入附件" /> -->
<el-upload

771
jwtech-admin-page/src/views/marketSupervision/policyDocument/index.vue

@ -0,0 +1,771 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<!-- <el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
:key="item + index"
:to="{ path: item.path }"
>{{ item.routeName }}</el-breadcrumb-item
>
</el-breadcrumb> -->
<el-row class="query-row" :gutter="20">
<el-col :span="8">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['enterprise:zhxx:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['enterprise:zhxx:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['enterprise:zhxx:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
</el-col>
<el-col v-show="showSearch" :span="16">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="标题" prop="title">
<el-input
v-model="queryParams.data.title"
placeholder="请输入标题"
clearable
size="small"
@keyup.enter.native="handleQuery"
>
<el-button
type="primary"
slot="append"
icon="el-icon-search"
size="small"
@click="handleQuery"
></el-button>
</el-input>
</el-form-item>
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="zhxxList"
tooltip-effect="dark myTooltips"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="标题"
align="left"
prop="title"
show-overflow-tooltip
min-width="120"
/>
<el-table-column
label="文件类型"
align="left"
prop="textType"
:formatter="textTypeFormat"
show-overflow-tooltip
min-width="120"
/>
<el-table-column
label="来源"
align="left"
prop="region"
show-overflow-tooltip
min-width="120"
/>
<el-table-column
label="发布时间"
align="left"
prop="publishTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.publishTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<!-- <el-table-column
label="内容"
align="center"
prop="text"
min-width="120"
/> -->
<el-table-column
label="附件"
align="left"
prop="attachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.attachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.attachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
align="right"
class-name="small-padding fixed-width"
width="200"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="viewInfo(scope.row)"
>查看</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改综合信息对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
width="1200px"
append-to-body
:close-on-click-modal="false"
>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="80px"
v-if="open"
>
<el-form-item label="标题" prop="title">
<el-input v-model="form.title" placeholder="请输入标题" />
</el-form-item>
<el-form-item label="文件类型" prop="textType">
<el-select
v-model="form.textType"
placeholder="请选择文件类型"
style="width: 100%"
>
<el-option
v-for="dict in textTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="来源" prop="region">
<el-input v-model="form.region" placeholder="请输入来源" />
</el-form-item>
<el-form-item label="发布时间" prop="publishTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.publishTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择发布时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="内容" prop="text">
<!-- <el-input v-model="form.text" placeholder="请输入内容" /> -->
<div style="border: 1px solid #ccc">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editor"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 300px; overflow-y: hidden"
v-model="form.text"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="onCreated"
@onBlur="checkContent"
/>
</div>
</el-form-item>
<el-form-item label="附件" prop="attachment">
<!-- <el-input
v-model="form.attachment"
type="textarea"
placeholder="请输入内容"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList1')
"
:file-list="fileList1"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog
:title="viewTitle"
:visible.sync="viewOpen"
width="1200px"
append-to-body
@close="closeView"
:close-on-click-modal="false"
>
<div class="infoTitle">综合信息</div>
<div class="draLine"></div>
<div class="content">
<el-descriptions
class="margin-top"
:column="2"
border
:labelStyle="{
'text-align': 'left',
width: '180px',
height: '50px',
}"
:contentStyle="{ minWidth: '250px' }"
>
<el-descriptions-item span="2">
<template slot="label"> 标题 </template>
{{ comMsg.title }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 文件类型 </template>
{{ textTypeFormat(comMsg) }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 来源 </template>
{{ comMsg.region }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 发布时间 </template>
{{ comMsg.publishTime }}
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label"> 内容 </template>
<div v-html="comMsg.text"></div>
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label"> 附件 </template>
<template v-if="comMsg.attachment">
<div
v-for="(item, index) in JSON.parse(comMsg.attachment)"
:key="item + index"
>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(item, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-descriptions-item>
</el-descriptions>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listZhxx,
listZc,
getZhxx,
delZhxx,
addZhxx,
updateZhxx,
exportZhxx,
} from "@/api/enterprise/zhxx";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
export default {
name: "Zhxx",
components: { Editor, Toolbar },
data() {
return {
textTypeOptions:[],
editor: null,
toolbarConfig: {
toolbarKeys: [
// key
"bold", //
"italic", //
"through", // 线
"underline", // 线
"bulletedList", //
"numberedList", //
"color", //
"fontSize", //
"lineHeight", //
// "uploadImage", //
"delIndent", //
"indent", //
"deleteImage", //
"divider", // 线
"justifyCenter", //
"justifyJustify", //
"justifyLeft", //
"justifyRight", //
"undo", //
"redo", //
"clearStyle", //
],
},
editorConfig: {
placeholder: "请输入内容",
MENU_CONF: {
uploadImage: {
server: "thinking/common/upload",
headers: { jianwei: "jwtech " + getToken() },
"tenant-id": "1",
fieldName: "file", //
customInsert(res, insertFn) {
console.log("上传图片", res);
if (res.code == 200) {
// const url = window.URL.createObjectURL(
// new Blob([res.url], {
// type: "image/jpeg;charset=utf-8",
// headers: { jianwei: "jwtech " + getToken() },
// })
// );
// previewFile({ url: res.url, responseType: "blob" }).then(
// (item) => {
// console.log(4444, item);
// }
// );
// console.log(6666, url);
insertFn(res.url);
}
},
},
},
},
mode: "default", // or 'simple'
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
zhxxList: [],
//
title: "",
viewTitle: "",
//
open: false,
viewOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
textType:null,
title: null,
region: null,
publishTime: null,
text: null,
attachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
title: [{ max: 250, message: "字符长度最大为250", trigger: "blur" }],
region: [{ max: 250, message: "字符长度最大为250", trigger: "blur" }],
text: [{ max: 65500, message: "字符长度最大为65500", trigger: "blur" }],
},
//
routeList: [
{
path: "/marketSupervision/comprehensiveInfo",
routeName: "综合信息",
},
],
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
comMsg: {},
};
},
created() {
this.getDicts("text_type").then((response) => {
console.log(response.data,1111)
this.textTypeOptions = response.data;
});
this.getList();
},
methods: {
textTypeFormat(row, column) {
return this.selectDictLabel(
this.textTypeOptions,
row.textType
);
},
checkContent() {
this.$refs.form.validateField("text");
},
onCreated(editor) {
this.editor = Object.seal(editor); // Object.seal()
this.editor.blur = this.checkContent;
},
/** 查询综合信息列表 */
getList() {
this.loading = true;
listZc(this.queryParams).then((response) => {
this.zhxxList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
viewInfo(row) {
getZhxx(row.id).then((res) => {
this.comMsg = res.data;
console.log("comMsg", row);
this.viewOpen = true;
});
},
closeView() {
this.comMsg = {};
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
title: null,
region: null,
publishTime: null,
text: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
title: null,
region: null,
publishTime: null,
text: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加综合信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getZhxx(id).then((response) => {
this.form = response.data;
if (this.form.attachment) {
this.fileList1 = JSON.parse(this.form.attachment);
}
this.open = true;
this.title = "修改综合信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.attachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateZhxx(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addZhxx(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delZhxx(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(fileList, name) {
console.log(name, fileList);
this[name].push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
console.log(name, this[name]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
// ,
downloadFile2(info, index) {
console.log(info);
this.handlePreview(info);
},
//
handlePreview(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
},
};
</script>
<style src="@wangeditor/editor/dist/css/style.css"></style>
<style lang="scss">
.myTooltips {
max-width: 60vw;
}
</style>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
::v-deep {
.el-dialog {
margin-top: 5vh !important;
}
}
</style>

28
jwtech-pc-page/src/api/enterpriseInformation.js

@ -111,3 +111,31 @@ export function getParent(enterpriseId) {
})
}
export function getTypeNum(){
return request({
url: '/creditStatistics/type/num',
method: 'POST'
})
}
export function getScoreTotal(){
return request({
url: '/creditStatistics/score',
method: 'POST'
})
}
export function getArea(){
return request({
url: '/creditStatistics/getArea',
method: 'get'
})
}
export function getInfoTotal(){
return request({
url: '/creditStatistics/get/infoTotal',
method: 'get'
})
}

2
jwtech-pc-page/src/main.js

@ -12,6 +12,7 @@ import uploader from 'vue-simple-uploader';
import {handleTree , removeHtmlTab} from "@/utils/utils"
import { getDicts } from "@/api/dist"
import './assets/icon/iconfont.css'
import { selectDictLabel } from "@/utils/ruoyi";
// wangeditor ES6
import Es6Promise from 'es6-promise'
@ -56,6 +57,7 @@ Vue.prototype.$echarts = echarts
Vue.config.productionTip = false;
Vue.prototype.handleTree = handleTree;
Vue.prototype.getDicts = getDicts;
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.removeHtmlTab = removeHtmlTab;

13
jwtech-pc-page/src/utils/ruoyi.js

@ -0,0 +1,13 @@
export function selectDictLabel(datas, value) {
var actions = [];
// console.log(datas);
// console.log(value);
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + value)) {
actions.push(datas[key].dictLabel);
return true;
}
})
// console.log(actions);
return actions.join('');
}

76
jwtech-pc-page/src/views/home/components/statisticsLeft.vue

@ -18,19 +18,48 @@
<script>
import * as echarts from 'echarts';
import {getTypeNum,getScoreTotal} from '@/api/enterpriseInformation'
export default {
data() {
return {
categoryList:[]
};
},
created() {
this.getDicts("qualification_type").then(res => {
this.categoryList = res.data.data;
});
},
mounted() {
this.initPieChart()
this.initBarChart()
getTypeNum().then(res=>{
console.log(res.data.data,1111)
this.initPieChart(res.data.data)
})
getScoreTotal().then(
res=>{
console.log(res.data.data,2222)
this.initBarChart(res.data.data)
}
)
},
methods: {
initPieChart() {
typeFormat(row, column) {
return this.selectDictLabel(
this.categoryList,
row
);
},
initPieChart(data) {
const entries = Object.entries(data);
const convertedData = entries.map(([key, value]) => {
const name = this.typeFormat(key);
return {
value: value,
name: name
};
});
var chartDom = document.getElementById('pie-chart');
var myChart = echarts.init(chartDom);
var option;
@ -43,13 +72,14 @@ export default {
{
name: '',
type: 'pie',
radius: '80%',
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
radius: '70%',
data: convertedData,
color: [
'#3F51B5', //
'#1976D2', //
'#039BE5', //
'#00BCD4', //
'#008394' //
],
emphasis: {
itemStyle: {
@ -66,7 +96,17 @@ export default {
},
initBarChart() {
initBarChart(data) {
const entries = Object.entries(data);
let xValue=entries.map(([key, value])=>{
return key
}
)
let yValue=entries.map(([key, value])=>{
return value
}
)
console.log(xValue,'xxxx')
var chartDom = document.getElementById('bar-chart');
var myChart = echarts.init(chartDom);
var option;
@ -79,7 +119,7 @@ export default {
}
},
grid: {
top: '2%',
top: '5%',
left: '3%',
right: '4%',
bottom: '3%',
@ -88,10 +128,16 @@ export default {
xAxis: [
{
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data: xValue,
axisTick: {
interval: 0,
alignWithLabel: true
},
axisLabel: {
fontSize: 8, //
margin: 6
}
}
],
yAxis: [
@ -104,7 +150,7 @@ export default {
name: 'Direct',
type: 'bar',
barWidth: '60%',
data: [10, 52, 200, 334, 390, 330, 220],
data: yValue,
itemStyle: {
color: '#7c9cd6'
}
@ -140,7 +186,7 @@ export default {
}
.sb-content {
width: 100%;
height: 150px;
height: 170px;
}
&.bar-box {
margin-top: 45px;

47
jwtech-pc-page/src/views/home/components/statisticsRight.vue

@ -12,19 +12,33 @@
<script>
import * as echarts from 'echarts';
import {getArea} from "../../../api/enterpriseInformation";
export default {
data() {
return {
};
},
created() {
getArea().then(res=>{
console.log(res.data.data,'aaaaaaaa')
this.initMapChart(res.data.data)
this.initPieChart(res.data.data)
})
},
mounted() {
this.initPieChart()
this.initMapChart()
},
methods: {
initPieChart() {
initPieChart(data) {
const entries = Object.entries(data);
const convertedData = entries.map(([key, value]) => {
if (key=='省外'||key=='省内')
return {
value: value,
name: key
};
});
var chartDom = document.getElementById('pie-echart');
var myChart = echarts.init(chartDom);
var option;
@ -38,13 +52,7 @@ export default {
name: '',
type: 'pie',
radius: ['50%', '80%'],
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
],
data: convertedData,
labelLine: {
show: false
},
@ -63,22 +71,23 @@ export default {
},
async initMapChart() {
async initMapChart(data) {
var chartDom = document.getElementById('map-chart')
var myChart = echarts.init(chartDom);
const entries = Object.entries(data);
const convertedData = entries.map(([key, value]) => {
return {
value: value,
name: key
};
});
console.log(convertedData,2222)
// ** China.json**
const guangdongJson = await fetch("/static/map/guangdong.json").then(res => res.json())
console.log("1111111111111111111111")
console.log(guangdongJson)
echarts.registerMap("guangdong", guangdongJson);
let cityData = [
{ name: "广州", value: 1200 },
{ name: "深圳", value: 1800 },
{ name: "东莞", value: 900 },
{ name: "珠海", value: 500 },
{ name: "汕头", value: 700 },
// ...
];
let cityData = convertedData;
var option = {
tooltip: {
trigger: "item",

29
jwtech-pc-page/src/views/home/components/userLogin.vue

@ -45,36 +45,45 @@
</div>
<div class="box_content">
<div class="c-item">
<div class="c-item-top">4975</div>
<div class="c-item-top">{{info.enterpriseNum}}</div>
<div class="c-item-bottom">从业单位()</div>
</div>
<div class="c-item">
<div class="c-item-top">4975</div>
<div class="c-item-top">{{info.persionNum}}</div>
<div class="c-item-bottom">从业人员()</div>
</div>
<div class="c-item">
<div class="c-item-top">4975</div>
<div class="c-item-bottom">信用信息发布()</div>
<div class="c-item-top">{{info.goodCreditNum}}</div>
<div class="c-item-bottom">企业良好行为公告</div>
</div>
<div class="c-item">
<div class="c-item-top">4975</div>
<div class="c-item-bottom">其他信息发布()</div>
</div>
<div class="c-item">
<div class="c-item-top">4975</div>
<div class="c-item-bottom">信息发布总量()</div>
<div class="c-item-top">{{info.badCreditNum}}</div>
<div class="c-item-bottom">企业不良行为公告</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {getInfoTotal} from "../../../api/enterpriseInformation";
export default {
data(){
return{
info:{}
}
},
methods: {
handleDownloadMd() {
this.$message.success("操作手册下载成功")
}
},
created() {
getInfoTotal().then(res=>{
this.info=res.data.data
})
}
}
</script>

8
jwtech-system/src/main/java/com/kms/enterprise/controller/BsSgcYxjdZhxxController.java

@ -58,6 +58,14 @@ public class BsSgcYxjdZhxxController extends BaseController
return bsSgcYxjdZhxxService.selectPage(sp);
}
@PostMapping("/zc/list")
@ApiOperation("政策文件列表")
public IPage zcList(@RequestBody SearchParam<BsSgcYxjdZhxx> sp)
{
return bsSgcYxjdZhxxService.selectZcPage(sp);
}
/**
* 导出综合信息列表
*/

9
jwtech-system/src/main/java/com/kms/enterprise/controller/CreditStatisticsController.java

@ -79,6 +79,11 @@ public class CreditStatisticsController {
return AjaxResult.success(result);
}
@GetMapping("/get/infoTotal")
public AjaxResult infoTotal(){
return AjaxResult.success(bsSgcYxjdEnterpriseInfoService.getInfoTotal());
}
@PostMapping("/getLineChart")
public AjaxResult getLineChart(@RequestBody LineChartDto dto) {
LineResponseDto res= recordService.getLineChart(dto);
@ -89,8 +94,8 @@ public class CreditStatisticsController {
@GetMapping("/getArea")
public AjaxResult getArea() {
AreaDto list = bsSgcYxjdEnterpriseInfoService.getArea();
return AjaxResult.success(list);
return AjaxResult.success( bsSgcYxjdEnterpriseInfoService.getArea());
}
@PostMapping("/type/num")

3
jwtech-system/src/main/java/com/kms/enterprise/domain/BsSgcYxjdCertificateInfo.java

@ -109,4 +109,7 @@ public class BsSgcYxjdCertificateInfo extends BaseEntity
@ApiModelProperty("附件")
private String owerDept;
@ApiModelProperty("注册证号")
private String registrationCertificateNumber;
}

23
jwtech-system/src/main/java/com/kms/enterprise/domain/BsSgcYxjdPersonnelInfo.java

@ -90,4 +90,27 @@ public class BsSgcYxjdPersonnelInfo extends BaseEntity
private String speciality;
@ApiModelProperty("职称")
private String professionalPost;
@ApiModelProperty("职务")
private String job;
@ApiModelProperty("职务专业")
private String jobSpecialty;
@JsonFormat(pattern = "yyyy",timezone="GMT+8")
@ApiModelProperty("从业开始年份")
private Date commencementYear;
@ApiModelProperty("入职时间")
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private Date enterTime;
@ApiModelProperty("离职时间")
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private Date exitTime;
}

13
jwtech-system/src/main/java/com/kms/enterprise/domain/EnterpriseTotalVo.java

@ -0,0 +1,13 @@
package com.kms.enterprise.domain;
import lombok.Data;
@Data
public class EnterpriseTotalVo {
private Integer enterpriseNum;
private Integer persionNum;
private Integer goodCreditNum;
private Integer badCreditNum;
}

81
jwtech-system/src/main/java/com/kms/enterprise/service/BsSgcYxjdEnterpriseInfoService.java

@ -14,9 +14,14 @@ import com.kms.build.domain.BsSgcjsjdBuiProInfo;
import com.kms.common.utils.UserUtils;
import com.kms.earlyStage.domain.SpecialProjectInfo;
import com.kms.earlyStage.domain.SpecialProjectPreDesign;
import com.kms.enterprise.domain.BsSgcYxjdDynamicCredit;
import com.kms.enterprise.domain.BsSgcYxjdPersonnelInfo;
import com.kms.enterprise.domain.EnterpriseTotalVo;
import com.kms.enterprise.domain.dto.AreaDto;
import com.kms.enterprise.domain.dto.CreditDto;
import com.kms.enterprise.domain.dto.DisclosureDto;
import com.kms.enterprise.mapper.BsSgcYxjdDynamicCreditMapper;
import com.kms.enterprise.mapper.BsSgcYxjdPersonnelInfoMapper;
import com.kms.enterprise.mapper.BsSgcYxjdQualificationsMapper;
import com.kms.system.domain.SysXzqh;
import com.kms.system.mapper.SysXzqhMapper;
@ -30,10 +35,7 @@ import com.kms.enterprise.mapper.BsSgcYxjdEnterpriseInfoMapper;
import com.kms.enterprise.domain.BsSgcYxjdEnterpriseInfo;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -51,6 +53,12 @@ public class BsSgcYxjdEnterpriseInfoService extends BaseService<BsSgcYxjdEnterpr
@Resource
private BsSgcYxjdQualificationsMapper bsSgcYxjdQualificationsMapper;
@Resource
private BsSgcYxjdDynamicCreditMapper bsSgcYxjdDynamicCreditMapper;
@Resource
private BsSgcYxjdPersonnelInfoMapper bsSgcYxjdPersonnelInfoMapper;
@Resource
private SysXzqhMapper sysXzqhMapper;
@ -61,6 +69,28 @@ public class BsSgcYxjdEnterpriseInfoService extends BaseService<BsSgcYxjdEnterpr
@Autowired
private SysDeptService sysDeptService;
public EnterpriseTotalVo getInfoTotal(){
EnterpriseTotalVo enterpriseTotalVo=new EnterpriseTotalVo();
LambdaQueryWrapper<BsSgcYxjdEnterpriseInfo>entLw=new LambdaQueryWrapper<>();
Integer i = bsSgcYxjdEnterpriseInfoMapper.selectCount(entLw);
enterpriseTotalVo.setEnterpriseNum(i);
LambdaQueryWrapper<BsSgcYxjdDynamicCredit>badLw=new LambdaQueryWrapper<>();
badLw.eq(BsSgcYxjdDynamicCredit::getType,"0");
Integer badCount = bsSgcYxjdDynamicCreditMapper.selectCount(badLw);
enterpriseTotalVo.setBadCreditNum(badCount);
LambdaQueryWrapper<BsSgcYxjdDynamicCredit>goodLw=new LambdaQueryWrapper<>();
goodLw.eq(BsSgcYxjdDynamicCredit::getType,"1");
Integer goodCount = bsSgcYxjdDynamicCreditMapper.selectCount(goodLw);
enterpriseTotalVo.setGoodCreditNum(goodCount);
LambdaQueryWrapper<BsSgcYxjdPersonnelInfo>persionLw=new LambdaQueryWrapper<>();
Integer persionNum = bsSgcYxjdPersonnelInfoMapper.selectCount(persionLw);
enterpriseTotalVo.setPersionNum(persionNum);
return enterpriseTotalVo;
};
public Map<String,Integer>getEnterpriseScore(){
Map<String,Integer>map=new HashMap<>();
@ -70,6 +100,8 @@ public class BsSgcYxjdEnterpriseInfoService extends BaseService<BsSgcYxjdEnterpr
map.put("90-99分",0);
map.put("100+",0);
LambdaQueryWrapper<BsSgcYxjdEnterpriseInfo>infoLw=new LambdaQueryWrapper<>();
infoLw.isNotNull(BsSgcYxjdEnterpriseInfo::getScore);
infoLw.last("LIMIT 20");
List<BsSgcYxjdEnterpriseInfo> infos = bsSgcYxjdEnterpriseInfoMapper.selectList(infoLw);
for (BsSgcYxjdEnterpriseInfo enterpriseInfo:infos){
Integer score = Integer.parseInt(enterpriseInfo.getScore());
@ -95,9 +127,14 @@ public class BsSgcYxjdEnterpriseInfoService extends BaseService<BsSgcYxjdEnterpr
public Map<String,Long>getEnterpriseTypeNum(){
Map<String,Long>map=new HashMap<>();
LambdaQueryWrapper<BsSgcYxjdEnterpriseInfo>infoLw=new LambdaQueryWrapper<>();
infoLw.isNotNull(BsSgcYxjdEnterpriseInfo::getEnterpriseType);
infoLw.last("LIMIT 20");
List<BsSgcYxjdEnterpriseInfo> infos = bsSgcYxjdEnterpriseInfoMapper.selectList(infoLw);
if (CollectionUtil.isNotEmpty(infos)) {
map = infos.stream().map(BsSgcYxjdEnterpriseInfo::getEnterpriseType)
map = infos.stream()
.filter(Objects::nonNull) // Filter out null elements
.filter(e -> e.getEnterpriseType() != null) // Filter out elements with null enterpriseType
.map(BsSgcYxjdEnterpriseInfo::getEnterpriseType)
.collect(Collectors.groupingBy(
enterType -> enterType,
Collectors.counting()
@ -191,36 +228,44 @@ public class BsSgcYxjdEnterpriseInfoService extends BaseService<BsSgcYxjdEnterpr
}
}
public AreaDto getArea() {
public Map<String,String>getArea() {
List<BsSgcYxjdEnterpriseInfo> list = bsSgcYxjdEnterpriseInfoMapper.getArea();
list.stream().filter(x -> !x.getAdcd().substring(0, 2).equals("44"))
list.stream()
.filter(x -> x.getAdcd() != null && x.getAdcd().length() > 2) // 增加 null 检查
.filter(x -> !x.getAdcd().substring(0, 2).equals("44"))
.forEach(x -> x.setAdcd("省外"));
list.stream().filter(x -> x.getAdcd().equals("4400")).forEach(x -> x.setAdcd("省属"));
List<SysXzqh> xzqhList = sysXzqhMapper.getArea();
List<SysXzqh> xzqhList = sysXzqhMapper.getArea();
HashMap<String, String> map = new HashMap<>();
long count = list.stream().filter(x -> x.getAdcd() != null && x.getAdcd().length() > 2).filter(x -> x.getAdcd().substring(0, 2).equals("44")).mapToInt(x->Integer.parseInt(x.getNum())).sum();
map.put("省内", String.valueOf(count));
for (BsSgcYxjdEnterpriseInfo bsSgcYxjdEnterpriseInfo : list) {
if (bsSgcYxjdEnterpriseInfo.getAdcd().substring(0, 2).equals("44")) {
if (StringUtils.isNotEmpty(bsSgcYxjdEnterpriseInfo.getAdcd())&&bsSgcYxjdEnterpriseInfo.getAdcd()
.length()>2&&bsSgcYxjdEnterpriseInfo.getAdcd().substring(0, 2).equals("44")) {
for (SysXzqh sysXzqh : xzqhList) {
if (bsSgcYxjdEnterpriseInfo.getAdcd().equals(sysXzqh.getXzqhdm())) {
bsSgcYxjdEnterpriseInfo.setAdcd(sysXzqh.getName());
bsSgcYxjdEnterpriseInfo.setAdcd(sysXzqh.getName().substring(0,2));
}
}
}
}
List<HashMap<String, String>> mapList = new ArrayList<>();
for (BsSgcYxjdEnterpriseInfo bsSgcYxjdEnterpriseInfo : list) {
HashMap<String, String> map = new HashMap<>();
map.put(bsSgcYxjdEnterpriseInfo.getAdcd(), bsSgcYxjdEnterpriseInfo.getNum());
mapList.add(map);
if (map.containsKey(bsSgcYxjdEnterpriseInfo.getAdcd()))
{map.put(bsSgcYxjdEnterpriseInfo.getAdcd(), String.valueOf(Integer.parseInt(map.get(bsSgcYxjdEnterpriseInfo.getAdcd()))
+Integer.parseInt(bsSgcYxjdEnterpriseInfo.getNum())));
}else {
map.put(bsSgcYxjdEnterpriseInfo.getAdcd(),bsSgcYxjdEnterpriseInfo.getNum());
}
}
AreaDto areaDto = new AreaDto();
areaDto.setList(mapList);
return areaDto;
return map;
}

8
jwtech-system/src/main/java/com/kms/enterprise/service/BsSgcYxjdZhxxService.java

@ -25,9 +25,15 @@ public class BsSgcYxjdZhxxService extends BaseService<BsSgcYxjdZhxxMapper, BsSgc
public IPage selectPage(SearchParam<BsSgcYxjdZhxx> sp) {
Page<BsSgcYxjdZhxx> bsSgcYxjdZhxxPage = bsSgcYxjdZhxxMapper.selectPage(new Page<>(sp.getPageNum(), sp.getPageSize()), Wrappers.lambdaQuery(BsSgcYxjdZhxx.class)
Page<BsSgcYxjdZhxx> bsSgcYxjdZhxxPage = bsSgcYxjdZhxxMapper.selectPage(new Page<>(sp.getPageNum(), sp.getPageSize()), Wrappers.lambdaQuery(BsSgcYxjdZhxx.class).eq(BsSgcYxjdZhxx::getTextType,sp.getData().getTextType())
.like(StringUtils.isNotEmpty(sp.getData().getTitle()),BsSgcYxjdZhxx::getTitle, sp.getData().getTitle()).eq(StringUtils.isNotEmpty(sp.getData().getId()),BsSgcYxjdZhxx::getId,sp.getData().getId()));
return bsSgcYxjdZhxxPage;
}
public IPage selectZcPage(SearchParam<BsSgcYxjdZhxx> sp) {
Page<BsSgcYxjdZhxx> bsSgcYxjdZhxxPage = bsSgcYxjdZhxxMapper.selectPage(new Page<>(sp.getPageNum(), sp.getPageSize()), Wrappers.lambdaQuery(BsSgcYxjdZhxx.class).ne(BsSgcYxjdZhxx::getTextType,0).eq(StringUtils.isNotEmpty(sp.getData().getTextType()),BsSgcYxjdZhxx::getTextType,sp.getData().getTextType())
.like(StringUtils.isNotEmpty(sp.getData().getTitle()),BsSgcYxjdZhxx::getTitle, sp.getData().getTitle()).eq(StringUtils.isNotEmpty(sp.getData().getId()),BsSgcYxjdZhxx::getId,sp.getData().getId()));
return bsSgcYxjdZhxxPage;
}
}

Loading…
Cancel
Save