首页,收入合同关联项目图标替换
@@ -8,23 +8,24 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tinymce/tinymce-vue": "^2.1.0",
|
||||
"ant-design-vue": "^1.7.6",
|
||||
"area-data": "^5.0.6",
|
||||
"axios": "^0.21.1",
|
||||
"compression-webpack-plugin": "^8.0.1",
|
||||
"core-js": "^3.6.5",
|
||||
"dayjs": "^1.10.6",
|
||||
"echarts": "^5.2.1",
|
||||
"enquire.js": "^2.1.6",
|
||||
"jsencrypt": "^3.2.1",
|
||||
"lodash.pick": "^4.4.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-ls": "^3.2.2",
|
||||
"tinymce": "^5.3.2",
|
||||
"@tinymce/tinymce-vue": "^2.1.0",
|
||||
"vue": "^2.6.11",
|
||||
"vue-area-linkage": "^5.1.0",
|
||||
"vue-ls": "^3.2.2",
|
||||
"vue-photo-preview": "^1.1.3",
|
||||
"vue-print-nb-jeecg": "^1.0.9",
|
||||
"vue-area-linkage": "^5.1.0",
|
||||
"vue-router": "^3.2.0",
|
||||
"vuedraggable": "^2.20.0",
|
||||
"vuex": "^3.4.0"
|
||||
|
||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.7 KiB |
@@ -18,7 +18,7 @@
|
||||
<span slot="tab" :pagekey="page.fullPath">{{ page.meta.title }}</span>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<div style="margin: 12px 12px 0;">
|
||||
<div style="margin: 12px 12px 0; overflow-x: auto">
|
||||
<!-- update-begin-author:taoyan date:20201221 for:此处删掉transition标签 不知道为什么加上后 页面路由切换的时候即1及菜单切到2及菜单的时候 两个菜单页面会同时出现300-500秒左右 -->
|
||||
<keep-alive v-if="multipage">
|
||||
<router-view v-if="reloadFlag"/>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
v-for="(item, index) in projectType"
|
||||
:key="index"
|
||||
@click="chooseProjectType(index, item.type)">
|
||||
<img :src="choosedIndex === index ? item.selectedImg : item.img">
|
||||
<img class="project-type-item-img" :src="choosedIndex === index ? item.selectedImg : item.img">
|
||||
<div class="project-type-item-title">{{ item.title }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -23,16 +23,24 @@
|
||||
|
||||
<script>
|
||||
import GeneralProjectImg from '@/assets/imgs/generial_project.png'
|
||||
import GeneralProjectSelectImg from '@/assets/imgs/working_group_project_selected.png'
|
||||
import WorkingGroupProjectImg from '@/assets/imgs/working_group_project_selected.png'
|
||||
import GeneralProjectSelectImg from '@/assets/imgs/generial_project_selected.png'
|
||||
import WorkingGroupProjectImg from '@/assets/imgs/working_group_project.png'
|
||||
import WorkingGroupProjectSelectedImg from '@/assets/imgs/working_group_project_selected.png'
|
||||
import MeetingProjectImg from '@/assets/imgs/meeting_project.png'
|
||||
import MeetingProjectSelectedImg from '@/assets/imgs/working_group_project_selected.png'
|
||||
import MeetingProjectSelectedImg from '@/assets/imgs/meeting_project_selected.png'
|
||||
import MemberProjectImg from '@/assets/imgs/member_project.png'
|
||||
import MemberProjectSelectedImg from '@/assets/imgs/working_group_project_selected.png'
|
||||
import MemberProjectSelectedImg from '@/assets/imgs/member_project_selected.png'
|
||||
|
||||
export default {
|
||||
name: 'ProjectTypeSelection',
|
||||
props: {
|
||||
// 是否打包,打包不可选择会议
|
||||
isPack: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '关联项目',
|
||||
@@ -66,6 +74,13 @@ export default {
|
||||
]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
isPack(value) {
|
||||
if (value) {
|
||||
this.projectType.splice(2, 1)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
this.visible = true
|
||||
@@ -103,6 +118,10 @@ export default {
|
||||
&-item {
|
||||
cursor: pointer;
|
||||
|
||||
&-img {
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
&-title {
|
||||
margin-top: 10px;
|
||||
font-size: 14px;
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
</a-card>
|
||||
|
||||
<!-- 项目类型选择-->
|
||||
<project-type-selection ref="projectTypeSelection" @ok="selectProjectTypeOk"></project-type-selection>
|
||||
<project-type-selection ref="projectTypeSelection" :is-pack="isPackage" @ok="selectProjectTypeOk"></project-type-selection>
|
||||
<!-- 普通项目选择-->
|
||||
<select-project-module ref="selectProjectModule"
|
||||
@ok="selectProjectOk"
|
||||
@@ -467,14 +467,14 @@ export default {
|
||||
name: record.signedContactsTemporaryName
|
||||
}
|
||||
// 回显打包年份
|
||||
this.isPackage = record.pack === 1
|
||||
this.isPackage = Number(record.pack) === 1
|
||||
// 处理分期信息回显
|
||||
this.$refs.installmentForm.initInstallmentList(record.listInstallment)
|
||||
// 获取应收金额和已收金额
|
||||
this.accountsReceivableNum = record.accountsReceivableAmount
|
||||
this.amountReceivedNum = record.amountReceived
|
||||
// 将pack值改为数字,解决控制台报错
|
||||
record.pack = Number(record.pack)
|
||||
record.pack = record.pack
|
||||
this.model = Object.assign({}, record)
|
||||
this.temporaryModel = Object.assign({}, record)
|
||||
this.$nextTick(() => {
|
||||
|
||||
@@ -103,7 +103,7 @@ export default {
|
||||
props: {
|
||||
// 打包状态
|
||||
pack: {
|
||||
type: Number,
|
||||
type: [Number, String],
|
||||
requird: false,
|
||||
default: null
|
||||
},
|
||||
|
||||
@@ -10,27 +10,27 @@
|
||||
<div class="workspace-container">
|
||||
<div class="workspace-item">
|
||||
<img src="@/assets/imgs/homePage/user-management.png"/>
|
||||
<span>个人设置</span>
|
||||
<div class="workspace-item-text">个人设置</div>
|
||||
</div>
|
||||
<div class="workspace-item">
|
||||
<div class="workspace-item" @click="workspaceJump('/businessManagement/BusinessManagement')">
|
||||
<img src="@/assets/imgs/homePage/company-management.png"/>
|
||||
<span>企业管理</span>
|
||||
<div class="workspace-item-text">企业管理</div>
|
||||
</div>
|
||||
<div class="workspace-item">
|
||||
<div class="workspace-item" @click="workspaceJump('/projectManagement/GeneralProjectManagement')">
|
||||
<img src="@/assets/imgs/homePage/general-project.png"/>
|
||||
<span>普通项目</span>
|
||||
<div class="workspace-item-text">普通项目</div>
|
||||
</div>
|
||||
<div class="workspace-item">
|
||||
<div class="workspace-item" @click="workspaceJump('/projectManagement/WorkingGroupProjectManagement')">
|
||||
<img src="@/assets/imgs/homePage/working-group-project.png"/>
|
||||
<span>工作组项目</span>
|
||||
<div class="workspace-item-text">工作组项目</div>
|
||||
</div>
|
||||
<div class="workspace-item">
|
||||
<div class="workspace-item" @click="workspaceJump('/incomePayments/memberManage/MemberProjectList')">
|
||||
<img src="@/assets/imgs/homePage/member-project.png"/>
|
||||
<span>会员项目</span>
|
||||
<div class="workspace-item-text">会员项目</div>
|
||||
</div>
|
||||
<div class="workspace-item">
|
||||
<img src="@/assets/imgs/homePage/data-statistics.png"/>
|
||||
<span>数据统计</span>
|
||||
<div class="workspace-item-text">数据统计</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,37 @@
|
||||
<div class="home-part-title"><img src="@/assets/imgs/icon/icon_data_statistics.png"/>数据统计</div>
|
||||
<div class="divider"></div>
|
||||
|
||||
<div class="data-statistics-container">
|
||||
<div class="data-statistics-item bg-payment">
|
||||
<div class="item-left">
|
||||
本月新增收款项
|
||||
</div>
|
||||
<a-tooltip>
|
||||
<template slot="title">{{ indexStyle.toString() }}</template>
|
||||
<div class="item-right">{{ indexStyle.toString().slice(0, 3) }}</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="data-statistics-item bg-account">
|
||||
<div class="item-left">
|
||||
本月到账(万元)
|
||||
</div>
|
||||
<a-tooltip>
|
||||
<template slot="title"></template>
|
||||
<div class="item-right"></div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
|
||||
<div class="data-statistics-item bg-mail">
|
||||
<div class="item-left">
|
||||
本月邮寄项
|
||||
</div>
|
||||
<a-tooltip>
|
||||
<template slot="title"></template>
|
||||
<div class="item-right"></div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
@@ -52,12 +82,40 @@
|
||||
<!-- 标题-->
|
||||
<div class="home-part-title"><img src="@/assets/imgs/icon/icon_home_report.png"/>统计报表</div>
|
||||
<div class="divider"></div>
|
||||
|
||||
<div class="statistical-reports-container">
|
||||
<!-- 个人统计and科室统计-->
|
||||
<div class="container-box">
|
||||
<!-- 个人统计-->
|
||||
<div class="container-item">
|
||||
<div class="container-item-title">个人统计(前10)</div>
|
||||
<div class="container-item-echarts" id="personalStatistics"></div>
|
||||
</div>
|
||||
<div class="container-item">
|
||||
<div class="container-item-title">科室统计(前10)</div>
|
||||
<div class="container-item-echarts" id="departStatistics"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 工作组统计and企业统计-->
|
||||
<div class="container-box">
|
||||
<!-- 个人统计-->
|
||||
<div class="container-item">
|
||||
<div class="container-item-title">工作组统计(前10)</div>
|
||||
<div class="container-item-echarts" id="workingGroupStatistics"></div>
|
||||
</div>
|
||||
<div class="container-item">
|
||||
<div class="container-item-title">企业统计(前10)</div>
|
||||
<div class="container-item-echarts" id="companyStatistics"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -65,22 +123,95 @@ export default {
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
indexStyle: 1
|
||||
indexStyle: 1111111111111,
|
||||
// 屏幕宽度
|
||||
screenWidth: document.body.clientWidth,
|
||||
option: {
|
||||
legend: {
|
||||
type: 'plain',
|
||||
orient: 'vertical',
|
||||
right: 10,
|
||||
top: 20,
|
||||
bottom: 20,
|
||||
itemGap: 20,
|
||||
itemWidth: 15,
|
||||
data: ['Search Engine', 'Direct', 'Email', 'Union Ads', 'Video Ads', 'Search Engine1', 'Direct1', 'Email1', 'Union Ads1', 'Video Ads1']
|
||||
},
|
||||
color: ['#117FFA', '#06A1B3', '#6D62FF', '#60C39A', '#31C5E1'],
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
radius: ['50%', '70%'],
|
||||
left: 0,
|
||||
width: '50%',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
show: true
|
||||
},
|
||||
data: [
|
||||
{ value: 1048, name: 'Search Engine' },
|
||||
{ value: 735, name: 'Direct' },
|
||||
{ value: 580, name: 'Email' },
|
||||
{ value: 484, name: 'Union Ads' },
|
||||
{ value: 300, name: 'Video Ads' },
|
||||
{ value: 1048, name: 'Search Engine1' },
|
||||
{ value: 735, name: 'Direct1' },
|
||||
{ value: 580, name: 'Email1' },
|
||||
{ value: 484, name: 'Union Ads1' },
|
||||
{ value: 300, name: 'Video Ads1' }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
watch: {
|
||||
screenWidth(value) {
|
||||
console.log(value)
|
||||
}
|
||||
},
|
||||
methods: {}
|
||||
mounted() {
|
||||
setTimeout(() => {
|
||||
this.initPersonalStatisticsEcharts()
|
||||
},0)
|
||||
},
|
||||
methods: {
|
||||
initPersonalStatisticsEcharts() {
|
||||
let personalBox = document.getElementById('personalStatistics')
|
||||
let personalEchart = echarts.init(personalBox)
|
||||
personalEchart.setOption(this.option)
|
||||
window.addEventListener('resize', () => {
|
||||
personalEchart.resize()
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 工作区按钮跳转
|
||||
* @param path
|
||||
*/
|
||||
workspaceJump(path) {
|
||||
this.$router.push({
|
||||
path: path
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
//上部分整体
|
||||
.page-top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
//各部分的title
|
||||
.home-part-title {
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC, PingFang SC-Medium;
|
||||
@@ -94,12 +225,14 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
//标题下横线
|
||||
.divider {
|
||||
height: 2px;
|
||||
background-color: #F0F2F5;
|
||||
margin: 20px -24px;
|
||||
}
|
||||
|
||||
//工作区
|
||||
.workspace {
|
||||
margin-right: 10px;
|
||||
width: calc(50% - 10px);
|
||||
@@ -110,6 +243,9 @@ export default {
|
||||
}
|
||||
|
||||
&-item {
|
||||
width: 16%;
|
||||
max-width: 80px;
|
||||
height: 130px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -117,10 +253,13 @@ export default {
|
||||
align-items: center;
|
||||
|
||||
& > img {
|
||||
height: 74px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
& > span {
|
||||
&-text {
|
||||
height: 40px;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
margin-top: 15px;
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC, PingFang SC-Regular;
|
||||
@@ -130,12 +269,99 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
//数据统计
|
||||
.data-statistics {
|
||||
margin-left: 10px;
|
||||
width: calc(50% - 10px);
|
||||
|
||||
&-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
&-item {
|
||||
width: calc(33% - 10px);
|
||||
height: 130px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.item-left {
|
||||
flex-shrink: 0;
|
||||
width: 60%;
|
||||
padding-left: 15px;
|
||||
height: 100%;
|
||||
padding-top: 45px;
|
||||
font-size: 18px;
|
||||
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.item-right {
|
||||
padding-right: 10px;
|
||||
cursor: pointer;
|
||||
max-height: 105px;
|
||||
font-size: 36px;
|
||||
font-family: Acre, Acre-Medium;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
color: #ffffff;
|
||||
line-height: 45px;
|
||||
//word-break: break-all;
|
||||
overflow: hidden;
|
||||
//display: -webkit-box;
|
||||
//-webkit-box-orient: vertical;
|
||||
//-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.bg-payment {
|
||||
background: url("../../assets/imgs/homePage/bg-payment.png") 100%;
|
||||
}
|
||||
|
||||
.bg-account {
|
||||
background: url("../../assets/imgs/homePage/bg-account.png") 100%;
|
||||
}
|
||||
|
||||
.bg-mail {
|
||||
background: url("../../assets/imgs/homePage/bg-mail.png") 100%;
|
||||
}
|
||||
}
|
||||
|
||||
//统计报表
|
||||
.statistical-reports {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.container-box {
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.container-item {
|
||||
width: calc(50% - 10px);
|
||||
box-shadow: -4px 0px 24px 24px rgba(51, 51, 51, 0.05);
|
||||
border: 1px solid #f5f5f5;
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
padding: 20px;box-sizing: border-box;
|
||||
|
||||
&-title {
|
||||
font-size: 16px;
|
||||
font-family: PingFang SC, PingFang SC-Medium;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
&-echarts {
|
||||
//position: absolute;
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -4374,6 +4374,14 @@ ecc-jsbn@~0.1.1:
|
||||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
echarts@^5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.2.1.tgz#bd58ec011cd82def4a714e4038ef4b73b8417bc3"
|
||||
integrity sha512-OJ79b22eqRfbSV8vYmDKmA+XWfNbr0Uk/OafWcFNIGDWti2Uw9A6eVCiJLmqPa9Sk+EWL+t5v26aak0z3gxiZw==
|
||||
dependencies:
|
||||
tslib "2.3.0"
|
||||
zrender "5.2.1"
|
||||
|
||||
ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.nlark.com/ee-first/download/ee-first-1.1.1.tgz"
|
||||
@@ -10346,6 +10354,11 @@ ts-pnp@^1.1.6:
|
||||
resolved "https://registry.nlark.com/ts-pnp/download/ts-pnp-1.2.0.tgz"
|
||||
integrity sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=
|
||||
|
||||
tslib@2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
|
||||
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
|
||||
|
||||
tslib@^1.10.0, tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1623450901878&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz"
|
||||
@@ -11350,3 +11363,10 @@ yorkie@^2.0.0:
|
||||
is-ci "^1.0.10"
|
||||
normalize-path "^1.0.0"
|
||||
strip-indent "^2.0.0"
|
||||
|
||||
zrender@5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/zrender/-/zrender-5.2.1.tgz#5f4bbda915ba6d412b0b19dc2431beaad05417bb"
|
||||
integrity sha512-M3bPGZuyLTNBC6LiNKXJwSCtglMp8XUEqEBG+2MdICDI3d1s500Y4P0CzldQGsqpRVB7fkvf3BKQQRxsEaTlsw==
|
||||
dependencies:
|
||||
tslib "2.3.0"
|
||||
|
||||