Merge branch 'ah-simple' of http://192.168.0.75:3000/bonus/Zlpt_Portal into ah-simple

This commit is contained in:
hongchao 2025-03-14 09:04:17 +08:00
commit c3263d3d5f
18 changed files with 564 additions and 1201 deletions

2
components.d.ts vendored
View File

@ -29,6 +29,7 @@ declare module 'vue' {
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
@ -36,6 +37,7 @@ declare module 'vue' {
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElProgress: typeof import('element-plus/es')['ElProgress']

4
env/.env.dev vendored
View File

@ -10,8 +10,8 @@ VITE_API_URL = '/proxyApi'
# VITE_proxyTarget = 'http://192.168.0.234:28080' # 马帅
# VITE_proxyTarget = 'http://192.168.2.122:28080' # 梁超
# VITE_proxyTarget = 'http://36.33.26.201:17788/proxyApi' # 测试÷服务
# VITE_proxyTarget = 'http://192.168.0.244:28580' # 测试服务
VITE_proxyTarget = 'http://192.168.0.96:28080' # 马帅
VITE_proxyTarget = 'http://192.168.0.244:28580' # 测试服务
# VITE_proxyTarget = 'http://192.168.0.96:28080' # 马帅
# VITE_proxyTarget = 'http://10.40.92.185:9206' # 赵福海 ( 设备类型)
# VITE_proxyTarget = 'http://10.40.92.16:9502' # 牛 (个人中心 基础信息企业申请认证)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -19,12 +19,12 @@ const props = defineProps({
height: 36px;
padding-left: 30px;
line-height: 20px;
color: #fff;
color: #ccc;
/* background: linear-gradient(to right, #086c94, #0e557f, #06112c); */
background: url('@/assets/img/screen/title_bg.png') no-repeat;
background-size: 100% 100%;
letter-spacing: 4px;
font-size: 18px;
font-size: 16px;
}
</style>

View File

@ -240,6 +240,13 @@ const resetPhone = async () => {
})
}
//
const onJumpScreen = () => {
router.push({
name: 'big-screen',
})
}
onMounted(() => {
// token
if (store.token) {
@ -296,6 +303,10 @@ onMounted(() => {
<el-badge v-else :value="form.msgNum ? Number(form.msgNum) : ''" :max="99" @click="onJumpMessage" style="margin: 0 10px;">消息</el-badge>
<div class="line"></div>
</div>
<div class="header-item" v-if="isShowLogout">
<a @click="onJumpScreen">数据大屏</a>
<div class="line"></div>
</div>
<!-- <div class="header-item">
<a @click="onClickMyUser"> 个人中心 </a>
<div class="line"></div>

View File

@ -10,7 +10,7 @@ export const getLeaseCountByTypeNameApi = (data: any = {}) => {
}
// 装备租赁互联
export const getLeaseCouplesApi = (data: any = {}) => {
return get('/material-mall/largeScreen/getLeaseCouples', data)
return get('/material-mall/largeScreen/getCompanyNum', data)
}
// 装备上架统计

View File

@ -431,6 +431,12 @@ const onHotWord = (item: any) => {
// console.log('🚀 ~ onHotWord ~ e:', item.deviceName)
keywordIptValue.value = item.deviceName
}
//
const onJumpScreen = () => {
router.push({
name: 'big-screen',
})
}
onMounted(() => {
if (tokenNew) {
@ -486,6 +492,10 @@ onMounted(() => {
<a @click="onJumpUser">个人中心</a>
<div class="line"></div>
</div>
<div class="header-item" v-if="isShowLogout">
<a @click="onJumpScreen">数据大屏</a>
<div class="line"></div>
</div>
<div class="header-item">
<!-- <a v-if="!isShowLogout" class="a-border-none" @click="$router.push('/login')">
登录

View File

@ -1,9 +1,12 @@
<template>
<div class="container">
<div class="item">
<h2>装备上架</h2>
<!-- <h2>装备上架</h2> -->
<div class="item-title">
<img src="@/assets/img/screen/装备上架.png" alt="">
</div>
<div class="item-info">
<div class="info-box info-box_1" style="transform: translateY(-30px)">
<div class="info-box info-box_1" style="transform: translateY(-99px)">
<div class="yyyy">入驻装备数</div>
<div>
<span class="xxxx">
@ -13,7 +16,7 @@
</div>
<div></div>
</div>
<div class="info-box info-box_1">
<div class="info-box info-box_1" style="transform: translateY(-40px)">
<div class="yyyy">上架装备数</div>
<div>
<span class="xxxx">
@ -23,7 +26,7 @@
</div>
<div></div>
</div>
<div class="info-box info-box_1">
<div class="info-box info-box_1" style="transform: translateY(-40px)">
<div class="yyyy">装备总类型数</div>
<div>
<span class="xxxx">
@ -33,7 +36,7 @@
</div>
<div></div>
</div>
<div class="info-box info-box_1" style="transform: translateY(-30px)">
<div class="info-box info-box_1" style="transform: translateY(-99px)">
<div class="yyyy">保养告警</div>
<div>
<span class="xxxx">
@ -46,9 +49,12 @@
</div>
</div>
<div class="item">
<h2>装备租赁</h2>
<!-- <h2>装备租赁</h2> -->
<div class="item-title" style="transform: translateY(-40px)">
<img src="@/assets/img/screen/装备租赁.png" alt="">
</div>
<div class="item-info">
<div class="info-box info-box_2" style="transform: translateY(-30px)">
<div class="info-box info-box_2" style="transform: translateY(-90px)">
<div>
<span class="xxxx">
{{ maTypeLeasingNum }}
@ -58,7 +64,7 @@
<div>在租赁种类</div>
<div></div>
</div>
<div class="info-box info-box_2">
<div class="info-box info-box_2" style="transform: translateY(-30px)">
<div>
<span class="xxxx">
{{ devLeasingNum }}
@ -68,7 +74,7 @@
<div>在租装备数</div>
<div></div>
</div>
<div class="info-box info-box_2">
<div class="info-box info-box_2" style="transform: translateY(-30px)">
<div>
<span class="xxxx">
{{ devRepairingNum }}
@ -78,7 +84,7 @@
<div>在修装备数</div>
<div></div>
</div>
<div class="info-box info-box_2" style="transform: translateY(-30px)">
<div class="info-box info-box_2" style="transform: translateY(-90px)">
<div>
<span class="xxxx"> {{ devUsageRatio }}% </span>
<!-- <span class="zzzz"> </span> -->
@ -89,9 +95,12 @@
</div>
</div>
<div class="item">
<h2>装备需求</h2>
<!-- <h2>装备需求</h2> -->
<div class="item-title" style="transform: translateY(-40px)">
<img src="@/assets/img/screen/装备需求.png" alt="">
</div>
<div class="item-info">
<div class="info-box info-box_3" style="transform: translateY(-30px)">
<div class="info-box info-box_3" style="transform: translateY(-80px)">
<div>
<span class="xxxx">
{{ leaseNum }}
@ -111,7 +120,7 @@
<div>需求装备种类</div>
<div></div>
</div>
<div class="info-box info-box_3 info-box_4" style="transform: translateY(-30px)">
<div class="info-box info-box_3 info-box_4" style="transform: translateY(-80px)">
<div>第一</div>
<div>
{{ topPopularTypeName }}
@ -184,6 +193,12 @@ onMounted(() => {
height: 30%;
background: url('@/assets/img/screen/center1_1.png') no-repeat;
background-size: 100% 100%;
.item-title {
display: flex;
align-items: center;
justify-content: center;
}
.item-info {
display: flex;
align-items: center;
@ -201,7 +216,7 @@ onMounted(() => {
h2 {
color: #42bbfc;
// font-style: italic;
font-size: 28px;
font-size: 31px;
// font-weight: bold;
letter-spacing: 6px;
text-align: center;

File diff suppressed because it is too large Load Diff

View File

@ -13,23 +13,28 @@ import * as echarts from 'echarts'
const getDeviceShareRankingData = async () => {
const { data: res }: any = await getDeviceShareRankingApi()
console.log('🚀 ~ getDeviceShareRankingData ~ res:', res)
chartData.value = res.map((e: any) =>
e.comName.length > 6 ? e.comName.slice(0, 6) + '...' : e.comName,
)
chartDataNew.value = res.map((e: any) => e.comName)
state.value = res.map((e: any) => e.deviceCount)
console.log('🚀 ~ getDeviceShareRankingData ~ state.value:', state.value)
}
getDeviceShareRankingData()
const chartData = ref<any>([])
const chartDataNew = ref<any>([])
const state = ref<any>([])
const echartsRef = ref(null)
const initEChart = () => {
console.log('🚀 ~ initEChart ~ state.value:', state.value)
const chart = echarts.init(echartsRef.value)
const opt = {
index: 0,
}
var data = [50, 60, 70, 20, 30, 30]
var data: any = state.value
var className = chartData.value
var colorArray = [
{

View File

@ -18,10 +18,10 @@ const getLeaseCountByPublishCompanyData = async () => {
pieData.value = res.map((e: any) => {
return {
value: e.leaseCount,
name:
e.publishCompany.length > 6
? e.publishCompany.slice(0, 6) + '..'
: e.publishCompany,
name: e.publishCompany,
// e.publishCompany.length > 6
// ? e.publishCompany.slice(0, 6) + '..'
// : e.publishCompany,
}
})
}
@ -58,6 +58,9 @@ const initCharts = () => {
formatter: (name: any) => {
if (pieData.value.length) {
const item: any = pieData.value.filter((item: any) => item.name === name)[0]
if (name.length > 6) {
name = name.slice(0, 6) + '..'
}
return `{name|${name}}{value| ${item.value}} {rate| 台}`
}
},
@ -185,7 +188,7 @@ const initCharts = () => {
position: 'center',
},
emphasis: {
show: true,
show: false,
textStyle: {
fontSize: '14',
// fontWeight: 'bold',
@ -197,7 +200,10 @@ const initCharts = () => {
show: false,
},
},
data: [25, 25, 25, 25, 25, 25],
data: [0, 0, 0, 0, 0, 0, 0, 0],
tooltip: {
show: false,
}
},
],
}
@ -255,7 +261,7 @@ onMounted(() => {
flex: 1;
background: url('@/assets/img/screen/bg_1.png') no-repeat;
background-size: 100% 100%;
z-index: 100;
// background-color: orange;
}
@ -265,7 +271,7 @@ onMounted(() => {
left: 20%;
width: 80px;
height: 80px;
// z-index: 10;
z-index: 1;
background: url('@/assets/img/screen/right_3.png') no-repeat;
background-size: 100% 100%;
}

View File

@ -82,6 +82,7 @@
isRepublish = true
dialogTitle = '新增收货地址'
addOrEditDialogVisible = true
delete addOrEditForm?.id
}
"
type="primary"
@ -294,13 +295,6 @@ const areaCityList = ref<any>([])
const areaCountyList = ref<any>([])
const searchParams = reactive({
leaseName: '',
leaseCode: '',
leaseStatus: '',
finishStartTime: '',
finishEndTime: '',
publishStartTime: '',
publishEndTime: '',
pageSize: 10,
pageNum: 1,
})
@ -321,15 +315,7 @@ const addOrEditFormRules = reactive({
//
const getLeaseListData = async () => {
if (endTime.value.length > 0) {
searchParams.finishStartTime = endTime.value[0]
searchParams.finishEndTime = endTime.value[1]
}
if (releaseTime.value.length > 0) {
searchParams.publishStartTime = releaseTime.value[0]
searchParams.publishEndTime = releaseTime.value[1]
}
const res: any = await getAddressListApi({})
const res: any = await getAddressListApi(searchParams)
console.log(res, '地址--')
leaseList.value = res.rows
total.value = res.total
@ -341,18 +327,7 @@ const getAreaData = async () => {
}
//
const onReset = () => {
endTime.value = []
releaseTime.value = []
searchParams.finishStartTime = ''
searchParams.finishEndTime = ''
searchParams.publishStartTime = ''
searchParams.publishEndTime = ''
searchParams.pageNum = 1
searchParams.pageSize = 10
searchFormRef.value.resetFields()
getLeaseListData()
}
const onReset = () => {}
//
const onDelete = async (id: any) => {
const res: any = await deleteLeaseInfoApi({ id })
@ -367,12 +342,13 @@ const onDelete = async (id: any) => {
//
const onRepublish = async (row: any) => {
dialogTitle.value = '编辑收货地址'
const { areaCode, address, cityCode, provinceCode } = row
const { areaCode, address, cityCode, provinceCode, id } = row
Object.assign(addOrEditForm.value, {
areaCode,
address,
cityCode,
provinceCode,
id,
})
Promise.all([onProvinceChange(provinceCode), onCityChange(cityCode)]).then(() => {

View File

@ -290,6 +290,32 @@ const isOrderCompleteTwo = (goods: any) => {
<span> {{ orderDetails.address }} </span>
</el-col>
</el-row>
<el-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8">
<span> 接单人 </span>
<span>
{{ orderDetails.receivingUser }}
</span>
</el-col>
<el-col :span="8">
<span> 接单时间 </span>
<span>
{{ orderDetails.receivingTime }}
</span>
</el-col>
</el-row>
<el-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8">
<span> 出库人 </span>
<span> {{ orderDetails.preOutboundUser }} </span>
</el-col>
<el-col :span="8">
<span> 出库时间 </span>
<span>
{{ orderDetails.preOutboundTime }}
</span>
</el-col>
</el-row>
<el-row
style="
@ -312,17 +338,18 @@ const isOrderCompleteTwo = (goods: any) => {
"
style="min-height: 100px"
>
<div style="display: flex; flex-direction: column; align-items: center">
<!-- <div style="display: flex; flex-direction: column; align-items: center">
<span style="font-weight: bold; font-size: 13px; padding: 4px 0">
接单人{{ goods.receivingUser }}
</span>
<el-image
:src="goods.url"
style="width: 110px; height: 80px"
alt="#"
fit="cover"
/>
</div>
</div> -->
<el-image
:src="goods.url"
style="width: 110px; height: 80px"
alt="#"
fit="cover"
/>
<div
style="
min-height: 100px;
@ -337,9 +364,9 @@ const isOrderCompleteTwo = (goods: any) => {
<el-row style="font-weight: bold">
{{ goods.deviceName }}
<span style="padding-left: 10px">
<!-- <span style="padding-left: 10px">
接单时间{{ goods.receivingTime }}
</span>
</span> -->
</el-row>
<el-row>
<el-col :span="3"> 租期:</el-col>
@ -412,7 +439,7 @@ const isOrderCompleteTwo = (goods: any) => {
flex-direction: column;
"
>
<div
<!-- <div
style="
width: 100%;
display: flex;
@ -424,7 +451,7 @@ const isOrderCompleteTwo = (goods: any) => {
>
<span>出库人{{ goods.preOutboundUser }}</span>
<span>出库时间{{ goods.preOutboundTime }}</span>
</div>
</div> -->
<div>租期</div>
<div
style="font-weight: bold; margin-top: 10px"

View File

@ -295,6 +295,32 @@ const isOrderCompleteTwo = (goods: any) => {
<span> {{ orderDetails.address }} </span>
</el-col>
</el-row>
<el-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8">
<span> 接单人 </span>
<span>
{{ orderDetails.receivingUser }}
</span>
</el-col>
<el-col :span="8">
<span> 接单时间 </span>
<span>
{{ orderDetails.receivingTime }}
</span>
</el-col>
</el-row>
<el-row style="padding: 4px 40px; font-size: 14px">
<el-col :span="8">
<span> 出库人 </span>
<span> {{ orderDetails.preOutboundUser }} </span>
</el-col>
<el-col :span="8">
<span> 出库时间 </span>
<span>
{{ orderDetails.preOutboundTime }}
</span>
</el-col>
</el-row>
<el-row
style="
@ -317,17 +343,18 @@ const isOrderCompleteTwo = (goods: any) => {
"
style="min-height: 100px"
>
<div style="display: flex; flex-direction: column; align-items: center">
<!-- <div style="display: flex; flex-direction: column; align-items: center">
<span style="font-weight: bold; font-size: 13px; padding: 4px 0">
接单人{{ goods.receivingUser }}
</span>
<el-image
:src="goods.url"
style="width: 110px; height: 80px"
alt="#"
fit="cover"
/>
</div>
</div> -->
<el-image
:src="goods.url"
style="width: 110px; height: 80px"
alt="#"
fit="cover"
/>
<div
style="
min-height: 100px;
@ -342,9 +369,9 @@ const isOrderCompleteTwo = (goods: any) => {
<el-row style="font-weight: bold">
{{ goods.deviceName }}
<span style="padding-left: 10px">
<!-- <span style="padding-left: 10px">
接单时间{{ goods.receivingTime }}
</span>
</span> -->
</el-row>
<el-row>
<el-col :span="3"> 租期 :</el-col>
@ -416,7 +443,7 @@ const isOrderCompleteTwo = (goods: any) => {
flex-direction: column;
"
>
<div
<!-- <div
style="
width: 100%;
display: flex;
@ -428,7 +455,7 @@ const isOrderCompleteTwo = (goods: any) => {
>
<span>出库人{{ goods.preOutboundUser }}</span>
<span>出库时间{{ goods.preOutboundTime }}</span>
</div>
</div> -->
<div>租期</div>
<div
style="font-weight: bold; margin-top: 10px"