cd页面更新

main
wwl 2024-07-16 09:42:05 +08:00
parent f48e39b7f6
commit 479c2d497c
24 changed files with 1435 additions and 477 deletions

View File

@ -1417,3 +1417,32 @@ export async function fetchPostList(params?: any) {
export async function fetchInternalUserStat(params?: any) {
return http.get(`/moduleStat/internalUserStat`, { params })
}
// CD-三个据点总发注金额饼状图
export async function fetchPartStatisRate(params?: any) {
return http.get(`/cdcontent/partStatisRate`, { params })
}
// CD-三据点历年发注金额
export async function fetchPartHisList(params?: any) {
return http.get(`/cdcontent/partHisList`, { params })
}
// CD-小业种发注金额
export async function fetchPartminBusSeedsRate(params?: any) {
return http.get(`/cdcontent/partminBusSeedsRate`, { params })
}
// CD-大业种发注金额
export async function fetchPartmaxBusSeedsRate(params?: any) {
return http.get(`/cdcontent/partmaxBusSeedsRate`, { params })
}
// CD-图表2-大业种发注金额
export async function fetchPartmaxBusSeedsDetailList(params?: any) {
return http.get(`/cdcontent/maxBusSeedsDetailList`, { params })
}
// CD-图表2-大业种发注金额供应商
export async function fetchPartmaxBusSeedsRateBySupplier(params?: any) {
return http.get(`/cdcontent/partmaxBusSeedsRateBySupplier`, { params })
}

View File

@ -56,11 +56,11 @@ const noticeShow = ref(false)
let showIs = false
//id1- 2- 3- 4-BCP 5- 6- 7-LAB
const goModeuls = (obj) => {
const { moduleId } = obj
const { moduleId, type } = obj
if (!moduleId) return
switch (moduleId) {
case 1:
if (store.user.isReview === 1 || store.user.isPublish === 1) {
if ((store.user.isReview === 1 || store.user.isPublish === 1) && type == 2) {
push('/Home/Process')
} else {
push('/Home/intelligence')
@ -85,7 +85,7 @@ const goModeuls = (obj) => {
push({ name: 'Diffspace' })
break
case 9:
push({ name: 'DataBaseReview' })
push({ name: type === 2 ? 'DataBaseReview' : 'DataBase' })
break
default:
push('/Home/intelligence')
@ -146,12 +146,18 @@ const toFootPrint = () => {
<div class="notice" v-if="noticeShow">
<div
v-for="ite in noticeData"
class="p10px box flex justify-between"
class="p10px box flex justify-between items-center"
v-if="noticeData"
@click="goModeuls(ite)"
>
<div>{{ ite.moduleName }}</div>
<span class="">{{ ite.moduleCount }}</span>
<template v-if="ite.type == 1">
<div>{{ ite.moduleName }}</div>
<span class="min-w-70px">未读{{ ite.moduleCount }}</span>
</template>
<template v-if="ite.type == 2">
<div>{{ ite.moduleName }}</div>
<span class="min-w-70px">待审批{{ ite.moduleCount }}</span>
</template>
</div>
</div>
@ -161,8 +167,8 @@ const toFootPrint = () => {
<span class="ml8px pl5px pr5px rounded-20px bg-#002FA7">{{
store.user.reviewCount ?? 0
}}</span>
</div> -->
<!-- <n-popover :overlap="false" placement="bottom-start" trigger="click">
</div>
<n-popover :overlap="false" placement="bottom-start" trigger="click">
<template #trigger>
<div size="small">
新着通知
@ -170,11 +176,8 @@ const toFootPrint = () => {
store.user.reviewCount ?? 0
}}</span>
</div>
</template> -->
<!-- <div
class="inline-flex items-center p10px cursor-pointer"
v-if="store.user.isReview === 1"
>
</template>
<div class="inline-flex items-center p10px cursor-pointer" v-if="store.user.isReview === 1">
待审核信息{{ store.user.reviewCount ?? 0 }}
<n-button
class="text-#fff bg-#0058E4 rounded-5px p5px pt2px pb2px ml 8px"
@ -202,8 +205,8 @@ const toFootPrint = () => {
@click="push({ path: '/Home/intelligence' })"
>去查看</n-button
>
</div> -->
<!-- </n-popover> -->
</div>
</n-popover> -->
</div>
<!-- 当前登录用户信息 -->
<NDropdown show-arrow placement="bottom-end" size="huge" :options="options">
@ -222,7 +225,7 @@ const toFootPrint = () => {
position: absolute;
top: 52px;
left: -3px;
width: 200px;
min-width: 240px;
background: rgb(255, 255, 255);
max-height: 520px;
z-index: 500;

View File

@ -1,22 +1,21 @@
import { createApp } from "vue";
import { createPinia } from "pinia";
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import ECharts from 'vue-echarts'
import App from "./App.vue";
import router from "./router";
import "./styles/smallDog.css"
import "./styles/main.css";
import "uno.css";
import "animate.css"; // https://animate.style/
import App from './App.vue'
import router from './router'
import './styles/smallDog.css'
import './styles/main.css'
import 'uno.css'
import 'animate.css' // https://animate.style/
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
const app = createApp(App);
const app = createApp(App)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}
app.component('VChart',ECharts)
app.use(createPinia());
app.use(router);
app.component(key, component)
}
app.component('VChart', ECharts)
app.use(createPinia())
app.use(router)
app.mount("#app");
app.mount('#app')

View File

@ -275,5 +275,6 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue')
}

View File

@ -190,19 +190,25 @@ const { chartRef: chartRef2, option: chartOption2, state } = useChart21()
const { chartRef: chartRef22, option: chartOption22 } = useChart22()
const { chartRef: chartRef23, option: chartOption23 } = useChart23()
const { chartRef: chartRef3, option: chartOption3 } = useChart3()
const displayDiffValue = (diffValue: number) => {
// return diffValue + '%'
if (diffValue > 0) {
return `+${diffValue} %`
return `+${diffValue}%`
} else if (diffValue < 0) {
return `-${Math.abs(diffValue)} %`
return `-${Math.abs(diffValue)}%`
} else {
return `${diffValue} %`
// return `${formatNumber(diffValue)} %`
return `${diffValue}%`
}
}
async function setModule(codes: any, names: any) {
const moduleCode = codes
console.log(codes, names)
if (names == 'CD' && !userCode.value) {
return
}
push({ name: names })
const { code } = await report({ moduleCode })
}

479
src/views/home/cd/CD-bak1.vue Executable file
View File

@ -0,0 +1,479 @@
<!-- C/D数据 -->
<script setup lang="ts">
import { hisYearData, curYearData, useChart3, defineCompont } from './CdData'
import { treeList } from '@/api/daikin/base'
import HomeHead from '@/views/home/components/HomeHead.vue'
// import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue'
import CDSide from './CDSide.vue'
import { NForm, NFormItem, useMessage, NSelect, NButton } from 'naive-ui'
import develop from '../develop.vue'
import type { FormInst } from 'naive-ui'
const { push } = useRouter()
const message = useMessage()
const radioss = ref(2020)
const { chartRef: chartRef1, option: chartOption1 } = curYearData()
const { chartRef: chartRef2, option: chartOption2, state } = hisYearData()
const { chartRef: chart1, option: chartOp1 } = useChart3()
const { clickData, toYearData, hisData } = defineCompont()
const treeData = ref<any>()
async function getData() {
const { data } = await treeList()
const dataList = transformData(data)
console.log(dataList)
treeData.value = dataList
}
function transformData(data, parentKey = '') {
let keyIndex = 1
return data.map((item) => {
const key = parentKey ? `${parentKey}-${keyIndex}` : `${item.id}`
keyIndex++
const transformedItem = {
label: item.name,
key: key,
level: parentKey ? parentKey.split('-').length + 1 : 1,
id: item.id
}
const treeList = transformTreeList(item.treeList, key)
if (treeList.length > 0) {
transformedItem.treeList = treeList
}
return transformedItem
})
}
function transformTreeList(treeList, parentKey) {
if (!treeList || treeList.length === 0) {
return []
}
let keyIndex = 1
return treeList.map((item) => {
const key = `${parentKey.split('-').length + 1}-${keyIndex}`
keyIndex++
const transformedItem = {
label: item.name,
key: key,
level: parentKey.split('-').length + 1,
id: item.id
}
const childTreeList = transformTreeList(item.treeList, key)
if (childTreeList.length > 0) {
transformedItem.treeList = childTreeList
}
return transformedItem
})
}
let formValue = ref({
name: '',
age: '',
phone: '',
phone1: ''
})
const formRef = ref<FormInst | null>(null)
const handleValidateClick = (e: MouseEvent) => {
e.preventDefault()
formRef.value?.validate((errors) => {
if (!errors) {
// message.success('Valid')
} else {
console.log(errors)
// message.error('Invalid')
}
})
}
let options = [
{
label: '据点总体',
value: 'song0'
},
{
label: 'DIS',
value: 'song1'
}
]
const checkedValueRef = ref<string | null>(null)
const handleChange = (e: Event) => {
state.cateId = 1
state.yearTime = e
console.log(e)
}
//
const handleChild = (id: any) => {
// console.log(data)
clickData.id = id
}
getData()
</script>
<template>
<!-- <develop/> -->
<HomeHead class="top"> </HomeHead>
<div class="h-full relative flex flex-col">
<div class="font-600 text-36px mt29px">C/D数据11</div>
<div class="q-wrapper flex-1 h957.9px mt30px text-#142142 flex flex-col gap-22px bg-#fff">
<div class="data1 flex gap-26px">
<div class="cd_plan flex-1 pl32px pr33px pt25px pb10px">
<div class="title ml19px font-bold text-24px">FY23 中国域各据点 C/D进度</div>
<div class="text-20px mt21px mb17px font-600">发注金额</div>
<div class="">
<table
style="border: 1px solid #ededed"
class="w-full text-center h295px border-spacing-0 text-16px fazhu"
>
<thead style="background-color: #417bef; color: #fff">
<tr class="h41px">
<th rowspan="2" colspan="2">据点</th>
<th colspan="2">据点</th>
<th colspan="2">苏州</th>
<th colspan="2">惠州</th>
</tr>
<tr class="h41px">
<th>FY23</th>
<th>FY22</th>
<th>FY23</th>
<th>FY22</th>
<th>FY23</th>
<th>FY22</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2" class="text-#142142">合计</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
</tr>
<tr>
<td rowspan="2" class="text-#142142">C/D</td>
<td class="text-#142142">交涉</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
</tr>
<tr>
<td class="text-#142142">THEME</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
</tr>
<tr>
<td colspan="2" class="text-#142142">市况</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
</tr>
<tr>
<td colspan="2" class="text-#142142">汇率</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
<td>55.40%</td>
</tr>
</tbody>
</table>
</div>
<div class="flex h55px">
<n-form ref="formRef" inline :label-width="55" :model="formValue" class="!items-center">
<n-form-item path="name">
<n-select
style="width: 148px"
v-model:value="formValue.name"
placeholder="请选择"
:options="options"
/>
</n-form-item>
<n-form-item path="age">
<n-select
style="width: 148px"
v-model:value="formValue.age"
placeholder="请选择"
:options="options"
/>
</n-form-item>
<n-form-item path="phone">
<n-select
style="width: 148px"
v-model:value="formValue.phone"
placeholder="请选择"
:options="options"
/>
</n-form-item>
<n-form-item path="phone">
<n-select
style="width: 148px"
v-model:value="formValue.phone1"
placeholder="请选择"
:options="options"
/>
</n-form-item>
<n-form-item>
<n-button
style="background-color: #417bef; color: #fff"
attr-type="button"
@click="handleValidateClick"
>
检索
</n-button>
</n-form-item>
</n-form>
</div>
</div>
<div class="amount flex-1 pl32px pr33px pt27px pb0px">
<div class="flex gap-49px">
<div class="flex-1">
<div class="title ml19px font-bold text-24px">发注金额推移</div>
<div class="w330px h199px mt22px">
<img src="./images/fazhuje.png" alt="" />
</div>
</div>
<div class="flex-1">
<div class="title ml19px font-bold text-24px">CD堆积</div>
<div class="w330px h199px mt22px">
<img src="./images/cddj.png" alt="" />
</div>
</div>
<div class="flex-1">
<div class="title ml19px font-bold text-24px">发注金额推移</div>
<div class="w100% h199px mt22px">
<VChart ref="chart1" :option="chartOp1" autoresize />
</div>
<div class="title ml19px font-bold text-24px !absolute top-0 left-50%">CD堆积</div>
</div>
</div>
<div class="h152px mt20px" style="border: 1px solid #d3d3d3">
<div class="mt13px ml17px text-16px font-bold">年度重点</div>
<div class="h112px ml17px mt10px mr15px text-14px lh-22px overflow-y-auto">
年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点The
年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点The
年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点The
年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点The
年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重点Theme年度重
</div>
</div>
</div>
</div>
<div class="data2 flex flex-col">
<div class="flex min-h280px">
<div class="w148px">
<div class="title ml19px font-bold text-24px">按业绩</div>
<div class="max-h-236px overflow-y-auto mt100px">
<CDSide :treeData="treeData" @clickChliden="handleChild"></CDSide>
</div>
</div>
<div class="ml24px w485px">
<div class="ml19px font-bold text-24px">当年度</div>
<table
class="dangnian w485px text-center mt23px text-18px border-spacing-0 overflow-auto min-h-100px"
>
<thead style="background-color: #417bef; color: #fff; height: 42px">
<tr class="h41px">
<th colspan="4">FY2023</th>
</tr>
<tr class="h35px">
<th>供方</th>
<th>发注金额</th>
<th>交涉</th>
<th>Theme</th>
</tr>
</thead>
<tbody>
<tr v-for="i in toYearData" key="i" class="!h35px text-16px">
<td>{{ i.supplierName }}</td>
<td>{{ i.publishAmount }}</td>
<td>{{ i.negAmount }}</td>
<td>{{ i.themeRate }}%</td>
</tr>
</tbody>
</table>
</div>
<div class="ml89px flex-1">
<div class="title ml19px font-bold text-24px">历史数据</div>
<div class="flex">
<table
class="history w-full text-center mt23px text-18px border-spacing-0 overflow-auto"
>
<thead style="background-color: #417bef; color: #fff; height: 42px">
<tr class="h41px">
<th colspan="3">FY2023</th>
</tr>
<tr class="h41px">
<th>发注</th>
<th>交涉</th>
<th>Theme</th>
</tr>
</thead>
<tbody>
<tr v-for="i in hisData['2023']" key="i" class="!h35px text-16px">
<td>{{ i.publishAmount }}</td>
<td>{{ i.negAmount }}</td>
<td>{{ i.themeRate }}%</td>
</tr>
</tbody>
</table>
<table
class="history w-full text-center mt23px text-18px border-spacing-0 overflow-auto"
>
<thead style="background-color: #417bef; color: #fff; height: 42px">
<tr class="h41px">
<th colspan="3">FY2022</th>
</tr>
<tr class="h41px">
<th>发注</th>
<th>交涉</th>
<th>Theme</th>
</tr>
</thead>
<tbody>
<tr v-for="i in hisData['2022']" key="i" class="!h35px text-16px">
<td>{{ i.publishAmount }}</td>
<td>{{ i.negAmount }}</td>
<td>{{ i.themeRate }}%</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="flex gap-101px mt29px">
<div class="w634px h243px">
<VChart ref="chartRef1" :option="chartOption1" autoresize />
</div>
<div class="w634px h243px">
<VChart ref="chartRef2" :option="chartOption2" autoresize />
<div class="w634px pl30px h30px">
<el-radio-group v-model="radioss" @change="handleChange">
<el-radio :label="2020">FY2020</el-radio>
<el-radio :label="2021"> FY2021</el-radio>
<el-radio :label="2022">FY2022</el-radio>
</el-radio-group>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class="absolute flex flex-col w-full h-full z-200 top-0 left-0 text-center bg-red justify-center items-center"
style="background-color: rgba(255, 255, 255, 0.8)"
>
<img src="@/assets/images/chah.png" />
<br />
<div class="text-#5683DB text-36px">做成中,敬请期待</div>
</div>
</template>
<style scoped lang="less">
.top {
position: absolute;
right: 30px;
top: -92px;
}
.fazhu {
td {
border: 1px solid #e0e0e0;
color: #808696;
}
}
.dangnian {
td {
border: 1px solid #e0e0e0;
color: #808696;
}
}
.history {
td {
border: 1px solid #e0e0e0;
color: #808696;
}
}
.menu {
position: absolute;
background: #fff;
border: 1px solid #333;
}
.menu li {
list-style: none;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
::-webkit-scrollbar {
width: 1px;
}
.q-wrapper {
overflow-y: scroll;
border-radius: 20px;
.cd_plan,
.amount,
.data2 {
border: 1px solid #e7ebf5;
border-radius: 18px;
box-shadow: inset 1px 2px 12px rgba(14, 86, 221, 0.32);
}
.data2 {
// height: 600.9px;
padding: 28px;
}
.title {
position: relative;
&::before {
content: '';
width: 8px;
height: 30px;
background-color: #003ab5;
position: absolute;
left: -15px;
top: -3px;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,270 @@
import { color, type EChartsOption } from 'echarts'
//数字转千分位
export function formatNum(num: any) {
const n = String(num).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
return n
}
export function totalPieCharData(arr: any = [], colorList: any = {}) {
// const color: any = []
// const data = arr.map((item: any) => {
// color.push(colorList[item.moduleCode])
// return {
// name: item.moduleName,
// value: item.visitCount,
// _code: item.moduleCode
// }
// })
const option: EChartsOption = {
tooltip: {
// formatter: '{b} : {c}百万 ({d}%)',
// formatter: '{b} : {c} ({d}%)',
formatter: function (params: any) {
return (
params.data.name +
' : ' +
formatNum(params.data.value) +
'\n' +
'(' +
params.percent +
'%' +
')'
)
},
trigger: 'item'
},
legend: {
show: false,
// top: '5%',
left: 'center',
textStyle: {
fontSize: 12,
color: '#fff'
}
},
graphic: {
type: 'text',
left: 'center',
top: 'center',
style: {
text:
'总计' + //圆饼中心显示数据,这里是显示得总数
'\n' +
formatNum(222299939.23),
fill: '#fff',
fontSize: 14,
width: 30,
height: 30,
textAlign: 'center'
}
},
grid: {
containLabel: true
},
series: [
{
// name: 'Access',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
show: true,
color: '#fff',
fontSize: 12,
formatter: '{b} ({d}%)'
// position: 'center'
},
// emphasis: {
// label: {
// show: true,
// fontSize: 40,
// fontWeight: 'bold',
// color: '#fff'
// }
// },
// labelLine: {
// show: true
// },
data: []
}
]
}
return option
}
export function totalBarCharData(params: any = {}) {
const option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
legend: {
// type: 'scroll',
data: ['Evaporation', 'Precipitation', 'Temperature'],
textStyle: {
fontSize: 12,
color: '#fff'
}
},
grid: {
left: '7%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data: [],
axisPointer: {
type: 'shadow'
},
axisLabel: {
color: '#fff'
}
}
],
// graphic: {
// type: 'text',
// left: '0',
// top: 'center',
// rotation: 90,
// style: {
// text: '百万元',
// fill: '#fff',
// fontSize: 14,
// textAlign: 'center'
// }
// },
yAxis: [
{
type: 'value',
name: '百万元',
// min: 0,
// max: 250,
// interval: 50,
axisLabel: {
formatter: '{value}',
color: '#fff'
},
nameTextStyle: {
color: '#fff',
align: 'right',
padding: [0, 8, 0, 0]
},
// nameRotate: 90,
// nameTruncate: {
// maxWidth: 80,
// ellipsis: '...'
// },
// nameLocation: 'left',
// nameGap: 50,
axisLine: {
lineStyle: {
color: '#1f78af',
width: 2 //y轴宽度这里是为了突出显示加上的
}
}
},
{
type: 'value',
// name: 'Temperature',
// min: 0,
// max: 25,
// interval: 5,
axisLabel: {
formatter: '{value}',
color: '#fff'
}
}
],
series: []
}
return option
}
export function disBarCharData(params: any = {}) {
const option = {
minBusSeeds: '',
tooltip: {
trigger: 'axis',
axisPointer: {
// Use axis to trigger tooltip
type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
}
},
legend: {
left: 'center',
right: 'center',
type: 'scroll',
pageIconInactiveColor: '#aaa',
pageIconColor: '#fff',
pageTextStyle: {
color: '#fff'
},
data: [],
textStyle: {
fontSize: 12,
color: '#fff'
}
},
grid: {
left: '6%',
right: '4%',
bottom: '3%',
containLabel: true
},
yAxis: {
type: 'value',
name: '百万元',
axisLabel: {
color: '#fff'
},
nameTextStyle: {
color: '#fff',
align: 'right',
padding: [0, 8, 0, 0]
}
// nameRotate: 90,
// nameTruncate: {
// maxWidth: 80,
// ellipsis: '...'
// },
// nameLocation: 'end'
// nameGap: 50
},
xAxis: {
type: 'category',
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data: [],
axisLabel: {
color: '#fff'
}
},
series: []
// series: [
// {
// name: 'Direct',
// type: 'bar',
// stack: 'total',
// label: {
// show: true
// },
// emphasis: {
// focus: 'series'
// },
// data: [320, 302, 301, 334, 390, 330, 320]
// },
// ]
}
return option
}

BIN
src/views/home/cd/img/1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 KiB

BIN
src/views/home/cd/img/2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 KiB

BIN
src/views/home/cd/img/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 KiB

BIN
src/views/home/cd/img/h.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 KiB

BIN
src/views/home/cd/img/y.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/views/home/cd/img/you.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
src/views/home/cd/img/z.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/views/home/cd/img/zt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

BIN
src/views/home/cd/img/zuo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -69,6 +69,7 @@ const getCsrSupplier = () => {
}
const csrSupplierList = ref<any>([])
// const selMonth = ref((new Date().getMonth() + 1).toString())
const selMonth = ref('')
const getCsrSupplierList = (index?: any) => {
const _m = +months[index]
@ -332,7 +333,9 @@ getCsrSupplierTaskInfo()
</div>
<div class="cards">
<div class="cards_title relative">
未提交供应商明细({{ +selMonth < 4 ? +query.year + 1 : query.year }}{{ selMonth }})
未提交供应商明细({{ selMonth && +selMonth < 4 ? +query.year + 1 : query.year }}{{
selMonth
}}{{ selMonth ? '月' : '' }})
</div>
<div class="absolute top-24px !text-18px right-20px pt30px text-#4E7EE8">
<span class="text-#ababab">更新时间{{ updateTime }}</span>

View File

@ -148,11 +148,11 @@ function getFileNameFromUrl(url: string) {
}
const goModule = (item, type) => {
const { moduleCode, id } = item
const { moduleCode, id, cateId } = item
const { modulePath, path } = codePath[moduleCode]
if (modulePath) {
if (type === 'module') {
push(modulePath)
moduleCode === 'App_Database' ? push(modulePath + `?id=${cateId}`) : push(modulePath)
} else {
push(path + id)
}

View File

@ -6,6 +6,7 @@ import { NModal, NPopover } from 'naive-ui'
import { useUserStore } from '@/stores/modules/user'
import Searchs from '@/components/search.vue'
import { report, treeDbList } from '@/api/daikin/base'
// import axios from 'axios'
useTitle('大金中国调达本部 HOMEPAGE')
const { push } = useRouter()
const store = useUserStore()
@ -69,7 +70,8 @@ const Menus = ref([
{
key: 'YCWZ',
name: '调达本部才望子',
link: 'http://172.31.119.37/scripts/cbgrn/grn.exe/portal/index'
isClick: true
// link: 'http://172.31.119.37/scripts/cbgrn/grn.exe/portal/index'
},
{
key: 'GCDB',
@ -166,6 +168,10 @@ watchEffect(() => {
}, 0)
})
function goChild(menu: any) {
if (menu.isClick) {
goUrl()
return
}
activeItem = menu.key
if (menu.key === 'CODE') {
shorm.value = true
@ -176,6 +182,15 @@ function goChild(menu: any) {
push({ name: menu.key, query: menu.params || {} })
}
}
const goUrl = () => {
const url = store.user?.cwzLoginUrl
const doman = url ? url.split('?')?.shift() : ''
if (!doman) return
fetch(url).then((res) => {
window.open(doman, '_blank')
})
}
var activeItem = 0
</script>
@ -288,7 +303,12 @@ var activeItem = 0
<div class="p20px w270px rd-20px b-4px bg-#fff/4 b-4px b-solid b-#fff/23 text-14px relative">
<!-- href="http://106.14.114.146/scripts/cbgrn/grn.exe" -->
<!-- href="http://172.31.119.37/scripts/cbgrn/grn.exe/portal/index" -->
<a :href="store.user?.cwzLoginUrl" target="_blank" class="no-underline text-#fff">
<div
@click="goUrl"
:href="store.user?.cwzLoginUrl"
target="_blank"
class="no-underline text-#fff"
>
<div class="flex items-center text-18px hover:underline">
<img src="@/assets/images/icon-book.svg" class="w22px h22px mr10px" />
个人日程
@ -301,7 +321,7 @@ var activeItem = 0
src="@/assets/images/zhulj@2x.png"
class="absolute w22px h22px mr10px top--15px right--20px"
/>
</a>
</div>
<div class="mt10px ml-30px opacity-70" @click="(e) => e.stopPropagation()">
请点击上方链接登录cybouzu
</div>